sql学习(三)
标签 : sql
多表查询
采用JOIN关键字建立连接 : SELECT column FROM join_table JOIN_TYPE join_table ON (join_condition)
- JOIN TYPE
- 自然连接:NATRUAL JOIN
- 内连接:INNER JOIN
- 外连接
- 左外连接:LEFT (OUTER) JOIN
- 右外连接:RIGHT (OUTER) JOIN
- 全外连接:FULL (OUTER) JOIN
- 交叉连接:CROSS JOIN
连接
- 自连接:指表与自身连接,自连接可以使用子查询方式实现
- 自然连接:将表中具有相同名称的列自动进行匹配(SQL Server不支持)
- 内连接(等同连接):返回结果集是两个表中所有相匹配的数据,舍弃不匹配的数据
- 等值连接 : =
- 不等连接 : 多表连接
- 外连接:
- 左外连接 = 内连接 + 左边表中失配的元组(在SQL Server 中用 *= 实现左连接)
- 右外连接 = 内连接 + 右边表中失配的元组 (在SQL Server中用 =* 实现右连接)
- 全外连接 = 内连接 + 左边表中失配的元组 + 右边表中失配的元组
- 交叉连接:返回被连接的两个表中所有数据行的笛卡尔积
UNION与UNION JOIN
- UNION运算符用于集合合并运算
- UNION JOIN只是把来自一个原表的行与另一个原表中的行联合起来(SQL Server 不支持)
SQL 子查询
- IN子查询:
SELECT column_name FROM table_name WHERE test_expression [NOT] IN (subquery)
- EXISTS子查询:
SELECT column_name FROM table_name WHERE [NOT] EXISTS (subquery)
- SOME/ALL子查询:
SELECT column_name FROM table_name WHERE test_expression θ SOME/ALL (subquery)
- UNIQUE子查询(用于测试子查询结果中是否含有重复记录):
SELECT column_name FROM table_name WHERE [NOT] UNIQE (subquery)
- 使用子查询创建视图
数据插入
INSERT INTO table_name VALUES(val1 ,val2,...)
数据更新及删除
UPDATE table_name SET col1 = val1 ,...
DELETE FROM table_name WHERE search_condition