教案一、课程引入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公司首先提供商用的SQL1986年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 >]其中的参数含义如下:<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 <search_condition>]参数含义如下:<search_condition>:指定组或聚合应满足的搜索条件。
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,成绩表BSelect A.学号,姓名,性别,专业,课程编号,成绩from 学生基本情况表A,成绩表BWHERE A.学号=B.学号Select A.学号,姓名,性别,专业,课程名称,成绩from 学生基本情况表A,成绩表B,基本课程表CWHERE A.学号=B.学号and B.课程编号=C.课程编号回顾:Select 表达式列表from 表列表where 行过滤条件1:单表查询2:多表查询3:嵌套查询select 姓名,年龄,联系电话from 学生基本情况表where 性别=‘男’1:单表查询Select A.学号,姓名,性别,专业,课程名称,成绩from 学生基本情况表A,成绩表B,基本课程表CWHERE 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 学生基本情况表1SELECT * FROM 学生基本情况表WHERE 性别=‘女’带子查询的删除语句DELETE FROM 学生基本情况表1 WHERE 专业=(SELECT DISTINCT 专业FROM 学生基本情况表1 WHERE 专业= ‘国际贸易‘)带子查询的修改语句UPDATE 学生基本情况表1SET 年龄=年龄+2WHERE 专业=(SELECT DISTINCT 专业FROM 学生基本情况表1 WHERE 专业= ‘电子商务‘)基本结构Select 表达式列表from 表列表where 行过滤条件Select 表达式列表from 表列表where 行过滤条件(Select 表达式列表from 表列表where 行过滤条件))三、上机实训:完成上面所讲的例题和书本上的例题四、小结:本章内容是SQL数据库的核心内容之一,是整个数据库学习和应用的基础,特别是用于程序的与编写,所以希望同学们努力把它学好。