-数据库原理及应用第二版-第4章SQL语言基础及数据定义功能_第1页
-数据库原理及应用第二版-第4章SQL语言基础及数据定义功能_第2页
-数据库原理及应用第二版-第4章SQL语言基础及数据定义功能_第3页
-数据库原理及应用第二版-第4章SQL语言基础及数据定义功能_第4页
-数据库原理及应用第二版-第4章SQL语言基础及数据定义功能_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章

SQL语言基础及数据定义功能

4.1基本概念4.2SQL的数据类型4.3数据定义功能4.4数据完整性4.1基本概念4.1.2SQL语言特点

SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一身,其主要特点包括:一体化高度非过程化简洁以多种方式使用4.1.3SQL语言功能概述

SQL按其功能可分为四大部分:数据定义功能、数据控制功能、数据查询功能和数据操纵功能。

Sql功能命令动词数据定义CREATE、DROP、ALTER数据查询SELECT数据操纵INSERT、UPDATE、DELETE数据控制GRANT、REVOKE4.2SQL的数据类型4.2.1数值型

1.准确型:指在计算机中能够精确存储的数据。2.近似型:用于表示浮点型数据的近似数据类型。1)整数型此种数据类型用于存储整数,没有小数位。它包括bigint、int、smallint和tinyint4种。其中bigint长度为8个字节。Int长度为4个字节。Smallint长度为2个字节Tinying长度为1个字节,只能存储0-255范围内的数字。2)小数数据类型Decimal,精确数据类型,由两部分构成,一个整数,二是小数部分。Decimal(长度,小数位)3)近似数值型Float型和real数据类型,非精确数据。4.2.2字符串型字符串数据由汉字、英文字母、数字和各种符号组成。字符串存储时采用字符型数据类型,由字母、符号和数字组成,用引号括起来。主要的数据类型有char、varchar、nvarchar、nchar和text以及ntext类型。Char或text型是固定长度且非unicode的字符。Varchar是一种可变长度且非unicode的字符。Nchar是一种固定的且unicode字符。4.2.3日期时间类型

专门的日期时间类型,格式为月/日/年时:分:秒。有两种:Datetime和smalldatetime两种。Datetime能表示:占用8个字节空间,1753年至9999年。Smalldatetime能表示:占用4个字节空间,1900年到2079年。输入日期时:Oct252001/*英文数字格式*/2001-10-15或2001/10/15/*数字加分隔符格式*/20011020/*纯数字格式*/输入时间时:2001-10-153:22:45PM/*12小时格式*/2001-10-1515:22:45/*24小时格式*/4.3数据定义功能

4.3.1基本表的定义与删除

1、定义基本表一般格式为:CREATETABLE<表名>(<列名><数据类型>[列级完整性约束定义]{,<列名><数据类型>[列级完整性约束定义]…}

[,表级完整性约束定义])其中:<表名>:所要定义的基本表的名字。<列名>:表中所包含的属性列的名字。<数据类型>指明列的数据类型。在定义表的同时可以定义与表有关的完整性约束条件。如果完整性约束只涉及到表中的一个列,则可以在列级完整性约束定义处定义,也可以在表级完整性约束定义处定义;如果完整性约束条件涉及表中多个属性列,则必须在表级完整性约束定义处定义。在列级完整性约束定义处可以定义如下约束:NOTNULL:限制列取值非空DEFAULT:给定列的默认值,使用形式为:

DEFAULT常量UNIQUE:限制列取值不重CHECK:限制列的取值范围,使用形式为:

CHECK(约束表达式)

PRIMARYKEY:指定本列为主码FOREIGNKEY:定义本列为引用其他表的外码。使用形式为:[FOREIGNKEY(<列名>)]REFERENCES<外表名>(<外表列名>)

但有些约束必须在表级约束处定义:第一,如果CHECK约束是定义多列之间的取值约束;第二,如果表的主码由多个列组成;第三,如果在表级完整性约束处定义外码,则FOREIGNKEY和<列名>均不能省,且<列名>必须用括号括起来。即:

PRIMARYKEY(列1{[,列2]…})用SQL语句创建Student表列名说明数据类型约束Sno学号字符串,长度为7主码Sname姓名字符串,长度为10非空Ssex性别字符串,长度为2取‘男’或‘女’Sage年龄微整数取值15~45Sdept所在系字符串,长度为20默认为‘计算机系’表4-6Student表结构CREATETABLEStudent(Snochar(7)PRIMARYKEY,Snamechar(10)NOTNULL,Ssexchar(2)CHECK(Ssex='男'ORSsex='女'),

SagetinyintCHECK(Sage>=15ANDSage<=45),Sdeptchar(20)DEFAULT'计算机系')用SQL语句创建Course表列名说明数据类型约束Cno课程号字符串,长度为10主码Cname课程名字符串,长度为20非空Ccredit学分微整数Semster学期微整数表4-7course表结构

CREATETABLECourse(Cnochar(10)NOTNULL,Cnamechar(20)NOTNULL,Ccredittinyint,Semestertinyint,

PRIMARYKEY(Cno))

用SQL语句创建SC表列名说明数据类型约束Sno学号字符串,长度为7主码,引用Student的外码Cno课程名字符串,长度为10主码,引用Course的外码Grade成绩小整数XKLB修课类别字符串,长度为4表4-8sc表结构CREATETABLESC(Snochar(7)NOTNULL,Cnochar(10)NOTNULL,Gradesmallyint,XKLBchar(4),

PRIMARYKEY(Sno,Cno),FOREIGNKEY(Sno)REFERENCESStudent(Sno),FOREIGNKEY(Cno)REFERENCESCourse(Cno))2、删除表删除表的语句格式为:

DROPTABLE<表名>{[,<表名>]…}

例:删除test表的语句为:

DROPTABLEtest4.3.2修改表结构

Server的ALTERTABLE语句的部分格式:ALTERTABLE<表名>

[ALTERCOLUMN<列名><新数据类型>]|[ADD<列名><数据类型>[属性]|[DROPCOLUMN<列名>]|[ADDconstraint约束名约束定义]|[DROPconstraint约束名]例1.为SC表添加“修课类别”列,此列的定义为:XKLBchar(4)

ALTERTABLESCADDXKLBchar(4)NULL例2.将新添加的XKLB的类型改为char(6)。

ALTERTABLESCALTERCOLUMNXKLBchar(6)例3.删除Course表的Period列ALTERTABLECourseDROPCOLUMNPeriod4.4数据完整性数据完整性是指数据的正确性和相容性。为了防止数据库中存在不符合语义的数据,为了维护数据的完整性,数据库管理系统必须提供一种机制来检查数据库中的数据,看其是否满足语义规定的条件。这些加在数据库数据之上的语义约束条件就是数据完整性约束条件。而DBMS检查数据是否满足完整性条件的机制就称为完整性检查。4.4.1完整性约束条件的作用对象

完整性约束条件的作用对象可以是表、元组和列。(1)列级约束对数据类型的约束:包括数据类型、长度、精度等。对数据格式的约束:如规定学号的前两位表示学生的入学年份,第三位表示系的编号,第四位表示专业编号,第五位代表班的编号等等。对取值范围或取值集合的约束:如学生的成绩取值范围为0~100。对空值的约束:列是否允许为空。(2)元组约束

元组的约束是元组中各个字段之间的联系的约束,如:借阅日期<应还日期。(3)关系约束

关系约束是指若干元组之间、关系之间的联系的约束。比如学号的取值不能重复也不能取空值,学生修课表中的学号的取值受学生表中的学号取值的约束等。4.4.2实现数据完整性

实现完整性一般是在服务器端完成的。方法有两种:一种是在定义表时声明数据完整性;另一种是在服务器编写触发器来实现。实体完整性(PRIMARYKEY)引用完整性(FOREIGNKEY)用户定义的完整性,包括:默认值(DEFAULT)约束列值取值范围(CHECK)约束惟一值约束(UNIQUE)以雇员表和工作表为例,在这两张表上添加约束。这两张表的结构如下:

雇员表

(雇员编号字符型长度为7非空,雇员名字符型,长度为10,工作编号字符型,长度为8, 工资整型,电话字符型,长度为8非空)

工作表

(工作编号字符型,长度为8,非空,最低工资整型,最高工资整型)

(1)主码约束

a、每个表只能有一个;b、用PRIMARYKEY约束的列取值不能有重复,而且不允许有空值;添加主码约束的语法格式为:

ALTERTABLE表名 ADD[CONSTRAINT]约束名PRIMARYKEY(<列名>[,…n])

例1:对雇员表和工作表分别添加主码约束。

ALTERTABLE雇员表ADDCONSTRAINTPK_EMP

PRIMARYKEY(雇员编号)ALTERTABLE工作表ADDCONSTRAINTPK_JOB

PRIMARYKEY(工作编号)(2)UNIQUE约束

用于限制在一个列中不能有重复的值。定义UNIQUE约束时注意如下事项:允许有一个空值;在一个表中可以定义多个UNIQUE约束;可以在一个列或多个列上定义UNIQUE约束;

添加UNIQUE约束的语法格式为:

ALTERTABLE表名ADD[CONSTRAINT约束名]UNIQUE(<列名>[,…n])

例2.为雇员表的“电话”列添加UNIQUE约束。

ALTERTABLE雇员表

ADDCONSTRAINTUK_SIDUNIQUE(电话)(3)外码约束

外码约束实现了引用完整性。添加FOREIGNKEY约束的语法格式为:ALTERTABLE表名ADD[CONSTRAINT约束名]FOREIGNKEY(<列名>)REFERENCES引用表名(<列名>)

例3.为雇员表的工作编号添加外码引用约束,此列引用工作表的工作编号列。ALTERTABLE雇员ADDCONSTRAINTFK_job_id

FOREIGNKEY(工作编号)

REFERENCES工作表(工作编号)

(4)DE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论