本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《
阿里云开发者社区用户服务协议
》和
《
阿里云开发者社区知识产权保护指引
》。如果您发现本社区中有涉嫌抄袭的内容,填写
侵权投诉表单
进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
(004,'大佬','男',20),
(005,'尼奥','女',24),
(006,'安德森','男',15)
2 常规查询
2.1 聚合函数
行聚合函数
|
描述
|
count(*)
|
返回数据中的项数
|
count({ [ [ all或distinct ] 列名 ] } )
|
返回某列的个数
|
avg({ [ [ all或distinct ] 列名 ] } )
|
返回某列的平均值
|
max({ [ [ all或distinct ] 列名 ] } )
|
返回某列的最大值
|
min({ [ [ all或distinct ] 列名 ] } )
|
返回某列的最小值
|
在这里插入代码片
|
sum({ [ [ all或distinct ] 列名 ] } )
|
返回某列值得和
|
2.2 别名查询
别名的 3 中定义方法:
select 员工编号=Id, Name as 姓名, Sex 性别, Age 年龄
from Employee
2.3 where子句
指定查询返回的行的搜索条件。
2.3.1 逻辑运算符(not、and、or)
select * from Employe where Sex='女' and Age =20
select * from Employe where Id='001' or Id='002'
select * from Employe where Sex='男' and not Age>20
select * from Employe where Sex='男' and Age=20 or Sex='女' and Age='23'
2.3.2 比较运算符(=、>、<)
select * from Employe where Name='张子婷'
select * from Employe where Age>24
2.3.3 like 关键字
使用 like 关键字可以确定特定字符是否与指定模式相匹配。模式可以包含常规字符和通配符。模式匹配过程中,常规字符必须与字符串中指定的字符完全匹配。但是,通配符可以与字符串的任意部分相匹配。
通配符
|
说明
|
示例
|
%
|
包含零个或多个字符的任意字符串
|
|
_ (下划线)
|
任何单个字符
|
|
[ ]
|
指定范围([a~f])或集合([abcdef])中任何单个字符
|
|
[^]
|
指定范围([a~f])或集合([abcdef])中任何单个字符
|
|
2.4 into 子句
创建新表并将来自查询的结果行插入新表中。
[into new_table]
eg. 使用 into 子句创建一个新表 tb_Employ, tb_Employ表中包含 Employ 表中的Name和Age字段。
select Name, Age into tb_Employe from Employee
select * from tb_Employe
3 嵌套查询
数据库表
3.1 in
查询Student表 并且 Sno 在 SC表中有
select * from Student where Sno in(select Sno from SC)
3.2 not in
查询学生表中 Sno在SC表不存在的学生
select * from Student
where Sno not in
(select Sno from SC)
伪代码
查询学生表
学生表中的Sno
不在SC表中
3.3 some
SQL支持3中定量比较谓词:some、any 和 all。他们都是判断是否任何或全部返回值都满足搜索要求的。其中,some和any谓词是存在量的,只注重是否有返回值满足搜索要求。这两谓词含义相同,可以替换使用。
查询学生表中,年龄小于平均值的学生
select * from Student
where Sage < some
(select avg(Sage) from Student)
伪代码
查询学生表
(查询 学生表 年龄平均值)
3.4 all
all 谓词的使用方法和 any 或者 some 谓词一样,也是把列值与子查询结果进行比较,但是它不要求任意结果值得列值为真,而是要求所有列的查询结果都为真,否则就不返回行。
查询课程表 并且成绩 没有 有 成绩超过 90分的课程
select * from Course
where Cno <> all
(select Cno from SC where grade > 90)
伪代码
查询课程表
不存在的课程号在
(查询有分数>90分的课程号)
3.5 exists
exists谓词只注重子查询结果是否返回行。如果子查询返回一个或多个行,谓词返回为真值,否则为假。
exists搜索条件并不真正使用子查询的结果。他仅测试子查询是否产生任何结果。
查询没有参加考试的学生
select * from Student
where not exists
(select Sno from SC where Student.Sno = SC.Sno)
伪代码
查询学生表
(查询 Student.Sno = SC.Sno的结果)