和二货同学探讨公厕感应冲水的工作原理,她一脸认真对我说:“你没看见下面有个摄像头么!那就是连到一值班室的,工作人员在里值班,一看你屁股抬起来了,按个按钮就冲水了…”
5、 数据查询中的限定和规定
a) 可以使用聚合函数:
i. 求某一列值的平均值avg(<列名>);
ii. 求某一列值的最小值min(<列名>);
iii. 求某一列值的最大值max(<列名>);
iv. 求某一列值的总和sum(<列名>);
v. 对一列中的值计算个数count(<列名>);
vi. 计算元组的个数count(*);
b) Select子句的规定:select
[all|distinct]<列名或列表达式序列>|*
i. Distinct选项保证重复的行将从结果中去除
ii. all是默认的,保证重复的行不从结果中去除;
iii. *号是对于from子句中命名表的所有列的简写;
iv. 列表达式是对于单列求聚合值的表达式;
v. 允许表达式中出现+、-、*、/以及列名、常数的算术表达式。
c) 列和基本表的改名操作:旧名as新名
i. 有时,一个基本表在select语句中多次出现,就是该表被多次调用,为区别不同的引用,应该标上不同的名字。
d) 集合的并、交、差操作:当两个子查询结构完全一致,可以使用并、交、差
i. (select查询语句1) union (select查询语句2)
ii. (select查询语句1) intersect (select查询语句2)
iii. (select查询语句1) except (select查询语句2)
6、 基本表的连接操作语法
a) 自连接:一个表可以连接自身,自连接要求使用表的别名
select * from <基本表> as <基本表名1> inner join/left
outer join/right outer join/full
outer join <基本表> as <基本表名2> on <基本表名1>.<列名>=<基本表名2>.<列名>
b) 内连接:消除交叉连接中不满足内连接匹配条件的记录形成的
select * from <基本表名1> inner join <基本表名2> on <基本表名1>.<列名>=<基本表名2>.<列名>
c) 左外连接:包含内连接的所有记录,以及左表中所有未匹配记录
select * from <基本表名1> left outer join <基本表名2> on <基本表名1>.<列名>=<基本表名2>.<列名>
d) 右外连接:包含内连接的所有记录,以及右表中所有未匹配记录
select * from <基本表名1> right outer join <基本表名2> on <基本表名1>.<列名>=<基本表名2>.<列名>
e) 完全外连接:包含内连接的所有记录,以及左、右表中所有未匹配记录
select * from <基本表名1> full outer join <基本表名2> on <基本表名1>.<列名>=<基本表名2>.<列名>
f) 笛卡尔积连接:包含m*n条记录,由两个表中所有可能的记录对组成
select * from <基本表名1> cross join <基本表名2>
g) 合并连接:是全外连接减去内连接
select * from <基本表名1> union join <基本表名2> on <基本表名1>.<列名>=<基本表名2>.<列名>
7、 条件表达式中的比较操作符
a) 算术比较操作符(算术比较判断):比较两个表达式的值,
i. 算术比较操作符的符号有:<、<=、>、>=、=、<>、!=、=
ii. 语法:<表达式1>&<表达式2>
between..and ..、not between…and…
b) 算术范围操作符(之间判断):搜索(不)在给定范围内的数据
i. 算术范围保留字是between…and…
ii. 语法:<表达式1>[not] between<表达式2> and <表达式3>
c) 字符串的匹配操作(相同判断):查找(不)包含给定模式的值
i. 字符串匹配操作符是like,有两个通配符;
ii. 语法:<字符串> [not] like <匹配模式>。
百分号(%):与零个或多个字符组成的字符串匹配
下划线(_):与单个字符匹配
d) 空值的比较操作(空值判断):判断某值是否为空值
i. 空值的保留字是null;
ii. 语法:<表达式>is [not] null。
e) 集合成员资格的比较(之内判断):判断某元组是否在某集合内
i. 集合成员资格的保留字是in
ii. 语法:<元组> [not] in (<集合>)
f) 集合成员的算术比较(限定比较判断):元组与集合中每一个元组满足&比较
i. 集合成员算术的保留字是some,all,any
ii.