数据库技术-第3章+结构化查询语言SQL(数据库技术)-课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《数据库技术-第3章+结构化查询语言SQL(数据库技术)-课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库技术 结构 查询 语言 SQL 课件
- 资源描述:
-
1、第3章 结构化查询语言-SQL 3.1 SQL概述u 3.2 SQL语言u 3.3 视图 3.4 SQL中的复杂完整性约束u 3.5 小结 结构化查询语言SQL(Structured Query Language)是一种面向集合的数据库查询语言。SQL语言是集数据查询(Data Query)、数据操纵(Data Manipulation)、数据定义(Data Definition)和数据控制(Data Control)于一体的一种非过程化语言。数据DBMSClient请求请求回答回答SQL 语言语言Oracle 8i/9i/10g/11gSQL Server 2000、2005、2008、20
2、12第3章 结构化查询语言-SQL 3.1 SQL概述u 3.2 SQL语言u 3.3 视图 3.4 SQL中的复杂完整性约束u 3.5 小结 SQL最早的版本是IBM开发的。是20世纪70年代早期作为Systems R项目的一部分实现的。现在有许多产品支持SQL语言,它已经很明确地确立了自己作为标准关系数据库语言的地位。1986年,美国国家标准化组织(ANSI)和国家标准化组织(ISO)发布了SQL标准:SQL-86;1989年,发布了SQL-89;1992年,发布了SQL-92;1999年,发布了SQL-99;2003年,发布了SQL-2003;2006年,发布了SQL-2006;SQL语
3、言有以下几部分:数据定义语言;数据操作语言;完整性;视图定义:嵌入式SQL和动态SQL:授权SQL视图视图1视图视图2基本表基本表1基本表基本表2基本表基本表3基本表基本表4存储文件存储文件1存储文件存储文件2内模式外模式模 式SQL数据库体系结构(三级模式)数据库体系结构(三级模式)外模式对应于视图和部分基本表,模式对应于基本表,内模式对应于存储文件。特征如下:l 一个SQL模式(Schema)是表和约束的集合。l 一个表(Table)是行(Row)的集合,每行是列(Column)的序列,每列对应一个数据项。l 个表可以是一个基本表,也可以是一个视图,基本表是实际存储在数据库中的表,视图是一
4、个虚表。l 一个基本表可以跨一个或多个存储文件,一个存储文件也可存放一个或多个基本表 。SQL语言的特点:1.集DDL、DML、DCL于一体 SQL语言集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动。2.高度非过程化 SQL语言进行数据操作,用户只需提出“做什么”,而不必指明“怎么做”,用户无需了解存取路径。3.面向集合的操作方式 4.一种语法提供两种操作方式 交互式操作和嵌入式操作。5.功能强大、语言简洁 设计巧妙,语言十分简洁,核心功能只用了9个动词:CREATE、ALTER、DROP、SELECT、INSER
5、T、UPDATE、DELETE、GRANT、REVOKE。数据定义(DDL)Create table Drop table Create View Drop View Create Index Drop Index 数据操纵(DML)Select Update Insert Delete数据控制(DCL)Grant Revokel数据类型 1.字符型(varchar,char)2.文本型(Text)3.数值型 整数:(Int,Smallint,Tinyint)小数:Numeric 钱数:Money 4.逻辑性(Bit)5.日期型(Datetime,SmallDatetime)第3章 结构化查询
6、语言-SQL 3.1 SQL概述u 3.2 SQL语言u 3.3 视图 3.4 SQL中的复杂完整性约束u 3.5 小结设有一个学生-课程数据库,包括学生关系Student,课程关系Course和选修关系SC。其关系模式分别为:Student(Sno,Sname,Ssex,Sage,Sdept);Course(Cno,Cname,Cpno,Ccredit)SC(Sno,Cno,Grade)一、数据定义命令1.模式的定义 Create Schema 模式名 Authorization;例1:定义一个学生-课程模式2.删除模式Drop Schema ;例2:删除学生-课程模式3.表结构的建立、删除
7、与修改(1)表结构的建立Create Table(列级完整性约束,列级完整性约束,列级完整性约束,表级完整性约束条件);例3:建立一个学生表Student例4:建立一个课程表Course例5:建立一个选课表SCCreate Table Course (Cno Char(4)Primary Key,Cname Char(20),Cpno Char(4),Ccredit Smallint,Foreign Key Cpno References Course(Cno);Create Table SC (Sno Char(9),Cno Char(4),Grade Smallint,Primary Ke
8、y(Sno,Cno),Foreign Key Sno References Student(Sno)Foreign Key Cno References Course(Cno);(2)表结构的删除 Drop Table Restrict|Cascade;例6:删除Student表(3)表结构的修改Alter TableAdd 完整性约束Drop Alter Column;例7:向Student表增加“入学时间”列,其数据类型为日期型。例8:将年龄的数据类型由字符型改为整数例9:增加课程名称必须取唯一值的约束条件4.索引的建立与删除(1)建立索引 Create Unique/Cluster In
9、dex On (Asc/Desc ,Asc/Desc);例10:为Student、Course和SC 3个表建立索引。Student按学号升序建唯一索引,Course表按课程号升序建唯一索引,SC按学号升序和课程号降序建唯一索引。(2)索引删除Drop Index;例11:删除Student表的Stusname索引二、数据操纵命令二、数据操纵命令 1.数据查询数据查询 Select Distinct|All From Where Group By Having Order By Asc|Desc;(1)单表查询)单表查询 查询仅涉及一个表:l选择表中的若干列l选择表中的若干元组lORDER B
10、Y子句l聚集函数lGROUP BY子句l查询指定列例1 查询全体学生的学号与姓名。例2 查询全体学生的姓名、学号、所在系。选择表中的若干列l选出所有属性列:n在SELECT关键字后面列出所有列名 n将指定为*例3 查询全体学生的详细记录。l查询经过计算的值 SELECT子句的可以为:算术表达式 字符串常量 函数 列别名 例4 查全体学生的姓名及其出生年份。例5 查询全体学生的姓名、出生年份和所有系,要求用小写字母表示所有系名选择表中的若干元组l 消除取值重复的行 如果没有指定DISTINCT关键词,则缺省为ALL 指定DISTINCT关键词,去掉表中重复的行 例6 查询选修了课程的学生学号。l
11、查询满足条件的元组查 询 条 件谓 词比 较=,=,=,!=,!,!;NOT+上述比较运算符确定范围BETWEEN AND,NOT BETWEEN AND确定集合IN,NOT IN字符匹配LIKE,NOT LIKE空 值IS NULL,IS NOT NULL多重条件(逻辑运算)AND,OR,NOT常用的查询条件比较大小例7 查询计算机科学系全体学生的姓名例8 查询所有年龄在20岁以下的学生姓名及其年龄 例9 查询考试成绩有不及格的学生的学号。确定范围谓词谓词:BETWEEN AND NOT BETWEEN AND 例10 查询年龄在2023岁(包括20岁和23岁)之间的学生的姓名、系别和年龄例
12、11 查询年龄不在2023岁之间的学生姓名、系别和年龄确定集合谓词:谓词:IN,NOT IN 例12查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。例13查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。字符匹配谓词:谓词:NOT LIKE ESCAPE 例14 查询学号为200215121的学生的详细情况例15 查询所有姓刘学生的姓名、学号和性别例16 查询姓欧阳且全名为三个汉字的学生的姓名 例17 查询名字中第2个字为“阳”字的学生的姓名和学号例18 查询所有不姓刘的学生姓名。例19 查询DB_Design课程的课程号和学分例20 查询以“DB_”开
13、头,且倒数第3个字符为i的课程的详细情况 涉及空值的查询n谓词:谓词:IS NULL 或 IS NOT NULLn“IS”不能用“=”代替例21 某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号例22 查询所有有成绩的学生学号和课程号 多重条件查询l 逻辑运算符:AND和 OR来联结多个查询条件 AND的优先级高于OR 可以用括号改变优先级例23 查询计算机系年龄在20岁以下的学生姓名ORDER BY子句 ORDER BY子句可以按一个或多个属性列排序升序:ASC;降序:DESC;缺省值为升序当排序列含空值时nASC:排序列为空值的元组最后
14、显示nDESC:排序列为空值的元组最先显示 例24 查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列例25 查询全体学生情况,查询结果按所在系的系名升序排列,同一系中的学生按年龄降序排列 聚集函数聚集函数 计数COUNT(DISTINCT|ALL*)COUNT(DISTINCT|ALL)计算总和SUM(DISTINCT|ALL)计算平均值AVG(DISTINCT|ALL)最大最小值 MAX(DISTINCT|ALL)MIN(DISTINCT|ALL)例26 查询学生总人数例27 查询选修了课程的学生人数例28 计算1号课程的学生平均成绩例29 查询选修1号课程的学生最高分数 例3
15、0查询学生200215012选修课程的总学分数 GROUP BY子句 例31 求各个课程号及相应的选课人数例32 查询选修了3门以上课程的学生学号HAVING短语与WHERE子句的区别:作用对象不同WHERE子句作用于基表或视图,从中选择满足条件的元组HAVING短语作用于组,从中选择满足条件的组(2)连接查询 连接查询:同时涉及多个表的查询连接条件或连接谓词:用来连接两个表的条件 一般格式:.BETWEEN.AND.连接字段:连接谓词中的列名称 连接条件中的各连接字段类型必须是可比的,但名字不必是相同的等值与非等值连接查询等值与非等值连接查询 l 等值连接:等值连接:连接运算符为连接运算符为
展开阅读全文