一、DQL
数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE
1.1、单表查询
-- 格式
SELECT selection_list /*要查询的列名称*/
FROM table_list /*要查询的表名称*/
WHERE condition /*行条件*/
GROUP BY grouping_columns /*对结果分组*/
HAVING condition /*分组后的行条件*/
ORDER BY sorting_columns /*对结果分组*/
LIMIT offset_start, row_count /*结果限定*/
-- 查询所有
SELECT * FROM t_man
Mid Mname Mphone Mage Msex
8001 周杰伦 18812345543 30 男
8002 王力宏 18854321123 31 女
8003 吴尊 18898765123 32 男
8004 韩庚 18875315895 33 男
8005 张韶涵 15598726793 29 女
-- 查询指定列
SELECT t_man.Mname,t_man.Mage FROM t_man
Mage Msex
周杰伦 30
王力宏 31
吴尊 32
韩庚 33
张韶涵 29
-- 按条件查询指定列
SELECT t_man.Mname,t_man.Mage FROM t_man WHERE t_man.Mage > 30
Mage Msex
王力宏 31
吴尊 32
韩庚 33
--------------查询条件----------------------------
1.逻辑运算符
NOT : 取反
WHERE NOT t_man.Mage > 30
AND : 逻辑与
WHERE t_man.Mage > 30 AND t_man.Mname LIKE '__'
OR : 逻辑或
WHERE t_man.Mage > 30 OR t_man.Mname LIKE '__'
2.比较运算符
=、<>、!=、>、>=、!>、<、<=、!<
3.LIKE,用于模糊查询
% : 后面可以跟零个或多个字符
_ : 匹配任意单个字符
[ ] : 查询一定范围内的单个字符,包括两端数据
WHERE t_man.Mname LIKE '[周李]%'
[^] [!]: 表示不在一定范围内的单个字符,包括两端数据
4.BETWEEN
between xx and xx
WHERE t_man.Mage BETWEEN 30 AND 31 (等同于 t_man.Mage>=30 AND t_man.Mage<=31)
not between xx and xx
5.is (not) null
在where子句中,需要用is (not) null 判断空值,不能使用=判断空值
WHERE t_man.Mage is not null
6.in 多条件
WHERE t_man.Mage IN (30,31)
7.ALL SOME ANY
Some和any等效,all是大于最大者,any是小于最小者
WHERE t_man.Mage > ALL(SELECT t_man.Mage FROM t_man WHERE t_man.Mname LIKE '张%')
8.exists 和 no exists
where exists (select * from t_man where t_man.Mid = 8001)
9.Group by 分组
SELECT AVG(t_man.Mage) FROM t_man GROUP BY t_man.Msex
10.Having 分组后条件
SELECT AVG(t_man.Mage) AS mk,t_man.Msex FROM t_man GROUP BY t_man.Msex HAVING mk > 30
11.ORDER BY 排序 ASC,DESC
SELECT * FROM t_man ORDER BY t_man.Mid ASC
12.DISTINCT 去重
SELECT DISTINCT(t_man.Msex) FROM t_man
23.LIMIT 分页
SELECT * FROM t_man LIMIT 0,1 (显示第一行数据)
1.2、多表查询
-- 格式
SELECT selection_list /*要查询的列名称*/
FROM table_list /*要查询的表名称*/
JOIN table_list /*要查询的表名称*/
ON condition /*连接条件*/
WHERE condition /*行条件*/
GROUP BY grouping_columns /*对结果分组*/
HAVING condition /*分组后的行条件*/
ORDER BY sorting_columns /*对结果分组*/
LIMIT offset_start, row_count /*结果限定*/
-- 交叉连接(Cross Join),没有链接条件的表查询会出现笛卡儿积
SELECT * FROM t_man,t_dept
SELECT * FROM t_man JOIN t_dept
-- 内连接(inner Join 或 Join),两表中都有才显示,即两表的交集
SELECT * FROM t_man JOIN t_dept ON t_man.Mid = t_dept.Mid
-- 左外连接(Left outer Join),以左边表为主,左表全部显示,没有对应的就显示空,即左并集
SELECT * FROM t_man LEFT JOIN t_dept ON t_man.Mid = t_dept.Mid
-- 右外连接(Right outer Join),与左外连接相反
SELECT * FROM t_man RIGHT JOIN t_dept ON t_man.Mid = t_dept.Mid
-- 全连接(Full outer Join),默认不支持,但也其他方式可以实现。
SELECT * FROM t_man LEFT JOIN t_dept ON t_man.Mid = t_dept.Mid
UNION
SELECT * FROM t_man RIGHT JOIN t_dept ON t_man.Mid = t_dept.Mid
UNION ALL 与 UNION 区别是允许重复
MySQL聚合函数:
名称 | 作用 |
---|---|
AVG() | 平均值 |
COUNT() | 统计行的数量 |
MAX() | 最大值 |
MIN() | 最小值 |
SUM() | 求和 |
MySQL字符串函数
MySQL控制流函数
MySQL日期和时间函数
MySQL比较函数
MySQL其它函数
二、DML
数据操作语言,主要有三种形式: 1) 插入:INSERT 2) 更新:UPDATE 3) 删除:DELETE
三、DDL
数据定义语言DDL用来创建数据库中的各种对象—–表、视图、索引、同义词、聚簇等如:
1) 创建:CREATE TABLE/VIEW/INDEX/SYN/CLUSTER 2) 修改:ALTER TABLE 3) 删除:DROP TABLE 4) 清空:TRUNCATE TABLE 5) …
DDL操作是隐性提交的!不能rollback
四、DCL
数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。如: 1) GRANT:授权。
2) ROLLBACK [WORK] TO [SAVEPOINT]:回退到某一点。回滚—ROLLBACK回滚命令使数据库状态回到上次最后提交的状态。其格式为:SQL>ROLLBACK
五、TCL
事务控制语言