haihongyuan.com
海量文库 文档专家
全站搜索:
您现在的位置:首页 > 初中教育 > 初中语文初中语文

SQL查询语句

发布时间:2013-11-07 12:36:20  

回顾
? ? ? ? ?

?

SQL Server 2000的身份验证模式 SQL Server 2000用户与角色的含义 区分登录帐号与数据库用户的区别 SQL Server 2000用户管理 SQL Server 2000角色管理 SQL Server 2000的权限管理

第5章 SQL查询语句
本章学习目标: ? 了解SQL语言的规范 ? 掌握查询的含义 ? 熟练掌握简单的查询语句 ? 学会在多张表中找出所需要的数据 ? 学会复杂的嵌套查询

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)。

什么是查询
?

?

查询的含义是指采用一定的方法从数据库中 获取所需数据的过程。当对一个数据库执行 查询语句时,其执行的结果是从数据库中寻 找所需的信息并返回给用户。 查询也可以直接操纵数据,如使用查询可以 向表中插入数据、更新和删除表中的数据等。

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 ]]

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}]]

HAVING 子句
指定组或聚合的搜索条件。 ? 语法格式如下: [HAVING <search_condition>] ? 参数含义如下: <search_condition>:指定组或聚合 应满足的搜索条件。
?

ORDER BY 子句
?

? ? ?

[ORDER BY {order_by_expression [ASC | DESC]} [,...n]] order_by_expression:指定要排序的列。 ASC:指定按递增顺序排序。 DESC:指定按递减顺序排序,

SELECT

查询语句应用
? ? ?

单表查询 多表查询 嵌套查询

单表查询
1. 2. 3. 4. 5. 6. 查询指定的字段 通配符“*”的使用 基于字段的表达式的使用 使用DISTINCT短语去掉重复记录 用WHERE子句过滤记录 使用ORDER BY子句对查询结果进行排序

单表查询
7. SQL的集合函数的使用 count(),max(),min(),avg(),sum() 8. 使用GROUP BY子句对查询结果进行分组 9. 利用HAVING筛选结果表 10. INTO子句的使用 11. TOP限定子句的使用 12. UNION子句的使用

关系运算符

逻辑运算符

通配符

? ? ? ? ? ? ? ? ?

Select Select Select Select

姓名,家庭地址 from 学生表 * from 学生表 姓名,2011-年龄 as 出生年份 from 学生表 distinct 姓名 from 学生表

?
? ? ? ?

?
? ? ?

select * from 学生表 where 姓名 like '马_' Select 姓名 from 学生表 where 性别='女‘ and 年龄>=20 Select 姓名,性别,年龄 from 学生表 where not 年龄=20 Select 姓名,性别 from 学生表 where 年龄 between 18 and 20 Select 姓名,性别 from 学生表 where 家庭地址 is null Select 姓名,专业 from 学生表 where 专业 in ('计算机应用','电子商务') Select 姓名,性别,年龄 from 学生表 order by 年龄 asc Select count(姓名) from 学生表 Select max(年龄) from 学生表 Select avg(年龄) from 学生表 Select sum(年龄) from 学生表 Select 性别,count(年龄) as 人数,avg(年龄) as 平均年龄 from 学生表 group by 性 别 having count(*)>1 Select * into newtable from 学生表 where 系别='信息管理‘ Select * from 学生表 where 专业='国际贸易‘ union select * from 学生表 where 性别=‘女’

特殊的筛选语句
? ? ? ?

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语句查询块可以嵌套在另外一个查询块 的WHERE子句中,这种查询成为嵌套查询。
?

?

Select 表达式列表 from 表列表 where 行过滤条件 Select 表达式列表 from 表列表 where 行过滤条件(Select 表达式列表 from 表列表 where 行过滤条件)

1.简单的嵌套查询
查询“曹兵”同学所在专业的所有学生名单 Select 姓名 from 学

生表 where 专业=( select 专业 from 学生表 where 姓名=‘曹兵’ )

2.带IN的子查询
查找与“曹兵”选了同样课程的学生名单 Select 姓名 from 学生表 where 学号 in (select 学号 from 成绩表 where 课程编号 in (select 课程编号 from 成绩表 where 学号=( select 学号 from 学生表 where 姓名=‘曹 兵’ ))) 查询选修了“英语”课程的学生名单 Select 姓名 from 学生表 where 学号 in (Select 学号 from 成绩表 where 课程编号 in (select 课程编号 from 课 程表 where 课程名称=‘英语’))

3.带ANY或ALL的子查询
查找年龄大于计算机应用专业的所有学生年龄的学生名单 Select 姓名 from 学生表 where 年龄>ALL (Select 年龄 from 学生表 where 专业=‘计算机应用’) 查找所有非国际贸易专业中比国际贸易专业中的某个学生 年龄大的学生的姓名。 Select 姓名 from 学生表 where 年龄>any (Select 年龄 from 学生表 where 专业=‘国际贸易’) and 专业!=‘国际 贸易’

4.带EXISTS的子查询 所有选修了课程“k004”的学生姓名 Select 姓名 from 学生表 where exists (select * from 成 绩表 where 学号=学生表.学号 and 课程编号=‘k004’) 5.在WHERE中使用集合函数 年龄最大的学生信息 Select * from 学生表 where 年龄=(select max(年龄) from 学生表)

6.带子查询的插入语句

Select * into temptable from 学生表 where 年龄 =(select max(年龄) from 学生表 ) Insert into temptable select * from 学生表 where 性别=‘女’ Select * from temptable

7.带子查询的删除语句 8.带子查询的修改语句

Delete from temptable where 专业=‘国际贸易’ Select * from temptable Update temptable set 年龄=年龄+2 where 专业 =‘电子商务’ Select * from temptable


网站首页网站地图 站长统计
All rights reserved Powered by 海文库
copyright ©right 2010-2011。
文档资料库内容来自网络,如有侵犯请联系客服。zhit326@126.com