数据库及其基本操作 课件《SQL Server数据库应用案例教程》演示模板_第1页
数据库及其基本操作 课件《SQL Server数据库应用案例教程》演示模板_第2页
数据库及其基本操作 课件《SQL Server数据库应用案例教程》演示模板_第3页
数据库及其基本操作 课件《SQL Server数据库应用案例教程》演示模板_第4页
数据库及其基本操作 课件《SQL Server数据库应用案例教程》演示模板_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

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

文档简介

4数据库及其基本操作第章本章导读随着科学技术的不断发展,数据成了新的生产要素。使用数据库进行有效的数据操作可以提高工作效率,甚至促进社会的发展,但在对数据进行操作之前,必须先创建存储数据的数据库与数据表。本章将介绍数据库与数据表的相关知识,以及使用SSMS与T-SQL创建、修改、删除、查看数据库及数据表的方法。知识目标了解系统数据库与数据库结构的基础知识。掌握数据完整性约束的基础知识。能力目标能够使用SSMS对数据库及数据表进行基本操作。能够使用T-SQL对数据库及数据表进行基本操作。素质目标懂得工作学习都应遵守规则,树立正确的职业价值观。项目导航数据库及其基本操作1数据表及其基本操作2数据完整性约束301数据库及其基本操作4.1.1系统数据库在SQLServer中,系统运行时会用到的相关信息(如系统对象和组态设置等)都是以数据库的形式存储的,而保存着这些系统信息的数据库称为系统数据库。—6—SQLServer安装成功后会自动创建4个系统数据库,分别为master、model、msdb和tempdb。打开SSMS,在“对象资源管理器”窗口中依次双击“WIN-NK8HF1BICSP”→“数据库”→“系统数据库”节点,在展开的节点中可以看到这4个已经存在的数据库,如图4-1所示。图4-1系统数据库master是整个数据库管理系统的核心;model是数据库管理系统创建新数据库时的模板;msdb提供运行SQLServerAgent的信息;tempdb是临时数据库。4.1.2数据库结构—7—数据库文件由数据文件和日志文件组成。(1)数据文件是指数据库中用来存放数据库数据和数据库对象的文件。一个数据库可以有一个或多个数据文件,一个数据文件只属于一个数据库。当一个数据库有多个数据文件时,可将其中一个文件定义为主数据文件(扩展名为.mdf),用于存储数据库的启动信息及部分或全部数据。一个数据库只能有一个主数据文件,其他数据文件称为次数据文件(扩展名为.ndf),用于存储主数据文件未存储的其他数据。(2)日志文件由一系列日志记录组成,它记录了数据库的更新情况和用户对数据库的修改操作等。当数据库发生损坏时,可以通过日志文件分析损坏原因;当数据丢失时,也可以使用日志文件找回数据。每一个数据库至少拥有一个日志文件(扩展名为.ldf)。4.1.3创建数据库—8—1.

使用SSMS创建数据库【例4-1】使用SSMS创建数据库scs,数据文件的逻辑名称为scs_data,数据文件的初始存储空间大小为10MB,存储空间自动增长量为5%,最大存储空间为200MB,存放在D盘的Data文件夹下,文件名为scs_data.mdf;日志文件的逻辑名称为scs_log,初始存储空间大小保持默认(8MB),存储空间自动增长量为10%,最大存储空间为50MB,存放在D盘的Data文件夹下,文件名为scs_log.ldf。步骤1

打开SSMS并登录。在“对象资源管理器”窗口中右击“数据库”节点,在弹出的快捷菜单中选择“新建数据库”菜单项,如图4-2所示。图4-2新建数据库—9—步骤2

打开“新建数据库”窗口,在“数据库名称”文本框中输入“scs”,界面下方的数据库文件设置区中显示了该数据库数据文件与日志文件的相关设置,单击数据文件的“逻辑名称”栏,输入“scs_data”,单击该文件的“初始大小”栏,输入“10”,如图4-3所示。图4-3设置数据库名称与数据库文件4.1.3创建数据库1.

使用SSMS创建数据库—10—步骤3

单击数据文件“自动增长/最大大小”栏右侧的按钮

,打开“更改scs_data的自动增长设置”对话框,选中“按百分比”单选钮,在其右侧的编辑框中输入“5”;然后选中“限制为”单选钮,在其右侧的编辑框中输入“200”;最后单击“确定”按钮,如图4-4所示。使用同样的方法设置日志文件的“自动增长/最大大小”栏信息,如图4-5所示。图4-5设置日志文件的自动增长图4-4设置数据文件的自动增长4.1.3创建数据库1.

使用SSMS创建数据库—11—步骤4

向右移动滚动条,单击数据文件“路径”栏右侧的按钮

,打开“定位文件夹-WIN-NK8HF1BICSP”窗口,选择D盘的Data文件夹,如图4-6所示。使用同样的方法设置日志文件的“路径”栏信息。需要注意的是,若D盘没有该文件夹,需先在资源管理器中创建。图4-6选择存储路径4.1.3创建数据库1.

使用SSMS创建数据库—12—步骤5

单击数据文件的“文件名”栏,输入“scs_data.mdf”,接着单击日志文件的

“文件名”栏,输入“scs_log.ldf”,最后单击“确定”按钮,如图4-7所示。图4-7完成创建数据库4.1.3创建数据库1.

使用SSMS创建数据库—13—步骤6

数据库创建成功。在“对象资源管理器”中,双击“WIN-NK8HF1BICSP”→“数据库”节点,即可看到创建好的数据库scs,如图4-8所示。图4-8查看数据库scs

提示若想重命名数据库,可右击数据库名称节点,在弹出的快捷菜单中选择“重命名”菜单项,原数据库名称处于可编辑状态,删除原名称,重新输入新名称,然后按Enter键。4.1.3创建数据库1.

使用SSMS创建数据库4.1.3创建数据库—14—2.使用T-SQL创建数据库创建数据库的T-SQL命令为CREATEDATABASE,具体语法格式如下:CREATEDATABASE<数据库名称>[ON[FILEGROUP<文件组名称>](NAME=数据文件逻辑名称,FILENAME='路径+数据文件名称',SIZE=数据文件初始大小,MAXSIZE=数据文件最大容量,FILEGROWTH=数据文件自动增长容量)][LOGON(NAME=日志文件逻辑名称,FILENAME='路径+日志文件名称',SIZE=日志文件初始大小,MAXSIZE=日志文件最大容量,FILEGROWTH=日志文件自动增长容量)]—15—CREATEDATABASEtest【例4-2】使用T-SQL创建数据库test。使用T-SQL实现例4-1的代码如下:CREATEDATABASEscsON(NAME=scs_data,FILENAME='D:\Data\scs_data.mdf',SIZE=10MB,MAXSIZE=200MB,FILEGROWTH=5%)LOGON(NAME=scs_log,FILENAME='D:\Data\scs_log.ldf',SIZE=8MB,MAXSIZE=50MB,FILEGROWTH=10%)4.1.3创建数据库2.使用T-SQL创建数据库4.1.4修改数据库—16—1.使用SSMS修改数据库【例4-3】使用SSMS修改数据库scs,将其日志文件的自动增长方式修改为“按MB”,增长量修改为“5”。步骤1

在“对象资源管理器”窗口中右击“scs”节点,在弹出的快捷菜单中选择“属性”菜单项,如图4-9所示。图4-9查看数据库属性—17—步骤2

打开“数据库属性-scs”窗口,在界面左侧的“选择页”列表中选择“文件”选项,在“数据库文件”设置区中单击日志文件“自动增长/最大大小”栏右侧的按钮,如图4-10所示。图4-9查看数据库属性4.1.4修改数据库1.使用SSMS修改数据库—18—步骤3

打开“更改scs_log的自动增长设置”对话框,选中“按MB”单选钮,然后在其右侧的编辑框中输入“5”,单击“确定”按钮(见图4-11);返回“数据库属性-scs”窗口,单击“确定”按钮,完成修改。图4-11修改日志文件的自动增长4.1.4修改数据库1.使用SSMS修改数据库4.1.4修改数据库—19—2.使用T-SQL修改数据库(1)修改数据库名称,具体语法格式如下:ALTERDATABASE<数据库名称>MODIFYNAME=数据库新名称(2)修改数据库中的具体文件,具体语法格式如下:ALTERDATABASE<数据库名称>ADDFILE(文件格式)[,…n][TOFILEGROUP<文件组名称>]|ADDLOGFILE(文件格式)[,…n]|REMOVEFILE<文件逻辑名称>|MODIFYFILE(文件格式)|ADDFILEGROUP<文件组名称>|REMOVEFILEGROUP<文件组名称>|MODIFYFILEGROUP<文件组名称>—20—其中,“文件格式”一般包含如下内容。(NAME=文件逻辑名称[,NEWNAME=新文件逻辑名称][,SIZE=修改后文件大小][,MAXSIZE=修改后最大容量][,FILEGROWTH=修改后文件自动增长容量])下面对上述命令进行说明。①

ADDFILE:向数据库中添加数据文件。②

ADDLOGFILE:向数据库中添加日志文件。③

REMOVEFILE:从数据库中删除文件。若文件不为空,则无法删除。④

MODIFYFILE:指定要修改的文件。⑤

ADDFILEGROUP:向数据库中添加文件组。⑥

REMOVEFILEGROUP:从数据库中删除文件组。若文件组不为空,则无法删除。4.1.4修改数据库2.使用T-SQL修改数据库—21—ALTERDATABASEtestMODIFYNAME=test1【例4-4】使用T-SQL将数据库test的名称改为test1。ALTERDATABASEscsMODIFYFILE(NAME=scs_data,MAXSIZE=100MB)【例4-5】使用T-SQL将数据库scs的数据文件最大容量改为100MB。4.1.4修改数据库2.使用T-SQL修改数据库4.1.5删除数据库—22—1.使用SSMS删除数据库【例4-6】使用SSMS删除数据库test1。步骤1

在“对象资源管理器”窗口中右击“test1”节点,在弹出的快捷菜单中选择“删除”菜单项,如图4-12所示。图4-12删除数据库—23—步骤2

打开“删除对象”窗口,确认删除对象后单击“确定”按钮完成删除,如图4-13所示。图4-13确认删除数据库4.1.5删除数据库1.使用SSMS删除数据库4.1.5删除数据库—24—2.使用T-SQL删除数据库删除数据库的T-SQL命令为DROPDATABASE,具体语法格式如下:DROPDATABASE<数据库名称>DROPDATABASEtest【例4-7】使用T-SQL删除数据库test。—25—

拓展阅读说到数据库的删除操作,就不得不提“删库跑路”。“删库跑路”指的是,有些程序员与公司闹矛盾后一气之下将公司的数据库删除再悄悄辞职离开,或者是有些程序员误删数据库后因害怕担责而匆匆辞职。实际上,这些都是极不负责任的行为,严重时甚至会面临刑事处罚。2018年,韩某利用其数据库管理员的身份,登录任职公司的财务系统服务器删除了财务数据及相关应用程序,致使公司财务系统无法登录。为恢复数据及重新构建财务系统,该公司共计花费人民币18万元。当地法院判决认定韩某违反国家规定,对计算机信息系统中存储的数据和应用程序进行删除,造成计算机信息系统不能正常运行,后果特别严重,其行为已构成破坏计算机信息系统罪,依法应予惩处,判处有期徒刑七年。我们作为新时代的有为青年,在工作中应有担当、敢担责,拥有严谨的工作态度和向上的工作精神,树立正确的职业价值观。4.1.5删除数据库2.使用T-SQL删除数据库4.1.6查看数据库—26—在SSMS中可按如下步骤查看数据库信息。步骤1

在“对象资源管理器”窗口中右击想要查看的数据库节点(以数据库scs为例),在弹出的快捷菜单中选择“属性”菜单项。步骤2

打开“数据库属性-scs”窗口,在“选择页”列表中选择“常规”选项,界面的右侧将显示包括备份、数据库及维护等相关信息,如图4-14所示。步骤3

在“选择页”列表中选择其他选项查看数据库的其他相关信息。图4-14查看数据库信息—27—课堂总结①系统数据库②数据库结构③创建数据库④修改数据库⑤删除数据库⑥查看数据库02数据表及其基本操作—29—4.2.1创建数据表1.选择数据库使用SSMS选择数据库1在“对象资源管理器”窗口中选中某数据库节点,然后单击工具栏中的“新建查询”按钮即可打开该数据库的查询编辑窗口。若已经打开查询编辑窗口,可在工具栏中的“可用数据库”下拉列表中选择想要操作的数据库选项,以选择想要操作的数据库,如图4-15所示。图4-15选择数据库—30—使用T-SQL选择数据库2使用T-SQL创建数据表时,可在相关代码前添加打开数据库的命令,具体语法格式如下:USE<数据库名称>其中,数据库名称必须为SQLServer中实际存在的数据库。同样,也可在使用完毕后切换或关闭指定数据库,具体语法格式如下:USE其中,USE后没有数据库名称时,表示关闭当前数据库。4.2.1创建数据表1.选择数据库—31—4.2.1创建数据表2.使用SSMS创建数据表表

名列

名数据类型约束条件studentsno(学号)varchar(6)主码sn(姓名)nvarchar(10)非空sex(性别)nchar(1)默认值(男)、非空dept(系别)nvarchar(10)无约束age(年龄)int无约束coursecno(课程编号)varchar(10)主码cn(课程名称)nvarchar(20)非空credit(学分)int非空sgradesno(学号)varchar(6)外码、组合为主码cno(课程编号)varchar(10)grade(成绩)numeric(4,1)取值范围(0~100)表4-1数据表student、course与sgrade的数据结构【例4-8】使用SSMS在数据库scs中创建数据表student(学生)、course(课程)与sgrade(选课),它们的数据结构如表4-1所示。—32—

提示在定义表的同时,还可以定义与表有关的完整性约束条件,这是SQLServer提供的数据完整性机制,用来约束列的取值。常用约束条件有NOTNULL约束(非空)、UNIQUE约束(取值唯一)、PRIMARYKEY约束(主码)、FOREIGNKEY约束(外码)、CHECK约束(取值范围)、DEFAULT约束(默认值)6种,具体内容可见4.3节。4.2.1创建数据表2.使用SSMS创建数据表—33—步骤1

在“对象资源管理器”窗口中,右击“scs”节点下的“表”节点,在弹出的快捷菜单中选择“新建”→“表”菜单项,打开未命名的表设计窗口,如图4-16所示。图4-16新建数据表4.2.1创建数据表2.使用SSMS创建数据表—34—步骤2

单击“列名”下方的空白栏,输入字段“sno”,然后单击该栏外的任意处,表中自动显示该字段的数据类型与允许Null值的默认设置;接着选中该字段的“数据类型”栏,再单击该栏右侧的下拉按钮,在展开的列表中选择“varchar(50)”选项,然后将其修改为“varchar(6)”(也可直接手动输入“varchar(6)”);最后右击该行最左侧的三角按钮

,在弹出的快捷菜单中选择“设置主键”菜单项,将该字段设置为主码,如图4-17所示。图4-16新建数据表4.2.1创建数据表2.使用SSMS创建数据表—35—步骤3

使用同样的方法继续设置表student中的其余字段。其中,设置非空约束只需取消勾选相应字段所在行的“允许Null值”复选框即可;设置sex字段的默认值时,需在窗口下方的“列属性”窗格中“默认值或绑定”栏右侧的空白处输入“'男'”,如图4-18所示。图4-18设置字段默认值图4-19设置数据表的名称步骤4

所有字段设置完成后,单击工具栏中的“保存”按钮

,打开“选择名称”对话框。在“输入表名称”文本框中输入“student”,单击“确定”按钮,如图4-19所示。4.2.1创建数据表2.使用SSMS创建数据表—36—步骤5

参照步骤1~4的操作新建数据表,然后在其中添加数据表course的字段并保存。图4-20

设置组合主码步骤6

参照步骤1~4的操作新建数据表,在其中添加数据表sgrade的字段。设置该表的主码时,需一同选中字段sno与cno(选中其中一个字段所在的行,按住Ctrl键的同时选中另一个字段所在的行),再右击字段行最左侧的三角按钮

,在弹出的快捷菜单中选择“设置主键”菜单项,将它们的组合设置为主码,如图4-20所示。步骤7

选中字段sno所在的行,右击该行最左侧的三角按钮

,在弹出的快捷菜单中选择“关系”菜单项,如图4-21所示。图4-21设置字段sno的关系4.2.1创建数据表2.使用SSMS创建数据表—37—步骤8

打开“外键关系”对话框,单击界面左下角的“添加”按钮,选中“常规”列表中的“表和列规范”栏,然后单击该行末尾的按钮,如图4-22所示。图4-22设置外码4.2.1创建数据表2.使用SSMS创建数据表—38—步骤9

打开“表和列”对话框,在“关系名”文本框中输入外码约束的名称,如“s_fore”(此名称可省略,省略时系统将自动生成一个名字);然后在“主键表”下拉列表中选择“student”选项,在其下方的字段下拉列表中选择“sno”选项,在外键表对应的字段下拉列表中选择“sno”选项(若界面中还显示了外键表的其他字段,可将其设置为“<无>”);最后单击“确定”按钮,将字段sno设置为外码,如图4-23所示。图4-23设置外码的字段4.2.1创建数据表2.使用SSMS创建数据表—39—步骤10

参照步骤9的操作将字段cno设置为外码,其中外码约束可命名为c_fore。设置完成后,返回“外键关系”对话框,单击“关闭”按钮,外码设置完成。图4-24设置字段的CHECK约束步骤11

右击grade字段行最左侧的三角按钮

,在弹出的快捷菜单中选择“CHECK约束”菜单项,如图4-24所示。4.2.1创建数据表2.使用SSMS创建数据表—40—步骤12

打开“检查约束”对话框,单击界面左下角的“添加”按钮;接着在“表达式”右侧的空白栏中输入“(grade>=0ANDgrade<=100)”,在“(名称)”右侧的空白栏中输入“ck_grade”;最后单击“关闭”按钮,CHECK约束设置完成,如图4-25所示。图4-25设置CHECK约束的内容步骤13

单击工具栏中的“保存”按钮

,保存数据表并将其命名为sgrade。4.2.1创建数据表2.使用SSMS创建数据表—41—4.2.1创建数据表3.使用T-SQL创建数据表创建数据表的T-SQL命令为CREATETABLE,具体语法格式如下:CREATETABLE<表名>(<列名><数据类型>[列约束][,…n][,表约束])

提示NOTNULL和DEFAULT不能在[表约束]处定义。—42—【例4-9】使用T-SQL在数据库scs中创建数据表teacher(教师)与teaching(授课),它们的数据结构如表4-2所示。表

名列

名数据类型约束条件teachertno(教师编号)varchar(6)主码tn(教师姓名)nvarchar(10)非空sex(性别)nchar(1)默认值(男)、非空prof(职称)nvarchar(10)无约束dept(系别)nvarchar(10)无约束sal(工资)money无约束teachingtno(教师编号)varchar(6)外码、组合为主码cno(课程编号)varchar(10)表4-2数据表teacher与teaching的数据结构4.2.1创建数据表3.使用T-SQL创建数据表—43—创建这两个表的代码如下:CREATETABLEteacher /*按需求创建数据表teacher*/(tnovarchar(6)PRIMARYKEY,tnnvarchar(10)NOTNULL,sexnchar(1)DEFAULT'男'NOTNULL,profnvarchar(10),deptnvarchar(10),salmoney)CREATETABLEteaching /*按需求创建数据表teaching*/(tnovarchar(6)FOREIGNKEYREFERENCESteacher(tno),cnovarchar(10)FOREIGNKEYREFERENCEScourse(cno),PRIMARYKEY(tno,cno)) /*定义多个字段为主码*/4.2.1创建数据表3.使用T-SQL创建数据表—44—4.2.2修改数据表1.使用SSMS修改数据表【例4-10】使用SSMS将数据表student中的字段sn加宽到15个字符。步骤1

在“对象资源管理器”窗口中依次打开“scs”→“表”节点,在展开的节点中右击“dbo.student”,在弹出的快捷菜单中选择“设计”菜单项,打开数据表student的表设计窗口,在其中可以对当前数据表进行修改,此处将字段sn的数据类型修改为“nvarchar(15)”,如图4-26所示。图4-26修改数据表步骤2

修改完成后,单击工具栏中的“保存”按钮

即可。—45—

高手点拨用SSMS修改数据表时,有时会出现错误提示:不允许保存更改,您所做的更改要求删除并重新创建如下表。这时,可通过更改数据库设置消除这类错误。方法是,选择“工具”→“选项”菜单项,打开“选项”对话框,在界面的左侧选择“设计器”选项,取消勾选“阻止保存要求重新创建表的更改”复选框,然后单击“确定”按钮,如图4-27所示。图4-27更改数据库设置4.2.2修改数据表1.使用SSMS修改数据表—46—4.2.2修改数据表2.使用T-SQL修改数据表修改数据表的T-SQL命令为ALTERTABLE,具体语法格式如下:ALTERTABLE<表名>ADD<列定义|完整性约束>|DROP<COLUMN<列名>|CONSTRAINT<约束名>>|ALTERCOLUMN<列名><数据类型>[NULL/NOTNULL]—47—(1)ADD用于增加新字段或完整性约束条件,定义方式与CREATETABLE相同。【例4-11】使用T-SQL在数据表student中增加一个字段classno,并定义该字段的数据类型为varchar(6)且不可为空。ALTERTABLEstudentADDclassnovarchar(6)NOTNULL

提示如果数据表中已经录入数据,使用ADD方式增加新字段时,SQLServer会自动添补新列的字段值为NULL,这时将无法对新字段设置NOTNULL约束。4.2.2修改数据表2.使用T-SQL修改数据表—48—(2)DROP用于删除字段或完整性约束条件。【例4-12】使用T-SQL删除数据表student中的字段classno。ALTERTABLEstudentDROPCOLUMNclassno4.2.2修改数据表2.使用T-SQL修改数据表—49—【例4-13】使用T-SQL将数据表student的字段sn加宽到20个字符。ALTERTABLEstudentALTERCOLUMNsnnvarchar(20)NOTNULL

提示使用ALTERCOLUMN修改数据表时,需要注意如下几点限制:①无法修改主码中包含的字段;②列的数据宽度只能增加;③若修改NOTNULL约束之外的完整性约束,须先将原约束删除再添加新的完整性约束。4.2.2修改数据表2.使用T-SQL修改数据表—50—4.2.3删除数据表1.使用SSMS删除数据表【例4-14】使用SSMS删除数据表teaching。步骤1

在“对象资源管理器”窗口中右击想要删除的数据表“dbo.teaching”节点,在弹出的快捷菜单中选择“删除”菜单项。图4-28删除数据表步骤2

打开“删除对象”窗口,确认要删除的对象后单击“确定”按钮,删除完成,如图4-28所示。—51—4.2.3删除数据表2.使用T-SQL删除数据表修改数据表的T-SQL命令为ALTERTABLE,具体语法格式如下:DROPTABLE<表名>【例4-15】使用T-SQL删除数据表sgrade。DROPTABLEsgrade

提示当数据表中存在被FOREIGNKEY约束引用的字段时,将无法删除此数据表和其中的数据。—52—4.2.4查看数据表查看数据表的属性1在“对象资源管理器”窗口中右击想要查看的数据表节点(以数据表course为例),在弹出的快捷菜单中选择“属性”菜单项,打开“表属性-course”窗口(见图4-29),在界面左侧选择“选择页”列表中的各选项,可查看此数据表的相关属性信息。图4-29查看数据表的属性—53—4.2.4查看数据表查看数据表的数据2右击想要查看的数据表节点,在弹出的快捷菜单中选择“选择前1000行”菜单项,此数据表的数据信息将显示在“结果”窗口中。使用T-SQL查看数据表数据的相关命令详见第5章。—54—课堂小结①创建数据表②修改数据表③删除数据表④查看数据表03数据完整性约束—56—4.3.1数据完整性数据库的完整性是指数据库中数据的正确性、有效性和相容性。关系模型中有3类完整性约束,分别为实体完整性、参照完整性与用户定义完整性。(1)实体完整性是指每个关系都必须具有主码,且主码的所有字段值均不可为空。(2)参照完整性是指如果关系R2的外码X与关系R1的主码相对应,则X的每个值必须等于R1的主码的某一个值或取空值。(3)用户定义完整性是指针对某一具体应用领域而定义的数据库约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。—57—4.3.2约束1.约束的分类值的约束1值的约束一般是指用户自定义完整性约束,包括对数据类型、数据格式或取值范围等进行规定。例如,规定学生姓名的数据类型必须为字符型;规定生产日期的数据格式必须为YY-MM-DD;规定月份的取值范围为1~12等。结构的约束2结构的约束是指对数据之间联系的约束。数据库中的同一关系和不同关系之间都存在着一定的联系,它们都应该满足一定的约束条件。常见的结构约束有实体完整性约束、参照完整性约束和统计约束。例如,规定系主任的奖金不得高于该系教师的平均奖金,平均奖金就是一个统计值。—58—4.3.2约束2.常用的约束NOTNULL约束1用于指定某字段的取值不可为空,当不设置此约束时可将其省略或设置NULL约束,即表示某字段的取值可以为空。如果某字段已被设置为主码则默认为非空,可不必重复设置该约束。UNIQUE约束2用于指明数据表在某字段或多个字段的组合上取值必须唯一。如果对某字段或多个字段的组合设置了此约束,其值允许为空,但为保证唯一性,最多只可以保存一条空数据。一个数据表中可以有多个UNIQUE约束。—59—

提示使用SSMS为某字段设置UNIQUE约束的方法为,在“对象资源管理器”窗口中右击字段所在的数据表节点,在弹出的快捷菜单中选择“设计”菜单项,打开数据表X的表设计窗口,右击该字段,在弹出的快捷菜单中选择“索引/键”菜单项,打开“索引/键”对话框;然后单击对话框左下角的“添加”按钮,单击右侧“常规”列表中的“类型”栏,再单击该行右侧的下拉按钮,在展开的下拉列表中选择“唯一键”选项,如图4-30所示;最后单击“关闭”按钮,将数据表保存即可。图4-30设置UNIQUE约束4.3.2约束2.常用的约束—60—PRIMARYKEY约束3用于定义数据表中的主码,起到唯一标识的作用,其值不可为空。当表的主码由多个字段组成时,须在创建数据表的T-SQL语句中的[表约束]处定义。使用T-SQL定义主码的语法格式如下:[CONSTRAINT<约束名>]PRIMARYKEY(<字段名1>[,<字段名2>,…])FOREIGNKEY约束4用于定义数据表的外码。包含外码的数据表称为从表,包含此外码对应主码的表称为主表,系统保证从表中外码的值取自主表中的某一个主码值。与定义主码相同,当外码由多个字段组成时,须在创建数据表的T-SQL语句中的[表约束]处定义。使用T-SQL定义主码的语法格式如下:[CONSTRAINT<约束名>]FOREIGNKEYREFERENCES<主表名>(<字段名1>[,<字段名2>,…])4.3.2约束2.常用的约束—61—CHECK约束5用于限制字段的取值范围。一个数据表中可以定义多个CHECK约束,使用T-SQL定义取值范围的语法格式如下:[CONSTRAINT<约束名>]CHECK(<条件>)DEFAULT约束6用于设置字段的默认值。一个数据表中可定义多个DEFAULT约束。4.3.2约束2.常用的约束—62—4.3.3默认与规则1.默认默认用于在添加数据时没有明确给出某个值的情况,SQLServer会根据设置自动填入默认的值。默认值可以是常量、内置函数或数学表达式。(1)创建默认的T-SQL命令为CREATEDEFAULT,具体语法格式如下:CREATEDEFAULT<默认名>AS<默认定义>其中,<默认名>是默认的名称;<默认定义>是默认的内容,可以是表达式或函数(其中可以包含表的字段名或其他数据库对象)。

提示默认与规则通常使用T-SQL进行设置,此处只介绍使用T-SQL设置的方法。【例4-16】使用T-SQL创建一个用于工资字段的默认sal_d,默认值为“6000”。CREATEDEFAULTsal_dAS'6000'—63—(2)默认被创建后,仅作为一个数据库对象存在,并不发挥作用。想要使用默认须将其与字段或用户自定义数据类型联系起来,这一过程称为绑定,可使用存储过程sp_bindefault实现,具体语法格式如下:EXECsp_bindefault'默认名','绑定对象'【例4-17】使用T-SQL将默认sal_d绑定到数据表teacher的字段sal上。EXECsp_bindefault'sal_d','teacher.sal'

提示(1)默认无法绑定到已有DEFAULT约束的字段上;当某列同时绑定了一个规则和一个默认时,默认应该符合规则的规定。(2)在数据库中不同数据表具有同名字段或有其他需要特别说明的情况时,为了指明字段所属的数据表,可使用“.”连接数据表名与字段名,如“teacher.sal”表示表teacher的字段sal。4.3.3默认与规则1.默认—64—(3)解除默认的过程称为解绑,可使用存储过程sp_unbindefault实现,具体语法格式如下:EXECsp_unbindefault'绑定对象'【例4-18】使用T-SQL解除绑定在数据表teacher字段sal上的默认。EXECsp_unbindefault'teacher.sal'(4)删除默认的T-SQL命令为DROPDEFAULT,具体语法格式如下:DROPDEFAULT<默认名>【例4-18】使用T-SQL删除默认sal_d。DROPDEFAULTsal_d4.3.3默认与规则1.默认—65—4.3.3默认与规则2.规则规则是一种单独存储的数据库对象,它是数据库对存储在表中的字段或用户自定义数据类型中的值的规定与限制。(1)创建规则的T-SQL命令为CREATERULE,具体语法格式如下:CREATERULE<规则名>AS<规则定义>其中,<规则名>是规则的名称;<规则定义>是此项规则的限制条件,可以是WHERE条件子句的任何表达式,如算术表达式等。

提示CREATERULE语句中不允许出现字段名,使用时须在列名前加上“@”符号表示局部变量。【例4-20】使用T-SQL创建一个成绩规则g_r,规定其中的值必须大于等于0且小于等于100。CREATERULEg_rAS@grade>=0AND@grade<=100—66—(2)与默认相同,使用规则时也需要先进行绑定,绑定可用存储过程sp_bindrule实现,具体语法格式如下:EXECsp_bindrule'规则名','绑定对象'

提示规则无法限制已经输入数据表的数据。【例4-21】使用T-SQL将成绩规则g_r绑定到数据表sgrade的字段grade上。EXECsp_bindrule'g_r','sgrade.grade'4.3.3默认与规则2.规则—67—(3)解绑规则可使用存储过程sp_unbindrule来实现,具体语法格式如下:EXECsp_unbindrule'绑定对象'【例4-21】使用T-SQL解除绑定在数据表sgrade字段grade上的规则。EXECsp_unbindrule'sgrade.grade'(4)删除规则的T-SQL命令为DROPRULE,具体语法格式如下:DROPRULE<规则名>【例4-21】使用T-SQL删除成绩规则g_r。DROPRULEg_r4.3.3默认与规则2.规则—68—(3)解绑规则可使用存储过程sp_unbindrule来实现,具体语法格式如下:EXECsp_unbindrule'绑定对象'【例4-21】使用T-SQL解除绑定在数据表sgrade字段grade上的规则。EXECsp_unbindrule'sgra

温馨提示

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

评论

0/150

提交评论