版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
chSQLServer数据表管理的学习课件第1页/共32页第4章SQLServer2005数据表管理4.1表的基本概念和特点4.2数据类型4.3创建表4.4表的管理和维护4.5表中数据的添加、修改和删除4.6数据完整性与使用约束
第2页/共32页4.1表的基本概念和特点
表是包含SQLServer2005数据库中的所有数据的对象。每个表代表一类对其用户有意义的对象,即关系数据库的一个关系。表具有以下特征:
表用来代表一个实体,有一个用来确定该实体的唯一的表名。表中行的顺序是任意的。表中列的顺序是任意的。表中的行数据是唯一的,即在表中没有完全相同的两行数据。表中列名有唯一性,即表中不允许有两列的列名相同。学号姓名性别出生日期家庭住址所在班级0502410101朱富宝女1986-3-14山东聊城241010502410102蔡志赫男1986-3-19内蒙古包头241010502410103曹洋园女1986-3-28山西太原241010502410104孟健笋男1986-4-2山东济南241010502410105董保燕男1986-4-8山东济宁241010502410106安洪壮男1986-1-29江苏徐州24101第3页/共32页4.2数据类型SQLServer2005中,每个列、局部变量、表达式和参数都具有一个相关的数据类型。数据类型是一种属性,用于指定对象可保存的数据的类型有:整数数据、字符数据、货币数据、日期和时间数据、二进制字符串等。第4页/共32页4.2数据类型
标准数据类型
1.精确数值类型类型范围存储bigint-263(-9,223,372,036,854,775,808)到263-1(9,223,372,036,854,775,807)的整型数字。8字节int-231(-2,147,483,648)到231-1(2,147,483,647)的整型数字。4字节smallint-215(-32,768)到215-1(32,767)
的整型数字。2字节tinyint0到255的整型数字。1字节bit0或1的整型数字,字符串值TRUE和FALSE可以转换为以下bit值:TRUE转换为1,FALSE转换为0。根据需要1-2字节decimal从-1038+1到1038-1的定精度与有效位数的数字。5-17字节numericdecimal的同义词。5-17字节money从-922,337,203,685,477.5808到922,337,203,685,477.5807的货币数据,精确到万分之一。8字节smallmoney从-214,748.3648到214,748.3647的货币数据,精确到万分之一。4字节第5页/共32页4.2数据类型
标准数据类型
2.近似浮点数值数据类型数据类型范围存储float-1.79E+308至-2.23E-308、0以及2.23E-308至1.79E+308取决于n的值real-3.40E+38至-1.18E-38、0以及1.18E-38至3.40E+384字节第6页/共32页4.2数据类型
标准数据类型
3.日期时间数据类型数据类型范围精确度datetime1753年1月1日到9999年12月31日3.33毫秒smalldatetime1900年1月1日到2079年6月6日1分钟第7页/共32页4.2数据类型
标准数据类型
4.字符数据类型char[(n)]:固定长度,长度为n个字节。n的取值范围为1至8,000,存储大小是n个字节。varchar[(n|max)]:可变长度,n的取值范围为1至8,000。max指示最大存储大小是231-1个字节。存储大小是输入数据的实际长度加2个字节。所输入数据的长度可以为0个字符。text:服务器代码页中长度可变的非Unicode数据,最大长度为231-1(2,147,483,647)个字符。当服务器代码页使用双字节字符时,存储仍是2,147,483,647字节。根据字符串,存储大小可能小于2,147,483,647字节。说明:如果列数据项的大小一致,则使用char。如果列数据项的大小差异相当大,则使用varchar。如果列数据项大小相差很大,而且大小可能超过8,000字节,则使用varchar(max)。第8页/共32页4.2数据类型
标准数据类型
5.Unicode字符串数据类型
Unicode是双字节文字编码标准,与字符串数据类型相类似,但Unicode的一个字符用2字节存储。
nchar[(n)]:n个字符的固定长度的Unicode字符数据。n值必须在1到4,000之间(含)。存储大小为两倍n字节。
nvarchar[(n|max)]:可变长度Unicode字符数据。n值在1到4,000之间(含)。max指示最大存储大小为231-1字节。存储大小是所输入字符个数的两倍+2个字节。所输入数据的长度可以为0个字符。
ntext:长度可变的Unicode数据,最大长度为230-1(1,073,741,823)个字符。存储大小是所输入字符个数的两倍(以字节为单位)。说明:如果没有在数据定义或变量声明语句中指定n,则默认长度为1。如果没有使用CAST函数指定n,则默认长度为30。如果列数据项的大小可能相同,则使用nchar。如果列数据项的大小可能差异很大,则使用nvarchar。第9页/共32页4.2数据类型
标准数据类型
6.二进制数据类型binary[(n)]:长度为n字节的固定长度二进制数据,其中n是从1到8,000的值。存储大小为n字节。varbinary[(n|max)]:可变长度二进制数据。n可以取从1到8,000的值。max指示最大的存储大小为231-1字节。存储大小为所输入数据的实际长度+2个字节。所输入数据的长度可以是0字节。image:长度可变的二进制数据,从0到231-1(2,147,483,647)个字节。说明:如果未在数据定义或变量声明语句中指定n,则默认长度为1。如果未使用CAST函数指定n,则默认长度为30。如果列数据项的大小一致,则使用binary。如果列数据项的大小差异相当大,则使用varbinary。当列数据条目超出8,000字节时,请使用varbinary(max)。第10页/共32页4.2数据类型
标准数据类型
7.其它数据类型cursor:这是变量或存储过程OUTPUT参数的一种数据类型,这些参数包含对游标的引用。timestamp:公开数据库中自动生成的唯一二进制数字的数据类型。通常用作给表行加版本戳的机制。存储大小为8个字节。sql_variant:用于存储SQLServer2005支持的各种数据类型的一种数据类型(不包括text、ntext、image、timestamp和sql_variant)的值。uniqueidentifier:可存储16字节的二进制值,通常不将uniqueidentifier定义为常量,因为很难保证创建的uniqueidentifier确实具有唯一性。table:一种特殊的数据类型,用于存储结果集以进行后续处理。table主要用于临时存储一组行,这些行是作为表值函数的结果集返回的。XML:存储XML数据的数据类型。可以在列中或者xml类型的变量中存储xml实例。说明:如果列数据项的大小一致,则使用char。如果列数据项的大小差异相当大,则使用varchar。如果列数据项大小相差很大,而且大小可能超过8,000字节,则使用varchar(max)。第11页/共32页4.2数据类型用户定义的数据类型用户定义的数据类型基于在SQLServer2005中提供的数据类型。1.创建用户定义的数据类型系统存储过sp_addtype可以来创建用户定义的数据类型。其语法形式如下:sp_addtypetype,[,system_data_type][,'null_type']2.删除用户定义的数据类型当用户定义的数据类型不需要时,可删除。系统存储过程sp_droptype可以删除用户定义的数据类型。其语法形式如下:sp_droptypetype。其中:type是用户定义的数据类型的名称。【例4-1】创建一个用户定义的数据类型ssn,其基于的系统数据类型是变长为11的字符,不允许空。EXECsp_addtypessn,'varchar(11)','notnull'是用户定义的数据类型的名称,在同一数据库中唯一。是系统提供的数据类型,例如:decimal、int、char等等。表示该数据类型是如何处理空值的,必须使用单引号引起来,例如:'null'、'notnull'或者'nonull'。【例4-2】创建一个用户定义的数据类型birthday,其基于的系统数据类型是datetime,允许空。EXECsp_addtypebirthday,datetime,'null'【例4-3】删除用户自定义类型'ssn'。EXECsp_droptype'ssn'第12页/共32页4.3创建表在SQLServer2005系统中,一张二维表对应一张数据表,即为表文件(Table)。一个数据库中最多可以创建200万张数据表。在创建表之前,首先应该定义表的结构,即根据二维表的定义来确定表的组织形式,包括定义表的列数、列名、列类型、列宽度及列属性等。在SQLServer2005系统中,一个表最多可以定义1024列。例如:学生信息表(Student)学号姓名性别出生日期家庭住址所在班级0502410101朱富宝女1986-3-14山东聊城241010502410102蔡志赫男1986-3-19内蒙古包头241010502410103曹洋园女1986-3-28山西太原241010502410104孟健笋男1986-4-2山东济南241010502410105董保燕男1986-4-8山东济宁241010502410106安洪壮男1986-1-29江苏徐州24101第13页/共32页4.3创建表在SQLServer2005系统中,一张二维表对应一张数据表,即为表文件(Table)。一个数据库中最多可以创建200万张数据表。在创建表之前,首先应该定义表的结构,即根据二维表的定义来确定表的组织形式,包括定义表的列数、列名、列类型、列宽度及列属性等。在SQLServer2005系统中,一个表最多可以定义1024列。表4-5学生信息表(Student)结构定义列名列类型(长度)列属性列描述StuIDChar(13)主键学号StuNameNvarchar(8)姓名StuSexNvarchar(8)性别StuBirsmalldatetime出生日期StuAddrNvarchar(30)家庭住址ClaIDChar(10)外键所在班级第14页/共32页4.3创建表4.3.1用SQLServerManagementStudio创建表在SQLServerManagementStudio中建立如表4-5所示表结构,具体步骤如下:①在对象资源管理器中,展开“数据库”项,展开要建立表的数据库,例如“Stud”。②在“表”项上右击鼠标,执行“新建表”命令,如图4-1所示。③进入设计表窗口,根据表4-5所示的学生信息表的数据结构,依次输入各个字段,如图4-2所示。④然后用鼠标单击“stuID”列,右击鼠标,执行“设置主键”命令或点击工具栏上设置主键按钮,将可stuID设置为主键,此时列前有主键标志如图4-2所示。⑤单击工具栏保存按钮,弹出“选择名称”对话框,如图4-3所示。在输入表名文本框中键入“Student”,点击“确定”按钮。关闭窗口,这样就完成了对表结构的设计,创建了一张空表。列名:指定字段(属性)的名称(表中唯一)。数据类型:指定字段的数据类型及长度。允许空:指定字段是否可以设定为空值(NULL)第15页/共32页4.3创建表
用CREATETABLE语句创建表Transact-SQL语言中的CREATETABLE语句被用来建立新的数据库表。CREATETABLE语句语法格式如下:CREATETABLEtable_name(column1_namedata_type,column1_namedata_type,……)如果用户希望在建立新表时规定列的限制条件,可以使用可选的条件选项:CREATETABLEtable_name(column1_namedata_type[constraint],column1_namedata_type[constraint],……)新表的名称。表名称必须符合标识符规则。table_name在数据库中必须是唯一的。table_name最多可包含128个字符。data_type指定列的数据类型。数据的完整性约束(详见4.6)表中列的名称。列名称必须符合标识符规则,并且在表中必须是唯一的。【例4-3】在学生数据库Stud中创建用于学生信息管理的表Student,具体信息如表4-5所示。USEStudCREATETABLEStudent(SduIDchar(13)PRIMARYKEY,SduNamenvarchar(8),SduBirsamlldatetime,SduSexnvarchar(2),SduAddrnvarchar(30),Cla_IDchar(10))第16页/共32页4.4表的管理和维护
4.4.1查看表的定义信息当在数据库中创建了表后,有时需要查看表的有关信息。比如表的属性、定义、数据、字段属性和索引等。尤其重要的是查看表内存放的数据,另外有时需要查看表与其他数据库对象之间的依赖关系。1.用SQLServerManagementStudio查看表定义信息(1)查看表的属性(2)查看表中数据(3)查看表的依赖关系2.使用系统存储过程查看表定义信息使用系统存储过程sp_help可以方便查看表的定义信息。sp_helptable_name其中:table_name要查看的表名。表的属性信息包括常规的表的连接属性、表的存储属性及权限等,查看表属性的步骤如下:①在对象资源管理器中,展开“数据库”项,展开要查看表的数据库,例如“Stud”。②选择要查看的表,如“Student”后右击选择“属性”命令,如图4-4所示。③打开属性窗口如图4-5所示。查看表中的数据是最经常使用的操作之一,具体步骤如下:①在对象资源管理器中,打开要查看数据库,例如“Stud”。②展开表→选择要查看的表,例如选择表“Student”后右击并选择“打开表”命令。③打开表student窗口如图4-6所示。某些数据库对象依赖于其他数据库对象的存在,例如,视图或存储过程依赖于基础表提供数据;或为了保证数据完整性而存在的依赖关系,例如,成绩表中学生的学号依赖学生表中的学号。在更改或删除对象前,使用对象资源管理器查看依赖关系。使用SQLServerManagementStudio查看表的依赖关系步骤如下:①在对象资源管理器中,打开要查看数据库,例如“Stud”。②展开表→选择要查看的表,例如选择表“Student”后右击并选择“查看依赖关系”命令,如图4-7所示。③打开属性窗口如图4-8所示,可以选择查看依赖关系和被依赖关系。【例4-3】使用sp_help查看表Student的定义信息。在查询编辑器中输入下面命令并执行,结果如图4-9所示。USEStudGOsp_helpStudent第17页/共32页4.4表的管理和维护
4.4.2修改表在数据表建好之后,有时需要对表结构进行修改,包括数据类型的修改和约束的修改等。1.在SQLServerManagementStudio中修改表2.使用ALTERTABLE命令修改数据表【例4-2】在Student表中增加一个备注列。USEStudALTERTABLEStudentADDCMemonvarchar(40)【例4-3】将Student表列SNO类型改为CHAR型,长度为8。USEStudALTERTABLEStudentALTERCOLUMNSNOchar(8)【例4-4】删除表Student备注列。USEStudALTERTABLEStudentDROPCMemo在SQLServerManagementStudio中修改数据库Stud表步骤如下:①在对象资源管理器中,打开数据库“Stud”→展开表→选择要修改的表,例如选择表“Student”后右击并选择“修改”命令,如图4-10所示。②出现表设计对话框和新建表相同,如图4-11所示,将学生家庭地址的长度修改为50。③修改完成后单击工具栏的“保存”按钮保存即可。使用命令修改数据表的语法格式为:ALTERTABLEtable_name[withnocheck]{ALTERCOLUMNcolumn_namenew_date_type[newconstraint]ADDcolumn_namedata_type[constraint]DROP[COLUMN]column_name……}其中:table_name要修改的表名,它必需存在于数据库中。
ADD增加新列。
ALTER修改已存在的列。
DROP删除已存在的列。
column_name在操作中要增加、修改或删除的列名。new_date_type指定与该列相兼容的新数据类型。第18页/共32页4.4表的管理和维护
4.4.3删除表当数据库中的某些表已不必保留,或某些信息已经过时或创建新表代替旧表时,就可以对表进行删除,以节约存储空间。删除表一般有在SQLServerManagementStudio中删除和命令删除两种方法。1.在SQLServerManagementStudio中删除表在SQLServerManagementStudio中删除表具体步骤如下:①在资源管理器中→打开要删除表的数据库,例如打开“stud”→展开表→选择要删除的表,例如“Student”后右击→在弹出菜单选择“删除”命令,如图4-12所示。②出现删除对象对话框如图4-13所示,在删除表之前,首先显示该表的依赖关系,以确定即将发生删除是否影响到别的表。确认后点击“确定”按钮即可完成删除。2.使用DROPTABLE命令删除数据表。删除数据表的命令格式如下:DROPTABLEtable_name其中:table_name要删除的数据表的表名。【例4-5】删除表Student。USEStudDROPTABLEStudent在数据库引擎查询窗口执行该命令后,显示“命令已成功完成”信息。说明数据表Student被成功地删除。第19页/共32页4.5表中数据的添加、修改和删除
一个表是由表结构和表中的行(数据)两部分组成的。创建表及表结构的维护是有关列的操作,向表中输入数据、修改表中的数据和删除表中的数据是有关行的操作,即是对表中数据的操作。表中数据的操作包括数据插入、数据删除、数据修改和数据查询,数据查询尤为重要,在第5章详细讲解,本节讲解数据的插入、删除和修改。4.5.1向表中添加数据数据表建好后,即可向表中添加数据了,即数据输入。可以使用SQLServerManagementStudio和INSERT命令来完成。1.在SQLServerManagementStudio中向表中添加数据2.使用INSERT语句向表中插入数据在SQLServerManagementStudio中向表中添加数据步骤如下:①在对象资源管理器→展开数据库“Stud”→展开表→右击表“Student”→选择“打开表”命令,打开表如图4-14所示。②此时可以根据表4-1所示内容依次向表中插入记录。③关闭窗口或点击工具栏“!”按钮,输入记录被保存。使用INSERT语句向表中插入数据基本语法如下:INSERTINTOtable_name[(column1,column2…)]VALUES(value1,value2…)或INSERTINTOtable_name[(column1,column2…)]SELECTcolumn1,column2…FROManother_tablename[WHEREsearchcondition]
另一张表的名称,可以从another_tablename所指定的表中取出一条或多条记录插入到table_name指定的表中。(关于SELECT语句,详见第5章)。
要插入字段的名称。
插入字段的值。
指定插入数据表名称。【例4-6】将表4-1所示的姓名为“曹洋园”的所有信息插入Student表。USEStudINSERTINTOStudentVALUES('0502410103','曹洋园','女','1986-3-28','山西太原','24101')【例4-7】将表4-1所示的姓名为“孟健笋”的学号、姓名、班级号插入表Student。USEStudINSERTINTOSdudent(stuID,stuname,CLsID)VALUES('0502410104','孟健笋','24101')第20页/共32页4.5表中数据的添加、修改和删除
4.5.2修改表中的数据向表中添加了记录后,用户就可以根据需要修改表中的数据了。依据上面添加数据的方法打开表,选中要修改的数据项,直接修改即可。下面介绍使用UPDATA语句修改数据的方法。UPDATA语句语法格式:UPDATAtable_nameSETcolumn1=new_value1[,column2=new_value2,……][WHEREcondition]【例4-8】将学号为“0502410104”的学生的班级改为“24102”。USEStudUPDATEStudentSETClaID='24102'WHERESno='2000012‘【例4-9】每个学生的家庭住址前面加上“中国”。USEStudUPDATEStudentSETStuaddr='中国'+Stuaddr
指定要更新数据的表名。指定要更新的列及该列改变后的值。
指定要更新的列及该列改变后的值。
第21页/共32页4.5表中数据的添加、修改和删除
4.5.3删除表中的数据表中的某些数据可能会随着时间的推移而失效;或有时因操作不当时使数据出现错误;还有时因为数据的来源不正确,造成表中数据不正确,这些有误的数据需要从表中删除。删除表中的数据,可以使用SQLServerManagementStudio和Transact-SQL命令来完成1.利用SQLServerManagementStudio删除表中的数据2.使用DELETE命令删除表中的数据【例4-10】从Student表中删除姓名为空的数据。USEStudDELETEStudentWHRERStunameISNULL在查询编辑器执行完删除记录命令后,消息栏显示多少条记录已成功地被删除。①依据上面添加数据的方法打开表,将鼠标移至表的左边行首位置,点击鼠标选中要删除的行(也可以鼠标和“Shift”键配合选中连续多行,鼠标和“Ctrl”配合选中不连续的多行)。②右击鼠标,在快捷菜单中选择“删除”命令,如图4-15所示。或直接按键盘的“delete”键。③系统出现确认对话框如图4-16所示,点击“是”按钮将永久删除所选的行。DELETE语句语法格式如下:DELETE[FROM]table_name[WHEREcondition]要删除数据的表名。要删除数据的条件
第22页/共32页4.6数据完整性与使用约束
4.6.1数据完整性概念数据完整性是指存储在数据库中数据的一致性和准确性。数据的完整性可能由于用户进行各种数据操作而遭受破坏。例如:当用户将一个学号为空的学生记录插入学生信息表时,就破坏了学生数据表数据的完整性。为了保证数据库中数据的完整性,SQLserver2005设计了四种类型数据完整性。1.实体完整性2.域完整性3.引用完整性4.用户定义完整性在SQLServer中,对于表的约束分为列约束和表约束。列约束是对某一个特定列的约束,包含在列定义中,直接跟在该列的其他定义之后,用空格分隔,不必指定列名;表约束与列定义相互独立,不包括在列定义中,通常用于对多个列一起进行约束,与列定义用’,’分隔,定义表约束时必须指出要约束的那些列的名称。完整性约束的基本语法格式为:[CONSTRAINT<约束名>]<约束类型>实体完整性将行定义为特定表的唯一实体。也就是说,表中不允许存在完全相同的两行记录。实体完整性通过索引、UNIQUE约束、PRIMARYKEY约束或IDENTITY属性来实现。域完整性指特定列的项的有效性。例如学生的成绩应在0到100之间。强制域完整性方法有限制类型(通过使用数据类型)、限制格式(通过使用CHECK约束和规则)或限制可能值的范围(通过使用FOREIGNKEY约束、CHECK约束、DEFAULT定义、NOTNULL定义和规则)。输入或删除记录时,引用完整性用来保持表之间已定义的关系。在SQLServer2005中,引用完整性通过FOREIGNKEY和CHECK约束,以外键与主键之间或外键与唯一键之间的关系为基础。引用完整性确保键值在所有表中一致。这类一致性要求不引用不存在的值,如果一个键值发生更改,则整个数据库中,对该键值的所有引用要进行一致的更改。例如:学生所在班级应为存在的班级。定义引用完整性后,禁止用户进行以下操作:当主表没有关联记录时,将记录添加到相关表中。更改主表中的值导致相关记录独立。从主表中删除记录,但仍存在与该记录匹配的相关记录。用户定义完整性可以定义不属于其他任何完整性类别的特定业务规则。所有完整性类别都支持用户定义完整性。这包括CREATETABLE中所有列约束和表约束、存储过程以及触发器。
约束不指定名称时,系统会给定一个名称。在定义完整性约束时必须指定完整性约束的类型。
第23页/共32页4.6数据完整性与使用约束4.6.2主键(PRIMARYKEY)约束表通常具有包含唯一标识表中每一行的值的一列或一组列。这样的列或多列称为表的主键(PK),用于强制表的实体完整性,在一个表中只能定义一个主键。
PRIMARYKEY约束用于定义基本表的主键,起唯一标识作用,其值不能为NULL,也不能重复,以此来保证实体的完整性。PRIMARYKEY既可用于列约束,也可用于表约束.1.PRIMARYKEY用于定义列约束PRIMARYKEY用于定义列约束时,其语法格式如下:[CONSTRAINT<约束名>]PRIMARYKEY2.PRIMARYKEY用于定义表约束PRIMARYKEY用于定义表约束时,即将某些列的组合定义为主键,其语法格式如下:[CONSTRAINT<约束名>]PRIMARYKEY(<列名>[{,<列名>}])【例4-11】建立一个Student表,定义StuID为主键。USEStudCREATETABLEStudent(StuIDchar(13)CONSTRAINTS_PRIMPRIMARYKEY,Stunamevarchar(8),Stusexchar(2))【例4-12】建立一个Result表,定义StuID+CouID为SC的主键。USEStudCREATETABLEResult(StuIDchar(13)NOTNULL,CouIDchar(5)NOTNULL,Resultnumeric(3),CONSTRAINTSC_PRIMPRIMARYKEY(StuID,CouID))第24页/共32页4.6数据完整性与使用约束
4.6.3唯一性(UNIQUE)约束
UNIQUE约束用于指明基本表在某一列或多个列的组合上的取值必须唯一。定义了UNIQUE约束的那些列称为唯一键,系统自动为唯一键建立唯一索引(关于索引,详见第6章),从而保证了唯一键的唯一性。唯一键允许为空,但系统为保证其唯一性,最多只可以出现一个NULL值。UNIQUE既可用于列约束,也可用于表约束。1.UNIQUE用于定义列约束UNIQUE用于定义列约束时,其语法格式如下:[CONSTRAINT<约束名>]UNIQUE2.UNIQUE用于定义表约束UNIQUE用于定义表约束时,其语法格式如下:[CONSTRAINT<约束名>]UNIQUE(<列名>[{,<列名>}])
PRIMARYKEY与UNIQUE约束类似,通过建立唯一索引来保证基本表在主键列取值的唯一性,但它们之间存在着很大的区别:在一个基本表中只能定义一个PRIMARYKEY约束,但可定义多个UNIQUE约束。对于指定为PRIMARYKEY的一个列或多个列的组合,其中任何一个列都不能出现空值,而对于UNIQUE所约束的唯一键,则允许为空。【例4-13】建立一个Student1表,定义Stuname为唯一键。USEStudCREATETABLEStudent1(StuIDchar(13),Stunamevarcahr(8)CONSTRAINTSN_UNIQUNIQUE,Stusexchar(2))其中:SN_UNIQ为指定的约束名称,约束名称可以省略,如下例:USEStudCREATETABLEStudent2(StuIDchar(13),Stunamevarchar(8)UNIQUE,Stusexchar(2))【例4-14】建立一个Student3表,定义Stuname+Stusex为唯一键。USEStudCREATETABLEStudent3(StuIDchar(13),Stunamevarchar(8),Stusexchar(2),CONSTRAINTS_UNIQUNIQUE(Stuname,Stusex))系统为Stuname+Stusex建立唯一索引,确保同一性别的学生没有重名第25页/共32页4.6数据完整性与使用约束
4.6.4检查(CHECK)约束
CHECK约束可以强制域的完整性。CHECK约束用来检查字段值所允许的范围,如一个字段只能输入整数,而且限定在0-100的整数,以此来保证域的完整性。CHECK既可用于列约束,也可用于表约束。其语法格式为:[CONSTRAINT<约束名>]CHECK(<条件>)【例4-15】建立一个Result表,定义该表Result列的取值范围为0到100之间。USEStudCREATETABLEResult(StuIDchar(13)NOTNULL,CouIDchar(5)NOTNULL,Resultnumeric(3)CONSTRAINTResult_CHKCHECK(Result>=0ANDResult<=100))
第26页/共32页4.6数据完整性与使用约束4.6.5默认值(DEFAULT)约束
DEFAULT值表示某一字段的默认值,当没有输入数据时,则使用此默认的值。默认值只用于列约束。【例4-16】建立一个表Student4,定义Stusex列默认为“男”。USEStudCREATETABLEStudent4(StuIDchar(13),Stunamevarchar(8),Stusexchar(2)DEFAULT'男',Deptchar(20))第27页/共32页4.6数据完整性与使用约束
4.6.6非空值(NOTNULL)约束NULL值不是0也不是空白,更不是填入字符串“NULL”,而是表示“不知道”、“不确定”或“没有数据”的意思。当某一字段的值一定要输入才有意义的时候,则可以设置为NOTNULL。如主键列就不允许出现空值,否则就失去了唯一标识一条记录的作用,非空值(NOTNULL)约束只能用于定义列约束,其语法格式如下:
[CONSTRAINT<约束名>][NULL|NOTNULL]【例4-17】建立一个Student5表,对Stuname字段进行NOTNULL约束。USEStudCREATETABLEStudent5(StuIDchar(13),Stunamevarchar(8)NOTNULL,Stusexchar(2),Deptchar(20))说明:当插入、修改记录时,若Stuname为空,系统给出错误信息,无NOTNULL约束时,系统缺省为NULL。第28页/共32页4.6数据完整性与使用约束4.6.7外键(FOREIGNKEY)约束FOREIGNKEY约束指定某一个列或一组列作为外键,其中,包含外键的表称为从表,包含外键所引用的主键或唯一键的表称主表。系统保证从表在外键上的取值要么是主表中某一个主键值或唯一键值,要么取空值,以此保证两个表之间的连接,确保了实体的参照完整性。例如表“Student”内的字段“ClaID”的值参照表“Class”中的字段“ClaID”,也就是说,学生的班级要么为空,语义表示未分配班级,要么分配的班级为存在的班级,不能把学生分配到不存在的班级中去。FOREIGNKEY既可用于列约束,也可用于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《GBT 29618.2-2017 现场设备工具(FDT)接口规范 第 2 部分:概念和详细描述》专题研究报告
- 《GBT 34033.1-2017 船舶与海上技术 船舶防污底系统风险评估 第 1 部分:船舶防污底系统用防污活性物质的海洋环境风险评估方法》专题研究报告
- 《GB-T 29186.4-2021品牌价值要素评价 第4部分:创新要素》专题研究报告
- 上海市曹杨二中2025-2026学年高二上学期期中数学试卷及答案
- 2025年国际海运货运代理合同
- 2025广西北海有礼品牌运营有限公司招聘21人笔试备考试题附答案
- 2026年投资项目管理师之宏观经济政策考试题库300道含答案(综合卷)
- 变异株传播的医院感染防控信息化系统建设方案实施进展报告
- 2025广西工商技师学院招聘重点领域急需紧缺高层次人才4人参考题库附答案
- 2025广西梧州市龙投人力资源有限公司招聘13人考前自测高频考点模拟试题附答案
- 中国石化2024年年度财务报表及审计报告
- 转供水协议书范本
- 华为竞业协议合同
- (完整版)准地转理论及其在天气预报中的应用(I基本理论)李国平
- 紧急状态下护理人力资源调配
- 人教版七年级语文上册《文学文化常识》专项测试卷(含答案)
- 自航式耙吸挖泥船安全操作规程(3篇)
- 房产抵押抵债协议书范本
- DB11∕T 1679-2019 收费公路路产巡查处置技术规范
- 沟通类型调查表
- 家政服务智慧家政服务系统开发与推广
评论
0/150
提交评论