第五章SQL高级查询和视图
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
姓名 李红 左群声
地址 NULL NULL
8
模糊查询—BETWEEN
把某一字段中内容在特定范围内的记录查询出来
SELECT Student_ID, grade FROM student_course WHERE course_id='dep04_s002' and grade BETWEEN 60 AND 80
WHEN balance<100 THEN balance*0.01
WHEN balance > 1000 THEN balance*0.20
WHEN ELSE balance*0.10
缺少配对的END
去掉WHEN
FROM bank WHERE userName='张三‘
GO
3
掌握模糊查询 掌握聚合函数 掌握分组汇总 掌握多表联接查询 掌握简单子查询的用法 掌握IN子查询的用法 掌握EXISTS子查询的用法 应用T-SQL进行综合查询
(6)ORDER BY子句将查询结果按照一列或多列中的数据排 6序。
5.1模糊查询—LIKE
思查考询:时以下,的字S段QL中语的句内: 容并不一定与查询内容完全 匹配,只要字段中含有这些内容
SELECT * FROM 数据表 WHSEELREECT编SN号amLeIKAES 姓'00名[^F8R]%OM[AS,Ctu]d%en‘ ts
2
WHERE userName='张三’
回顾
IF @mymoney<100
多条语句添加BEGIN-END
print '卡上目前余额不足100,请及时充值!'
print '卡上余额为:'+@mymoney
转换:convert(varchar(5), @mymoney)
print '您的年利息为:'
SELECT 利息=CASE
(2)FROM子句列出包含所要查询数据的表;
(3)WHERE子句提供SQL只查询某些行的数据,也就是执 行查询的条件;
(4)GROUP BY用以指定汇总查询,即不是对每一行产生一 个查询结果,而是行记录进行分组,再对每一组产生一 个汇总结果;
(5)HAVING子句告诉SQL只产生由GROUP BY得到的某些 组的结果;
4
目标
SELECT语句的语法形式
命令格式:
SELECT [ALL|DISTINCT] 字段名列表[AS 标题名] [INTO [TABLE|CURSOR]新表名]
FROM [数据库名1.]<表1>[AS<表1的别名>][, [数据库名2.]<表2>[AS<表2的别名>][,…]]
[WHERE 筛选条件] [GROUP BY 分组表达式] [HAVING 分组条件] [ORDER BY 排序表达式 [ASC|DESC]]
第五章 高级查询
ACCP V4.0
回顾
指出下列语句的错误:
CREATE TABLE bank
(
userName VARCHAR(10),
balance MONEY
建表语句后必须添加GO标志
)
INSERT INTO bank(cardNo,userName,balance)
VALUES('张三',500)
学员姓名 李扬 于紫电 李青霜 司马弓 …
10
地址 长沙 江苏 南京 上海
…
课堂练习
查询教师表teacher中职称为教授、副教授的记录 查询student表中年龄在20到25岁之间的记录
提示:year(getdate)-year(birth)算出年龄。Between and
查询student表中姓‘李’的记录
INSERT INTO bank(cardNo,userName,balance)
VALUES('李四',700)
DECLARE @mymoney INT
DECLARE mymoney INT(4)
mymoney=0
SET @mymoney=0
SELECT mymoney=balance FROM bank
功能:对一个或多个表进行查询操作,按其需求将表中的
记录进行筛选、分组、排序,从而生成一个结果集,也 可以将该结果集生成新表。
说明:
5
说明:
(1)SELECT子句列出所有要求SELECT语句查询的数据项, 如指定AS,输出以指定的标题名作为字段名输出。如指 定INTO新表名,则将查询的结果作为新表保存;
Student_IDHale Waihona Puke Baidug9940202 g9940204 g9940205 … …
9
Grade
78 68 78 … …
模糊查询—IN
把某一字段中内容与所列出的查询内容列表匹配 的记录查询出来
SELECT student_Name As 姓名 ,home_addr AS 地址 FROM Student WHERE substring(home_addr,1,2) in('长沙','南京','江苏')
WHERE SName LIKE '张%'
可能会查询出的编号值为( )。
ABCD、、、、900K800K97880_&CAADCFCF姓D张张张G名果飞扬老 出去
7
模糊查询—IS NULL
把某一字段中内容为空的记录查询出来
猜SE一LE猜CT:s把tudSetnut_dNeanmte表A中s 姓某名些,h行om的e_haoddmr eA_Sa地dd址r字段值删掉后: —FR—OM使St用udIeSntNWUHLELR能E h查om询e_出ad来dr这IS些NU数LL据行吗? —— 怎么查询出这些行来?
COUNT
SELECT COUNT (*) AS 及格人数 From student_course WHERE grade>=60
13
SQL语言支持五个集合函数 :
函数 AVG(字段名) SUM(字段名)
COUNT([DISTINCT] 字段名)
COUNT(*) MIN(字段名) MAX(字段名)
11
问题
成绩表中存储了所有学生的成绩,我想知道: 学生的总成绩、平均成绩、有成绩的学生总共有多少名 怎么办?
12
SUM SELECT SUM(price) FROM book
5.2聚合函数
AVG、MAX、MIN
SELECT AVG(grade) AS 平均成绩, MAX (grade) AS 最高分, MIN (grade) AS 最低分 From student_course WHERE grade >=60