DQL数据查询语言 mysql字段只有当内容为null时才是空
简单查询
select * from 表名; 全部内容
select 列名,列名... from 表名;查部分列的内容
select 列名,列名+/-/*/%... from 表名;通过四则运算查询
条件查询
where单条件查询、and/or多条件查询、between and关键字,在什么之间、not between and 不在什么之间、in集合查询、关键字is null、关键字like模糊查询
select 列名 from 表名 where condition;
select 列名 from 表名 where condition and condition;
select 列名 from 表名 where 列名 between xxx and xxx
select 列名 from 表名 where 列名 in(xxx,xxx,xxx...);
select 列名 from 表名 where 列名 is null;
select 列名 from 表名 where 列名='';查询带空格的字段
select 列名 from 表名 where 列名 like 'x%';以x开头
select 列名 from 表名 where 列名 立刻 'x___';几个_代表几个字符,如abcd就是a___(三个_)
查询排序(默认是升序)limit限制,只看几行
select 列名 from 表名 order by 列名 asc limit x;升序前x行
select 列名 from 表名 order by 列名 desc;降序
多表查询
复合条件查询
根据查询结果查询
多表连接查询:交叉连接(生成笛卡尔积,它不使用任何匹配条件)、内连接(只连接匹配的行)、外连接(左连接,会显示左边表内所有的值,不论
交叉连接:touch {a..c}{1..3}
select 表名.列名1,表名.列名2.. ,表名2.列名1,表名2.列名2...from 表名,表名2;
内连接(两列相同时才会显示):where后面条件必须匹配
select 表名.列名1,表名.列名2...,表名2.列名1,表名2.列名2....from 表名,表名2 where 表名.列名1 = 表名2.列名2;
外连接(两列相同时显示,并以左/右表为主):左连接left join on、有链接right join on
select 表名.列名,表名.列名2,...,表名2.列名1,表名2.列名2,... from 表名 left join 表名2 on 表名1.列名1 = 表名2.列名2; 以左表为主(左表全部内容和右表匹配的内容)
select 表名.列名1,表名.列名2,...,表名2.列名1,表名2.列名2,... from 表名 right join 表名2 on 表名.列名 = 表名2.列名2;以右表为主
select 表名.列名1,表名.列名2,...,表名2.列名1,表名2.列名2,... from 表名 right join 表名2 on 表名.列名1 = 表名2.列名2 and condition;
select 表名.列名1,表名.列名2,...,表名2.列名1,表名2.列名2,... from 表名 right join 表名2 on 表名.列名1 = 表名2.列名2 order by 列名 desc/asc;
子查询:父查询需要依赖子查询的结果。子查询可以包含关键字和比较运算符。
带in关键字的子查询:以in前的查询结果作为in后查询的范围
select 列名,列名2 from 表名 where 列名 in (select distinct(去重) 列名 from 表名2 where 列名>=); in前父表in后子表
带exist关键字的查询:exist关键字表示存在。子查询若有结果则显示父查询的结果,若子查询未查询到结果,则父查询的结果也不会显示
select * from 表名 where exists (select * from 表名2 where condition)