基本语法
select 字段1,字段2....(字段列表)
from 表一,表二....(表名列表)
where 条件1,条件2...(条件列表)
group by 分组字段
having 分组之后的条件
order by 按什么字段排序
limit 6 分页限定
-
查询所有信息:select * from 表名;
-
(distinct)去除相同的数据:如 :select distinct 列名 from student;
-
(between and)之间(包含之间):如 :select * from stu where age between 20 and 30;
-
(in/not in)集合之中:select * from stu where age in(18,19,20);
-
在查询中使用列的别名: select 列名 AS 新列名 form 表名 where 查询条件;
-
(null)查询: select * from stu where id is null /is not null;
-
(like)模糊查询 select * from 表名 where 字段名 like 对应值(子串), (*like,单个任意字符 %多个任意字符)
-
查询学好1开头的学生:select * from stu id like “1%”;
-
(order by)排序(可叠加):select * from stu order by math asc/desc,english asc;(desc降序)
-
聚合函数:
- count函数 : select count(ifnull(name,0)) from stu;(自动排除null)
count(*)//有多少行数据 - max/min/sum/avg(最大/最下/和/平均):select max(math) from stu;
- 将字符串s中的所有字符改为大写 lower(s) /upper(s)
- 获取当前日期:curdate();
- 获取当前时间:curtime();
- 获取当前日期和时间:now();
- (group by)分组查询(查询的字段只能是聚合函数或分组的字段)
- count函数 : select count(ifnull(name,0)) from stu;(自动排除null)
-
基本语法:select 字段名列表 form 表名 where 约束条件 group by分组的字段名
- 如:select sex avg(math) from stu group by sex; 查询男女的平均分
-
limit 分页查询:select * from stu limit 3;(3条数据)
-
where和Having区别:
- where在分组之前进行判定,having在分组之后进行判定)
- where后不可以跟聚合函数,having后可以跟聚合函数
连接查询
-
隐式内联:select * from emp,dept where dept.id=emp.id;
-
显式内联:select * from emp inner join dept on emp.id=dept.id;
-
外连接:
外连接查询中参与连接的表有主从之分,已主表的每行数据匹配从表的数据列,将符合连接条件的数据直接返回到结果集中,对不符合连接条件的列,将被填上null值再返回到结果集中。 -
左外连接(查询的是左表的所有记录或交集),右边没有的会填充null;
- 如 : select t1.*,t2.name from emp as t1 left join dept as t2 on t1.id=t2.id;
-
右外连接(右外连接包含右表中所有的匹配行,右表中有的项在左表中没有对应的项将以null值填充)。
- 如: select t1.*,t2.name from emp as t1 right join dept as t2 on t1.id=t2.id;