教案
一、课程引入
1、 复习SQL Server 2005用户管理 第 章 节 授课日期 学
科 数据库应用基础 课题: SQL 查询语句
课
时
班 级 授课方式 讲授、实训
教学目的 1、
了解SQL 语言的规范 2、
掌握查询的含义 3、
熟练掌握简单的查询语句 4、
学会在多张表中找出所需要的数据 5、 学会复杂的嵌套查询
重点、难点 重点:掌握简单的查询语句
难点:学会复杂的嵌套查询
教具准备 教室、机房
说明
教学内容<课程引入、教学过程、布置作业>
见附页
2、复习SQL Server 2005的权限管理
二、教学内容
5.1 SQL语言简介
SQL是英文(Structured Query Language)的缩写,意思为结构化查询语言。
SQL语言的主要功能就是同各种数据库建立联系,进行沟通。
SQL为关系型数据库管理系统的标准语言。
SQL的发展过程
1976 年11 月的IBM Journal of R&D上公布的
1979年ORACLE公司首先提供商用的SQL
1986年10月,美国ANSI采用SQL作为关系数据库管理系统的标准语言
1989年,美国ANSI采纳在ANSI X3.135-1989报告中定义的关系数据库管理系统的SQL标准语言
SQL的特点
非过程化语言
统一的语言
所有关系数据库的公共语言
SQL包含4个部分
数据查询语言(SELECT)。
数据操纵语言(INSERT,UPDATE,DELETE)。
数据定义语言(CREATE,ALTER,DROP)
数据控制语言(COMMIT,ROLLBACK)。
什么是查询
查询的含义是指采用一定的方法从数据库中获取所需数据的过程。当对一个数据库执行查询语句时,其执行的结果是从数据库中寻找所需的信息并返回给用户。
查询也可以直接操纵数据,如使用查询可以向表中插入数据、更新和删除表中的数据等。书写Transact-SQL语言的语法规则
SQL查询语句SELECT的子句
SELECT select_list
[ INTO new_table ]
FROM table_source
[ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]
SELECT 子句语法格式
SELECT [ ALL | DISTINCT ]
[ TOP n [ PERCENT ] [ WITH TIES ] ]
< select_list >
< select_list > ::=
{ * | { table_name | view_name | table_alias }.*
| { column_name | expression | IDENTITYCOL | ROWGUIDCOL }
[ [ AS ] column_alias ]
| column_alias = expression } [ ,...n ]
SELECT 子句参数含义
ALL:指定在结果集中可以显示重复行
DISTINCT:指定在结果集中只能显示唯一行。
TOP n [PERCENT]:指定只从查询结果集中输出前n 行。
WITH TIES:指定从基本结果集中返回附加的行。
< select_list >:为结果集选择的列。
* :指定在FROM 子句内返回所有表和视图内的所有列。
SELECT 子句参数含义
table_name | view_name | table_alias.* :将* 的作用域限制为指定的表或视图。column_name :是要返回的列名。
expression :是列名、常量、函数以及由运算符连接的列名、常量和函数的任意组合,或者是子查询。
IDENTITYCOL :返回标识列。
ROWGUIDCOL:返回行全局唯一标识列。
column_alias :是查询结果集内替换列名的可选名。
INTO 子句
[ INTO new_table ]
参数含义如下:
new_table:根据选择列表中的列和WHERE 子句选择的行,指定要创建的新表名。
FROM 子句
[ FROM { < table_source > } [ ,...n ] ]
其中的参数含义如下:
< table_source >:指定用于SELECT 语句的表、视图、派生表和联接表。WHERE 子句
[ WHERE < search_condition >]
其中的参数含义如下:
GROUP BY 子句语法格式
[ GROUP BY [ ALL ] group_by_expression [ ,...n ] [ WITH { CUBE | ROLLUP } ] ] GROUP BY的参数含义
LL:包含所有组和结果集,甚至包含那些任何行都不满足WHERE 子句指定的搜索条件的组和结果集。。
group_by_expression:是对其执行分组的表达式。
CUBE:指定在结果集内不仅包含由GROUP BY 提供的正常行,还包含汇总行。ROLLUP:指定在结果集内不仅包含由GROUP BY 提供的正常行,还包含汇总行。HAVING 子句
指定组或聚合的搜索条件。
语法格式如下:
[HAVING
参数含义如下:
UNION 运算符语法格式
{ < query specification > | ( < query expression > ) }
UNION [ ALL ]
< query specification | ( < query expression > )
[ UNION [ ALL ] < query specification | ( < query expression > )
[ ...n ] ]
UNION参数含义
< query_specification > | ( < query_expression > ):是查询规范或查询表达式,用以返回与另一个查询规范或查询表达式所返回的数据组合的数据。
UNION:指定组合多个结果集并将其作为单个结果集返回。
ALL:在结果中包含所有的行,包括重复行。
ORDER BY 子句
[ ORDER BY { order_by_expression [ ASC | DESC ] } [ ,...n ] ]
order_by_expression:指定要排序的列。
ASC:指定按递增顺序排序。
DESC:指定按递减顺序排序,
SELECT查询语句应用
单表查询
多表查询
嵌套查询
单表查询
1. 查询指定的字段
2. 通配符“*”的使用
3. 基于字段的表达式的使用
4. 使用DISTINCT短语去掉重复记录
5. 用WHERE子句过滤记录
6. 使用ORDER BY子句对查询结果进行排序
单表查询
7. SQL的集合函数的使用
count(),max(),min(),avg(),sum()
8. 使用GROUP BY子句对查询结果进行分组
9. 利用HAVING筛选结果表
10. INTO子句的使用
11. TOP限定子句的使用
12. UNION子句的使用
关系运算符
逻辑运算符
通配符
select * from 学生基本情况表where 姓名like '马__'
特殊的筛选语句
BETWEEN:用来定义一个区间范围。
IS NULL:测试字段值是否为空。
LIKE:字符串匹配操作。
EXISTS:检查某一字段是否有值,与IS NULL相反。
多表查询
等值连接: 若连接条件中的运算符是关系运算符“=”,则称为等值连接。自然连接: 去掉重复字段后的等值连接就是自然连接。
复合条件连接: 若有多个连接条件,则称为复合条件连接
Select A.学号,姓名,性别,专业,B.*
from 学生基本情况表A,成绩表B
Select A.学号,姓名,性别,专业,课程编号,成绩
from 学生基本情况表A,成绩表B
WHERE A.学号=B.学号
Select A.学号,姓名,性别,专业,课程名称,成绩
from 学生基本情况表A,成绩表B,基本课程表C
WHERE A.学号=B.学号and B.课程编号=C.课程编号
回顾:
Select 表达式列表from 表列表
where 行过滤条件
1:单表查询
2:多表查询
3:嵌套查询
select 姓名,年龄,联系电话from 学生基本情况表where 性别=‘男’
1:单表查询
Select A.学号,姓名,性别,专业,课程名称,成绩
from 学生基本情况表A,成绩表B,基本课程表C
WHERE A.学号=B.学号and B.课程编号=C.课程编号
2:多表查询
3:嵌套查询
一个SELECT语句查询块可以嵌套在另外一个查询块的WHERE子句中,这种查询成为嵌套查询。
简单的嵌套查询
带IN的子查询
带ANY或ALL的子查询
带EXISTS的子查询
例题1:查找与方北北选了同样课程的学生名单
Select 姓名from 学生基本情况表where 学号in (select 学号
from 成绩表where 课程编号in (select 课程编号from
成绩表where 学号=(select 学号from 学生基本情况表
where 姓名=“方北北”)))
select 课程编号from 学生基本情况表A, 成绩表B where A.学号=B.学号AND 姓名=“方北北”)))
例题2:查找年龄大于计算机应用专业的所有学生年龄的学生名单。
Select 姓名from 学生基本情况表where 年龄>ALL(Select年龄from 学生基本情况表where 专业=“计算机应用”)
4:查询的其它用法
在WHERE中使用集合函数
带子查询的插入语句
带子查询的删除语句
带子查询的修改语句
在WHERE中使用集合函数
Select * from 学生基本情况表where 年龄=max(年龄)
Select * from 学生基本情况表where 年龄=(SELECT max(年龄) FROM学生基本情况表例:列出年龄最大的学生的信息
带子查询的插入语句
INSERT INTO 学生基本情况表1
SELECT * FROM 学生基本情况表
WHERE 性别=‘女’
带子查询的删除语句
DELETE FROM 学生基本情况表1 WHERE 专业=(SELECT DISTINCT 专业FROM 学生基本情况表1 WHERE 专业= ‘国际贸易‘)
带子查询的修改语句
UPDATE 学生基本情况表1
SET 年龄=年龄+2
WHERE 专业=(SELECT DISTINCT 专业FROM 学生基本情况表1 WHERE 专业= ‘电子商务‘)
基本结构
Select 表达式列表from 表列表
where 行过滤条件
Select 表达式列表from 表列表
where 行过滤条件(Select 表达式列表from 表列表
where 行过滤条件)
)
三、上机实训:
完成上面所讲的例题和书本上的例题
四、小结:
本章内容是SQL数据库的核心内容之一,是整个数据库学习和应用的基础,特别是用于程序的与编写,所以希望同学们努力把它学好。
五、布置作业:
课后复习、预习