




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、表的基本操作2022-1-162主要内容数据库表SQL Server的数据类型创建数据库表定义约束管理数据库表 2022-1-163数据库表表的概述表是数据库中最基本的对象。许多数据库对象,如索引、视图都是以表为基础的。它与电子表格类似,数据在表中是按照行和列的格式来组织的。每一行代表一条唯一的记录,每一列代表记录中的一个域。例如,一个包含学生基本信息的数据表,表中的每一行代表一个学生信息,每一列代表学生的一项详细资料,如学号、姓名、性别、联系方式等。 2022-1-164数据库表表的分类在性质上,SQL Server将表分为两种永久表:创建后一直存储在数据库文件中,除非用户删除该表;临时表:
2、临时表是系统运行过程中由系统创建,当用户退出或系统修复时,临时表将被自动被删除。在类型上,SQL Server 将表分为四种标准表。在数据库中,最常用的就是标准表,它用来为数据库提供存储数据的空间。标准表简称表,是最重要、最基本的表。系统表。系统表中存储了有关SQL Server的配置、数据库设置、用户信息、表对象的描述等系统信息。2022-1-165数据库表临时表。临时表存储在 tempdb 中,当不再使用时会自动删除。本地。本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 SQL Server 实例断开连接时被删除。全局。全局临时表的名称以两个数字符号
3、 (#) 打头,创建后对任何用户都是可见的,当所有引用该表的用户从 SQL Server 断开连接时被删除。 分区表。当一个表中的数据过于庞大时,可以使用分区表。分区表是将数据水平划分为多个单元的表,这些单元可以分布到数据库中的多个文件组中。在维护整个集合的完整性时,使用分区可以快速而有效地访问或管理数据子集,从而使大型表或索引更易于管理。 2022-1-166数据库表数据完整性存储在数据库中数据的一致性和正确性。为保证数据的完整性,SQL Server提供了定义、检查和控制数据的完整性的机制。数据的完整性又进一步分为实体完整性、域完整性、参照完整性和用户定义完整性四种。 实体完整性也称行完整
4、性。它将行定义为特定表的唯一实体。例如在有多个学生信息的表中,学号那个列对应的值每一行必须不相同,否则,这将造成学生信息管理的混乱。域完整性也称列完整性。用它来定义输入的数据值,是否具有正确的数据类型、格式以及有效的数据范围。2022-1-167数据库表参照完整性是保证参照与被参照两个表中数据的一致性。例如,在学生基本信息表中有学号列,在成绩表中也有学号这个列,而且两个表的学号必须一致。 用户定义完整性。为了反映用户的特殊需求,体现用户的业务规则,称为用户定义完整性。在数据库系统中必须采取一些措施来防止混乱数据的产生。在SQL Server中,数据的完整性是通过建立和使用约束来保证的。约束是S
5、QL Server强制实行的应用规则,它通过限制列、行、表中的数据,来保证数据的完整性。当删除表时,表所带的约束也随之被删除。在SQL Server中,约束包括CHECK约束、PRIMARY KEY约束、FOREIGN KEY约束、UNIQUE约束和DEFAULT约束等。2022-1-168SQL Server的数据类型在创建表时,涉及数据表的结构问题,也就是涉及数据表中各列的数据格式:是数值?是字符?是日期还是货币?是图像等其他格式?因此,在讲述数据表的操作之前,必须介绍SQL Server的数据类型。在SQL Server的数据表中,列的数据类型既可以是系统提供的数据类型,也可以是用户自定
6、义的数据类型。SQL Server系统提供了丰富的数据类型,表11-1列出了SQL Server所支持的数据类型。 2022-1-169数据类型数据类型说明BIGINT从-263264-1的整型数据INT从-231232-1的整型数据SMALLINT从-215216-1的整型数据TINYINT从0255的整型数据BIT非1即0的整型数据DECIMAL从-1038+11038-1的固定精度和小数位数的数值数据类型NUMERIC相当于十进制数MONEY从-263263-1的货币型数据,精确到货币单位的万分之一SMALLMONEY从-214 748.3648214 748.3647的货币型数据,精确
7、到货币单位的万分之一FLOAT从-1.79E-3081.79E+308的浮点精度数字数据2022-1-1610数据类型数据类型说明REAL从-3.40E-383.40E+38的浮点精度数字数据DATETIME从1753年1月1日到9999年12月31日的日期和时间数据,精确到三百分之一秒(11.33毫秒)SMALLDATETIME从1900年1月1日到9999年12月21日的日期和时间数据,精确到一分钟CHAR最大长度为8000个字符的固定长度非Unicode字符数据VARCHAR最大长度为8000个字符的可变长度非Unicode字符数据Text最大长度为231-1个字符的可变长度非Unico
8、de字符数据NCHAR最大长度为4000个字符的固定长度Unicode字符数据NVARCHAR最大长度为4000个字符的可变长度Unicode字符数据NTEXT最大长度为231-1个字符的可变长度Unicode字符数据2022-1-1611数据类型数据类型说明BINARY最大长度为8000个字符的固定长度二进制数据VARBINARY最大长度为8000个字符的可变长度二进制数据IMAGE最大长度为231-1个字符的可变长度二进制数据CURSOR对光标的引用SQL_VARIANT存储SQL Server支持的数据类型(TEXT, NTEXT, TIMESTAMP和SQL_VARIANT除外)值的数
9、据类型TABLE用于存储结果集合供以后处理的特殊数据类型TIMESTAMP整个数据库中都有唯一的一个数字,随着行的每次更新而更新UNIQUEIDENTIFIER全局唯一标识符(GUID)2022-1-1612数据类型空值NULL)先来了解空值的概念。数据列在定义后,还需要确定该列是否允许空值。空值通常是未知的、不能用的或将在以后添加的数据。允许一个列为空值,则向表中输入记录值时,可不为该列给出具体值;不允许为空值时,则在输入时,必须给出具体的值。空值与空格字符或数字0是不同的,空格实际上是一个有效的字符,0则表示一个有效的数字 。2022-1-1613数据类型字符型字符型数据类型主要用来存储由
10、字母、数字和符号组成的字符串,它又分为定长类型和变长类型。SQL Server提供三种字符型数据类型,分别为char、varchar和text。Char列中可以有字母、数字和符号,甚至是Tab键和空格键,但不包含其他的非可打印字符。Char字符列是定长的,如果定义的字符列为400个字符大小,那么即使列中的数据小于400个字符,这些数据也要占用400个字符的磁盘空间。Varchar列存储变长的字符数据。2022-1-1614数据类型二进制型二进制型数据是指字符串是由二进制值组成,而不是由字符组成。该类型通常用于时间标记(timestamp)和image类型。对于二进制型数据的存储来说,SQL S
11、erver提供三种数据类型,分别为binary、varbinary和image。binary用于存储长度固定的二进制字符串,varbinary用于存储长度可变的二进制字符串,image用于存储大的二进制字符串(理论上每行可达2GB)。 2022-1-1615数据类型整型和精确数值型SQL Server 2019提供的整型和精确数值类型有bit、int、smallint、tinyint和decimal、numeric。最常用的是int和numeric类型。int类型是指取值在-21474836482147483647之间的整数,numeric类型则是十进制数。bit数据类型可用于存储逻辑数据,可
12、用作状态标志位,它只存储1或者0。并且该类型的值不允许为空值、不允许建立索引、几个bit列可占用同一字节。 2022-1-1616数据类型浮点型SQL Server 2019提供了float和real类型,来表示浮点数和实数。float整型数据取值范围是-1.79E+3081.79E+308,real型数据的取值范围是-11.40E+3811.40E+38。real类型存储在四个字节中,可以在real数据类型中存储正的或者负的十进制值。如果不指定float数据类型的长度,它会被存储在8个字节中。 2022-1-1617数据类型日期型SQL Server 2019可以用datetime和smal
13、ldatetime数据类型来存储日期数据和时间数据。smalldatetime的精度较低,包含的日期范围也较窄,但占用的空间小。datetime类型数据的取值范围是1753年1月1日到9999年12月31日。可以省略datetime中的部分值,但如果全部省略,则默认的取值为1900,1,1,12: 00: 00: 00AM。如果省略的是时间部分,默认值为12:00: 00: 00。如果省略的是日期部分,则默认值为1,l,1900。2022-1-1618数据类型字符串数据类型SQL Server 2019提供三种Unicode字符串数据类型,分别为nchar、nvarchar和ntext。SQL
14、 Server Unicode数据类型是基于SQL-92标准中的National Character数据类型的。SQL-92使用前缀字符号n来表示这些数据类型和值。在使用Unicode数据类型时,一个列可以存储由Unicode标准所定义的任何字符,该字符包括各种字符集中所定义的所有字符。其中,ntext数据类型用来存储大量的文本,存储的数据通常是直接能够输出到显示设备上的字符,显示设备可以是显示器、窗口或者打印机。 2022-1-1619数据类型用户自定义数据类型用户自定义数据类型,是基于SQL Server系统提供的数据类型。当多个表的列中要存储同样类型的数据,并且确保这些列具有完全相同的数
15、据类型、长度和是否为空属性时,可使用用户自定义数据类型。创建用户自定义数据类型必须提供名称、新数据类型所依据的系统数据类型、数据类型是否允许空值。 2022-1-1620创建与管理表以学生信息系统为例,介绍如何用SSMS图形界面来创建表,以及对这些表进行管理。学生信息系统共包括学生信息表student)、课程信息表course)、选课信息表select三张表,具体表结构如表11-2、表11-3和表11-4所示。2022-1-1621创建表列名数据类型是否允许为空主键备注SnoChar(10)否是学号SnameVarchar(10)否否学生姓名SsexNchar(2)是否性别BirthdayDa
16、tetime是否生日SdeptNchar(20)是否系TelVarchar(13)是否电话student表结构2022-1-1622创建表列名数据类型是否允许为空主键备注CnoChar(10)否是课程编号CnameVarchar(50) 否否课程名称course表结构select表结构列名数据类型是否允许为空主键备注SnoChar(10)否是学号CnoChar(10)否是课程编号ScoreInt是否成绩2022-1-1623创建表创建步骤在SSMS窗口中,展开“bnuep选项,右击“表选项,在弹出的快捷菜单中选择“新建表命令,如图11-2所示。 2022-1-1624创建表在弹出的“编辑面板中
17、,分别输入各列的名称、数据类型、长度、是否允许为空等属性可以参考表11-2、表11-3和表11-4所示的表结构),如图11-3所示。2022-1-1625创建表输入完各列属性后,单击 “保管按钮,弹出“选择名称对话框,如图11-4所示。在“选择名称对话框中输入表的名称student,点击“确定按钮表创建完成。按照同样的方法和步骤创建course表和score表。 2022-1-1626约束SQL Server中有五种约束类型,分别是CHECK、DEFAULT、PRIMARY KEY、FOREIGN KEY和UNIQUE。CHECK约束CHECK约束用于限制输入一列或多列的值的范围,通过逻辑表达
18、式来判断数据的有效性,也就是一个列的输入内容必须满足CHECK约束的条件,否则,数据无法正常输入,从而强制数据的域完整性。 DEFAULT约束若在表中某列定义了DEFAULT约束,用户在插入新的数据行时,如果该列没有指定数据,那么系统将默认值赋给该列,当然该默认值也可以是空值。 2022-1-1627约束PRIMARY KEY约束在表中经常有一列或多列的组合,其值能唯一标识表中的每一行。这样的一列或多列成为表的主键,通过它可以强制表的实体完整性。一个表有且只有一个主键,而且主键约束中的列不能为空值。如将student表中学号Sno设为该表的主键,因为它能唯一标识该表,且该列的值不为空。如果主键
19、约束定义在不止一列上,则一列中的值可以重复,但主键约束定义中的所有列组合的值,必须唯一,因为该组合列是表的主键。2022-1-1628约束FOREIGN KEY约束外键,是用于建立和加强两个表主表与从表的一列或多列数据之间的连接的,当添加、修改或删除数据时,通过参照完整性来保证它们之间的数据的一致性。定义表间的参照完整性的顺序是先定义主表的主键,再对从表定义外键。 UNIQUE约束用于确保表中的行在非主键中没有相同的列值。与PRIMARY KEY约束类似,UNIQUE约束也强制唯一性,为表中的一列或多列提供实体完整性。但UNIQUE约束用于非主键的一列或多列组合,且一个表可以定义多个UNIQU
20、E约束,另外UNIQUE约束可以用于定义多列组合。2022-1-1629CHECK在Ssex上创建约束在SSMS窗口中,右击dbo.student选项,在弹出的快捷菜单中选择“修正命令,选中Ssex后右击数遍,在弹出的快捷菜单中选择“CHECK 约束”,如下图:2022-1-1630CHECK单击“添加按钮,单击“表达式后面的 按钮,进入如下图所示的“CHECK约束表达式对话框。如果已经在该列上创建了约束,则该操作将查看之前创建的CHECK约束表达式。在文本框中输入约束表达式“Ssex=男 OR Ssex=女”。2022-1-1631CHECK最后,在“设计表窗口单击“保管按钮,完成了创建和保
21、存CHECK约束的操作。用户输入时,若输入性别不是“男或“女”,系统将报告输入无效。删除约束。2022-1-1632DEFAULT在Ssex上创建DEFAULT约束选择“Ssex列,在“列属性选项卡中选择“默认值或绑定”,在右侧的文本框中输入“男”,单击“保管按钮。删除DEFAULT约束。2022-1-1633PRIMARY KEY将Sno定义为主键。选择“Sno列,右击,在弹出的快捷菜单中选择“设置主键命令。若主键由多列组成,先选中此列,按住Ctrl不放,同时用鼠标单击选择其他列,然后单击“设置主键按钮。移除主键。2022-1-1634FOREGIN KEY创建student表与select
22、表之间的外键约束。检查student表中是否将“Sno设置为主键。选择“select表,右击选择“修正”,单击“关系按钮,在弹出的“外键关系对话框中,单击“添加按钮,如下图:2022-1-1635FOREGIN KEY选中“表和列规范单击后面的按钮,进入下图所示的界面。在“主键表下拉列表中选择student,单击主键表的下拉列表框选择Sno,在“外键表下拉列表框中选择Sno。2022-1-1636UNIQUE给Sname添加UNIQUE约束在“修正定义窗口完成所有列的定以后,单击 “管理索引和键按钮,翻开“索引/键对话框,单击“添加按钮,在“列下拉列表中选择“Sname”,在“是唯一的下拉列表
23、中选择是“。2022-1-1637修改表结构 修改表名。SQL Server允许修改一个表的名字,当表名改变后,与此相关的某些对象如视图,存储过程等将无效,因为它们都与表名有关。因此,建议一般不要随便更改一个已有的表名,特别是在其上已经定义了视图等对象。右击“dbo.student”,在弹出的快捷菜单中,选择“重命名命令,在原表上输入表的新名称即可。2022-1-1638修改表结构增加列。给student增加宿舍“属性。右击“dbo.student”,在弹出的菜单中选择“修正命令。接着在“设计表面板中,单击“第一个空白行”,输入列名“domitory(宿舍)”,数据类型选择“varchar(20)”,并选中“允许空复选框。然后点击“保管按钮。2022-1-1639修改表结构删除列。删除刚才在student表中建立的“domitory列。 打开student表的“修正面板,右击“domitory列,在弹出的快捷菜单中选择“删除列命令。该列即被删除,最后单击“保管按钮,以保存修改的结构。修改已有列的属性。和增加、删除列类似,打开表的“修正面板,可以对已有列的列名、数据类型、长度以及是否允许为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年VB考试高级题目及试题及答案
- 火灾应急预案培训制度(3篇)
- 2025年法学概论考试的知识掌握方式与试题及答案
- 2025年科技进步对战略影响试题及答案
- 行政法与社会资本的关系探讨试题及答案
- 2025年信息技术应用能力试题及答案
- 2025年法学概论的实务考察及试题及答案
- 行政法学重要时事考题及答案
- 开源软件项目2025年考试试题及答案
- 2025年网络管理资格考核试题及答案
- 扬尘污染专项防治方案
- GB 5009.34-2022食品安全国家标准食品中二氧化硫的测定
- GB/T 12622-2008管法兰用垫片压缩率和回弹率试验方法
- 2023年新改版教科版科学五年级下册全册精编练习题(一课一练+单元+期中+期末)
- 语文五年级 【知识精讲】7.阅读(2)文言文阅读
- 社会心理学8-人际关系课件
- QC-R 596-2017高速铁路板式无砟轨道自密实混凝土高清-无水印
- 邻补角、对顶角、同位角、内错角、同旁内角经典习题-一对一专用
- 保密管理-保密教育培训签到簿
- 常见病媒生物分类鉴定
- 手术室剖宫产护理查房-课件
评论
0/150
提交评论