最新要闻
- 起凡虎符开仓令怎么用(起凡虎符有什么用)
- 中信建投:数据资源入表方案落地 关注运营商价值重估
- 珍品堂携新品预制菜亮相上海渔博会 打造家庭美食盛宴
- 索辰科技最新公告:上半年净亏损3204.44万元
- 半年报核心业绩指标均超预期 珍酒李渡长期价值明朗 具体是什么情况?
- 海大集团:上半年净利润11亿元 同比增19.78%
- 阳泉全力保障电网设备安全平稳运行
- PCIe 5.0硬盘性能实测:为何没人买?原因揭开
- 新突破!人造太阳“中国环流三号”取得里程碑式重大科研进展 相关概念股或受关注
- 中国太保集团总裁傅帆:合理进行投资决策和组合管理 争取投资获得更优的夏普比率
- 多重利好之下A股高开低走 从政策底到市场底还要多久?
- 中国队晋级2023年亚洲男排锦标赛12强
- 萝岗海关关区跨境电商出口月增1.5倍
- 内蒙古自治区乌审旗发布大雾橙色预警
- 北京永辉超市新增被执行人信息,执行标的逾1028万元
- 学青会两项摔跤测试赛在广西桂林圆满收官
广告
手机
三镇这3年:3级跳夺3冠+年投入3亿!今无人接盘,恒大9旧将命苦?
“附条件批准上市”新规:撞线第一人先发优势加大
- 三镇这3年:3级跳夺3冠+年投入3亿!今无人接盘,恒大9旧将命苦?
- “附条件批准上市”新规:撞线第一人先发优势加大
- 深圳赴港发行50亿元离岸人民币地方债
- 杰华特: 美国芯片法案目前对公司暂无实质影响,公司会持续关注行业领域内市场及政策动态,
- 思捷环球(00330.HK):上半年股东应占亏损7.14亿港元
- 李现绯闻女友和粉丝撕上热搜:带球上位,离异带娃,假富二代?
家电
读SQL学习指南(第3版)笔记06_连接和集合
(资料图片)
1.连接
1.1.笛卡儿积
1.1.1.交叉连接(cross join)
1.1.2.查询并没有指定两个数据表应该如何连接,数据库服务器就生成了笛卡儿积
1.1.2.1.两个数据表的所有排列组合
1.1.3.很少会用到(至少不会特意用到)
1.1.3.1.使用频率并不高
1.1.4.mysql
-> SELECT c.first_name, c.last_name, a.address -> FROM customer c JOIN address a;
1.1.5.为2020年的每一天生成一行,但是数据库中没有包含每天一行的数据表
1.1.5.1.涉及交叉连接、外连接、日期函数、分组、集合运算(union all)和聚合函数(count())
1.1.5.2.sql
SELECT "2020-01-01" dtUNION ALLSELECT "2020-01-02" dtUNION ALLSELECT "2020-01-03" dtUNION ALL.........SELECT "2020-12-29" dtUNION ALLSELECT "2020-12-30" dtUNION ALLSELECT "2020-12-31" dt
1.1.5.3.mysql
-> SELECT ones.num + tens.num + hundreds.num -> FROM -> (SELECT 0 num UNION ALL -> SELECT 1 num UNION ALL -> SELECT 2 num UNION ALL -> SELECT 3 num UNION ALL -> SELECT 4 num UNION ALL -> SELECT 5 num UNION ALL -> SELECT 6 num UNION ALL -> SELECT 7 num UNION ALL -> SELECT 8 num UNION ALL -> SELECT 9 num) ones -> CROSS JOIN -> (SELECT 0 num UNION ALL -> SELECT 10 num UNION ALL -> SELECT 20 num UNION ALL -> SELECT 30 num UNION ALL -> SELECT 40 num UNION ALL -> SELECT 50 num UNION ALL -> SELECT 60 num UNION ALL -> SELECT 70 num UNION ALL -> SELECT 80 num UNION ALL -> SELECT 90 num) tens -> CROSS JOIN -> (SELECT 0 num UNION ALL -> SELECT 100 num UNION ALL -> SELECT 200 num UNION ALL -> SELECT 300 num) hundreds;
1.1.5.4.如果生成{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}、{0, 10, 20, 30, 40, 50, 60, 70, 80, 90}和{0,100, 200, 300}这3个集合的笛卡儿积,并将这3列的值相加,就可以得到包含0~399的所有数值的400行结果集
1.1.5.5.mysql
-> SELECT DATE_ADD("2020-01-01", -> INTERVAL (ones.num + tens.num + hundreds.num) DAY) dt -> FROM -> (SELECT 0 num UNION ALL -> SELECT 1 num UNION ALL -> SELECT 2 num UNION ALL -> SELECT 3 num UNION ALL -> SELECT 4 num UNION ALL -> SELECT 5 num UNION ALL -> SELECT 6 num UNION ALL -> SELECT 7 num UNION ALL -> SELECT 8 num UNION ALL -> SELECT 9 num) ones -> CROSS JOIN -> (SELECT 0 num UNION ALL -> SELECT 10 num UNION ALL -> SELECT 20 num UNION ALL -> SELECT 30 num UNION ALL -> SELECT 40 num UNION ALL -> SELECT 50 num UNION ALL -> SELECT 60 num UNION ALL -> SELECT 70 num UNION ALL -> SELECT 80 num UNION ALL -> SELECT 90 num) tens -> CROSS JOIN -> (SELECT 0 num UNION ALL -> SELECT 100 num UNION ALL -> SELECT 200 num UNION ALL -> SELECT 300 num) hundreds -> WHERE DATE_ADD("2020-01-01", -> INTERVAL (ones.num + tens.num + hundreds.num) DAY) < "2021-01-01" -> ORDER BY 1;
1.1.5.6.无须人为介入,结果集会自动包含额外的闰日(2月29日),这是由数据库服务器通过将2020年1月1日加上59天计算得出
1.2.内连接
1.2.1.增加了连接类型(注意关键字inner)
1.2.2.mysql
-> SELECT c.first_name, c.last_name, a.address -> FROM customer c JOIN address a -> ON c.address_id = a.address_id;
1.2.3.sql
SELECT c.first_name, c.last_name, a.addressFROM customer c INNER JOIN address a ON c.address_id = a.address_id;
1.2.4.如果用于连接两个数据表的列名相同,则可以使用using子句替代on
1.2.4.1.sql
SELECT c.first_name, c.last_name, a.addressFROM customer c INNER JOIN address a USING (address_id);
1.2.4.2.using是一种只能在某些特定情况下使用的简写表示法
1.3.外连接(outer join)
1.3.1.如果要将一个数据表中的所有行全部纳入结果集,不管其在另一个数据表中是否存在匹配
1.3.2.mysql
-> SELECT f.film_id, f.title, count(i.inventory_id) num_copies -> FROM film f -> LEFT OUTER JOIN inventory i -> ON f.film_id = i.film_id -> GROUP BY f.film_id, f.title;
1.3.3.关键字left和right只是告知服务器哪个数据表的数据可以不足
1.3.4.outer关键字是可选的,可以使用A left join B来代替
1.4.自然连接(natural join)
1.4.1.依靠多个数据表之间相同的列名来推断适合的连接条件
1.4.2.mysql
-> SELECT c.first_name, c.last_name, date(r.rental_date) -> FROM customer c -> NATURAL JOIN rental r;Empty set (0.04 sec)
1.4.3.数据库服务器检查数据表定义并添加了连接条件r.customer_id = c.customer_id
1.4.4.应该避免使用这种连接类型,而使用带有显式连接条件的内连接
1.5.连接的旧方法
1.5.1.mysql
-> SELECT c.first_name, c.last_name, a.address -> FROM customer c, address a -> WHERE c.address_id = a.address_id;
1.5.2.不需要on子句
1.5.3.from子句中的数据表名以逗号分隔
1.5.4.连接条件出现在where子句中
1.6.ANSI连接语法
1.6.1.连接条件和过滤条件被分隔在两个不同的子句中(on子句和where子句),使得查询语句更易于理解
1.6.2.两个数据表的连接条件出现在其各自单独的on子句中,这样就不太可能错误地忽略连接条件
1.6.3.使用SQL92连接语法的查询语句可以在各种数据库服务器间移植,而旧语法在不同服务器上的表现略有不同
1.7.连接顺序
1.7.1.各数据表在from子句中出现的顺序并不重要
1.7.1.1.服务器使用从数据库对象收集的统计信息,在3个数据表中选择一个作为起点(所选择的数据表被称为驱动表),然后确定其他数据表的连接顺
1.7.2.如果认为查询语句中的数据表应该始终以特定的顺序连接,可以将数据表按照需要的顺序排列
1.7.2.1.在MySQL中指定straight_join关键字
1.7.2.1.1.sql
SELECT STRAIGHT_JOIN c.first_name, c.last_name, ct.cityFROM city ct INNER JOIN address a ON a.city_id = ct.city_id INNER JOIN customer c ON c.address_id = a.address_id
1.7.2.2.在SQL Server中请求force order选项
1.7.2.3.在Oracle Database中使用ordered或leading优化器
1.7.3.三路外连接
1.7.3.1.mysql
-> SELECT f.film_id, f.title, i.inventory_id, r.rental_date -> FROM film f -> LEFT OUTER JOIN inventory i -> ON f.film_id = i.film_id -> LEFT OUTER JOIN rental r -> ON i.inventory_id = r.inventory_id -> WHERE f.film_id BETWEEN 13 AND 15;
1.8.自连接
1.8.1.mysql
-> SELECT f.title, f_prnt.title prequel -> FROM film f -> INNER JOIN film f_prnt -> ON f_prnt.film_id = f.prequel_film_id -> WHERE f.prequel_film_id IS NOT NULL;
2.集合
2.1.在对两个数据集执行集合运算时
2.1.1.两个数据集的列数必须相等
2.1.2.两个数据集各列的数据类型必须相同
2.1.2.1.数据库服务器必须能够将一种数据类型转换成另一种数据类型
2.2.union运算符
2.2.1.mysql
-> SELECT 1 num, "abc" str -> UNION -> SELECT 9 num, "xyz" str;
2.2.2.union会对组合后的集合进行排序并去除重复项
2.2.3.union all则不然
2.3.intersect运算符
2.3.1.ANSI SQL规范中定义了用于执行交集运算的intersect运算符
2.3.2.ANSI SQL规范还提供了不去除重复行的intersect all运算符
2.3.2.1.唯一实现了intersect all运算符的数据库服务器是IBM DB2 Universal Server
2.3.3.MySQL 8.0版还未实现intersect运算符
2.3.4.Oracle或SQL Server 2008中可以使用
2.4.except运算符
2.4.1.ANSI SQL规范提供了执行差集运算的except运算符
2.4.2.ANSI SQL规范还提供了except all运算符
2.4.2.1.只有IBM的 DB2 Universal Server实现了该运算符
2.4.3.MySQL 8.0版也没有实现except运算符
2.4.4.Oracle Database需要使用非ANSI兼容的minus运算符替代except运算符
2.5.对符合查询结果排序
2.5.1.mysql
-> SELECT a.first_name fname, a.last_name lname -> FROM actor a -> WHERE a.first_name LIKE "J%" AND a.last_name LIKE "D%" -> UNION ALL -> SELECT c.first_name, c.last_name -> FROM customer c -> WHERE c.first_name LIKE "J%" AND c.last_name LIKE "D%" -> ORDER BY lname, fname;
2.6.集合运算的优先级
2.6.1.包含3个或以上查询语句的复合查询,是以自顶向下的顺序来评估查询的
2.6.2.根据ANSI SQL规范,intersect运算符拥有比其他集合运算符更高的优先级
2.6.3.可以将查询放入括号内,以明确指定查询的执行顺序
2.6.3.1.MySQL目前还不允许在复合查询中使用括号
2.6.3.2.将相邻查询放入括号中,以覆盖复合查询默认的自顶向下的处理方式
关键词:
读SQL学习指南(第3版)笔记06_连接和集合
三镇这3年:3级跳夺3冠+年投入3亿!今无人接盘,恒大9旧将命苦?
昨天有人问我,中国为什么没有哲学家?
孔雀(关于孔雀简述)
“味精大王”终止收购自嗨锅!莲花健康:未能达成共识
仙剑五是什么(仙剑5数字版是什么意思)
亚马逊物流查询网址 亚马逊物流查询
飞机头等舱和商务舱的区别_飞机头等舱
win10如何重新分区电脑(win10如何重新分区)
想买演唱会门票结果被骗近五万元,注意这些诈骗套路
垃圾桶的折法图片_垃圾桶的折法
鼓励女性感知自我 Ms. Audi先锋艺术嘉年华开幕
希腊发生沉船事故 致4人死亡
8月25日基金净值:易方达中证红利ETF最新净值1.3203,涨0.24%
8月25日基金净值:华夏核心资产混合A最新净值0.6033,跌0.59%
华茂股份(000850.SZ):上半年净利润8367.87万元
#金猫榜# 不怕闪存涨价,长存颗粒就是香!国产长存颗粒固态硬盘推荐
大动作,继李嘉诚7折卖房抛售后,5折卖房开始了,炒房客瑟瑟发抖
起凡虎符开仓令怎么用(起凡虎符有什么用)
2023贵州安顺职业技术学院第二次引进人才考察结果及拟聘用人员名单公示
n和l的发音区别图解教学(n和l的发音练习)
中信建投:数据资源入表方案落地 关注运营商价值重估
终结的炽天使米优吸血(终结的炽天使米优)
“附条件批准上市”新规:撞线第一人先发优势加大
今日舞街区还在运营吗(舞街区好玩吗)
为什么说翔就是屎(为什么翔是屎的意思)
上海发布“数据要素市场繁荣计划”
红得快,“凉”得也快的网红:有人被央视怒批,有人转头卖假货
深圳赴港发行50亿元离岸人民币地方债
布达佩斯世锦赛上那些冉冉升起的新星
珍品堂携新品预制菜亮相上海渔博会 打造家庭美食盛宴
效力待定的民事法律行为法律规定的都有哪些
索辰科技最新公告:上半年净亏损3204.44万元
好声音风波再度袭来!又有好声音学员曝出黑料:省冠军花120万才晋级
国家海洋预报台发布海浪、风暴潮蓝色警报
中央气象台:山东半岛东北地区中东部等地有强降雨 渤海黄海等地有大风
证监会进一步规范股份减持行为
恒立液压:上半年净利约12.79亿元 同比增长20.97%
中国太保上半年营业收入同比增长6.5%
重振旗鼓的意思是什么(重振旗鼓的解释)
日产天籁p0011p0021故障码
挺进超深地层 我国首口万米科探井钻探深度已达6000米
西甲官方:巴萨已为16岁青训中卫保-库巴西完成注册
轧辊磨床概念股是哪些?轧辊磨床股票龙头一览,主要利好股票有哪些?
和远气体:公司业绩是大家辛苦干出来的,不是写出来和画出来的
热门车讯起亚新凯尊实车图放出 外形设计变化大
申万宏源(06806):“22申宏06”将于8月30日付息
杰华特: 美国芯片法案目前对公司暂无实质影响,公司会持续关注行业领域内市场及政策动态,
海上“三台共舞”!台风“苏拉”或于开学当天登陆?顺德天气将……
半年报核心业绩指标均超预期 珍酒李渡长期价值明朗 具体是什么情况?
【融中|要闻回顾】中国石化上半年拟分红174亿 小鹏汽车联手滴滴
财通证券:拟每10股派发0.5元现金红利
市场监管总局发布《保健食品新功能及产品技术评价实施细则(试行)》
葛优躺(关于葛优躺简述)
思捷环球(00330.HK):上半年股东应占亏损7.14亿港元
李现绯闻女友和粉丝撕上热搜:带球上位,离异带娃,假富二代?
粮交大会兴粮兴业
8家IPO企业过会后终止注册
海大集团:上半年净利润11亿元 同比增19.78%
创造历史!陈清晨/贾一凡第四次夺得世锦赛女双冠军
探寻非遗文化
阳泉全力保障电网设备安全平稳运行
需求不振造纸行业上半年业绩承压 头部企业再提价能否解困?
仅55宗上会 7、8月IPO审核较6月放缓
公司有参与西部建设吗?大禹节水回应
交建股份:拟购买博达新能70%股权 向控股股东、实控人定增募资 公司股票自8月29日停牌
摩尔庄园神秘湖在哪(摩尔庄园简介
国联证券给予中微公司增持评级,业务维持快速增长,新品研发符合预期
体验残健同行的N种可能 百位市民走进“阳光201”感受100天焕新魅力
证券交易印花税,明起减半征收!
塔吉克斯坦暴雨致13人死亡
山西河曲县聚焦巩固衔接 “码”上监督马上办
代办汽车年检需要什么资料(汽车年检需要什么资料)
竹石的意思是什么越短越好(竹石的意思)
东方甄选喊你来上“早自习” 明早8点淘宝首秀
工银亚洲为港企办理对阿根廷出口贸易首批跨境人民币金融业务
贝特瑞:经营质量显著改善 新产品布局打开新增长空间
盛和资源: 股价受影响因素较多,公司提醒投资者谨慎投资,理性对待股市风险
交建股份(603815.SH)筹划重大资产重组 股票停牌
若美国放松制裁,2025年委内瑞拉石油日产量或升至100万桶
圣泰材料(874095):2023年上半年净利润1.37亿元,同比增长105.60%
【楚天评】东湖评论:撬动群众内生力量,共同缔造幸福生活
华润置地“22润置09”公司债8月30日付息 利率为3.2%
两部门:延续实施个人所得税综合所得汇算清缴有关政策
PCIe 5.0硬盘性能实测:为何没人买?原因揭开
半导体板块大幅下挫!明微电子、芯源微跌超10%
天津歌舞剧院民族乐团为乌鲁木齐观众带来耳目一新的音乐体验 《红楼梦》主题音乐会奏响
阿凡达潘多拉边境PC版宣传片曝光:多核CPU无压力
国盛智科:8月25日融资买入149.2万元,融资融券余额5837.97万元
高华科技:8月25日融资净买入148.78万元,连续3日累计净买入398.17万元
赵睿回应输南苏丹!致歉球迷,不满队友发挥+防守压力,表情无奈
联赢激光:8月25日融资买入808.22万元,融资融券余额2.59亿元
元祖股份:8月28日召开业绩说明会,投资者参与
强降雨东移河南山东等局地有大暴雨 台风月底或影响东南沿海
*ST爱迪目前公司重整工作正在正常推进中,如有进展,公司会按照相关监管规则要求及时履行息披露义务
中金黄金:上半年归母净利润14.72亿元 同比增22.03% 矿产金销量下滑9.82%
新突破!人造太阳“中国环流三号”取得里程碑式重大科研进展 相关概念股或受关注
孙光秀(关于孙光秀简述)
致敬!这支中国男足惜败阿根廷,世界大赛收获亚军
获嘉县亢村镇红苹果幼儿园(关于获嘉县亢村镇红苹果幼儿园简述)