第7章 数据查询1
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
案例1: 列出学生成绩表中女生数据库成绩前10名。 select top 10 数据库 ‘数据库前10名名单’ from 学生成绩表 where 性别=„女’ order by 数据库 desc 案例2: 列出学生成绩表中男生的数据库成绩后10%名。 select top 10 percent 数据库 ‘数据库前10名名 单’
含义
Like IN Exists
字符串匹配操作符 检查一个字段值是否属于一组值之中 检查某一个字段值是否有值,实际上它是is null 的 反义词
(3)特殊运算符
运算符号
%
含义
通配符,表示零或多个字符 通配符,表示任何一个字符 指定范围或集合中的任何单个字符 不属于指定范围或集合的任何单个字符
[] [^]
(3) [avg] 函数的使用
用法要点: [avg] 函数是求出表某列的平均值
案例1:
列出学生成绩表中数据库成绩平均分。
select avg(数据库) „数据库平均分’ from 学生成绩表 案例2:
列出学生成绩表中女生的数据库平均分。
select avg(数据库) from 学生成绩表 where 性别=„女’
(5) 特殊运算符的使用 案例11:
列出学生档案表中第二个字为’大’的学生名单。
select 学号,姓名 from 学生档案表 where 姓名 like ‘-大%’
(5) 特殊运算符的使用 案例12:
列出学生档案表中最后一个字为’明’的名单。
select 学号,姓名 from 学生档案表 where 姓名 like ‘%明’
用法要点: 用作计数器,统计满足条件的记录条数,常与[distinct] 子句一起使用。
案例1:
列出学生档案表中有多少名学生。
select count(姓名) from 学生档案表 案例2:
列出学生成绩表中有多少数据库85分以上的女生。 select count(*) ‘女生人数’ from 学生成绩表 where 数据库>=85 and 性别=‘女’
select * from 学生成绩表
3. 基于字段表达式的查询
格式要点:
在[select]句中,使用的字段中含有表达式 select <字段及字段表达式>[”新标题名”]
from <表名> 例如:
select 学号,姓名,Office+安装+网络+数据库
as ”总分”
from 学生成绩表
注:as可选
4. 使用[ distinct ]短语去掉重复的记录
缺省为保留重复元组,也可用关键字all显式指明。若要去掉重复 元组,可用关键字distinct 。 格式要点:
select distinct <字段名>
from <表名>
例如:
关于中文Officexp安装的说明
姓名
select distinct from 学生成绩表
select 学号,姓名,性别,数据库 from 学生成绩表 where 数据库>=80 or 网页>=80
(4) 关系运算符和逻辑运算符的使用
案例4:
列出学生档案表中不是CEAC1班的女生名单。
select 学号,姓名,性别,出生日期 from 学生档案表 where not 班级=„CEAC1‟ and 性别=„女’
(5) 特殊运算符的使用 案例13:
列出学生档案表中最后一个字不为’明’的名单。
select 学号,姓名 from 学生档案表 where 姓名 like ‘%[^明]’
(5) 特殊运算符的使用 案例13:
查询所有au_id的第一个字符为5-9、第二个字符为1-4的 作家的姓名和电话号码。
use pubs go select au_lname,au_fname, phone, au_id from authors where au_id like '[5-9][1-4]%' go
(5) 特殊运算符的使用 案例9:
查缺少成绩的学生的学号和相应的课程号。
Select Sno,Cno From SC Where Grade is NULL;
(5) 特殊运算符的使用 注意事项: 除is [not] null之外,空值不满足任何查找条件。 如果null参与算术运算,则该算术表达式的值 为null。 如果null参与比较运算,则结果可视为false。 在SQL-92中可看成unknown。 如果null参与聚集运算,则除count(*)之外其它 聚集函数都忽略null。
(5) 特殊运算符的使用 案例7:
列出学生档案表中班级是CEAC1或CEAC2班的名单。
select 学号,姓名 from 学生档案表 where 班级 IN (‘CEAC1’, ‘CEAC2’)
(5) 特殊运算符的使用 案例8:
列出学生档案表中班级不是CEAC1或CEAC2班的名单。
select 学号,姓名 from 学生档案表 where 班级 not in (‘CEAC1’, ‘CEAC2’)
From <表名1> [,表名2] [,….]
[Where <筛选条件表达式>]
[Group by <分组表达式> [ having <分组条件表达式>] ]
[Order by <字段> [ asc | desc ] ] 实例:查询学生成绩表中成绩(如下图所示`)
任务三
基于单表的查询
1. 查询指定的字段
(5) 特殊运算符的使用
案例9:
列出学生档案表中姓“王”的学生名单。
select 学号,姓名 from 学生档案表 where 姓名 like ‘王%’
(5) 特殊运算符的使用 案例10:
列出学生档案表中“王?”的名单。
select 学号,姓名 from 学生档案表 where 姓名 like ‘王_’
LOGO
第七章
数据查询 主讲:邹亚千
引入
SQL Server 中查询的含义用来描述 如何从数据库中获取所需要的数据,查询 是数据库管理员与数据库进行交互的重要 手段。
学习目标
学习完本课程,您应该能够:
理解SQL Server 中查询的含义 掌握[SELECT]查询语句的使用方法 掌握基于单表的查询方法
(5) 特殊运算符的使用 案例14:
•查询课程名称以”db_”开头,且倒数第3 个字符为I的课程 和详细情况。
Select * From course Where cname like ‘db\_%I__’escape ‘\’
6. 使用[order by]子句对查询结果排序
[order by ]子句的基本格式:
Escape
定义转义字符,以去掉特殊字符的特定含义,使其 被作为普通字符看待,如escape “\”,定义 \ 作为转 义字符,则可用\%去匹配% ,用\_去匹配_。
(4) 关系运算符和逻辑运算符的使用
案例1:
列出学生档案表中班级为CEAC1的男生名单。
select 学号,姓名,班级 from 学生档案表 where 班级=„ceac1‟ and 性别=„男’
6. 使用[order by]子句对查询结果排序
案例2:
显示学生成绩表中的网络、数据库成绩,结果按数据 库降序排列,若数据库相同,按网络升序排列。
select 学号,姓名,网络,数据库 from 学生成绩表 order by 数据库 desc,网络
6. 使用[order by]子句对查询结果排序
1. SQL语句与SQL Server 中的数据进行交互时,每次 只执行一个查询。
2. 查询语句不仅可执行一次,也可保存执行多次。 3. 查询是数据库管理员与数据库进行交互的重要手段。
任务二 SQL 中[select]查询语句
1. [select]查询语句的格式
格式:
Select [all | distinct ] <字段表达式1> [字段表达式2] […]
from 学生成绩表 where 性别=„男’
7. SQL常用集函数的使用
函数 Count Min Max Avg 功能 统计 求最小值 求最大值 求平均值 含义(返回值) 统计满足条件的行数 求某字段中最小值 求某字段中最大值 求指定字段算术平均值
Sum
求总和
求指定字段所有值的总和
(1) [count]函数的使用
(1) [count]函数的使用 案例3:
列出学生档案表中有多少名姓‘王’学生。
select count(*) „姓“王”人数’ from 学生档案表 where 姓名=„王%‟ 案例4:
列出学生档案表中有多少名不同名学生。
select count(distinct 姓名)
from 学生档案表
5. 用[ where ] 子句过滤记录:条件查询
格式要点: select <字段名表> from <表名> where <条件表达式> SQL 语句中运算符:
关系运算符 逻辑运算符 特殊运算符
(1)关系运算符/比较运算符
运算符 含义 等于 小于 小于或等于 大于
= < <= > >= !=或<>
(4) 关系运算符和逻辑运算符的使用
案例5:
列出学生成绩表中数据库成绩不为80分的名单。
select 学号,姓名,性别,数据库 from 学生成绩表 where 数据库<>80
(5) 特殊运算符的使用 案例6:
列出学生成绩表中网络成绩不在85至100之内的名单。
select 学号,姓名 from 学生成绩表 where 网络 not between 85 and 100
案例3:
列出学生档案表中1980年以后出生的学生名单,显示结 果按降序排列。
select 学号,姓名,出生日期 from 学生档案表 where 出生日期>’1980-01-01’ order by 出生日期 desc
功能:Top N用来显示结果集中的前n行数据或显示总行 数的n%。 格式: select TOP n <字段表达式> from <表名> where <条件表达式>
知识重、难点分析
重点: [SELECT]查询语句的使用
难点:
基于单表的查询
第六讲 SQL查询语句(一)
目 录
任务一 SQL Server 中查询的含义 任务二 [SELECT]查询语句的使用方法 任务三 基于单表的查询方法
任务一 SQL Server 中查询的含义
查询的含义
含义:用来描述如何从数据库中获取所需要的数据。 要点:
(4) 关系运算符和逻辑运算符的使用
案例2:
列出学生档案表中出生日期是1980年以后的学生名单。
select 学号,姓名,性别,出生日期 from 学生档案表 where 出生日期>„1980-01-01‟
(4) 关系运算符和逻辑运算符的使用
案例3:
列出学生成绩表中数据库或网页成绩为80分以上的名单。
大于或等于
不等于
(2)逻辑运算符 运算符 OR 含义 或(或者),当两个条件中任何一个条件 是TRUE时取值为TRUE。 与(并且),只有当两个条件都是TRUE 时取值为TRUE 。 非(否),对指定的布尔表达式求反。
AND NOT
(3)特殊运算符
wk.baidu.com运算符号
Between Is null 定义一个区间范围 测试字段值是否为空值
(2) [max]和[min]函数的使用
用法要点: [max]和[min]函数分别找出表中的最大和最小值
案例1:
列出学生成绩表中数据库成绩最高分和最低分。
select max(数据库),min(数据库) from 学生成绩表 案例2:
列出学生成绩表中数据库最高分和最低分的男生。
select max(数据库),min(数据库) from 学生成绩表 where 性别=„男’
select <字段名1> <,字段名2> <,字段名2>... from <表名> where <条件表达式> order by <字段表达式1><,字段表达式2 …> [desc]
6. 使用[order by]子句对查询结果排序
案例1:
将学生档案表按出生日期顺序排列。
select 学号,姓名 from 学生档案表 order by 出生日期
格式要点:
select <字段表达式1> [字段表达式2] […]
From <表名1> [,表名2] [,….] 实例:查询学生成绩表中成绩(如下图所示)
2. 使用通配符 “ * ”
要点: 在[select]句中,使用“*”表示显示所有的字 段 select * from <表名> 例如: