暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

数据库学习(三)数据的常见操作

我和软件测试 2019-11-06
678

上一篇笔记写了对表的常用操作,现在继续写对数据的常见操作。

数据库学习(二)表的基本操作


下面创建一张 students 表和一张 teachers 表来举例说明:

    create table students(  
            stuid int(3) auto_increment,  
    name varchar(20) not null,
    age int(2),
    sex char(2),
    phone char(11),
    tid int,
    tname varchar(20),
    primary key (stuid),
            foreign key (tid)  references teachers (id)
    );

    除此之外,我们再建一张 teachers表,建表语句如下:

          create table teachers(  
              tid int(4not null,  
              name varchar(4not null,  
      sex char(2),
              class char(3),
              grade char(2),  
              primary key (tid)
      );


      一、查询数据

      sql查询中最简单的是查询整张表:

        select * from students;

        如果需要加入查询条件,则在后面加上 where 语句


        1.在where条件中可以使用的等式有:

          # 等于 = / 不等于 <> / 大于 > / 大于等于 >= / 小于 < / 小于等于 <= 
          # 如 查询名字为“张一”的学生
          select * from students where name = "张一";  
          # between .. and .. 查询某个区间范围
          # 如 查询5-10岁的学生信息
          select * from students where age between 5 and 10;
          # like 模糊查询
          # 如 查询姓张的学生
          select * from students where name like "张%";
          # in 查询某个集合
          # 如 查询5岁和7岁的学生
          select * from students where age in (5,7);

          在上面的语句中,第9行中的 '%' 是一个通配符,常用的通配符有:

            %:替代0个或多个字符  
            _:替代1个字符  
            [char]:字符列中任何单一字符  
            [^char]:不在字符列中的任何单一字符


            2.需要将多张表联合起来查询

              # join
              # 如 查询学生与老师的对应关系(不包含新来的学生与老师)
              select students.name,teachers.name from students join teachers on students.tname = teachers.name;


              # left join 左连接,保留左表中的内容
              # 如 查询所有学生及他们对应的老师的名字
              select students.name,teachers.name from students left join teachers on students.tname = teachers.name;


              # right join 右连接,保留右表中的内容
              # 如 查询所有老师及他们所教的学生名字
              select students.name,teachers.name from students right join teachers on students.tname = teachers.name;


              # union 合并多个结果集,并去掉重复值
              select tname from students union select name from teachers;
              # union all 保留重复值


              3.对结果进行过滤

                # distinct
                # 查询已经分配了班级的老师名字
                select distinct tid,tname from students;


                # order by 排序,默认升序(ASC),降序为DESC
                # 查询学生名字,按年龄降序排序
                select name,age from students order by age desc;


                # group by 对一列或多列结果集进行分组


                # as


                4. sql语句中常用的函数 

                  # 求平均值
                  avg()
                  # 求行数
                  count()
                  # 返回第一个记录的值
                  first()
                  # 返回最后一个记录的值
                  last()
                  # 返回最大值
                  max()
                  # 返回最小值
                  min()
                  # 返回和
                  sum()
                  # 筛选分组后的数据
                  having
                  # 将字段的值转换为大写/小写
                  ucase()
                  lcase()
                  # 返回当前系统的日期和时间
                  now()
                  # 对字段进行格式化
                  format()
                  # 返回子字符串在字符串中的位置
                  position(substring in str)



                  二、插入数据

                    # insert into
                    insert into students (name,sex,age,phone) values ('李三','女',10,'16598746543');


                    三、修改数据

                      update students set phone='12345674567' where name='李三';


                      四、删除数据

                        delete from students where name='李三';



                        最后修改时间:2019-12-16 10:37:10
                        文章转载自我和软件测试,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                        评论