
sql
脑阔疼啊脑阔疼
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[整理学习]查询间断点系列问题
[整理学习]查询间断点系列问题1.断点类型1.1 查询间断点缺失数字(如1 2 4 5 7 查询结果 3 6)SELECT IDFROM (SELECT id + 1 AS ID FROM table_02WHERE NOT EXISTS( SELECT * FROM ...转载 2018-10-21 21:10:22 · 288 阅读 · 0 评论 -
SQL学习—EXISTS谓词的用法
1-8 EXISTS谓词的用法SQL中的谓词逻辑SQL的基础理论:集合论谓词逻辑理论篇谓词:如"=、<、>、BETWEEN、LIKE、IN、IS NULL"等。谓词逻辑提供谓词为了判断命题的真假。在关系数据库里,表中的一行可以看作是一个命题。表常常被认为是行的集合,但从谓词逻辑的观点看,可以认为是命题的集合。数据库这种叫法有点名不副实,它存储的与其说是数据,还不如说...原创 2019-01-16 17:20:47 · 552 阅读 · 0 评论 -
SQL学习—HAVING子句又回来了
1-10 HAVING子句又回来了本节 主要学习HAVING子句的应用技巧,“调查集合自身性质”应用场景:查找可以出勤的队伍。即队伍里所有队员都处于“待命”状态。(1)使用NOT EXISTS 表达式/* 用谓词表达全称量化命题 */SELECT team_id, member FROM Teams T1 WHERE NOT EXISTS (SELECT * ...原创 2019-01-20 23:24:58 · 290 阅读 · 0 评论 -
mysql学习—自连接的用法
1-2 自连接的用法可重排列、排列、组合应用场景:假设一张存放了商品名称及价格的表,表里有“苹果、橘子、香蕉”三条记录。在生成用于查询销售额的报表时,需要获取这些商品的组合。组合:分为有顺序的有序对 <1,2> 和 无顺序的无序对 {1,2}。分别对应“排列”和“组合”(1)可重排列通过交叉连接生成笛卡尔积,可以得到有序对/* 用于获取可重排列的SQL语句 */SELEC...原创 2019-01-09 20:14:14 · 5678 阅读 · 1 评论 -
SQL学习—用SQL处理数列
1-9 用SQL处理数列生成连续编号通过对两个Digits集合求笛卡尔儿积而得出0~99的数字。-- 求连续编号(1):求0~99 的数SELECT D1.digit + (D2.digit * 10) AS seqFROM Digits D1 CROSS JOIN Digits D2ORDER BY seq求全部的缺失编号/* 动态地指...原创 2019-01-20 14:31:41 · 591 阅读 · 0 评论 -
SQL—用SQL进行集合运算
1-7 用SQL进行集合运算注意事项01 SQL能操作具有重复行的集合,可以通过ALL支持。SQL的集合运算提供了允许重复和不允许重复的两种用法。如果直接使用UNION或INTERSECT,结果里就不会出现重复的行。如果想在结果里留下重复行,可以加上ALL,写作UNION ALL。02 集合运算符有优先级INTERSECT比UNION和EXCEPT优先级更高。03 各个 DBMS 提供...原创 2019-01-15 00:40:44 · 1269 阅读 · 1 评论 -
mysql学习—CASE表达式
1-1 CASE表达式CASE表达式概述注意事项:(1)统一各分支返回的数据类型(2)不要忘了写END(3)养成写ELSE子句的习惯/* 把县编号转换成地区编号(1) */SELECT CASE pref_name WHEN '德岛' THEN '四国' WHEN '香川' THEN '四国' WHEN '...原创 2019-01-08 23:59:29 · 547 阅读 · 0 评论 -
SQL学习—用关联查询比较行与行
1-6 用关联子查询比较行与行增长、减少、维持现状业务场景:需要用到行间数据比较,使用时间序列的表进行时间序列分析。假设有下面的一张记录了某个公司的营业额的表Sales使用SQL输出与上一年相比营业额是增加还是减少,抑或持平。思路:01 按年份递增的顺序排序02 循环地将每一行与前一行的“sale"列进行比较面向集合的方式,在表Sales的基础上,再加一个存储了上一个数据的集合(S2)...原创 2019-01-13 21:29:41 · 743 阅读 · 3 评论 -
SQL学习—优化SQL查询性能
1-11 让SQL飞起来使用高效的查询参数是子查询时,使用EXISTS代替IN。两个代码对比:--慢SELECT *FROM Class_AWHERE id IN (SELECT id FROM Class_B)--快SELECT *FROM Class_AWHER...原创 2019-01-23 18:04:09 · 190 阅读 · 1 评论 -
mysql学习—外连接的用法
外连接的用法用外连接进行行列转换(行-&gt;列):制作交叉表三种方法:(1)外连接C0为主表,依次对C1~C3进行外连接。如果某员工学习过某课程,课程出现姓名,否则为null。最后使用case表达式转换为’o’。/* 水平展开求交叉表(1):使用外连接 */SELECT C0.name, CASE WHEN C1.name IS NOT NULL THEN '○' EL...原创 2019-01-07 23:58:19 · 1140 阅读 · 0 评论 -
mysql学习-having子句
1-4 having 子句寻找缺失的编号a) 进行升序或降序排序b) 循环比较每一行和下一行的编号—查询是否连续/* 如果有查询结果,说明存在缺失的编号 */SELECT '存在缺失的编号' AS gap FROM SeqTblHAVING COUNT(*) <> MAX(seq);—查询缺失编号的最小值/* 查询缺失编号的最小值 */SELECT MIN(s...原创 2019-01-06 22:51:16 · 356 阅读 · 0 评论 -
mysql学习—三值逻辑和NULL
1-3 三值逻辑和NULLSQL 布尔型-true false unknown真值优先级and:false &amp;gt; unknown &amp;gt; trueor : true &amp;gt; unknown &amp;gt; falsenull 不是值,不能对其使用谓词(is null)01 排中律不成立排中律不成立: 把命题和它的否命题通过“或者”连接而成的命题全部都是真命题(古典逻辑学)/...原创 2019-01-10 21:14:29 · 460 阅读 · 0 评论 -
常用相关查询sql语句——时间、排序
相关查询sql语句——时间、排序时间时间戳与日期格式的相互转换UNIX时间戳转换成日期:FROM_UNIXTIME()select FROM_UNIXTIME(1493138520)输出为:2017-04-26 00:42:00日期转换为UNIX时间戳:UNIX_TIMESTAMP()select UNIX_TIMESTAMP('2017-04-26 00:42:00','...原创 2019-06-02 18:58:48 · 9300 阅读 · 0 评论