SQL:1999基本语法

SELECT [DISTINCT] * | 列名称 [AS]别名,........
FROM 表名称1 [别名1][CROSS JOIN表名称2 别名2]|
[NATURAL JOIN表名称2 别名2]
[ JOIN表名称2 别名2 USING (关联列名称)]
[ JOIN表名称2 别名2 on (关联条件)]
[LEFT | RIGHT | FULL OUTER JOIN 表2 ON (关联条件)]
[WHERE 条件(s)]
[ORDER BY 排序的字段 1,ASC| DESC,排序的字段2 ASC| DESC,....]
  • 交叉连接(CROSS IN)

语法:

SELECT [DISTINCT] * | 列名称 [AS]别名,........
FROM 表名称1 [别名1][CROSS JOIN表名称2 别名2]|
[WHERE 条件(s)]
[ORDER BY 排序的字段 1,ASC| DESC,排序的字段2 ASC| DESC,....]

使用交叉连接门生笛卡尔积

SELECT *
FROM emp e CROSS JOIN dept d;

使用where消除

SELECT *
FROM emp e CROSS JOIN dept d
WHERE e.deptno=d.deptno;
  • 自然连接(NATURAL JOIN)

语法:

SELECT [DISTINCT] * | 列名称 [AS]别名,........
FROM 表名称1 [别名1]
[NATURAL JOIN表名称2 别名2]
[WHERE 条件(s)]
[ORDER BY 排序的字段 1,ASC| DESC,排序的字段2 ASC| DESC,....]

使用自然连接

SELECT *
FROM emp NATURAL JOIN dept;
--自然连接可以直接消除笛卡尔积
  • USING子句

语法:

SELECT [DISTINCT] * | 列名称 [AS]别名,........
FROM 表名称1 [别名1] [ JOIN表名称2 别名2 USING (关联列名称)]
[WHERE 条件(s)]
[ORDER BY 排序的字段 1,ASC| DESC,排序的字段2 ASC| DESC,....]

使用USING子句

SELECT *
FROM emp JOIN dept USING (deptno); --USING后字段要用()
  • ON子句

语法:

SELECT [DISTINCT] * | 列名称 [AS]别名,........
FROM 表名称1 [别名1] [ JOIN表名称2 别名2 on (关联条件)]
[WHERE 条件(s)]
[ORDER BY 排序的字段 1,ASC| DESC,排序的字段2 ASC| DESC,....]

使用ON子句:

SELECT *
FROM emp e JOIN dept d ON (e.deptno=d.deptno) ;
--ON后是条件
--()可以省略
  • 外连接

语法:

SELECT [DISTINCT] * | 列名称 [AS]别名,........
FROM 表名称1 [别名1][LEFT | RIGHT | FULL OUTER JOIN 表2 ON (关联条件)]
[WHERE 条件(s)]
[ORDER BY 排序的字段 1,ASC| DESC,排序的字段2 ASC| DESC,....]

左外连接:

SELECT *
FROM emp e LEFT OUTER JOIN dept d
ON(e.deptno=d.deptno);
--使用ON消除笛卡尔积
SELECT *
FROM emp e LEFT OUTER JOIN dept d
USING (deptno);
--使用USING消除笛卡尔积

右外连接:

SELECT *
FROM emp e RIGHT OUTER JOIN dept d
ON(e.deptno=d.deptno);
--使用ON消除笛卡尔积
SELECT *
FROM emp e RIGHT OUTER JOIN dept d
USING (deptno);
--使用USING消除笛卡尔积

全外连接:

SELECT *
FROM emp e FULL OUTER JOIN dept d
ON(e.deptno=d.deptno);
--使用ON消除笛卡尔积
SELECT *
FROM emp e FULL OUTER JOIN dept d
USING (deptno);
--使用USING消除笛卡尔积

最新文章

  1. APPCAN开发笔记:html页面之间的参数传递:使用js获取url中的参数,以及在APPCAN中不能使用的解决方法
  2. Provisioning Services 7.6 入门到精通系列之一:PVS前期规划
  3. 测试CAS
  4. AngularJS中的按需加载ocLazyLoad
  5. 数组遍历map和each使用
  6. 实时输出TextField中内容
  7. MYSQL导入导出.sql文件(转)
  8. iframe页面改动parent页面的隐藏input部件value值,不能触发change事件。
  9. UVA 719 / POJ 1509 Glass Beads (最小表示法/后缀自动机)
  10. 编写程序输入一个5x5的矩阵,将最大元素与中心元素交换,并按行列对齐输出。
  11. 客户端程序通过TCP通信传送"小文件"到服务器
  12. SQL存储过程和函数
  13. iOS 多线程之线程锁Swift-Demo示例总结
  14. 《深入理解Java虚拟机》——垃圾收集器与内存分配策略
  15. <<君主论>>读后感
  16. 【转】hibernate 延迟加载
  17. Redhat上为java Maven项目构建基于Jenkins + Github的持续集成环境
  18. canvas-star7.html
  19. 腾讯X5WebView集成及在移动端中使用
  20. node启动服务报错Node.js Error: Cannot find module express

热门文章

  1. Linux下Nginx+多Tocat下的负载均衡环境的简单搭建
  2. 传智播客PHP面试题宝典开放下载
  3. xvcd – The Xilinx Virtual Cable Daemon
  4. 斑马Zebra驱动下载
  5. checked和unchecked的区别
  6. VirtualBox 安装虚拟机
  7. Spring-4.0 + Quartz-2.2.1 集群实例(Tomcat+Memcached+Quartz集群session共享)还是没有解决Serializable序列化
  8. navicat for mysql中添加注释
  9. Saving HDU hdu
  10. [实时更新]jquery全部版本号下载