第4章 数据库及其基本操作 课件(共73张PPT)-《SQL Server数据库应用案例教程》同步教学(上海交通大学出版社)

资源下载
  1. 二一教育资源

第4章 数据库及其基本操作 课件(共73张PPT)-《SQL Server数据库应用案例教程》同步教学(上海交通大学出版社)

资源简介

(共73张PPT)
4
数据库及其基本操作


本章导读
随着科学技术的不断发展,数据成了新的生产要素。使用数据库进行有效的数据操作可以提高工作效率,甚至促进社会的发展,但在对数据进行操作之前,必须先创建存储数据的数据库与数据表。
本章将介绍数据库与数据表的相关知识,以及使用SSMS与T-SQL创建、修改、删除、查看数据库及数据表的方法。
知识目标
了解系统数据库与数据库结构的基础知识。
掌握数据完整性约束的基础知识。
能力目标
能够使用SSMS对数据库及数据表进行基本操作。
能够使用T-SQL对数据库及数据表进行基本操作。
素质目标
懂得工作学习都应遵守规则,树立正确的职业价值观。
项目导航
数据库及其基本操作
1
数据表及其基本操作
2
数据完整性约束
3
01
数据库及其基本操作
4.1.1系统数据库在SQL Server中,系统运行时会用到的相关信息(如系统对象和组态设置等)都是以数据库的形式存储的,而保存着这些系统信息的数据库称为系统数据库。——SQL Server安装成功后会自动创建4个系统数据库,分别为master、model、msdb和tempdb。打开SSMS,在“对象资源管理器”窗口中依次双击“WIN-NK8HF1BICSP”→“数据库”→“系统数据库”节点,在展开的节点中可以看到这4个已经存在的数据库,如图4-1所示。图4-1系统数据库master是整个数据库管理系统的核心;model是数据库管理系统创建新数据库时的模板;msdb提供运行SQL Server Agent的信息;tempdb是临时数据库。4.1.2数据库结构——数据库文件由数据文件和日志文件组成。(1)数据文件是指数据库中用来存放数据库数据和数据库对象的文件。一个数据库可以有一个或多个数据文件,一个数据文件只属于一个数据库。当一个数据库有多个数据文件时,可将其中一个文件定义为主数据文件(扩展名为.mdf),用于存储数据库的启动信息及部分或全部数据。一个数据库只能有一个主数据文件,其他数据文件称为次数据文件(扩展名为.ndf),用于存储主数据文件未存储的其他数据。(2)日志文件由一系列日志记录组成,它记录了数据库的更新情况和用户对数据库的修改操作等。当数据库发生损坏时,可以通过日志文件分析损坏原因;当数据丢失时,也可以使用日志文件找回数据。每一个数据库至少拥有一个日志文件(扩展名为.ldf)。4.1.3创建数据库——1.使用SSMS创建数据库【例 4-1】使用SSMS创建数据库scs,数据文件的逻辑名称为scs_data,数据文件的初始存储空间大小为10 MB,存储空间自动增长量为5%,最大存储空间为200 MB,存放在D盘的Data文件夹下,文件名为scs_data.mdf;日志文件的逻辑名称为scs_log,初始存储空间大小保持默认(8 MB),存储空间自动增长量为10%,最大存储空间为50 MB,存放在D盘的Data文件夹下,文件名为scs_log.ldf。步骤1 打开SSMS并登录。在“对象资源管理器”窗口中右击“数据库”节点,在弹出的快捷菜单中选择“新建数据库”菜单项,如图4-2所示。图4-2新建数据库——步骤2 打开“新建数据库”窗口,在“数据库名称”文本框中输入“scs”,界面下方的数据库文件设置区中显示了该数据库数据文件与日志文件的相关设置,单击数据文件的“逻辑名称”栏,输入“scs_data”,单击该文件的“初始大小”栏,输入“10”,如图4-3所示。图4-3设置数据库名称与数据库文件4.1.3创建数据库1.使用SSMS创建数据库——步骤3 单击数据文件“自动增长/最大大小”栏右侧的按钮,打开“更改scs_data的自动增长设置”对话框,选中“按百分比”单选钮,在其右侧的编辑框中输入“5”;然后选中“限制为”单选钮,在其右侧的编辑框中输入“200”;最后单击“确定”按钮,如图4-4所示。使用同样的方法设置日志文件的“自动增长/最大大小”栏信息,如图4-5所示。图4-5设置日志文件的自动增长图4-4设置数据文件的自动增长4.1.3创建数据库1.使用SSMS创建数据库——步骤4 向右移动滚动条,单击数据文件“路径”栏右侧的按钮,打开“定位文件夹- WIN-NK8HF1BICSP”窗口,选择D盘的Data文件夹,如图4-6所示。使用同样的方法设置日志文件的“路径”栏信息。需要注意的是,若D盘没有该文件夹,需先在资源管理器中创建。图4-6选择存储路径4.1.3创建数据库1.使用SSMS创建数据库——步骤5 单击数据文件的“文件名”栏,输入“scs_data.mdf”,接着单击日志文件的“文件名”栏,输入“scs_log.ldf”,最后单击“确定”按钮,如图4-7所示。图4-7完成创建数据库4.1.3创建数据库1.使用SSMS创建数据库——步骤6 数据库创建成功。在“对象资源管理器”中,双击“WIN-NK8HF1BICSP”→“数据库”节点,即可看到创建好的数据库scs,如图4-8所示。图4-8查看数据库scs提示若想重命名数据库,可右击数据库名称节点,在弹出的快捷菜单中选择“重命名”菜单项,原数据库名称处于可编辑状态,删除原名称,重新输入新名称,然后按Enter键。4.1.3创建数据库1.使用SSMS创建数据库4.1.3创建数据库——2.使用T-SQL创建数据库创建数据库的T-SQL命令为CREATE DATABASE,具体语法格式如下:CREATE DATABASE <数据库名称>[ON[FILEGROUP <文件组名称>](NAME=数据文件逻辑名称,FILENAME='路径+数据文件名称',SIZE=数据文件初始大小,MAXSIZE=数据文件最大容量,FILEGROWTH=数据文件自动增长容量)][LOG ON(NAME=日志文件逻辑名称,FILENAME='路径+日志文件名称',SIZE=日志文件初始大小,MAXSIZE=日志文件最大容量,FILEGROWTH=日志文件自动增长容量)]——CREATE DATABASE test【例 4-2】使用T-SQL创建数据库test。使用T-SQL实现例4-1的代码如下:CREATE DATABASE scsON(NAME=scs_data,FILENAME='D:\Data\scs_data.mdf',SIZE=10MB,MAXSIZE=200MB,FILEGROWTH=5%)LOG ON(NAME=scs_log,FILENAME='D:\Data\scs_log.ldf',SIZE=8MB,MAXSIZE=50MB,FILEGROWTH=10%)4.1.3创建数据库2.使用T-SQL创建数据库4.1.4修改数据库——1.使用SSMS修改数据库【例 4-3】使用SSMS修改数据库scs,将其日志文件的自动增长方式修改为“按MB”,增长量修改为“5”。步骤1 在“对象资源管理器”窗口中右击“scs”节点,在弹出的快捷菜单中选择“属性”菜单项,如图4-9所示。图4-9查看数据库属性——步骤2 打开“数据库属性- scs”窗口,在界面左侧的“选择页”列表中选择“文件”选项,在“数据库文件”设置区中单击日志文件“自动增长/最大大小”栏右侧的按钮,如图4-10所示。图4-9查看数据库属性4.1.4修改数据库1.使用SSMS修改数据库——步骤3 打开“更改scs_log的自动增长设置”对话框,选中“按MB”单选钮,然后在其右侧的编辑框中输入“5”,单击“确定”按钮(见图4-11);返回“数据库属性- scs”窗口,单击“确定”按钮,完成修改。图4-11修改日志文件的自动增长4.1.4修改数据库1.使用SSMS修改数据库4.1.4修改数据库——2.使用T-SQL修改数据库(1)修改数据库名称,具体语法格式如下:ALTER DATABASE <数据库名称>MODIFY NAME=数据库新名称(2)修改数据库中的具体文件,具体语法格式如下:ALTER DATABASE <数据库名称>ADD FILE(文件格式)[ , … n][TO FILEGROUP <文件组名称>]|ADD LOG FILE(文件格式)[ , … n]|REMOVE FILE <文件逻辑名称>|MODIFY FILE(文件格式)|ADD FILEGROUP <文件组名称>|REMOVE FILEGROUP <文件组名称>|MODIFY FILEGROUP <文件组名称>——其中,“文件格式”一般包含如下内容。(NAME=文件逻辑名称[ ,NEWNAME=新文件逻辑名称][ ,SIZE=修改后文件大小][ ,MAXSIZE=修改后最大容量][ ,FILEGROWTH=修改后文件自动增长容量])下面对上述命令进行说明。①ADD FILE:向数据库中添加数据文件。②ADD LOG FILE:向数据库中添加日志文件。③REMOVE FILE:从数据库中删除文件。若文件不为空,则无法删除。④MODIFY FILE:指定要修改的文件。⑤ADD FILEGROUP:向数据库中添加文件组。⑥REMOVE FILEGROUP:从数据库中删除文件组。若文件组不为空,则无法删除。4.1.4修改数据库2.使用T-SQL修改数据库——ALTER DATABASE testMODIFY NAME=test1【例 4-4】使用T-SQL将数据库test的名称改为test1。ALTER DATABASE scsMODIFY FILE(NAME=scs_data,MAXSIZE=100MB)【例 4-5】使用T-SQL将数据库scs的数据文件最大容量改为100 MB。4.1.4修改数据库2.使用T-SQL修改数据库4.1.5删除数据库——1.使用SSMS删除数据库【例 4-6】使用SSMS删除数据库test1。步骤1 在“对象资源管理器”窗口中右击“test1”节点,在弹出的快捷菜单中选择“删除”菜单项,如图4-12所示。图4-12删除数据库——步骤2 打开“删除对象”窗口,确认删除对象后单击“确定”按钮完成删除,如图4-13所示。图4-13确认删除数据库4.1.5删除数据库1.使用SSMS删除数据库4.1.5删除数据库——2.使用T-SQL删除数据库删除数据库的T-SQL命令为DROP DATABASE,具体语法格式如下:DROP DATABASE <数据库名称>DROP DATABASE test【例 4-7】使用T-SQL删除数据库test。——拓展阅读说到数据库的删除操作,就不得不提“删库跑路”。“删库跑路”指的是,有些程序员与公司闹矛盾后一气之下将公司的数据库删除再悄悄辞职离开,或者是有些程序员误删数据库后因害怕担责而匆匆辞职。实际上,这些都是极不负责任的行为,严重时甚至会面临刑事处罚。2018年,韩某利用其数据库管理员的身份,登录任职公司的财务系统服务器删除了财务数据及相关应用程序,致使公司财务系统无法登录。为恢复数据及重新构建财务系统,该公司共计花费人民币18万元。当地法院判决认定韩某违反国家规定,对计算机信息系统中存储的数据和应用程序进行删除,造成计算机信息系统不能正常运行,后果特别严重,其行为已构成破坏计算机信息系统罪,依法应予惩处,判处有期徒刑七年。我们作为新时代的有为青年,在工作中应有担当、敢担责,拥有严谨的工作态度和向上的工作精神,树立正确的职业价值观。4.1.5删除数据库2.使用T-SQL删除数据库4.1.6查看数据库——在SSMS中可按如下步骤查看数据库信息。步骤1 在“对象资源管理器”窗口中右击想要查看的数据库节点(以数据库scs为例),在弹出的快捷菜单中选择“属性”菜单项。步骤2 打开“数据库属性- scs”窗口,在“选择页”列表中选择“常规”选项,界面的右侧将显示包括备份、数据库及维护等相关信息,如图4-14所示。步骤3 在“选择页”列表中选择其他选项查看数据库的其他相关信息。图4-14查看数据库信息——课堂总结① 系统数据库② 数据库结构③ 创建数据库④ 修改数据库⑤ 删除数据库⑥ 查看数据库
02
数据表及其基本操作
——4.2.1创建数据表1.选择数据库使用SSMS选择数据库1在“对象资源管理器”窗口中选中某数据库节点,然后单击工具栏中的“新建查询”按钮 即可打开该数据库的查询编辑窗口。若已经打开查询编辑窗口,可在工具栏中的“可用数据库”下拉列表中选择想要操作的数据库选项,以选择想要操作的数据库,如图4-15所示。图4-15选择数据库——使用T-SQL选择数据库2使用T-SQL创建数据表时,可在相关代码前添加打开数据库的命令,具体语法格式如下:USE <数据库名称>其中,数据库名称必须为SQL Server中实际存在的数据库。同样,也可在使用完毕后切换或关闭指定数据库,具体语法格式如下:USE其中,USE后没有数据库名称时,表示关闭当前数据库。4.2.1创建数据表1.选择数据库——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所示。——提示在定义表的同时,还可以定义与表有关的完整性约束条件,这是SQL Server提供的数据完整性机制,用来约束列的取值。常用约束条件有NOT NULL约束(非空)、UNIQUE约束(取值唯一)、PRIMARY KEY约束(主码)、FOREIGN KEY约束(外码)、CHECK约束(取值范围)、DEFAULT约束(默认值)6种,具体内容可见4.3节。4.2.1创建数据表2.使用SSMS创建数据表——步骤1 在“对象资源管理器”窗口中,右击“scs”节点下的“表”节点,在弹出的快捷菜单中选择“新建”→“表”菜单项,打开未命名的表设计窗口,如图4-16所示。图4-16新建数据表4.2.1创建数据表2.使用SSMS创建数据表——步骤2 单击“列名”下方的空白栏,输入字段“sno”,然后单击该栏外的任意处,表中自动显示该字段的数据类型与允许Null值的默认设置;接着选中该字段的“数据类型”栏,再单击该栏右侧的下拉按钮,在展开的列表中选择“varchar(50)”选项,然后将其修改为“varchar(6)”(也可直接手动输入“varchar(6)”);最后右击该行最左侧的三角按钮,在弹出的快捷菜单中选择“设置主键”菜单项,将该字段设置为主码,如图4-17所示。图4-16新建数据表4.2.1创建数据表2.使用SSMS创建数据表——步骤3 使用同样的方法继续设置表student中的其余字段。其中,设置非空约束只需取消勾选相应字段所在行的“允许Null值”复选框即可;设置sex字段的默认值时,需在窗口下方的“列属性”窗格中“默认值或绑定”栏右侧的空白处输入“'男'”,如图4-18所示。图4-18设置字段默认值图4-19设置数据表的名称步骤4 所有字段设置完成后,单击工具栏中的“保存”按钮,打开“选择名称”对话框。在“输入表名称”文本框中输入“student”,单击“确定”按钮,如图4-19所示。4.2.1创建数据表2.使用SSMS创建数据表——步骤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创建数据表——步骤8 打开“外键关系”对话框,单击界面左下角的“添加”按钮,选中“常规”列表中的“表和列规范”栏,然后单击该行末尾的按钮,如图4-22所示。图4-22设置外码4.2.1创建数据表2.使用SSMS创建数据表——步骤9 打开“表和列”对话框,在“关系名”文本框中输入外码约束的名称,如“s_fore”(此名称可省略,省略时系统将自动生成一个名字);然后在“主键表”下拉列表中选择“student”选项,在其下方的字段下拉列表中选择“sno”选项,在外键表对应的字段下拉列表中选择“sno”选项(若界面中还显示了外键表的其他字段,可将其设置为“<无>”);最后单击“确定”按钮,将字段sno设置为外码,如图4-23所示。图4-23设置外码的字段4.2.1创建数据表2.使用SSMS创建数据表——步骤10 参照步骤9的操作将字段cno设置为外码,其中外码约束可命名为c_fore。设置完成后,返回“外键关系”对话框,单击“关闭”按钮,外码设置完成。图4-24设置字段的CHECK约束步骤11 右击grade字段行最左侧的三角按钮,在弹出的快捷菜单中选择“CHECK约束”菜单项,如图4-24所示。4.2.1创建数据表2.使用SSMS创建数据表——步骤12 打开“检查约束”对话框,单击界面左下角的“添加”按钮;接着在“表达式”右侧的空白栏中输入“(grade >=0 AND grade <=100)”,在“(名称)”右侧的空白栏中输入“ck_grade”;最后单击“关闭”按钮,CHECK约束设置完成,如图4-25所示。图4-25设置CHECK约束的内容步骤13 单击工具栏中的“保存”按钮,保存数据表并将其命名为sgrade。4.2.1创建数据表2.使用SSMS创建数据表——4.2.1创建数据表3.使用T-SQL创建数据表创建数据表的T-SQL命令为CREATE TABLE,具体语法格式如下:CREATE TABLE <表名>(<列名> <数据类型> [列约束] [ , … n][ ,表约束])提示NOT NULL和DEFAULT不能在[表约束]处定义。——【例 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创建数据表——创建这两个表的代码如下:CREATE TABLE teacher /*按需求创建数据表teacher*/(tno varchar(6) PRIMARY KEY,tn nvarchar(10) NOT NULL,sex nchar(1) DEFAULT '男' NOT NULL,prof nvarchar(10),dept nvarchar(10),sal money)CREATE TABLE teaching /*按需求创建数据表teaching*/(tno varchar(6) FOREIGN KEY REFERENCES teacher(tno),cno varchar(10) FOREIGN KEY REFERENCES course(cno),PRIMARY KEY(tno,cno)) /*定义多个字段为主码*/4.2.1创建数据表3.使用T-SQL创建数据表——4.2.2修改数据表1.使用SSMS修改数据表【例 4-10】使用SSMS将数据表student中的字段sn加宽到15个字符。步骤1 在“对象资源管理器”窗口中依次打开“scs”→“表”节点,在展开的节点中右击“dbo.student”,在弹出的快捷菜单中选择“设计”菜单项,打开数据表student的表设计窗口,在其中可以对当前数据表进行修改,此处将字段sn的数据类型修改为“nvarchar(15)”,如图4-26所示。图4-26修改数据表步骤2 修改完成后,单击工具栏中的“保存”按钮即可。——高手点拨用SSMS修改数据表时,有时会出现错误提示:不允许保存更改,您所做的更改要求删除并重新创建如下表。这时,可通过更改数据库设置消除这类错误。方法是,选择“工具”→“选项”菜单项,打开“选项”对话框,在界面的左侧选择“设计器”选项,取消勾选“阻止保存要求重新创建表的更改”复选框,然后单击“确定”按钮,如图4-27所示。图4-27更改数据库设置4.2.2修改数据表1.使用SSMS修改数据表——4.2.2修改数据表2.使用T-SQL修改数据表修改数据表的T-SQL命令为ALTER TABLE,具体语法格式如下:ALTER TABLE <表名>ADD <列定义|完整性约束>| DROP <COLUMN <列名> | CONSTRAINT <约束名> >| ALTER COLUMN <列名> <数据类型> [NULL/NOT NULL]——(1)ADD用于增加新字段或完整性约束条件,定义方式与CREATE TABLE相同。【例 4-11】使用T-SQL在数据表student中增加一个字段classno,并定义该字段的数据类型为varchar(6)且不可为空。ALTER TABLE studentADDclassno varchar(6) NOT NULL提示如果数据表中已经录入数据,使用ADD方式增加新字段时,SQL Server会自动添补新列的字段值为NULL,这时将无法对新字段设置NOT NULL约束。4.2.2修改数据表2.使用T-SQL修改数据表——(2)DROP用于删除字段或完整性约束条件。【例 4-12】使用T-SQL删除数据表student中的字段classno。ALTER TABLE studentDROP COLUMN classno4.2.2修改数据表2.使用T-SQL修改数据表——【例 4-13】使用T-SQL将数据表student的字段sn加宽到20个字符。ALTER TABLE studentALTER COLUMNsn nvarchar(20) NOT NULL提示使用ALTER COLUMN修改数据表时,需要注意如下几点限制:① 无法修改主码中包含的字段;② 列的数据宽度只能增加;③ 若修改NOT NULL约束之外的完整性约束,须先将原约束删除再添加新的完整性约束。4.2.2修改数据表2.使用T-SQL修改数据表——4.2.3删除数据表1.使用SSMS删除数据表【例 4-14】使用SSMS删除数据表teaching。步骤1 在“对象资源管理器”窗口中右击想要删除的数据表“dbo.teaching”节点,在弹出的快捷菜单中选择“删除”菜单项。图4-28删除数据表步骤2 打开“删除对象”窗口,确认要删除的对象后单击“确定”按钮,删除完成,如图4-28所示。——4.2.3删除数据表2.使用T-SQL删除数据表修改数据表的T-SQL命令为ALTER TABLE,具体语法格式如下:DROP TABLE <表名>【例 4-15】使用T-SQL删除数据表sgrade。DROP TABLE sgrade提示当数据表中存在被FOREIGN KEY约束引用的字段时,将无法删除此数据表和其中的数据。——4.2.4查看数据表查看数据表的属性1在“对象资源管理器”窗口中右击想要查看的数据表节点(以数据表course为例),在弹出的快捷菜单中选择“属性”菜单项,打开“表属性- course”窗口(见图4-29),在界面左侧选择“选择页”列表中的各选项,可查看此数据表的相关属性信息。图4-29查看数据表的属性——4.2.4查看数据表查看数据表的数据2右击想要查看的数据表节点,在弹出的快捷菜单中选择“选择前1000行”菜单项,此数据表的数据信息将显示在“结果”窗口中。使用T-SQL查看数据表数据的相关命令详见第5章。——课堂小结① 创建数据表② 修改数据表③ 删除数据表④ 查看数据表
03
数据完整性约束
——4.3.1数据完整性数据库的完整性是指数据库中数据的正确性、有效性和相容性。关系模型中有3类完整性约束,分别为实体完整性、参照完整性与用户定义完整性。(1)实体完整性是指每个关系都必须具有主码,且主码的所有字段值均不可为空。(2)参照完整性是指如果关系R2的外码X与关系R1的主码相对应,则X的每个值必须等于R1的主码的某一个值或取空值。(3)用户定义完整性是指针对某一具体应用领域而定义的数据库约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。——4.3.2约束1.约束的分类值的约束1值的约束一般是指用户自定义完整性约束,包括对数据类型、数据格式或取值范围等进行规定。例如,规定学生姓名的数据类型必须为字符型;规定生产日期的数据格式必须为YY-MM-DD;规定月份的取值范围为1~12等。结构的约束2结构的约束是指对数据之间联系的约束。数据库中的同一关系和不同关系之间都存在着一定的联系,它们都应该满足一定的约束条件。常见的结构约束有实体完整性约束、参照完整性约束和统计约束。例如,规定系主任的奖金不得高于该系教师的平均奖金,平均奖金就是一个统计值。——4.3.2约束2.常用的约束NOT NULL约束1用于指定某字段的取值不可为空,当不设置此约束时可将其省略或设置NULL约束,即表示某字段的取值可以为空。如果某字段已被设置为主码则默认为非空,可不必重复设置该约束。UNIQUE约束2用于指明数据表在某字段或多个字段的组合上取值必须唯一。如果对某字段或多个字段的组合设置了此约束,其值允许为空,但为保证唯一性,最多只可以保存一条空数据。一个数据表中可以有多个UNIQUE约束。——提示使用SSMS为某字段设置UNIQUE约束的方法为,在“对象资源管理器”窗口中右击字段所在的数据表节点,在弹出的快捷菜单中选择“设计”菜单项,打开数据表X的表设计窗口,右击该字段,在弹出的快捷菜单中选择“索引/键”菜单项,打开“索引/键”对话框;然后单击对话框左下角的“添加”按钮,单击右侧“常规”列表中的“类型”栏,再单击该行右侧的下拉按钮,在展开的下拉列表中选择“唯一键”选项,如图4-30所示;最后单击“关闭”按钮,将数据表保存即可。图4-30设置UNIQUE约束4.3.2约束2.常用的约束——PRIMARY KEY约束3用于定义数据表中的主码,起到唯一标识的作用,其值不可为空。当表的主码由多个字段组成时,须在创建数据表的T-SQL语句中的[表约束]处定义。使用T-SQL定义主码的语法格式如下:[CONSTRAINT <约束名>] PRIMARY KEY(<字段名1> [ , <字段名2> ,…])FOREIGN KEY约束4用于定义数据表的外码。包含外码的数据表称为从表,包含此外码对应主码的表称为主表,系统保证从表中外码的值取自主表中的某一个主码值。与定义主码相同,当外码由多个字段组成时,须在创建数据表的T-SQL语句中的[表约束]处定义。使用T-SQL定义主码的语法格式如下:[CONSTRAINT <约束名>]FOREIGN KEY REFERENCES <主表名>(<字段名1> [ , <字段名2> ,…])4.3.2约束2.常用的约束——CHECK约束5用于限制字段的取值范围。一个数据表中可以定义多个CHECK约束,使用T-SQL定义取值范围的语法格式如下:[CONSTRAINT <约束名>] CHECK(<条件>)DEFAULT约束6用于设置字段的默认值。一个数据表中可定义多个DEFAULT约束。4.3.2约束2.常用的约束——4.3.3默认与规则1.默认默认用于在添加数据时没有明确给出某个值的情况,SQL Server会根据设置自动填入默认的值。默认值可以是常量、内置函数或数学表达式。(1)创建默认的T-SQL命令为CREATE DEFAULT,具体语法格式如下:CREATE DEFAULT <默认名> AS <默认定义>其中,<默认名>是默认的名称;<默认定义>是默认的内容,可以是表达式或函数(其中可以包含表的字段名或其他数据库对象)。提示默认与规则通常使用T-SQL进行设置,此处只介绍使用T-SQL设置的方法。【例 4-16】使用T-SQL创建一个用于工资字段的默认sal_d,默认值为“6000”。CREATE DEFAULT sal_d AS '6000'——(2)默认被创建后,仅作为一个数据库对象存在,并不发挥作用。想要使用默认须将其与字段或用户自定义数据类型联系起来,这一过程称为绑定,可使用存储过程sp_bindefault实现,具体语法格式如下:EXEC sp_bindefault '默认名','绑定对象'【例 4-17】使用T-SQL将默认sal_d绑定到数据表teacher的字段sal上。EXEC sp_bindefault 'sal_d','teacher.sal'提示(1)默认无法绑定到已有DEFAULT约束的字段上;当某列同时绑定了一个规则和一个默认时,默认应该符合规则的规定。(2)在数据库中不同数据表具有同名字段或有其他需要特别说明的情况时,为了指明字段所属的数据表,可使用“.”连接数据表名与字段名,如“teacher.sal”表示表teacher的字段sal。4.3.3默认与规则1.默认——(3)解除默认的过程称为解绑,可使用存储过程sp_unbindefault实现,具体语法格式如下:EXEC sp_unbindefault '绑定对象'【例 4-18】使用T-SQL解除绑定在数据表teacher字段sal上的默认。EXEC sp_unbindefault 'teacher.sal'(4)删除默认的T-SQL命令为DROP DEFAULT,具体语法格式如下:DROP DEFAULT <默认名>【例 4-18】使用T-SQL删除默认sal_d。DROP DEFAULT sal_d4.3.3默认与规则1.默认——4.3.3默认与规则2.规则规则是一种单独存储的数据库对象,它是数据库对存储在表中的字段或用户自定义数据类型中的值的规定与限制。(1)创建规则的T-SQL命令为CREATE RULE,具体语法格式如下:CREATE RULE <规则名> AS <规则定义>其中,<规则名>是规则的名称;<规则定义>是此项规则的限制条件,可以是WHERE条件子句的任何表达式,如算术表达式等。提示CREATE RULE语句中不允许出现字段名,使用时须在列名前加上“@”符号表示局部变量。【例 4-20】使用T-SQL创建一个成绩规则g_r,规定其中的值必须大于等于0且小于等于100。CREATE RULE g_r AS @grade>=0 AND @grade<=100——(2)与默认相同,使用规则时也需要先进行绑定,绑定可用存储过程sp_bindrule实现,具体语法格式如下:EXEC sp_bindrule '规则名','绑定对象'提示规则无法限制已经输入数据表的数据。【例 4-21】使用T-SQL将成绩规则g_r绑定到数据表sgrade的字段grade上。EXEC sp_bindrule 'g_r','sgrade.grade'4.3.3默认与规则2.规则——(3)解绑规则可使用存储过程sp_unbindrule来实现,具体语法格式如下:EXEC sp_unbindrule '绑定对象'【例 4-21】使用T-SQL解除绑定在数据表sgrade字段grade上的规则。EXEC sp_unbindrule 'sgrade.grade'(4)删除规则的T-SQL命令为DROP RULE,具体语法格式如下:DROP RULE <规则名>【例 4-21】使用T-SQL删除成绩规则g_r。DROP RULE g_r4.3.3默认与规则2.规则——(3)解绑规则可使用存储过程sp_unbindrule来实现,具体语法格式如下:EXEC sp_unbindrule '绑定对象'【例 4-21】使用T-SQL解除绑定在数据表sgrade字段grade上的规则。EXEC sp_unbindrule 'sgrade.grade'(4)删除规则的T-SQL命令为DROP RULE,具体语法格式如下:DROP RULE <规则名>【例 4-21】使用T-SQL删除成绩规则g_r。DROP RULE g_r提示删除默认与规则之前须先将其与绑定的对象解绑。4.3.3默认与规则2.规则——实战训练创建并管理订货管理系统数据库及数据表1.实战要求能够使用SSMS或T-SQL创建数据库及数据表。2.实战内容(1)创建订货管理系统数据库ordersys,其数据文件的逻辑名称为ordersys_data,日志文件的逻辑名称为ordersys_log,它们都存放在D盘的Data文件夹下。(2)创建数据库中的3个数据表,分别为数据表customer(客户)、goods(商品)与ordering(订购),它们的数据结构如表4-3所示。——实战训练创建并管理订货管理系统数据库及数据表表名列名数据类型约束条件customercid(客户编号)varchar(6)主码cn(客户姓名)nvarchar(10)非空adds(收货地址)nchar(20)非空tel(联系电话)varchar(15)非空goodsgid(商品编号)varchar(6)主码gn(商品名称)nvarchar(10)非空gdate(生产日期)date非空price(商品价格)money非空orderingoid(订购编号)varchar(12)主码cid(客户编号)varchar(6)外码、非空gid(商品编号)varchar(6)外码、非空ordate(订购日期)date非空num(订购数量)int非空表4-3数据表customer、goods与ordering的数据结构——实战训练创建并管理订货管理系统数据库及数据表步骤1打开SSMS并登录。单击工具栏中的“新建查询”按钮,打开查询编辑窗口。步骤2在查询编辑窗口中输入T-SQL代码并执行。CREATE DATABASE ordersys /*按需求创建数据库ordersys*/ON(NAME=ordersys_data,FILENAME='D:\Data\ordersys_data.mdf')LOG ON(NAME=ordersys_log,FILENAME='D:\Data\ordersys_log.ldf')GOUSE ordersys /*使用命令GO将语句分批次执行*/——实战训练创建并管理订货管理系统数据库及数据表CREATE TABLE customer /*按需求创建数据表customer*/(cid varchar(6) PRIMARY KEY,cn nvarchar(10) NOT NULL,adds nchar(10) NOT NULL,tel varchar(15) NOT NULL)CREATE TABLE goods /*按需求创建数据表goods*/(gid varchar(6) PRIMARY KEY,gn nvarchar(10) NOT NULL,gdate date NOT NULL,price money NOT NULL)CREATE TABLE ordering /*按需求创建数据表ordering*/(oid varchar(12) PRIMARY KEY,cid varchar(6) FOREIGN KEY REFERENCES customer(cid) NOT NULL,gid varchar(6) FOREIGN KEY REFERENCES goods(gid) NOT NULL,ordate date NOT NULL,num int NOT NULL)——课堂小结① 数据完整性② 约束③ 默认与规则

展开更多......

收起↑

资源预览