07 2019 档案

摘要:1. 谓词 谓词是一种特殊的函数,返回值是真值。例如 < > = Betweeen LIKE IN IS NULL等,返回值都是true false或者unknown。 同样是谓词,但是与= BETWEEB等相比,EXISTS的用法还是不殊的函数,返回值是真值。例如 < > = Betweeen L 阅读全文
posted @ 2019-07-22 16:56 Garcia11 阅读(2903) 评论(0) 推荐(0)
摘要:集合运算符的参数是集合,从数据库实现层面上来说就是表或者视图。 注意事项: 1.SQL能够操作具有重复行的集合,可以通过可选项ALL来支持。 一般的集合论是不允许集合里面存在重复元素的,因此集合{1,1,2,3,3}和集合{1,2,3}被视为相同的集合,但是关系数据库的表允许存在重复的行,称为多重集 阅读全文
posted @ 2019-07-22 16:55 Garcia11 阅读(3543) 评论(0) 推荐(0)
摘要:1.简化多行数据的比较 在“用列表展示与上一年的比较结果”部分,比较了企业每年的营业额与上一年相比是否增加。其实,第一条SQL的性能还有改善的余地,在三个WHEN子句里,同样的子查询执行了三次,请将他们整合在一个WHEN子句里。 原SQL 我改善后的SQL: 依然没有整合到一个WHEN子句里面,怎么 阅读全文
posted @ 2019-07-22 16:55 Garcia11 阅读(662) 评论(0) 推荐(0)
摘要:如果相等则会输出一行数据 ‘相等’,否则会显示空行。 原SQL: 答案: 阅读全文
posted @ 2019-07-22 16:55 Garcia11 阅读(291) 评论(0) 推荐(0)
摘要:一、全外连接 标准SQL里定义了外连接的三种类型: 1.左外连接 LEFT OUTER JOIN; 2.右外连接 RIGHT OUTER JOIN; 3.全外连接 FULL OUTER JOIN; 左外连接和右外连接的区别是:用作主表的表写在运算度左边时用左外连接,写在运算符右边时用作右外连接。 全 阅读全文
posted @ 2019-07-22 16:54 Garcia11 阅读(1379) 评论(0) 推荐(0)
摘要:1.SQL不是用来生成报表的语言,所以不建议用它来进行格式转换; 2.必要时考虑用外连接或者CASE表达式来解决问题; 3.生成嵌套式表侧栏时,如果先生成主表的笛卡尔积再进行连接,很容易就可以完成; 4.从行数来看,表连接可以看成乘法。因此,当表之间是一对多的关系时,连接后行数不会增加; 5.外连接 阅读全文
posted @ 2019-07-22 16:54 Garcia11 阅读(674) 评论(0) 推荐(0)
摘要:使用SQL对同一行数据进行行列间的比较很简单,只需要在WHERE子句里协商比较条件就可以了,例如col_1 = col_2。使用SQL进行行间比较时,发挥主要作用的技术是关联子查询,特别是与自连接相结合的“自关联子查询” eg. 需要用到行间数据比较的具有代表性的业务场景是,使用基于时间序列的包进行 阅读全文
posted @ 2019-07-22 16:54 Garcia11 阅读(508) 评论(0) 推荐(0)
摘要:接下来我们学习一套新的掌法,实例:假设这里有一张显示了学生及其加入的摄入安的一览表,StudentClub,表的主键是“学生、社团ID”,存储了学生和社团之间的多对多的关系。 有的学会加入了多个社团,有的只是加入了某个社团,对于加入了多个社团的学生,我们通过将其“主社团标志”列设置为Y或者N来表明哪 阅读全文
posted @ 2019-07-22 16:53 Garcia11
摘要:CASE表达式是支撑SQL声明式编程的根基之一,也是灵活运用SQL时不可或缺的基础技能。 CASE表达式中有END在执行时会被判定为一个固定值,因此它可以写在聚合函数内部,也正因为它是表达式,所以还可以写在SELECT子句、GROUP BY子句、WHERE子句、ORDER BY子句里。简单点说,在能 阅读全文
posted @ 2019-07-22 16:53 Garcia11
摘要:本节,我们将通过使用外连接学习格式转换中具有代表性的行列转换和嵌套式侧栏的生成方法。 1.使用外连接进行行列转换 : 行—>列,制作交叉表 利用下面的Courses表生成右边的课程学习一览记录表。 一、使用case表达式的解法: 二、使用外连接的解法: 首先选定侧边栏,作为主表C0连接其他表;C1~ 阅读全文
posted @ 2019-07-22 16:53 Garcia11 阅读(278) 评论(0) 推荐(0)
摘要:实例: 将上述表转换为如下格式: 解决方法:创建视图存储子女信息表中的所有子女: 在外连接中,使用IN谓词指定,当表Personnel里‘child_1’ 'child_2' 'child_3'列的名字存在于children视图里时,返回该名字,否则返回NULL。 可见外连接的连接条件不一定是等值连 阅读全文
posted @ 2019-07-22 16:53 Garcia11 阅读(194) 评论(0) 推荐(0)
摘要:CASE表达式是从SQL-92标准开始被引入,但是很多人并不使用它,或者只是使用它的简略版函数,例如Oracle中的DECODE,MySQL中的IF函数等。然而SQL中使用CASE表达式能够解决的问题十分广泛,而且CASE表达式不依赖于具体数据库,可以提高SQL代码的可移植性。 CASE表达式有简单 阅读全文
posted @ 2019-07-22 16:52 Garcia11
摘要:CASE表达式的一大优势在于能够判断表达式,在CASE表达式里面我们可以使用BETWEEN LIKE和< >等便利的谓词组合,以及能嵌套子查询的IN 和EXISTS谓词。 如下是一张资格培训学校的课程一览表CourseMaster 和一张管理每个月所设置课程的表OpenCourses。 课程一览表 阅读全文
posted @ 2019-07-22 16:52 Garcia11
摘要:用CHECK约束定义多个列的条件关系 假设某个公司规定“女性员工的工资必须是在20万日元以下”,不得不说句这个规定真是太TM不合理了,在这个公司的人事表中,这条物理的规定是使用CHECK约束来描述的。 不太明白约束最后面的 ELSE 1 END =1是个什么意思? 在这段代码里面CASE表达式被嵌入 阅读全文
posted @ 2019-07-22 16:52 Garcia11
摘要:在生成统计表的工作中,经常会有制作嵌套式表头和表侧栏的要求,如下所示Tblpop是一张按照县、年龄层级和性别统计的人口分布表,要求根据表Tblpop生成交叉表“包含嵌套式表侧栏的统计表”。 人口分布表: 要求生成包含嵌套式表侧栏的统计表: 这个问题的要点在于,虽然TblPop中没有一条年龄层级为2的 阅读全文
posted @ 2019-07-12 10:02 Garcia11 阅读(464) 评论(0) 推荐(0)
摘要:本节要点总结: 1.表不是文件,记录也没有顺序,所以SQL不进行排序; 2.SQL不是面向过程语言,没有循环、条件分支、赋值操作; 3.SQL通过不断生成子集来求得目标集合。SQL不像面向过程语言那样通过画流程图来思考问题,而是通过画集合的关系图来思考。 4.GROUP BY子句可以用来生成子集,例 阅读全文
posted @ 2019-07-11 10:08 Garcia11 阅读(488) 评论(0) 推荐(0)
摘要:备份数据 由于MySQL数据库是基于磁盘的文件,普通的备份系统和里程就能备份MySQL的数据。但是,由于这些文件总是处于打开和使用状态,普通的文件副本备份不一定总是生效。 阅读全文
posted @ 2019-07-01 18:55 Garcia11 阅读(169) 评论(0) 推荐(0)