查询所有列:
select* from student;
结果集:
查询指定的列:
select 列名1,列名2 from 表名;
select name,age from student;
条件查询:
条件查询运算符及关键字
1. = !=和<>都是不等于 < <= > >=
2.在什么范围之内:between... and
select * from student where age between 18 and 20; 年龄介于18到20之间
3.查询固定范围值:in(set) 如:in(18,19,20) 查询范围值在18,19,20之内的值
4.为空:is NULL
5.不为空:is not NULL
6.与:and
7.or:或
8.非:not
模糊查询:
使用like关键字后跟通配符:
通配符:_:任意一个字符
%:任意多个字符
如:
1.查询姓名由5个字母构成的学生信息,5个下划线
select * FROM student WHERE `name` LIKE '_____';
2.查询姓名由5个字母构成的学生信息,并且最后一个是字母为a,4个下划线+a
select * FROM student WHERE `name` LIKE '____a';
3.查询以m开头的学生信息
select * from student where name like 'm%';
4.查询第二个字母为r的学生信息
SELECT * from student where name like '_r%';
5.查询醒目中包含李的学生信息
select * from student where `name` like '%李%';
查询结果集去重:
distinct关键字去重
SELECT DISTINCT name from student;
查询结果集进行运算:
SELECT *,IFNULL(age,0)+IFNULL(score,0) from student;
对查询结果集起别名:
SELECT *,IFNULL(age,0)+IFNULL(score,0) as age_score from student;
升序ASC,降序DESC
选中表,右键----对象信息
查看建表信息DDL语句
排序:
SELECT * from student order by id desc;
降序
SELECT * from student order by id asc;
升序,默认
1.统计表中有多少条数据
select count(*) from student;
2.统计有age的个数,这里统计的是不为null的个数
select count(age) from student;
3.统计年龄大于18的人数
SELECT count(*) from student where age >18;
4.统计多个字段
select count(age),count(name) from student;
1.sum函数:
求和
求一个字段的和:
SELECT sum(age) from student;
求多个字段的和:
SELECT sum(age+score) from student;
这里字段的数据类型没有关系,什么类型都可以,整数和字符串相加时,字符串为
0
2.avg函数:
求平均值
SELECT avg(age) from student;
3.max函数:求最大值
select max(age) from student;
4.min函数:求最小值
select min(age) from student;
1.group by 分组
SELECT * from student group by gender;
分为了男、女两组
注意:
当group by 单独使用是,只显示出每组的第一条记录,所以单独使用的意义不大。
2.group by和group_by 组合使用:
SELECT sex,group_concat(name) from student group by sex;
先分组,然后显示属于该组的人名
3.分组结合聚合函数使用
SELECT sex,group_concat(age),max(age) from student group by sex;
分组里年龄的最大值
用来分组查询后指定一些条件来输出查询结果
having作用和where一样,但是having只能用于group by
having的使用:
1.查询员工工资总和大于9000的部门名称
select department,group_concat(salary),sum(salary) from employee group by department having sum(salary)>9000;
having 和where的区别:
1.having是在分组后对数据进行过滤
where是在分组前对数据进行过滤
2.having后面可以使用分组函数(统计函数)
where后面不可以使用分组函数
3.where是对分组前记录的条件,
如果某条数据不满足where条件,那么不会参与分组
having是对分组后的数据进行约束
例:
查询工资大于2000的,
工资总和大于6000的部门名称以及工资和
select department,group_concat(salary),sum(salary) from employee where salary>2000 group by department having sum(salary)>6000;