mysql,SQL标准,多表查询中内连接,外连接,自然连接等详解之查询结果集的笛卡尔积的演化
先附上数据
CREATE TABLE `course` (
`cno` int(11) NOT NULL,
`cname` char(30) CHARACTER SET utf8 NOT NULL,
`ctime` int(11) NOT NULL,
`scount` int(11) NOT NULL,
`ctest` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `course` VALUES ('', '应用数学基础', '', '', '2016-03-10 10:08:29');
INSERT INTO `course` VALUES ('', '生物工程概论', '', '', '2016-03-10 10:09:24');
INSERT INTO `course` VALUES ('', '计算机软件基础', '', '', '2016-03-10 10:09:47');
INSERT INTO `course` VALUES ('', '计算机硬件基础', '', '', '2016-03-10 10:10:28');
INSERT INTO `course` VALUES ('', '模拟电路设计', '', '', '2016-04-06 10:11:02');
INSERT INTO `course` VALUES ('', '机械设计实践', '', '', '2016-03-10 10:11:29');
INSERT INTO `course` VALUES ('', '生物化学', '', '', '2016-03-29 10:11:54');
INSERT INTO `course` VALUES ('', '数据库设计', '', '', '2016-03-10 10:12:14');
INSERT INTO `course` VALUES ('', '设计理论', '', '', '2016-03-10 10:12:33');
INSERT INTO `course` VALUES ('', '计算机入门', '', '', '2016-03-10 10:12:53');
INSERT INTO `course` VALUES ('', '数字电路设计基础', '', '', '2016-03-10 10:13:10'); CREATE TABLE `student` (
`sno` char(4) CHARACTER SET utf8 DEFAULT NULL,
`sname` char(10) CHARACTER SET utf8 DEFAULT NULL,
`dname` char(10) CHARACTER SET utf8 DEFAULT NULL,
`ssex` char(2) CHARACTER SET utf8 NOT NULL,
`cno` int(11) NOT NULL,
`mark` decimal(3,1) NOT NULL,
`type` char(4) CHARACTER SET utf8 NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `student` VALUES ('', '刘建国', '管理工程', '男', '', '82.5', '必修');
INSERT INTO `student` VALUES ('', '刘建国', '管理工程', '男', '', '70.0', '必修');
INSERT INTO `student` VALUES ('', '刘建国', '管理工程', '男', '', '78.5', '选修');
INSERT INTO `student` VALUES ('', '李春', '环境工程', '女', '', '63.0', '必修');
INSERT INTO `student` VALUES ('', '李春', '环境工程', '女', '', '58.0', '选修');
INSERT INTO `student` VALUES ('', '王天', '生物', '男', '', '48.5', '必修');
INSERT INTO `student` VALUES ('', '王天', '生物', '男', '', '86.0', '选修');
INSERT INTO `student` VALUES ('', '李华', '计算机', '女', '', '76.0', '必修');
INSERT INTO `student` VALUES ('', '李华', '计算机', '女', '', '92.0', '必修');
INSERT INTO `student` VALUES ('', '李华', '计算机', '女', '', '89.0', '必修');
INSERT INTO `student` VALUES ('', '李华', '计算机', '女', '', '80.0', '必修');
INSERT INTO `student` VALUES ('', '李华', '计算机', '女', '', '70.0', '选修');
INSERT INTO `student` VALUES ('', '孙庆', '电子工程', '男', '', '79.0', '必修');
INSERT INTO `student` VALUES ('', '孙庆', '电子工程', '男', '', '59.0', '必修');
INSERT INTO `student` VALUES ('', '孙庆', '电子工程', '男', '', '52.0', '必修');
INSERT INTO `student` VALUES ('', '孙庆', '电子工程', '男', '', '68.0', '必修');
INSERT INTO `student` VALUES ('', '高伟', '机械工程', '男', '', '93.0', '必修');
INSERT INTO `student` VALUES ('', '高伟', '机械工程', '男', '', '88.5', '必修');
INSERT INTO `student` VALUES ('', '高伟', '机械工程', '男', '', '78.0', '选修');
INSERT INTO `student` VALUES ('', '高伟', '机械工程', '男', '', '76.0', '选修'); CREATE TABLE `teacher` (
`tno` int(11) NOT NULL,
`tname` varchar(10) CHARACTER SET utf8 NOT NULL,
`cno` int(11) NOT NULL,
`sal` int(11) DEFAULT NULL,
`dname` char(10) CHARACTER SET utf8 NOT NULL,
`tsex` char(2) CHARACTER SET utf8 NOT NULL,
`age` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1; INSERT INTO `teacher` VALUES ('', '王军', '', '', '数学', '男', '');
INSERT INTO `teacher` VALUES ('', '李丹', '', '', '生物', '女', '');
INSERT INTO `teacher` VALUES ('', '王永军', '', '', '计算机', '男', '');
INSERT INTO `teacher` VALUES ('', '刘小静', '', '', '计算机', '女', '');
INSERT INTO `teacher` VALUES ('', '高伟', '', '', '电子工程', '男', '');
INSERT INTO `teacher` VALUES ('', '李伟', '', '', '机械工程', '男', '');
INSERT INTO `teacher` VALUES ('', '刘辉', '', '', '生物', '女', '');
INSERT INTO `teacher` VALUES ('', '刘静', '', '', '经济管理', '女', '');
INSERT INTO `teacher` VALUES ('', '李伟', '', null, '计算机', '女', '');
INSERT INTO `teacher` VALUES ('', '刘一凯', '', null, '计算机', '女', '');
简单的二表连接
SELECT tname,dname,cname,ctest from teacher,course WHERE teacher.cno=course.cno

SELECT tname,dname,cname,ctest from teacher,course


采用join关键字建立连接
SELECT COLUMN from join_table join_type join_table on (join_condition)
自连接
SELECT s.sname,s.dname,s.cno,s.mark
from student s
where s.mark<60


SELECT s.sname,s.dname,s.cno,s.mark
from student s
where s.sno in(SELECT DISTINCT s.sno from student s where s.mark<60)


SELECT DISTINCT s.sname,s.dname,s.cno,s.mark
from student s,student s2
where s.sno=s2.sno
and s2.mark<60


SELECT s.sname,s.dname,s.cno,s.mark
from student s,student s2
where s.sno=s2.sno
and s2.mark<60


SELECT DISTINCT s.sname,s.dname,s.cno,s.mark
from student s,student s2
where s.sno=s2.sno
and s.mark<60


自然连接


SELECT sname,dname,cno,tname
from student NATURAL join teacher
SELECT sname,s.dname,s.cno,tname
from student s, teacher t
where s.dname=t.dname
and s.cno=t.cno


外连接
1,左外连接


SELECT s.sno,sname,s.cno,cname,ctest,mark
from student s LEFT JOIN course c
on s.cno=c.cno
ORDER BY sname


右外连接

SELECT s.sno,sname,s.cno,cname,ctest,mark
from student s RIGHT JOIN course c
on s.cno=c.cno
ORDER BY sname

全外连接


SELECT s.sno,sname,s.cno,cname,ctest,mark
from student s full OUTER JOIN course c
on s.cno=c.cno
ORDER BY sname
mysql,SQL标准,多表查询中内连接,外连接,自然连接等详解之查询结果集的笛卡尔积的演化的更多相关文章
- Python中内置的日志模块logging用法详解
logging模块简介 Python的logging模块提供了通用的日志系统,可以方便第三方模块或者是应用使用.这个模块提供不同的日志级别,并可以采用不同的方式记录日志,比如文件,HTTP GET/P ...
- SQL语句 删除表user 中字段name 内容重复的记录,
public class T01 { public static void main(String[] args) { int j=4; j=j+=j-=j*=j; System.out.printl ...
- mysql status关键字 数据表设计中慎重使用
mysql status关键字 数据表设计中慎重使用
- MySQL慢查询(二) - pt-query-digest详解慢查询日志 pt-query-digest 慢日志分析
随笔 - 66 文章 - 0 评论 - 19 MySQL慢查询(二) - pt-query-digest详解慢查询日志 一.简介 pt-query-digest是用于分析mysql慢查询的一个工具,它 ...
- Mysql高手系列 - 第9篇:详解分组查询,mysql分组有大坑!
这是Mysql系列第9篇. 环境:mysql5.7.25,cmd命令中进行演示. 本篇内容 分组查询语法 聚合函数 单字段分组 多字段分组 分组前筛选数据 分组后筛选数据 where和having的区 ...
- MySQL中的主键,外键有什么作用详解
MySQL中的主键,外键有什么作用详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 学关系型数据库的同学,尤其在学习主键和外键时会产生一定的困惑.那么今天我们就把这个困惑连根拔起 ...
- Spring Boot 2.x基础教程:进程内缓存的使用与Cache注解详解
随着时间的积累,应用的使用用户不断增加,数据规模也越来越大,往往数据库查询操作会成为影响用户使用体验的瓶颈,此时使用缓存往往是解决这一问题非常好的手段之一.Spring 3开始提供了强大的基于注解的缓 ...
- SQL Server时间粒度系列----第4节季、年时间粒度详解
本文目录列表: 1.SQL Server季时间粒度2.SQL Server年时间粒度 3.总结语 4.参考清单列表 SQL Serve季时间粒度 季时间粒度也即是季度时间粒度.一年每3 ...
- 转载~kxcfzyk:Linux C语言多线程库Pthread中条件变量的的正确用法逐步详解
Linux C语言多线程库Pthread中条件变量的的正确用法逐步详解 多线程c语言linuxsemaphore条件变量 (本文的读者定位是了解Pthread常用多线程API和Pthread互斥锁 ...
随机推荐
- Exception:HTTP Status 500 - org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
主要错误信息如下: HTTP Status 500 - org.apache.ibatis.binding.BindingException: Invalid bound statement (not ...
- 在MacOS 10.12上安装Tomcat8.5
在MacOS 10.12上安装Tomcat8.5 原文链接:https://wolfpaulus.com/journal/mac/tomcat8/ Context 已安装Java,使用java -ve ...
- C#实现约瑟夫环问题
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace orde ...
- js实现多张图片每隔一秒换一张图片
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlkAAAHWCAIAAADLlAuAAAAgAElEQVR4nOzd5XNc157w+/l7bt2n6t
- 前端学PHP之面向对象系列第二篇——魔术方法
× 目录 [1]构造方法 [2]析构方法 [3]不可访问属性[4]对象复制[5]字符串[6]对象不存在[7]自动加载类[8]串行化[9]函数调用 前面的话 php在面向对象部分有很多相关的魔术方法,这 ...
- Java基础之类Class使用
大家都知道Java是一门面向对象编程语言,在Java世界里,万事万物皆对象,那个Java中怎么表示对象呢?Class 我们知道Java中的对象都是Object类的子类,那么今天我们就一起来研究一下Ja ...
- ImageView设置边框的两种方式
转载:http://www.2cto.com/kf/201308/239945.html package cc.testimageviewbounds; import android.os.Bundl ...
- 爬虫技术 -- 进阶学习(十一)【补充】获取html中meta标签中的content的内容
上一篇网易新闻页面信息抓取 -- htmlagilitypack搭配scrapysharp中提及了很多如何快速抓取html中的文本的语句, 但是meta标签中的content内容的抓取,没有提及到! ...
- 新作《ASP.NET MVC 5框架揭秘》正式出版
ASP.NET MVC是一个建立在ASP.NET平台上基于MVC模式的Web开发框架,它提供了一种与Web Form完全不同的开发方式.ASP.NET Web Form借鉴了Windows Form基 ...
- 浅谈async、await关键字 => 深谈async、await关键字
前言 之前写过有关异步的文章,对这方面一直比较弱,感觉还是不太理解,于是会花点时间去好好学习这一块,我们由浅入深,文中若有叙述不稳妥之处,还请批评指正. 话题 (1)是不是将方法用async关键字标识 ...