Msql day03 基本数据查询

数据更新操作

1.添加多行数据(知道)

方式一:写多条insert语句,多条语句之间用分号隔开
insert into students (id,name) values(0,'张飞');
insert into students (id,name) values(0,'张飞');
insert into students values(0,'李四',20,180);
方式二:通过一条insert语句插入多条数据,数据间用逗号分隔
  insert into 表名 values (...) (...)...
insert into students values(0,'亚索3',23,167.56),(0,'亚索4',23,167.56);
  insert into 表名 (字段名1,字段名2....) values (字段值1,字段值2....),(字段值1,字段值2....) ...
insert into students (id,name)values(0,'小红'),(0,'小狼'),(null,'小白');

2.修改数据(知道)

update 表名 set 字段名1=值1,字段名2=值2... where 条件
例:修改id为5的数据,将名称设为狄仁杰,年龄设为22
update students set name='狄仁杰',age=22 where id=5;

3.删除数据

delete from 表名 where 条件(物理删除对应的数据)
delete from students where id =6;

其他删除数据方式:

truncate table 表名 (清除表里所有数据,但是表结构保留,自增长字段的值会从1开始)
truncate table students;
drop table 表名(删除数据表,包括数据和表结构)
drop table students;

数据查询操作

1.查询的基本操作(知道)

  • 查询部分字段的值
select 字段名1,字段名2... from 表名   (查询一部分字段信息)
例:查询学生表中的姓名,性别,年龄的数据
select name,sex,age from students;
  • 取别名
给表取别名
select 别名.字段名1,别名.字段名2...from 表名 as 别名
此语法为关联查询做准备,现只需知道即可
select s.name,s.sex,s.age from students as s;
给字段取别名
select name as 姓名,sex as 性别,age as 年龄 from students;
  • 去重
select distinct 字段名1,字段名2....from 表名;
例:根据学生的性别去重
select distinct sex from students;

2.条件查询(重点)

  • 语法格式
select 字段名1,字段名2,....from 表名 where 条件
select * from students where id=5;

2.1条件查询:比较运算符(重点)

  • 比较运算符:大于(>),等于(=),小于(<),大于等于(>=),小于等于(<=),不等于(!=或者<>)
例1.查询小乔的年龄
select age from students where name='小乔';
例2.查询20岁以下的学生
select * from students where age<20;
例3.查询家乡不在北京的学生
select * from students where hometown !='北京';
  • 逻辑运算符:and(且,同时符合对应的条件),or(或,符合其中的一个条件),not(非,不符合该条件)
例1.查询年龄等于18的女生的记录
select * from students where age=18 and sex='女';
例2.查询出女学生或者是1班的学生
select * from students where sex='女' or class='1班';
例3.查询非天津学生的记录
select * from students where not hometown='天津';

2.2条件查询:模糊查询(重点)

  • 模糊查询:like关键字
    • %:匹配任意个字符
    • _:匹配任意单个字符
    • 一般like关键字只用来匹配字段类型为字符串的
例1:查询姓孙的学生
select * from students where name like '孙%';
例2:查询姓孙且名字是一个字的学生
select * from students where name like '孙_';
例3:查询姓名以'乔'结尾的学生
select * from students where name like '%乔';
例4:查询姓名中包含'白'的学生
select * from students where name like '%白%';

2.3条件查询:范围查询(重点)

  • in:查询非连续范围内的数据
例1:查询家乡为北京或上海或广东的学生
select * from students where hometown in ('北京','上海','广东');
  • between …and:查询连续范围内的数据(用在数值型字段中)
例1:查询年龄在18到20之间的学生
select * from students where age between 18 and 20;

2.4条件查询:为空判断(重点)

  • null 和”空字符串不一样
  • 空判断:is null
例1:查询出学生身份证号为空的信息
select * from students where card is null;
  • 非空判断:is not null
例1:查询出学生身份证不为空的信息
select * from students where card is not null;

3.排序(知道)

  • 语法:
select * from 表名 order by 字段1 asc|desc,字段2 asc|desc......
  1. 字段的排序规则默认为升序(从小到大)
  2. asc:表示从小到大排序(升序)
  3. desc:表示从大到小排序(降序)
例1:查询所有学生信息,按年龄从小到大排序
select * from students order by age; (默认是升序,所以不用写出asc)
查询所有学生信息,按年龄从大到小排序,年龄相同时,再按学号从小到大排序
select * from students order by age desc,studentNo;

4.分组和聚合

4.1.聚合函数(知道)

  • 使用聚合函数方便数据进行统计
  • 聚合函数不能在where中使用
count()求表格的总记录数
max(字段名)查询最大值
min(字段名)查询最小值
sum(字段名)求和
avg(字段名)求平均值
  • count():求表总的记录数
例1:查询学生总数
select name from students;
例2:统计name下有几个记录,个数
select count(name) from students;
  • max(字段名):查询对应字段的最大值
例1:查询女生最大年龄
select max(age) from students where sex='女';
  • min(字段名):查询对应字段的最小值
例1:查询1班最小年龄
select min(age) from students where class='1班';
  • sum(字段名):查询对应字段的值总和
例1:查询北京学生的年龄总和
select sum(age) from students where hometown='北京';
  • avg(字段名):查询对应字段的值平均数
例1:查询女生的平均年龄
select avg(age) from students where sex='女';

4.2分组查询(知道)

  • 分组的目的是对每一组的数据进行统计(使用聚合函数)
    • 语法格式:
select 字段名1,字段名2,聚合函数....from 表名 group by 字段名1,字段名2....
例1:查询各种性别的人数
select sex,count(*) from students group by sex;
例2:查询各种性别年纪最大的
select sex,min(age) from students group by sex;
例3:查询各个班级的人数
select class,sum(*) from students group by class;
例4:查询各个班级中不同性别的人数
select class,sex,count(*) from students group by class,sex;
  • 分组后的数据筛选:
    • 将分组之后的数据当成是一个数据表,然后再通过having条件来对当前的数据表进行筛选
    • 语法格式:
select 字段名1,字段名2,聚合函数....from 表名 group by 字段名1,字段名2....
having 条件
  • having 条件 运算符跟where 条件运算符是一样的
  • 在having后面可以使用聚合函数
    • 例子:
例1:查询男生总人数
select sex,count(*) from students group by sex having sex ='男';
例2:查询每个班级男生的总记录数
select class,sex,count(*) from students group by class,sex having sex ='男';
例3:查询所有班级中不同性别的记录数大于1的信息
select class,sex,count(*) from students group by class,sex having count(*)>1;

5.分页查询(知道)

  • 语法格式
select * from limit start,count
例1:查询前3行的学生信息
select from staudents limit0,3;
  • 分页查询实现
select * from students limit(n-1)*m,m;
  • n表示的是页数
    • n=1,2,3,4
  • m表示的是每页显示的记录数
    • m=3
    • (n-1)*m,是公式,不是语法格式,不能写在SQL语句中,需要替换为具体的数字

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片