数据库原理及运用第5讲SQL.ppt

上传人:小飞机 文档编号:6050181 上传时间:2023-09-18 格式:PPT 页数:44 大小:207.50KB
返回 下载 相关 举报
数据库原理及运用第5讲SQL.ppt_第1页
第1页 / 共44页
数据库原理及运用第5讲SQL.ppt_第2页
第2页 / 共44页
数据库原理及运用第5讲SQL.ppt_第3页
第3页 / 共44页
数据库原理及运用第5讲SQL.ppt_第4页
第4页 / 共44页
数据库原理及运用第5讲SQL.ppt_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《数据库原理及运用第5讲SQL.ppt》由会员分享,可在线阅读,更多相关《数据库原理及运用第5讲SQL.ppt(44页珍藏版)》请在三一办公上搜索。

1、1,第5讲 SQL语言,教学目标:使学生掌握SQL结构化查询语言的使用方法教学内容:SQL的基本知识 建立删除数据表和索引教学重点:SQL的基本概念 数据库的基本操作 教学难点:完整性约束教学方法:讲授法 举例法 教学时间:2学时教学过程:,2,5.1 SQL语言的基本概念与特点,5.1.1 SQL语言的发展 SQL语言是当前最为成功、应用最为广泛的关系数据库语言,其发展主要经历了以下几个阶段:1974年由CHAMBERLIN和BOYEE提出,当时称为SEQUEL(STUCTURED ENGLISH QUERY LANGUAGE);IBM公司对其进行了修改,并用于其SYSTEM R关系数据库系

2、统中;1981年 IBM推出其商用关系关系数据库SQL/DS,并将其名字改为SQL,由于SQL语言功能强大,简洁易用,因此得到了广泛的使用;今天广泛应用于各种大型数据库,如SYBASE、INFORMIX、ORACLE、DB2、INGRES等,也用于各种小型数据库,如FOXPRO、ACCESS。,3,SQL概述及特点,字面看SQL只是一个查询语言,而实际上SQL作为一种标准数据库语言,从对数据库的随机查询到数据库的管理和程序设计,SQL几乎无所不能,功能十分丰富.SQL语言是一种关系数据库语言,提供数据的定义、查询、更新和控制等功能。SQL语言不是一个应用程序开发语言,只提供对数据库的操作能力,

3、不能完成屏幕控制、菜单管理、报表生成等功能,可成为应用开发语言的一部分。SQL语言不是一个DBMS,它属于DBMS语言处理程序。大部分DBMS产品都支持SQL,成为操作数据库的标准语言,4,SQL具有交互式与嵌入式两种形式交互式SQL:一般DBMS都提供联机交互工具,用户可直接键入SQL命令对数据库进行操作由DBMS来进行解释嵌入式SQL:能将SQL语句嵌入到高级语言(宿主语言),使应用程序充分利用SQL访问数据库的能力、宿主语言的过程处理能力,一般需要预编译,将嵌入的SQL语句转化为宿主语言编译器能处理的语句 SQL的语法结构基本一致SQL具有语言简洁、易学易用的特点,5,SQL的特点,SQ

4、L支持三级模式结构一个SQL数据库的总体逻辑结构是基本表(Table)的集合,对应于概念模式SQL数据库的底层存储结构采用文件,一个或几个表对应一个存储文件,以及索引文件。对应内模式用户所见的数据结构是视图(View),用户可直接操作的表,可为视图或部分基本表。对应外模式 注:支持sql语言的数据库称为sql数据库,6,5.1.2 SQL语言的基本概念首先介绍两个基本概念:基本表和视图。基本表(BASE TABLE):是独立存在的表,不是由其它的表导出的表。一个关系对应一个基本表,一个或多个基本表对应一个存储文件。视图(VIEW):是一个虚拟的表,是从一个或几个基本表导出的表。它本身不独立存在

5、于数据库中,数据库中只存放视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中。当基本表中的数据发生变化时,从视图中查询出来的数据也随之改变。,7,图5.1 SQL语言支持的关系数据库的三级逻辑结构,SQL语言支持数据库的三级模式结构,如图6.1所示。其中外模式对应于视图和部分基本表,模式对应于基本表,内模式对应于存储文件。,8,例如:学生数据库中有学生基本情况表STUDENT(SNO,SNAME,SSEX,SAGE,SDEPT),此表为基本表,对应一个存储文件。可以在其基础上定义一个男生基本情况表STUDENT_MALE(SNO,SNAME,SAGE,SDEPT),它是从ST

6、UDENT中选择SSEX=男的各个行,然后在SNO,SNAME,SAGE,SDEPT上投影得到的。在数据库中只存有STUDENT_MALE的定义,而STUDENT_MALE的记录不重复存储。在用户看来,视图是通过不同路径去看一个实际表,就象一个窗口一样,透过视图可以看到数据库中自己感兴趣的内容。,9,SQL的特点,10,5.2 SQL数据定义,SQL语言使用数据定义语言(DATA DEFINITION LANGUAGE,简称DDL)实现其数据定义功能。,11,SQL语句格式的约定符号,语句格式中,中的内容是必须的,是用户自定义语义;为任选项或分隔符|表示必选项,即必选其中之一项,N表示前面得项

7、可以重复多次,12,5.2.1 创建数据表数据表是关系数据库的基本组成单位,它物理地存储于数据库的存储文件中。CREATE TABLE(列级完整性约束条件,列级完整性约束条件,n,n)(1)是合法标识符,最多可有128个字符,如S,SC,C,不允许重名。(2)列名(字母开头,可含字母、数字、$、_=128字符)同一表中不许有重名列;(2)数据类型:见后;(3)字段的长度、精度和小数位数;,13,例5.1 建立一学生表Use studentCreate table s(sno char(8),snamevarchar(20),sge int,sex char(2),dept varchar(20

8、);执行该语句后,便产生了学生基本表的表框架,此表为一个空表。,14,字段数据类型,当用SQL语句定义表时,需要为表中的每一个字段设置一个数据类型,用来指定字段所存放的数据是整数、字符串、货币或是其它类型的数据。SQL Server 的数据类型有很多种,分为以下9类:1.整数数据类型:依整数数值的范围大小,有bit,int,smallint,tinyint(微整型)四种。2.精确数值类型:用来定义可带小数部分的数字,有numeric和decimal两种。十进制数,共P位,其中小数点后S位。0=S=P,S=0时可省略。如:123.0、8000.56,15,3.近似浮点数值数据类型:当数值的位数太

9、多时,可用此数据类型来取其近似值,用float和real两种。如:1.23E+104.日期时间数据类型:用来表示日期与时间,依时间范围与精确程度可分为datetime与smalldatetime两种。如:1998-06-08 15:30:005.字符串数据类型:用来表示字符串的字段。包括:char,varchar,text三种,如:“数据库”6.标记数据类型:有uniqueidentifier,timestamp两种,此数据类型通常系统自动产生,而不是用户输入的,timestamp记录数据更新的时间戳印,而 uniqueidentifier用来识别每一笔数据的唯一性。,16,各种数据类型的有关

10、规定如下表:,17,18,19,字段的长度:指字段所能容纳的最大数据量,但对不同的数据类型来说,长度对字段的意义可能有些不同。对字符串数据类型而言,长度代表字段所能容纳的字符的数目,因此它会限制用户所能输入的文本长度。对数值类的数据类型而言,长度则代表字段使用多少个字节来存放数字。精度和小数位数精度是指数中数字的位数,包括小数点左侧的整数部分和小数点右侧的小数部分;小数位数则是指数字小数点右侧的位数。例如:数字12345.678,其精度为8,小数位数为3;所以只有数值类的数据类型才有必要指定精度和小数位数。,字段的长度、精度和小数位数,20,经常以如下所示的格式来表示数据类型以及它所采用的长度

11、、精度和小数位数,其中的N代表长度,P代表精度,S表示小数位数。BINARY(10)CHAR(20)NUMERIC(8,3)但有的数据类型的精度与小数位数是固定的,对采用此类数据类型的字段而言,不需设置精度与小数位数,如:如果某字段采用int数据类型,其长度固定是4,精度固定是10,小数位数则固定是0,这表示字段将能存放10位数没有小数点的整数。存储大小则是4个字节。,21,3.定义完整性约束上列为创建基本表的最简单形式,还可以对表进一步定义,如主键、空值的设定,使数据库用户能够根据应用的需要对基本表的定义做出更为精确和详尽的规定。在SQL Server中,对于基本表的约束分为列约束和表约束。

12、列约束是对某一个特定列的约束,包含在列定义中,直接跟在该列的其他定义之后,用空格分隔,不必指定列名;表约束与列定义相互独立,不包括在列定义中,通常用于对多个列一起进行约束,定义表约束时必须指出要约束的那些列的名称。完整性约束的基本语法格式为:constarint 约束名:约束不指定名称时,系统会给定一个名称。,22,约束类型:在定义完整性约束时必须指定的类型。在SQL Server中可以定义五种类型的完整性约束.(1)NULL/NOT NULL是否允许该字段的值为NULL。NULL值不是0也不是空白,更不是填入字符串“NULL”,而是表示“不知道”、“不确定”或“没有数据”的意思。当某一字段的

13、值一定要输入才有意义的时候,则可以设置为NOT NULL。如主键列就不允许出现空值,否则就失去了唯一标识一条记录的作用只能用于定义列约束,其语法格式如下:constarint NULL|NOT NULL,23,例 建立一个S表,对SNO字段进行NOT NULL约束。USE STUDENTCREATE TABLE S(SNO CHAR(10)NOT NULL,SN VARCHAR(20),AGE INT,SEX CHAR(2)DEFAULT 男,DEPT VARCHAR(20);当SNO为空上时,系统给出错误信息,无NOT NULL约束时,系统缺省为NULL。,24,(2)UNIQUE约束UNI

14、QUE约束用于指明基本表在某一列或多个列的组合上的取值必须唯一。定义了UNIQUE约束的那些列称为唯一键,系统自动为唯一键建立唯一索引,从而保证了唯一键的唯一性。唯一键允许为空,但系统为保证其唯一性,最多只可以出现一个NULL值。UNIQUE既可用于列约束,也可用于表约束。例 建立一个S表,定义SN为唯一键。USE STUDENTCREATE TABLE S(SNO CHAR(6),SN CHAR(8)UNIQUE,SEX CHAR(2),AGE NUMERIC(2);,25,UNIQUE用于定义表约束时,其语法格式如下:CONSTRAINT UNIQUE(,)例 建立一个S表,定义SN+SE

15、X为唯一键。USE STUDENTCREATE TABLE S(SNO CHAR(5),SN CHAR(8),SEX CHAR(2),UNIQUE(SN,SEX);系统为SN+SEX建立唯一索引,确保同一性别的学生没有重名。,26,(3)PRIMARY KEY约束PRIMARY KEY约束用于定义基本表的主键,起唯一标识作用,其值不能为NULL,也不能重复,以此来保证实体的完整性。PRIMARY KEY与UNIQUE约束类似,通过建立唯一索引来保证基本表在主键列取值的唯一性,但它们之间存在着很大的区别:在一个基本表中只能定义一个PRIMARY KEY约束,但可定义多个UNIQUE约束;对于指定

16、为PRIMARY KEY的一个列或多个列的组合,其中任何一个列都不能出现空值,而对于UNIQUE所约束的唯一键,则允许为空。,27,注意:不能为同一个列或一组列既定义UNIQUE约束,又定义PRIMARY KEY约束。PRIMARY KEY既可用于列约束,也可用于表约束。例 建立一个S表,定义SNO为S的主键USE STUDENTCREATE TABLE S(SNO CHAR(5)NOT NULL PRIMARY KEY,SN CHAR(8),AGE NUMERIC(2);,28,PRIMARY KEY用于定义表约束时,即将某些列的组合定义为主键,其语法格式如下:CONSTRAINT PRIM

17、ARY KEY()例 建立一个SC表,定义SNO+CNO为SC的主键USE STUDENTCREATE TABLE SC(SNO CHAR(5)NOT NULL,CNO CHAR(5)NOT NULL,SCORE NUMERIC(3),PRIMARY KEY(SNO,CNO);,29,(4)FOREIGN KEY约束FOREIGN KEY约束指定某一个列或一组列作为外码,其中,包含外码的表称为从表,包含外部键所引用的主键或唯一键的表称主表。系统保证从表在外码上的取值要么是主表中某一个主码值,要么取空值。以此保证两个表之间的连接,确保了实体的参照完整性。FOREIGN KEY既可用于列约束,也可

18、用于表约束,其语法格式为:CONSTRAINT FOREIGN KEY REFERENCES(),30,例 建立一个SC表,定义SNO,CNO为SC的外码。USE STUDENTCREATE TABLE SC(SNO CHAR(5)NOT NULL FOREIGN KEY REFERENCES S(SNO),CNO CHAR(5)NOT NULL FOREIGN KEY REFERENCES C(CNO),SCORE NUMERIC(3),PRIMARY KEY(SNO,CNO);,31,(5)CHECK约束CHECK约束用来检查字段值所允许的范围,如,一个字段只能输入整数,而且限定在0-10

19、0的整数,以此来保证域的完整性。CHECK既可用于列约束,也可用于表约束,其语法格式为:CONSTRAINT CHECK()例 建立一个SC表,定义SCORE 的取值范围为0到100之间。USE STUDENTCREATE TABLE SC(SNO CHAR(5),CNO CHAR(5),SCORE NUMERIC(5,1)CHECK(SCORE=0 AND SCORE=100);,32,例 建立包含完整性定义的学生表USE STUDENTCREATE TABLE S(SNO CHAR(6)PRIMARY KEY,SN CHAR(8)NOT NULL,AGE NUMERIC(2)NOT NUL

20、L CHECK(AGE BETWEEN 15 AND 50),SEX CHAR(2)DEFAULT 男,DEPT CHAR(10)NOT NULL);,33,5.2.3.2 修改基本表由于应用环境和应用需求的变化,经常需要修改基本表的结构,比如,增加新列和完整性约束、修改原有的列定义和完整性约束等。SQL语言使用ALTER TABLE命令来完成这一功能,有如下三种修改方式:1.ADD方式用于增加新列和完整性约束,定义方式同CREATE TABLE语句中的定义方式相同,其语法格式为:ALTER TABLE ADD|例 在S表中增加一个班号列和住址列。USE STUDENTALTER TABLE

21、S ADDCLASS_NO CHAR(6),ADDRESS CHAR(40),34,注意:使用此方式增加的新列自动填充NULL值,所以不能为增加的新列指定NOT NULL约束。例 在SC表中增加完整性约束定义,使SCORE在0-100之间。USE STUDENTALTER TABLE SC ADD CONSTRAINT SCORE_CHK CHECK(SCORE BETWEEN 0 AND 100),35,2.ALTER 方式用于修改某些列,其语法格式为:ALTER TABLEALTER COLUMN NULL|NOT NULL例 把S表中的SNO列加宽到8位字符宽度USE STUDENTAL

22、TER TABLE S ALTER COLUMNSNO CHAR(8),36,注意:使用此方式有如下一些限制:不能将含有空值的列的定义修改为NOT NULL约束;若列中已有数据,则不能减少该列的宽度,也不能改变其数据类型;只能修改NULL|NOT NULL约束,其它类型的约束在修改之前必须先删除,然后再重新添加修改过的约束定义。,37,3.DROP方式删除完整性约束定义,其语法格式为:ALTER TABLEDROP CONSTRAINT 例 删除S表中的AGE_CHK约束USE STUDENTALTER TABLE SDROP CONSTRAINT AGE_CHK,38,5.2.3.4 删除基

23、本表当某个基本表无用时,可将其删除。删除后,该表中的数据和在此表上所建的索引都被删除,而建立在该表上的视图不会随之删除,系统将继续保留其定义,但已无法使用。如果重新恢复该表,这些视图可重新使用。删除表的语法格式:DROP TABLE 例 删除表STUDENTUSE STUDENT DROP TABLE STUDENT注意:只能删除自己建立的表,不能删除其他用户所建的表。,39,5.2.5 设计、创建和维护索引5.2.5.1 索引的作用在日常生活中我们会经常遇到索引,例如图书目录、词典索引等。借助索引,人们会很快地找到需要的东西。索引是数据库随机检索的常用手段,它实际上就是记录的关键字与其相应地

24、址的对应表。例如,当我们要在本书中查找有关“SQL查询”的内容时,应该先通过目录找到“SQL查询”所对应的页码,然后从该页码中找出所要的信息。这种方法比直接翻阅书的内容要快。如果把数据库表比作一本书,则表的索引就如书的目录一样,通过索引可大大提高查询速度。此外,在SQL SERVER中,行的唯一性也是通过建立唯一索引来维护的。索引的作用可归纳为:1.加快查询速度;2.保证行的唯一性。,40,5.2.5.2 索引的分类1.按照索引记录的存放位置可分为聚集索引与非聚集索引聚集索引:按照索引的字段排列记录,并且依照排好的顺序将记录存储在表中。非聚集索引:按照索引的字段排列记录,但是排列的结果并不会存

25、储在表中,而是另外存储。2.唯一索引的概念唯一索引表示表中每一个索引值只对应唯一的数据记录,这与表的PRIMARY KEY的特性类似,因此唯一性索引常用于PRIMARY KEY的字段上,以区别每一笔记录。当表中有被设置为UNIQUE的字段时,SQL SERVER会自动建立一个非聚集的唯一性索引。而当表中有PRIMARY KEY的字段时,SQL SERVER会在PRIMARY KEY字段建立一个聚集索引。3.复合索引的概念复合索引是将两个字段或多个字段组合起来建立的索引,而单独的字段允许有重复的值。,41,5.2.5.3 建立索引建立索引的语句是CREATE INDEX,其语法格式为:CREAT

26、E UNIQUE CLUSTER INDEX ON(次序,次序)UNIQUE表明建立唯一索引。CLUSTER表示建立聚集索引。次序用来指定索引值的排列顺序,可为ASC(升序)或DESC(降序),缺省值为ASC。例 为表SC在SNO和CNO上建立唯一索引。USE STUDENTCREATE UNIQUE INDEX SCI ON SC(SNO,CNO),42,执行此命令后,为SC表建立一个索引名为SCI的唯一索引,此索引为SNO和CNO两列的复合索引,即对SC表中的行先按SNO的递增顺序索引,对于相同的SNO,又按CNO的递增顺序索引。由于有UNIQUE的限制,所以该索引在(SNO,CNO)组合

27、列的排序上具有唯一性,不存在重复值。例 为教师表T在TN上建立聚集索引。CREATE CLUSTER INDEX TI ON T(TN)执行此命令后,为T表建立一个索引名为TI的聚集索引,T表中的记录将按照TN值的升序存放。,43,注意:1.改变表中的数据(如增加或删除记录)时,索引将自动更新。索引建立后,在查询使用该列时,系统将自动使用索引进行查询。2.索引数目无限制,但索引越多,更新数据的速度越慢。对于仅用于查询的表可多建索引,对于数据更新频繁的表则应少建索引。,44,5.2.5.4 删除索引建立索引是为了提高查询速度,但随着索引的增多,数据更新时,系统会花费许多时间来维护索引。这时,应删除不必要的索引。删除索引的语句是DROP INDEX,其语法格式为:DROP INDEX 数据表名.索引名例 删除表SC的索引SCI。DROP INDEX SC.SCI,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号