找回密码
 注册

QQ登录

只需一步,快速开始

查看: 787|回复: 0

大工21春《sql数据库系统及应用》复习资料六

[复制链接]
发表于 2021-2-20 09:46:17 | 显示全部楼层 |阅读模式
SQL数据库系统及应用辅导资料六主    题:第四章  数据的查询(一)
学习时间:2020年5月4日--5月10日
“不忘初心、牢记使命”主题理论学习:我们党要始终成为时代先锋、民族脊梁,始终成为马克思主义执政党,自身必须始终过硬。全党要更加自觉地坚定党性原则,勇于直面问题,敢于刮骨疗毒,消除一切损害党的先进性和纯洁性的因素,清除一切侵蚀党的健康肌体的病毒,不断增强党的政治领导力、思想引领力、群众组织力、社会号召力,确保我们党永葆旺盛生命力和强大战斗力。
摘选自《决胜全面建成小康社会,夺取新时代中国特色社会主义伟大胜利》内    容:第四章  数据的查询
这周我们将学习课件第四章(基本的数据查询、单表查询)。本节的学习要求及需要掌握的重点内容如下:
1. 了解SQL语言的概念和组成
2. 理解SELECT命令的基本思路
3. 掌握SELECT命令的基本结构
4. 掌握使用SELECT实现最基本的单表数据查询
5. 掌握使用DISTINCT去除查询结果中的重复行
6. 掌握使用ORDER BY子句进行结果排序
7. 掌握进行汇总计算的方法
基本的数据查询
1、SQL语言基本概念
SQL到底是什么?
-SQL的发音“Sequel”或“S.Q.L.”
-SQL的全称“Structured Query Language”数据定义语言:即DDL(data definition),指创建、修改或删除数据库中各种对象,包括表、视图、索引等。
数据操纵语言:即DML,指对已经存在的数据库进行记录的插入、删除、修改等操作。注意:学习SQL时需要时刻铭记于心的三点:
-SQL语句是命令,具有固定的格式和顺序。
-SQL语句处理的是数据表(数据的集合),确切的说,是数据行的集合,一切操作的数据来源与结果均作为数据表(数据行的集合)进行处理。
-SQL语句中不区分大小写,字符串值例外。2、数据查询命令(SELECT)
/
/
基于文本的过滤条件:
格式:    [NOT] LIKE‘<匹配串>’[ESCAPE‘<换码字符>’]
<匹配串>:指定匹配模板
匹配模板:固定字符串或含通配符的字符串
-当匹配模板为固定字符串时
-用 = 运算符取代 LIKE 谓词
-用 != 或 < >运算符取代 NOT LIKE 谓词当模糊查询时:
% (百分号):代表任意长度(长度可以为0)的字符串
_ (下横线):代表任意单个字符
当用户要查询的字符串本身就含有 % 或 _ 时,要使用ESCAPE '<换码字符>' 短语对通配符进行转义。多重条件查询:用逻辑运算符AND和 OR来联结多个查询条件
-AND的优先级高于OR
-可以用括号改变优先级
-可用来实现多种其他语句(谓词)
-[NOT] IN
-[NOT] BETWEEN …   AND  …示例:数据表 studentInfo
/
1)查询全体学生的学号和姓名
Select sno,sname from studentInfo
2)全体学生的所有详细信息
select * from studentInfo
3)查询全体学生的姓名和出生年份
select sname , 2014-sage as birthyear from studentInfo
4)全体学生的姓名、出生年份和所在系,并在每一行的出生年份前显示字符串‘Year of Birth’
select sname , ‘Year of Birth’ , 2014-sage as birthyear,dname from studentInfo
        5)查询所有年龄在20岁以下的学生姓名及其年龄。
Select sname,sage from studentInfo where sage<20
6) 查询年龄在20~40岁(包括20岁和40岁)之间的学生的姓名、系别和年龄。
Select sname,sage from studentInfo where sage between 20 and 40
7) 查询年龄不在20~40岁之间的学生姓名、系别和年龄。
Select sname,sage from studentInfo where sage not between 20 and 40
8) 查询丐帮,明教和古墓派的学生姓名及性别
Select sname, sgender from studentInfo where dname IN (‘丐帮’,‘明教’,‘古墓派’)
9) 查询所有姓“段”的学生的姓名、学号和性别
Select sname,sno,sgender from studentInfo where sname like ‘段%’
10) 查询所有所在系的系名称中包含“氏”的学生姓名和所在系的系名称
Select sname,dname from studentInfo where dname like ‘%氏%’
11) 查询单名一个‘峰’字的学生姓名
Select sname from studentInfo where sname like ‘_峰’
12) 查询姓名中第二个字为‘龙’字的学生姓名和学号
Select sname,sno from studentInfo where sname like ‘_龙%’
13) 查询全部选修了课程却没有参加考试,因此无成绩的学生选课记录
Select sno, sname , cno , cname, mark from studentInfo where mark  is null
14) 查询‘古墓派’年龄在35岁以下的学生姓名
Select sname from studentInfo where dname=‘古墓派’ and sage<35单表查询
1. DISTINCT在计算时要取消指定列中的重复值
2. ORDER BY
使用ORDER BY子句,可以按一个或多个属性列排序
  升序:ASC    降序:DESC    缺省值为升序
当排序列含空值时:
ASC:排序列为空值的元组最先(最后)显示
DESC:排序列为空值的元组最后(最先)显示
3. 汇总查询
汇总函数
COUNT([DISTINCT|ALL] *)
SUM( [DISTINCT|ALL] <column>)  计算值的总和并返回总数
COUNT( [DISTINCT|ALL] <column> )计算记录数
AVG( [DISTINCT|ALL] <column> ) 返回指定列中的平均值
MIN( [DISTINCT|ALL] <column> ) 返回自变量中指定列的最小值
MAX( [DISTINCT|ALL] <column> ) 返回自变量中指定列的最大值4.分组查询
使用GROUP BY子句分组,细化汇总函数的作用对象,未对查询结果分组,汇总函数将作用于整个查询结果
对查询结果分组后,汇总函数将分别作用于每个组,只有满足HAVING短语指定条件的组才输出
分组方法:按指定的一列或多列值分组,值相等的为一组示例:接上表studentInfo
1) 查询‘轻功’课程的平均分数和最高分数
Select avg(mark), max(mark) from studentInfo where Cname=‘轻功’
2)查询全体学生的人数
Select count(distinct sno) from studentInfo
3)查询各个课程的课程名称及选课人数与平均成绩
Select cname, count(*), avg(mark) from studentInfo GROUP BY cname
4)查询选修了2门以上课程的学生姓名及学号
Select sname,sno from studentInfo GROUP BY sno,sname having count(distinct cno)>2
5) 查询所选修课程至少有2门的成绩高于80分的学生的学号及其80分以上的课程数
Select sno, count(distinct cno) from studentInfo where Mark>80 group by sno having count(distinct cno)>=2重要考点
名词解释
1.数据定义语言:即DDL(data definition),指创建、修改或删除数据库中各种对象,包括表、视图、索引等。
2.数据操纵语言:即DML,指对已经存在的数据库进行记录的插入、删除、修改等操作。
3.SUM函数:计算值的总和并返回总数。
4.COUNT函数:计算记录数。
5.AVG函数:返回指定列中的平均值。
6.MIN函数:返回自变量中指定列的最小值。
7.MAX函数:返回自变量中指定列的最大值。简答题:
1. 为什么学习SQL而不是其他什么数据查询语言?
答案:
1)被所有主要的商业数据库管理系统所支持。
2)标准化的语言。
3)声明式的语言(基于关系代数)。
4)使用图形界面或提示符进行交互操作,也可以嵌入在应用程序的代码中。2. 已知有如下student表:
StudID
Name
DeptID
Minzu

1
张三
12
汉族      

2
李赛
12
汉族      

3
王明
13
蒙古族   

4
李密
12
汉族      

5
刘凤
15
满族      

(1)写出查询表中Name包含“李”的所有信息的语句。
答案:
(1)        SELECT * FROM student WHERE Name LIKE '%李%'  南开答案可以联系QQ 761296021

QQ|手机版|小黑屋|网站地图|无忧答案网 ( 冀ICP备18010495号-1 )

GMT+8, 2024-5-3 13:38

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表