1.插入记录
方法一:INSERT [INTO] tb_name[(col_name,...)] {VALUES | VALUE}({expr | DEFAULT},...),(...),...
方法二:INSERT [INTO] tb_name SET col_name={expr | DEFAULT},...
说明:与第一种方法的区别在于,此方法可以使用子查询(SunQuery),且只能插入一条记录
方法三:INSERT [INTO] tb_name[(col_name,...)] SELECT ...
2.
更新记录(单表更新)
UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr | DEFAULT}[,col_name2={expr | DEFAULT}]...[WHERE where_condition]
3.删除记录(单表删除)
DELETE FROM tb_name [WHERE where_condition]
4.查找记录
SELECT select_expr [,select_expr ...]
[
FROM table_references
[WHERE where_condition]
[GROUP BY {col_name | position} [ASC | DESC],...]
[HAVING where_condition]
[ORDER BY {col_name | expr | positon} [ASC | DESC],...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
]
(1)查询表达式select_expr
每个表达式表示想要的一列,必须要有一个。
多个列之间以英文逗号分隔。
星号(*)
表示所有列。tb_name.*可以表示命名表的所有列。
查询表达式可以使用[AS] alias_name为其赋予别名。
别名可用于GROUP BY,ORDER BY或HAVING语句。
(2)条件表达式WHERE
对记录进行过滤,如果没有指定WHERE子句,则显示所有记录。在WHERE表达式中,可以使用MySQL支持的函数或运算符。
(3)查询结果分组GROUP BY
[GROUP BY {col_name | position} [ASC | DESC],...]
(4)分组条件HAVING
[HAVING where_condition]
(5)对结果进行排序ORDER BY
[ORDER BY {col_name | expr | positon} [ASC | DESC],...]
(6)限制查询结果返回的数量
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
5.子查询
子查询(Subquery)是指出现在其他SQL语句内的SELECT语句。
子查询指嵌套在查询内部,且必须始终出现在圆括号内。
子查询可以包含多个关键字或条件,如DISTINCT、GROUP BY、ORDER BY、LIMIT等。
子查询的外层可以是:SELECT,INSERT,UPDATE,SET或DO。
子查询可以返回标量、一行、一列或子查询。
(1)使用比较运算符的子查询
=、>、<、>=、<=、<>、!=、<=>
语法结构
operand comparison_operator subquery
用ANY,SOME或ALL修饰比较运算符
operand comparison_operator ANY (subquery)
operand comparison_operator SOME (subquery)
operand comparison_operator ALL (subquery)
(2)使用[NOT]IN的子查询
语法结构
operand comparison_operator [NOT]IN (subquery)
=ANY运算符与IN等效
!=ALL或<>ALL与NOT IN等效
(3)使用[NOT] EXISTS子查询
如果子查询返回任何行,EXISTS将返回TRUE;否则为FALSE。
(4)将查询结果写入数据表
INSERT [INTO] tb_name[(col_name,...)] SELECT ...
6.多表更新
UPDATE table_references
SET col_name1={expr1 | DEFAULT}
[,col_name2={expr2 | DEFAULT}]
[WHERE where_condition]
7.连接类型
INNER JOIN,内连接 在MySQL中,JOIN,CROSS JOIN和INNER JOIN是等价的
LEFT [OUTER] JOIN,左外连接
RIGHT [OUTER] JOIN,右外连接
语法结构
table_reference
{[INNER|CROSS] JOIN | {LEFT|RIGHT} [OUTER] JOIN}
table_reference
ON condition_expr
8.数据表参照
table_reference
tb_name [[AS] alias]|table_subquery [AS] alias
数据表可以使用tb_name [AS] alias赋予别名
9.连接条件
使用ON关键字来设定连接条件,也可以使用WHERE来代替
通常使用ON关键字来设定连接条件,使用WHERE关键字进行结果集记录的过滤。
10.CREATE …SELECT
创建数据表同时将查询结果写入到数据表
CREATE TABLE [IF NOT EXISTS] tb_name
[(create_definition,...)]
select_statement
11.自身连接
同一个数据表对其自身进行连接。
例:tdb_goods>SELECT s.type_id,s.type_name,p.type_name FROM tdb_goods_types AS
-> s LEFT JOIN tdb_goods_types AS p ON s.parent_id=p.type_id;
12.多表删除
DELETE tb_name[.*][,tb_name[.*]]...
FROM table_references
[WHERE where_condition]