当前位置:文档之家› 数据库应用基础教案04

数据库应用基础教案04

数据库应用基础教案04
数据库应用基础教案04

教案

一、课程引入

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数据库的核心内容之一,是整个数据库学习和应用的基础,特别是用于程序的与编写,所以希望同学们努力把它学好。

五、布置作业:

课后复习、预习

相关主题
文本预览
相关文档 最新文档