- 创建总的数据表:
- 插入数据:
3.子查询:
子查询(Subquery)是指出现在其他SQL语句内的SELECT子句。
例如:
SELECT * FROM t1 WHERE col1 = (SELECT col2 FROM t2);
其中SELECT * FROM t1,称为Outer Query/Outer Statement
SELECT col2 FROM t2, 称为SubQuery
子查询可以指嵌套在查询内部,且必须始终出现在圆括号内。
子查询可以包含多个关键字或条件
如:DISTINCT GROUP BY ORDER BY LIMIT 函数等。
子查询的外层查询可以是:SELECT,INSERT,UPDATE,SET或DO.
子查询返回值:
子查询可以返回标量、一行、一列或子查询。
3.1 使用比较运算符的子查询:
= 、> 、<、>=、<=、<>、!=、<=>、
语法结构:
operand comparsion_operator subquery
求平均价格
将平均价格四舍五入,保留两位数字。
使用子查询查看大于平均价格的商品的 id name price.
按商品种类查找
用ANY SOME ALL修饰的比较运算符
3.2 使用[NOT] IN 的子查询:
operand comparison_operator [NOT] IN (subquery)
= ANY 运算符与IN等效。
!= ALL 或<> ALL运符 与 NOT IN 等效。
3.3 使用[NOT] EXISTS 的子查询:
如果子查询返回任何行,EXISTS将返回TRUE; 否则为FALSE.
- 将查询结果写入数据表:
INSERT [INTO] tbl_name [(col_name,…)]
SELECT…
将查询到的商品种类插入到商品种类表中。
5.多表更新:
UPDATE table_references
SET col_name1 = {expr1 | DEFAULT}
[, col_name2 = {expr2 | DEFAULT}]…
[WHERE where_condition]
语法结构:
table_reference
{[INNER | CROSS] JOIN | {LEFT | RIGHT} [OUTER] JOIN}
table_reference
ON conditional_expr
相同项匹配连接 参照商品种类表更新商品表
6.创建数据表同时将查询结果写入带数据表:
CREATE TABLE [IF NOT EXISTS] tbl_name
[(create_definition,…)]
select_statement
7.MySQL在SELECT语句、多表更新,多表删除语句中支持JOIN操作。
语法结构:table_reference
{[INNER | CROSS] JOIN | {LEFT | RIGHT} [OUTER] JOIN}
table_reference
ON conditionnal_expr
INNER JOIN 内连接,左右两表的重合部分,都符合条件的部分
LEFT JOIN 左外连接,左表全部加右表符合条件的
RIGHT JOIN 右外连接 ,左表符合加右表全部
多表连接:
使数据表恢复到原始状态
8.同一个数据对其自身进行连接:
对自身数据表进行连接,给前列找到父类。左边父类,右边子类
左边父类,右边子类。