《第3章语言基础优秀课件.ppt》由会员分享,可在线阅读,更多相关《第3章语言基础优秀课件.ppt(49页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第3章语言基础第1页,本讲稿共49页第3章 SQL语言基础及数据定义功能 3.1 基本概念3.2 SQL的数据类型 3.3 数据定义功能第2页,本讲稿共49页3.1 基本概念3.1.1 SQL语言的发展 3.1.2 SQL语言的特点3.1.3 SQL语言功能概述 第3页,本讲稿共49页3.1.1 SQL语言的发展1986年10月由美国ANSI 公布最早的SQL标准。1989年4月,ISO提出了具备完整性特征的SQL,称为SQL-89。1992年11月,ISO又公布了新的SQL标准,称为SQL-92(以上均为关系形式)。1999年颁布SQL-99,是SQL92的扩展。第4页,本讲稿共49页3.1
2、.2 SQL语言的特点1.一体化2.高度非过程化3.简洁4.使用方式多样第5页,本讲稿共49页3.1.3 SQL语言功能概述SQL功能功能命令动词命令动词数据查询数据查询SELECT数据定义数据定义CREATE、DROP、ALTER数据操纵数据操纵INSERT、UPDATE、DELETE数据控制数据控制GRANT、REVOKE四部分:数据定义功能、数据控制功能、数据查询功能和数据操纵功能。第6页,本讲稿共49页3.2 SQL的数据类型数值型 字符串型日期时间型货币型第7页,本讲稿共49页数值型准确型 整数Bigint:8字节,Int:4字节Smallint:2字节,Tinyint:1字节 Bi
3、t:1位,存储1或0小数Numeric(p,q)或Decimal(p,q),其中:p为数字位长度,q:小数位长度。近似型 Float:8字节 Real:4字节第8页,本讲稿共49页字符串型普通编码字符串类型统一字符编码字符串类型二进制字符串类型第9页,本讲稿共49页普通编码字符串类型Char(n):定长存储,n=8000 Varchar(n):不定长存储(按实际长度存储),长度最大不超过n,n=8000 注:n 为字符个数Text:存储大于8000字节的文本第10页,本讲稿共49页统一字符编码字符串类型nchar(n):定长存储,n=4000 nvarchar(n):不定长存储,长度最大不超过
4、n,n=4000 ntext:存储大于8000字节的文本特点:每个字符占两个字节第11页,本讲稿共49页二进制字符串类型Binary(n):固定长度,n=8000。Varbinary(n):可变长度,n 8000。注:n为二进制数据的字节数image:大容量、可变长二进制字符数据,可用于存储文件。第12页,本讲稿共49页日期时间型日期时间型Datetime:8字节,年月日时分秒毫秒(例:2001/08/03 10:30:00.000)SmallDateTime:4字节,年月日时分 (例:2001/08/03 10:30:00)日期、时间的输入格式第13页,本讲稿共49页货币类型Money:8
5、个字节,精确到货币单位的千分之十。Smallmoney:4 个字节,精确到货币单位的千分之十。限制到小数点后 4 位。可以带有适当的货币符号。例如,100 英镑可表示为 100。第14页,本讲稿共49页3.3 数据定义功能 3.3.1 基本表的定义与删除 3.3.2 修改表结构 3.3.3 数据完整性 第15页,本讲稿共49页3.3.1 基本表的定义与删除1定义基本表 使用SQL语言中的CREATE TABLE语句实现,其一般格式为:CREATE TABLE (列级完整性约束定义,列级完整性约束定义 ,表级完整性约束定义 )第16页,本讲稿共49页在列级完整性约束定义处可以定义的约束NOT N
6、ULL:限制列取值非空。DEFAULT:给定列的默认值。UNIQUE:限制列取值不重。CHECK:限制列的取值范围。PRIMARY KEY:指定本列为主码。FOREIGN KEY:定义本列为引用其他表的外码。使用形式为:FOREIGN KEY()REFERENCES()第17页,本讲稿共49页几点说明NOT NULL和DEFAULT只能是列级完整性约束;其他约束均可在表级完整性约束处定义。注意以下几点:第一,如果CHECK约束是定义多列之间的取值约束,则只能在表级完整性约束处定义;第二,如果表的主码由多个列组成,则也只能在表级完整性约束处定义,并将主码列用括号括起来,即:PRIMARY KEY
7、(列1,列2 );第三,如果在表级完整性约束处定义外码,则“FOREIGN KEY()”部分不能省。第18页,本讲稿共49页约束定义 列取值非空约束 NOT NULL例:sname char(10)NOT NULL第19页,本讲稿共49页约束定义(续)表主码约束表主码约束在定义列时定义主码(仅用于单列主码)列定义 PRIMARY KEY例:SNO char(7)PRIMARY KEY在定义完列时定义主码(用于单列或多列主码)PRIMARY KEY()例:PRIMARY KEY(SNO)PRIMARY KEY(SNO,CNO)第20页,本讲稿共49页约束定义(续)外码引用约束外码引用约束指明本表
8、外码列引用的表及表中的主码列。FOREIGN KEY()REFERENCES()例:FOREIGN KEY(sno)REFERENCES 学生表(sno)第21页,本讲稿共49页创建学生表CREATE TABLE Student(Sno char(7)PRIMARY KEY,Sname char(10)NOT NULL,Ssex char(2),Sage tinyint,Sdept char(20)第22页,本讲稿共49页创建课程表CREATE TABLE Course(Cno char(10)NOT NULL,Cname char(20)NOT NULL,Ccredit tinyint,Se
9、mester tinyint,PRIMARY KEY(Cno)第23页,本讲稿共49页创建SC表CREATE TABLE SC(Sno char(7)NOT NULL,Cno char(10)NOT NULL,Grade tinyint,XKLB char(4),PRIMARY KEY(Sno,Cno),FOREIGN KEY(Sno)REFERENCES Student(Sno),FOREIGN KEY(Cno)REFERENCES Course(Cno)第24页,本讲稿共49页删除表当确信不再需要某个表时,可以将其删除删除表时会将与表有关的所有对象一起删掉,包括表中的数据。删除表的语句格式
10、为:DROP TABLE ,例:删除test表的语句为:DROP TABLE test第25页,本讲稿共49页3.3.2 修改表结构 在定义完表之后,如果需求有变化,比如添加列、删除列或修改列定义,可以使用ALTER TABLE语句实现。ALTER TABLE语句可以对表添加列、删除列、修改列的定义、定义主码、外码,也可以添加和删除约束。第26页,本讲稿共49页修改表结构语法ALTER TABLE ALTER COLUMN|ADD COLUMN|DROP COLUMN|ADD PRIMARY KEY(列名,n )|ADD FOREIGN KEY(列名)REFERNECES 表名(列名)第27页
11、,本讲稿共49页示例例2为SC表添加“修课类别”列,此列的定义为:XKLB char(4)ALTER TABLE SC ADD XKLB char(4)NULL 第28页,本讲稿共49页示例例3将新添加的XKLB的类型改为 char(6)。ALTER TABLE SC ALTER COLUMN XKLB char(6)第29页,本讲稿共49页示例例3.删除Course表的Period列。ALTER TABLE Course DROP COLUMN Period 第30页,本讲稿共49页3.3.3数据完整性 完整性约束条件的作用对象 实现数据完整性 第31页,本讲稿共49页完整性约束条件的作用对
12、象完整性检查是围绕完整性约束条件进行的,因此,完整性约束条件是完整性控制机制的核心。完整性约束条件的作用对象可以是表、元组和列。列级约束元组约束关系约束第32页,本讲稿共49页列级约束列级约束主要是对列的类型、取值范围、精度等的约束,具体包括:对数据类型的约束:包括数据类型、长度、精度等。对数据格式的约束:如规定学号的前两位表示学生的入学年份,第三位表示系的编号,第四位表示专业编号,第五位代表班的编号等等。对取值范围的约束:如学生的成绩取值范围为0100。对空值的约束。第33页,本讲稿共49页元组约束元组的约束是元组中各个字段之间的联系的约束,如:开始日期小于结束日期,职工的最低工资不能低于规
13、定的最低保障金。第34页,本讲稿共49页关系约束指若干元组之间、关系之间的联系的约束。比如:学号的取值不能重复也不能取空值,学生修课表中的学号的取值受学生表中的学号取值的约束 第35页,本讲稿共49页实现数据完整性 声声明完整性明完整性 在表定义时声明 使用约束、缺省值(DEFAULT)等 由SQL Server自动加以保证 过过程完整性程完整性 在客户端或服务器端用编程语言或工具实现 在Server端用触发器(trigger)来实现第36页,本讲稿共49页实现约束1.PRIMARY KEY 约束2.UNIQUE 约束3.FOREIGN KEY 约束4.DEFAULT 约束5.CHECK 约束
14、第37页,本讲稿共49页PRIMARY KEY 约束保证实体完整性 每个表有且只有一个PRIMARY KEY 约束 格式:ALTER TABLE 表名 ADD CONSTAINT 约束名 PRIMARY KEY (列名,n )第38页,本讲稿共49页示例例:对雇员表和工作表分别添加主码约束。ALTER TABLE 雇员表 ADD CONSTRAINT PK_EMP PRIMARY KEY(雇员编号)ALTER TABLE 工作表 ADD CONSTRAINT PK_JOB PRIMARY KEY(工作编号)第39页,本讲稿共49页UNIQUE 约束确保在非主键列中不输入重复值。应用在客观具有唯
15、一性质的列上,如身份证号、社会保险号等。格式:ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(,n)第40页,本讲稿共49页示例例为雇员表的例为雇员表的“电话号码电话号码”列添加列添加UNIQUEUNIQUE约约束。束。ALTER TABLE ALTER TABLE 雇员表雇员表 ADD CONSTRAINT UK_SIDADD CONSTRAINT UK_SID UNIQUE UNIQUE(电话号码)(电话号码)第41页,本讲稿共49页FOREIGN KEY约束用于建立和加强两个表数据之间的连接的一列或多列 格式:ALTER TABLE 表名 ADD CON
16、STRAINT 约束名 FOREIGN KEY()REFERENCES 引用表名()第42页,本讲稿共49页示例例为雇员表的工作编号添加外码引用约束,此列引用工作表的工作编号列。ALTER TABLE 雇员 ADD CONSTRAINT FK_job_id FOREIGN KEY(工作编号)REFERENCES 工作表(工作编号)第43页,本讲稿共49页 DEFAULT约束当向表中插入数据时,如果没有为定义了 DEFAULT 的列提供值,则是隐式要求为此列使用默认值。一个DefaultDefault只能约束一列。格式:ALTER TABLE 表名 ADD CONSTRAINT 约束名 DEFA
17、ULT 默认值 FOR 列名第44页,本讲稿共49页示例例定义雇员表的工资的默认值为1000。ALTER TABLE 雇员 ADD CONSTRAINT DF_SALARY DEFAULT 1000 FOR 工资第45页,本讲稿共49页CHECK约束通过限制输入到列中的值来强制域的完整性。可定义同表多列之间的约束关系 格式:ALTER TABLE 表名 ADD CONSTRAINT 约束名 CHECK(逻辑表达式)第46页,本讲稿共49页示例1例1在雇员表中,添加限制雇员的工资必须大于等于500的约束。ALTER TABLE 雇员 ADD CONSTRAINT CHK_SalaryCHECK(工资=500)第47页,本讲稿共49页示例2例2添加限制工资表的最低工资小于等于最高工资的约束。ALTER TABLE 工作 ADD CONSTRAINT CHK_Job_Salary CHECK(最低工资=最高工资)第48页,本讲稿共49页综合起来CREATE TABLE 工作(工作编号 char(8)PRIMARY KEY,最低工资 int,最高工资 int,CHECK(最低工资=500),电话号码 char(8)not null UNIQUE)第49页,本讲稿共49页
限制150内