SQL基础学习7
来源:互联网 发布:外墙线条展开面积算法 编辑:程序博客网 时间:2024/06/05 01:56
表的加减法
何为集合运算:对满足同一规则的记录进行的加减等“四则运算”,以行方向为单位进行操作(即导致行数的增减)
表的加法——UNION(并集):
<pre name="code" class="sql">SELECT name,priceFROM ShopUNIONSELECT name,priceFROM Shop1;解释:将表Shop与表Shop1进行并集运算;结果中会除去重复的记录
P.S:作运算对象的记录的列数必须相同、列的类型必须一致;可以使用任何SELECT语句,但ORDER BY子句只能在最后使用一次
包含重复行的集合运算——ALL选项:对所有的集合运算符都适用
SELECT name,priceFROM ShopUNION <span style="color:#ff0000;">ALL</span>SELECT name,priceFROM Shop1;解释:在UNION后加ALL关键字,就可以实现在集合运算中保留重复行的效果
选取表中的公共部分——INTERSECT:应用于两张表,选取出它们当中的公共记录
SELECT name,priceFROM ShopINTERSECTSELECT name,priceFROM Shop1;
记录的减法——EXCEPT:两张表的差集
SELECT name,priceFROM ShopEXCEPTSELECT name,priceFROM Shop1;解释:由表Shop的记录减去表Shop1记录的剩余部分
P.S:当减数和被减数的位置不同时,所得到的结果是不同的
联结(以列为单位对表进行联结)
何为联结:将其它表中的列添加进来,进行“添加列”的运算
内联结——INNER JOIN:应用最广泛的联结运算
对于两张满足以下条件的表:1.两张表中都包含的列;2.只存在于一种表内的列
联结运算:以条件1的列作为桥梁,将条件2中满足同样条件的列汇集到同一结果之中
SELECT S1.code,S1.shopname,S.name,S.priceFROM 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.priceFROM 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.priceFROM Shop1 AS S1 INNSR JOIN Shop AS SON 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.priceFROM Shop1 AS S1 CROSS JOIN Shop AS SON S1.name=S.name;
0 0
- SQL基础学习7
- SQL学习 之SQL基础
- 零基础学习sql(7) 序列
- PL/SQL基础学习
- sql基础学习
- sql 基础学习
- PL\SQL基础学习
- SQL学习基础笔记
- SQL学习基础
- sql基础学习
- SQL基础学习
- SQL学习语法基础
- sql基础学习
- 基础SQL语句学习
- SQL基础学习1
- SQL基础学习2
- SQL基础学习3
- SQL基础学习4
- php字符串函数理解
- 【2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest D】【模拟 讨论】Boulevard 人流行走看是否相交 beautiful code
- HDU 4771 Stealing Harry Potter's Precious [BFS]
- C# : Form1 => Form2 -> Form1
- Android开发环境搭建
- SQL基础学习7
- 简易的壁纸更换
- 标准I/O
- Pentest - 15 ways to Download a File
- 常用HTML标签显示效果
- nyoj364田忌赛马【贪心】
- 各种距离
- 006 Notepad++快捷键
- 关于PHP的类的学习1