SQL基础学习7
2015-11-08 21:36
246 查看
表的加减法
何为集合运算:对满足同一规则的记录进行的加减等“四则运算”,以行方向为单位进行操作(即导致行数的增减)
表的加法——UNION(并集):
解释:将表Shop与表Shop1进行并集运算;结果中会除去重复的记录
P.S:作运算对象的记录的列数必须相同、列的类型必须一致;可以使用任何SELECT语句,但ORDER BY子句只能在最后使用一次
包含重复行的集合运算——ALL选项:对所有的集合运算符都适用
选取表中的公共部分——INTERSECT:应用于两张表,选取出它们当中的公共记录
记录的减法——EXCEPT:两张表的差集
P.S:当减数和被减数的位置不同时,所得到的结果是不同的
联结(以列为单位对表进行联结)
何为联结:将其它表中的列添加进来,进行“添加列”的运算
内联结——INNER JOIN:应用最广泛的联结运算
对于两张满足以下条件的表:1.两张表中都包含的列;2.只存在于一种表内的列
联结运算:以条件1的列作为桥梁,将条件2中满足同样条件的列汇集到同一结果之中
将表联结起来后,可以使用WHERE、GROUP BY、HAVING、ORDER BY等子句;
联结起来的表只在SELECT语句执行期间存在,SELECT语句执行之后就会小時。若希望继续使用这张表,则应将其创建成视图
外联结——OUTER JOIN:也是通过ON子句使用联结键将两张表进行联结
3张以上表的联结:原则上联结表的数量并没有限制
内联结可以理解为“包含在交叉联结结果中的部分”;外联结可以理解为“交叉联结结果之外的部分”
何为集合运算:对满足同一规则的记录进行的加减等“四则运算”,以行方向为单位进行操作(即导致行数的增减)
表的加法——UNION(并集):
<pre name="code" class="sql">SELECT name,price FROM Shop UNION SELECT name,price FROM Shop1;
解释:将表Shop与表Shop1进行并集运算;结果中会除去重复的记录
P.S:作运算对象的记录的列数必须相同、列的类型必须一致;可以使用任何SELECT语句,但ORDER BY子句只能在最后使用一次
包含重复行的集合运算——ALL选项:对所有的集合运算符都适用
SELECT name,price FROM Shop UNION <span style="color:#ff0000;">ALL</span> SELECT name,price FROM Shop1;解释:在UNION后加ALL关键字,就可以实现在集合运算中保留重复行的效果
选取表中的公共部分——INTERSECT:应用于两张表,选取出它们当中的公共记录
SELECT name,price FROM Shop INTERSECT SELECT name,price FROM Shop1;
记录的减法——EXCEPT:两张表的差集
SELECT name,price FROM Shop EXCEPT SELECT name,price FROM Shop1;解释:由表Shop的记录减去表Shop1记录的剩余部分
P.S:当减数和被减数的位置不同时,所得到的结果是不同的
联结(以列为单位对表进行联结)
何为联结:将其它表中的列添加进来,进行“添加列”的运算
内联结——INNER JOIN:应用最广泛的联结运算
对于两张满足以下条件的表:1.两张表中都包含的列;2.只存在于一种表内的列
联结运算:以条件1的列作为桥梁,将条件2中满足同样条件的列汇集到同一结果之中
SELECT S1.code,S1.shopname,S.name,S.price FROM Shop1 AS S1 <span style="color:#ff0000;">INNER JOIN</span> Shop AS S <span style="color:#ff0000;">ON </span>S1.name=S.name;P.S:在FROM子句中使用INNER JOIN将两张表联结在一起,注意别名不是必须的;ON子句后面所记载的是联结条件,即指定两张表联结所使用的列(联结键),ON必须写在FROM和WHERE之间;在SELECT子句中需要按照“表的别名.列名”的格式进行书写,以防在两个表的同名列之间产生混乱;
将表联结起来后,可以使用WHERE、GROUP BY、HAVING、ORDER BY等子句;
联结起来的表只在SELECT语句执行期间存在,SELECT语句执行之后就会小時。若希望继续使用这张表,则应将其创建成视图
外联结——OUTER JOIN:也是通过ON子句使用联结键将两张表进行联结
SELECT S1.code,S1.shopname,S.name,S.price FROM Shop1 AS S1 <span style="color:#ff0000;">RIGHT OUTER JOIN</span> Shop AS S <span style="color:#ff0000;">ON</span> S1.name=S.name;P.S:选取出单张表中全部的信息(内联结只能选取出同时存在于两张表中的数据,而只要数据存在于某一张表中,通过外联结就能够读取出来);通过使用LEFT和RIGHT来指定哪张表为主表(最终结果包含主表内所有的数据)
3张以上表的联结:原则上联结表的数量并没有限制
SELECT S1.code,S1.shopname,S.name,S.price FROM Shop1 AS S1 INNSR JOIN Shop AS S ON S1.name=S.name <span style="color:#ff0000;">INNER JOIN Producer AS P</span> --第3张表 ON S1.name=P.name;交叉联结——CROSS JOIN(笛卡尔积):为所有联结运算的基础,但在实际业务中并没有使用过(原因1:其结果没有实用价值;原因2:结果行数太多,需要大量的运算时间与高性能设备的支持)
内联结可以理解为“包含在交叉联结结果中的部分”;外联结可以理解为“交叉联结结果之外的部分”
SELECT S1.code,S1.shopname,S.name,S.price FROM Shop1 AS S1 CROSS JOIN Shop AS S ON S1.name=S.name;
相关文章推荐
- 商城步骤一
- oracle 日期操作 汇总
- 机房重构——数据库
- mysql 必知必会 笔记
- (转)mongodb 解决 couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91 错误
- MySQL学习笔记(7)之字符集和校对规则
- MySQL存储引擎
- MySQL学习笔记(16)之存储过程
- MySQL学习笔记(15)之索引
- MySQL学习笔记(14)之事务
- MySQL学习笔记(13)之储存引擎
- MySQL学习笔记(12)之触发器(trigger)
- MySQL学习笔记(11)之视图(view)
- MySQL学习笔记(10)之select查询语句
- MySQL学习笔记(9)之外键约束
- MySQL学习笔记(8)之实体间的联系
- MySQL学习笔记(6)之设计范式
- MySQL学习(索引、引擎、优化)
- 在Win7 64位上安装mySQL5.1和Navicat10.0
- mysql的主从,主主,半同步