SQL 语句可分为以下几类:
四约束是一种简单地强加于表中一列或多列的限制,从而保证表中数据一致性(准确和可靠)。以下为六大约束:
在项目开发过程中,使用数据库查询语句时,有很多需求都是要涉及到较为复杂或者多表的连接查询,需要关联查询实现。以下为总结的 MySQL 的五种关联查询。
除了在 FROM 子句中使用 逗号间隔连接的表 外,SQL 还支持另一种被称为交叉连接的操作,它们都返回被连接的两个表所有数据行的 笛卡尔积,返回到的数据行数等于第一个表中符合查询条件的数据行数 乘以 第二个表中符合查询条件的数据行数。惟一的不同在于,交叉连接分开列名时,使用 CROSS JOIN 关键字而不是逗号,即以下两个表达式等价:
SELECT * FROM A, B
SELECT * FROM A CROSS JOIN B
内连接分为三类,分别是 等值连接:ON A.id = B.id、不等值连接:ON A.id > B.id 和 自连接:SELECT * FROM A T1 INNER JOIN A T2 ON T1.id = T2.pid。
左外连接:以左表为主,先查询出左表,按照 ON 后的关联条件匹配右表,没有匹配到的用 NULL 填充,可以简写成 LEFT JOIN;
右外连接:以右表为主,先查询出右表,按照 ON 后的关联条件匹配左表,没有匹配到的用 NULL 填充,可以简写成 RIGHT JOIN;
SELECT * FROM A UNION SELECT * FROM B UNION ...
联合查询就是把多个结果集集中在一起,UNION 前的结果为基准,需要注意的是联合查询的 列数要相等,相同的记录行会合并;
如果使用 UNION ALL,不会合并重复的记录行,所以效率更高。
MySQL 本身不支持全连接,但可以通过联合使用 LEFT JOIN、UNION 和 RIGHT JOIN 来实现。
SELECT * FROM A LEFT JOIN B ON A.id = B.id UNIONSELECT * FROM A RIGHT JOIN B ON A.id = B.id
多条 MySQL 语句嵌套使用时,内部的 MySQL 查询语句称为子查询。子查询是一个 SELECT 语句,它嵌套在另一个 SELECT、SELECT…INTO 语句、INSERT…INTO 语句、DELETE 语句、 UPDATE 语句或嵌套在另一子查询中。
MySQL 的子查询是多表查询的一个重要组成部分,常常和 连接查询 一起使用,是多表查询的基础。
子查询分为以下四类:
查询返回单一值的标量,如一个数字或一个字符串,是子查询中最简单的形式。
子查询返回的结果集是 N 行一列,该结果通常来自对表的 某个字段 查询返回。
子查询返回的结果集是一行 N 列,该结果通常是对表的 某行数据 进行查询而返回的结果集
子查询返回的结果集是 N 行 N 列的一个表数据。
三种都可以表示删除,其中的细微区别之处如下:
因此,在不再需要一张表的时候,采用 DROP;在想删除部分数据行时候,用 DELETE;在保留表而删除所有数据的时候用 TRUNCATE。
UNION 用于把来自多个 SELECT 语句的结果组合到一个结果集合中,MySQL 会把结果集中 重复的记录删掉,而使用 UNION ALL,MySQL 会把所有的记录返回,且效率高于 UNION 。
阅读量:2010
点赞量:0
收藏量:0