对数据库最频繁的操作当属查询,以下为常用查询的总结,需要对初学数据库的小伙伴们有帮助。
MySQL语句的查询顺序
⑧SELECT ⑨DISTINCT <select_list>
①FROM <left_table>
③<join_type> JOIN <right_table>
②ON <join_condition>
④WHERE <where_condition>
⑤GROUP BY <group_by_list>
⑥WITH [CUBE | ROLLUP]
⑦HAVING <having_condition>
⑩ORDER BY <order_by_list> [DESC | ASC]
⑾LIMIT <limit_number>
MySQL查询语句的常用格式
SELECT 属性列表
FROM 表名和视图列表
[WHERE 条件表达式 1]
[GROUP BY 属性名 1 [HAVING 条件表达式 2]]
[ORDER BY 属性名 2[ASC|DESC]]
单表查询
使用集合函数查询
COUNT(), AVG(), MAX(), MIN(), SUM()
连接查询
内连接查询
外连接查询
SELECT属性名列表 FROM 表名 1 LEFT|RIGHT JOIN 表名 2
ON 表名 1.属性 1=表名 2.属性 2;
LEFT JOIN 左表全记录,右表符合条件
RIGHT JOIN 右表全记录,左表符合条件
联合查询
SELECT语句 1
UNION| UNION ALL
SELECT语句 2
UNION 所有的查询结果合并到一起,去掉重复项
UNION ALL 简单合并
子查询
IN 在子查询结果集合中的值
EXISTS 表示存在,内层查询诧句丌返回查询的记录,而是返回一个真假值 (true|false)
ANY 任意一个值
SELECT * FROM computer_stu WHERE scrore>=ANY(SELECT score FROM scholarship)
ALL 满足所有条件
使用正则表达式查询
属性名 REGEXP ‘匹配方式’
^ 字符串开始
$ 字符串结束
. 任意一个字符,包括回车和换行
[字符集合] 匹配字符集合中的任意字符
S1|S2|S3 三者之任一
* 任意多个
+ 1+个
字符串{N} 字符串出现 N 次
字符串{M,N} 字符串出现至少 M 次,至多 N 次
SELECT * FROM info WHERE name REGEXP‘ab{1,3}’;
自查询
供电局3月1号到8号供点电量分别为8.14,8.25,8.33,8.36,8.47,8.77,8.23,8.45
以此数据构成的数据库,要求查询累积供电量,
比如2号的累积供电量为1号和2号供电量的加和;
4号供电量是1号,2号,3号,4号供电量的加和。
依次类推,要求用SQL语句将8天的累积供电量查询出来
CREATE TABLE DianLi(
Datedatetime not null,
DLreal
)
insert into DianLi values('2010-03-01',8.14);
insert into DianLi values('2010-03-02',8.25);
insert into DianLi values('2010-03-03',8.33);
insert into DianLi values('2010-03-04',8.36);
insert into DianLi values('2010-03-05',8.47);
insert into DianLi values('2010-03-06',8.77);
insert into DianLi values('2010-03-07',8.23);
insert into DianLi values('2010-03-08',8.45);
select Date,(select sum(DL) from DianLiwhere Date<= a.Date) as DL from DianLi a;
select Date 日期,(selectleft(sum(DL),5) from DianLi where Date<= a.Date) as 总电量 fromDianLi a;