内容正文:
4.1查询的实质及简单查询
学习要点
简单查询
联接查询
子查询
联合查询
引入
简单查询
选择列
选择行
查询结果排序
查询结果分组
学习要点
选择列
所有列
指定列
计算列
使用别名
简单查询
引入
查询概述:
查询的实质:
SQL的查询语句从数据库中检索记录形成记录集合,并存入新的记录集对象中
查询语句并不会改变数据库中的数据
SQL查询的基本语句格式
SELECT [ALL|DISTINCT]〈目标列表达式〉[,〈目标列表达式〉]
FROM 〈表名或视图名〉[,〈表名或视图名〉]
[WHERE 〈条件表达式〉]
[GROUP BY 〈列名1〉
[HAVING 〈条件表达式〉]]
[ORDER BY 〈列名2〉 [ASC | DESC];
学习要点
5
对代码进行修饰
选择列
选择所有列(全表查询)
【例4-1】查询全体学生的详细信息
返回结果如下:
SELECT *
FROM Information;
选择列
选择列
选择指定列:
【例4-2】查询全体学生的学号、姓名和性别
返回结果如下:
SELECT S_no,S_name,S_sex
FROM Information
此顺序可更改
SELECT S_name,S_no,S_class
FROM Information
选择列
选择列
计算列:
【例4-4】查询全体学生的姓名及其年龄
返回结果如下:
SELECT S_no,S_name,year(getdate())-Year(s_birth)
FROM Information
学生的出生年份
学生的年龄
计算机当前的年份
选择列
选择列
使用别名
【例4-5】查询全体学生的学号、姓名和年龄,同时以汉字标题来表示学号、姓名和年龄。
返回结果如下:
SELECT S_no 学号,S_name 姓名
FROM Information
S_no as 学号
“学号”=S_no
此写法可变化
OR
选择列
选择行
满足条件的行
消除重复取值行
前N行
简单查询
选择行
选择满足条件的行(where子句)
简单条件查询
复合条件查询
指定范围查询
指定集合查询
字符匹配
涉及空值的查询
选择行
选择行
简单条件查询
【例4-6】查询家庭地址为“湖南株洲”的学生的所有信息
返回结果如下:
满足条件的行
SELECT *
FROM Information
WHERE S_address = ‘湖南株洲’
选择行
复合条件查询(and)
【例4-7】查询学号为’20021003010’考试成绩80分以上的学生学号、课程号、学期和成绩并显示汉字标题
返回结果如下:
SELECT S_no 学号,C_no 课程号,semester 学期,grade 成绩
FROM score
WHERE s_no='20021003010' AND grade>=80
AND和OR可用来联结多个查询条件
>or
选择行
复合条件查询(or)
【例4-8】 查询“信息021”班男学生的S_no(学号)和S_name(姓名)
返回结果如下:
SELECT S_no,S_name
FROM Information
WHERE S_class='信息021' OR S_sex='男' AND S_address='湖南株洲'
AND优先于OR
满足条件的行>and
选择行
指定范围查询(between……and)
【例4-9】查询年龄在18至22岁之间的学生的
S_name(姓名)、S_class(班级)、和Nl(年龄)
返回结果如下:
Not between……and
SELECT S_name,S_class,Year(GetDate())-Year(s_birth) Nl
FROM Information
WHERE Year(GetDate())-Year(s_birth) BETWEEN 18 AND 22
选择行
指定范围查询(not between……and)
【例4-9】查询年龄不在18至22岁之间的学生的
S_name(姓名)、S_class(班级)、和Nl(年龄)
返回结果如下:
满足条件的行> between……and
SELECT S_name,S_class,Year(GetDate())-Year(s_birth) Nl
FROM Information
WHERE Year(GetDate())-Year(s_birth) NOT BETWEEN 18 AND 22
选择行
指定集合查询(IN)
【例4-11】查询家庭地址为“湖南株洲”和“湖南长沙”班学生的详细信息
返回结果如下:
NOT IN
SELECT *
FROM Information
WHERE