第3章关系数据库标准语言SQL.ppt
《第3章关系数据库标准语言SQL.ppt》由会员分享,可在线阅读,更多相关《第3章关系数据库标准语言SQL.ppt(35页珍藏版)》请在三一文库上搜索。
1、数据库原理及应用 Principle and Application of Database 第四章 关系数据库标准语言SQL,学习目标,了解SQL语言的特点 掌握SQL的数据定义 掌握SQL的单表查询,4.1 SQL概述,SQL的特点 综合统一:SQL语言集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体。 高度非过程化:非关系数据模型的数据操纵语言是面向过程的语言,操作必须指明存取路径;而用SQL语言进行数据操作,只要提出“做什么”,无须指明“怎么做”,因此无需了解存取路径。 面向集合的操作方式:非关系数据模型采用的是面向记录的操作方式,操作对象是一条记录;而SQL语
2、言采用的集合操作方式,不仅操作对象、查询结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。 以同一种语法结构提供两种使用方法:SQL语言既是自含式语言,能独立地用于联机交互;又是嵌入式语言,能嵌入到高级语言中进行混合编程。,语言简洁,易学易用:完成核心功能只用9个动词:,4.2 数 据 定 义,定义、修改与删除基本表 定义基本表 CREATE TABLE ( , , ); 其中:表名为所要定义的基本表的名字,列名为组成该表的各个属性(列),列级完整性约束条件为涉及相应属性列的完整性约束条件,表级完整性约束条件为涉及一个或多个属性列的完整性约束条件。常用的完整性约束有:
3、主码约束PRIMARY KEY、唯一性约束UNIQUE、非空值约束NOT NULL、参照完整性约束FOREIGN KEY REFERENCES。,例1建立一个“学生”表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、系别Sdept五个属性组成。其中学号不能为空,值是唯一的,并且姓名取值也唯一。 CREATE TABLE Student (Sno CHAR(5) NOT NULL UNIQUE, Sname CHAR(20) UNIQUE, Ssex CHAR(1) , Sage INT,Sdept CHAR(15);,修改基本表 ALTER TABLE ADD 完整
4、性约束 DROP DROP column MODIFY ; 其中:表名为要修改的基本表,ADD子句为增加新列和新的完整性约束条件,DROP子句为删除指定的完整性约束条件,MODIFY子句为用于修改列名和数据类型。 例2向Student表增加“入学时间”列,其数据类型为日期型。 ALTER TABLE Student ADD Scome DATE; 不论基本表中原来是否已有数据,新增加的列一律为空值。,例3将年龄的数据类型改为半字长整数。 ALTER TABLE Student MODIFY Sage SMALLINT; 修改原有的列定义有可能会破坏已有数据。 例4删除学生姓名必须取唯一值的约束
5、。 ALTER TABLE Student DROP UNIQUE(Sname); SQL没有提供删除属性列的语句,用户只能间接实现这一功能:先把表中要保留的列及其内容复制到一个新表中,然后删除原表,再将新表重命名为原表名。但有的DBMS提供直接删除属性列的语句,如:ALTER TABLE Student Drop Scome;,删除基本表 DROP TABLE ; 基本表定义一旦删除,表中的数据、表上建立的索引和视图都将自动删除。但Oracle中删除基本表后建立在此表上的视图仍保留在数据字典中,但用户引用时就出错。 例5删除Student表。 DROP TABLE Student ; 建立与
6、删除索引 建立索引是加快查询速度的有效手段,建立与删除索引由DBA或表的属主负责完成,但有些DBMS自动建立PRIMARY或KEY UNIQUE列上的索引。,建立索引 CREATE UNIQUE CLUSTER INDEX ON (, ); 用指定要建索引的基本表。 索引可以建立在该表的一列或多列上,各列名之间用逗号分隔 用指定索引值的排列次序,升序ASC,降序DESC。缺省ASC。 UNIQUE表明此索引的每一个索引值只对应唯一的数据记录。 CLUSTER表示要建立的索引是聚簇索引。 例6为学生-课程数据库中Student,Course,SC三个表建立索引。其中Student表按学号升序建唯
7、一索引,Course表按课程号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引。 CREATE UNIQUE INDEX Stusno ON Student(Sno); CREATE UNIQUE INDEX Coucno ON Course(Cno); CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);,唯一索引:对于已含重复值的属性列不能建UNIQUE索引,对某个列建立UNIQUE索引后,插入新记录时DBMS会自动检查新记录在该列上是否取了重复值,这相当于增加了一个UNIQUE约束。 聚簇索引:建立聚簇索引后,基表中数据也需要按指定的聚
8、簇属性值的升序或降序存放,即聚簇索引的索引项顺序与表中记录的物理顺序一致。 例:CREATE CLUSTER INDEX Stusname ON Student(Sname); 在Student表的Sname列上建立一个聚簇索引,而且Student表中的记录将按照Sname值的升序存放。在一个基本表上最多只能建立一个聚簇索引,聚簇索引对于某些类型的查询,可以提高查询效率,聚簇索引在很少对基表进行增删操作或很少对其中的变长列进行修改操作的场合下非常适用。,删除索引 DROP INDEX ; 删除索引时,系统会从数据字典中删去有关该索引的描述。 例7删除Student表的Stusname索引。 D
9、ROP INDEX Stusname;,4.3 查询,概述 查询语句格式: SELECT ALL|DISTINCT , FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC ; 其中:SELECT子句指定要显示的属性列;FROM子句指定查询对象(基本表或视图);WHERE子句指定查询条件;GROUP BY子句对查询结果按指定列的值分组,该属性列值相等的元组为一个组,通常会在每组中作用集函数;HAVING短语筛选出只有满足指定条件的组;ORDER BY子句对查询结果表按指定列值的升序或降序排序。,Student,Course,Sc,示例数据库:学生-课程数
10、据库,单表查询:查询仅涉及一个表,是一种最简单的查询操作。 选择表中的若干列 查询指定列或全部列 例1查询全体学生的学号与姓名。 SELECT Sno,Sname FROM Student; 例2查询全体学生的姓名、学号、所在系。 SELECT Sname,Sno,Sdept FROM Student; 例3查询全体学生的详细记录。 SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student; 或 SELECT * FROM Student;,查询经过计算的值:SELECT子句的为算术表达式、字符串常量、函数、列别名等 。 例4 查全体学生的姓名及其出生年份。
11、SELECT Sname,Sage FROM Student; 输出结果: Sname Sage - - 李勇 1976 刘晨 1977 王名 1978 张立 1978,例5查询全体学生的姓名、出生年份和所有系,要求用小写字母表示所有系名。 SELECT Sname,Year of Birth:,Sage, LOWER(Sdept) FROM Student; 输出结果: Sname Year of Birth: Sage LOWER(Sdept) - - - - 李勇 Year of Birth: 1976 cs 刘晨 Year of Birth: 1977 is 王名 Year of Bi
12、rth: 1978 ma 张立 Year of Birth: 1977 is,可以使用列别名改变查询结果的列标题 SELECT Sname NAME,Year of Birth: BIRTH, Sage BIRTHDAY,LOWER(Sdept) DEPARTMENT FROM Student; 输出结果: NAME BIRTH BIRTHDAY DEPARTMENT - - - - 李勇 Year of Birth: 1976 cs 刘晨 Year of Birth: 1977 is 王名 Year of Birth: 1978 ma 张立 Year of Birth: 1977 is,选择
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关系 数据库 标准 语言 SQL
链接地址:https://www.31doc.com/p-2254402.html