select查询语句

基本查询:

SELECT 字段列表

FROM <表1><表2>...
WHERE <表达式>
GROUP BY _____
HAVING [{operetor expresion}...]
ORDER BY_____
LIMIT


单表查询:

SELECT * FROM 表名;
SELECT 字段 FROM 表名;
SELECT 字段1,字段2... FROM 表名;
SELECT 字段1,字段2... FROM 表名 WHERE 条件;
(条件判断符:=,<>,<,<=,>,>=,between)
带in关键字:SELECT 字段 FROM 表名WHERE 字段 IN(NOT IN) 条件1,条件2...;
带between and:SELECT 字段 FROM 表名 WHERE 字段 (NOT) BETWEEN 条件 AND条件;
带like(%,_通配符):SELECT 字段 FROM 表名 WHERE 字段 LIKE'通配'; 
查询控制:SELECT 字段 WHERE 字段 IS (NOT) NULL;
带and:SELECT 字段 FROM 表名 WHERE 条件 AND 条件;
带or:SELECT 字段 FROM 表名 WHERE 条件 OR 条件;
查询结果不重复:SELECT DISTINCT 字段 FROM 表;
单列排序:SELECT 字段 FROM 表 ORDER BY 条件;
多列排序:SELECT 字段 FROM 表 ORDER BY 列,列...;
指定排序方向:SELECT 字段 FROM 表 ORDER BY 列 顺序(DESC,ASC);
分组查询:GROUP BY ... HAVING ...
创建分组:SELECT 字段 COUNT(*) AS TOTAL FROM 表 GROUP BY 条件;
分组里全部字段:SELECT 字段 GROUP_CONCAT(字段) AS name FROM 表 GROUP BY字段;
用having过滤:SELECT 字段 FROM 表 GROUP BY 字段 HAVING 条件;
with rollup在最后加一条所有记录的和:SELECT 字段 FROM 表 GROUP BY字段1,字段2;
limit限制数量:SELECT 字段 FROM 表LIMIT 数1,数2;(从数1+1条开始查出数2条记录)
使用集合函数查询:AVG(),COUNT(),MAX(),MIN(),SUM()都可以和WHERE,GROUPBY一起连用

连接查询:

内连接:

例1:SELECT suppliesr,s_id,s_name,f_name,f_price FROMfruits,suppliers WHERE fruits.s_id=suppliers.s_id;
例2:SELECT suppliers,s_id,s_name,f_name,f_price FROM fruitsINNER JOIN suppliers ON fruits.s_id=suppliers.s_id;
自连接(特殊的内连接,在一张表中查询):
例:SELECT f1.f_id,f1.f_name FROM fruits AS f1.fruits AS f2WHERE f1.s_id=f2.s_id AND f2.f_id='a1';

左连接:

例:SELECT 字段... FROM 表1 LEFT JOIN 表2 ON 条件 LEFT JOIN 表3 ON 条件...;

右连接:

例:SELECT 字段... FROM 表1 RIGHT JOIN 表2 ON 条件 LEFT JOIN 表3 ON 条件...;
※mysql没有全连接,只能 左连接 UNION 右连接 代替全连接
符合条件连接查询:连接后的on条件后还可以加条件,排序等。

子查询:

例:SELECT num1 FROM tb2 WHERE num1>ANY(SELECT num2 FROMtb2);
将tb2例的所有num2与num1比较,大于任意一个数就列出num1,如果要后面所有条件都成立,把ANY换成ALL
EXISTS 如果后面的语句有返回的查询,则进行前面的查询,可以和条件一起用,条件放前面(NOTEXISTS相反)
in的子查询:in后面的是数据列,把in前面的数和数据列例比较
例:SELECT c_id FROM orders WHERE o_num IN (SELECT o_num FROMorderitems WHERE f_id='c0');(NOT IN 相反)
带比较符的子查询:
例:SELECT s_id,f_name FROM fruits WHERE s_id = (SELECT s1.s_idFROM suppliers AS s1 WHERE s1.s_city='GuangZhou');

合并查询结果:

SELECT 字段 FROM 表1
UNION (ALL())
SELECT 字段 FROM 表2
※union是把两次查询的记录所有条数合并,合并时删除重复记录,union all不删除重复记录,不排序

正则表达式查询:

例:SELECT * FROM fruits WHERE f_name REGEXP 表达式;
'^b'   以b开头
'y$'   以y结尾
'a.g'   .代表任意字符,查a?g
'^ba*'   以b开头,后面出现a(0次也算)
'^ba+'   以b开头,a至少出现一次
'on|ap'   包含on或ap
'[ot]'   包含o或t
'[^a-e 1-2]'   不在o——e,1——2之间
'x{2,}'   x至少出现2次
'x{2,3}'   x至少出现2次,最多3次


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值