《实验03:数据库中表的基本操作.ppt》由会员分享,可在线阅读,更多相关《实验03:数据库中表的基本操作.ppt(45页珍藏版)》请在三一文库上搜索。
1、表的基本操作,2019/8/12,2,主要内容,数据库表 SQL Server的数据类型 创建数据库表 定义约束 管理数据库表,2019/8/12,3,数据库表,表的概述 表是数据库中最基本的对象。许多数据库对象,如索引、视图都是以表为基础的。它与电子表格类似,数据在表中是按照行和列的格式来组织的。每一行代表一条唯一的记录,每一列代表记录中的一个域。 例如,一个包含学生基本信息的数据表,表中的每一行代表一个学生信息,每一列代表学生的一项详细资料,如学号、姓名、性别、联系方式等。,2019/8/12,4,数据库表,表的分类 在性质上,SQL Server将表分为两种 永久表:创建后一直存储在数据
2、库文件中,除非用户删除该表; 临时表:临时表是系统运行过程中由系统创建,当用户退出或系统修复时,临时表将被自动被删除。 在类型上,SQL Server 将表分为四种 标准表。在数据库中,最常用的就是标准表,它用来为数据库提供存储数据的空间。标准表简称表,是最重要、最基本的表。 系统表。系统表中存储了有关SQL Server的配置、数据库设置、用户信息、表对象的描述等系统信息。,2019/8/12,5,数据库表,临时表。临时表存储在 tempdb 中,当不再使用时会自动删除。 本地。本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 SQL Server 实例
3、断开连接时被删除。 全局。全局临时表的名称以两个数字符号 (#) 打头,创建后对任何用户都是可见的,当所有引用该表的用户从 SQL Server 断开连接时被删除。 分区表。当一个表中的数据过于庞大时,可以使用分区表。分区表是将数据水平划分为多个单元的表,这些单元可以分布到数据库中的多个文件组中。在维护整个集合的完整性时,使用分区可以快速而有效地访问或管理数据子集,从而使大型表或索引更易于管理。,2019/8/12,6,数据库表,数据完整性 存储在数据库中数据的一致性和正确性。为保证数据的完整性,SQL Server提供了定义、检查和控制数据的完整性的机制。 数据的完整性又进一步分为实体完整性
4、、域完整性、参照完整性和用户定义完整性四种。 实体完整性也称行完整性。它将行定义为特定表的唯一实体。例如在有多个学生信息的表中,学号那个列对应的值每一行必须不相同,否则,这将造成学生信息管理的混乱。 域完整性也称列完整性。用它来定义输入的数据值,是否具有正确的数据类型、格式以及有效的数据范围。,2019/8/12,7,数据库表,参照完整性是保证参照与被参照两个表中数据的一致性。例如,在学生基本信息表中有学号列,在成绩表中也有学号这个列,而且两个表的学号必须一致。 用户定义完整性。为了反映用户的特殊需求,体现用户的业务规则,称为用户定义完整性。 在数据库系统中必须采取一些措施来防止混乱数据的产生
5、。在SQL Server中,数据的完整性是通过建立和使用约束来保证的。约束是SQL Server强制实行的应用规则,它通过限制列、行、表中的数据,来保证数据的完整性。当删除表时,表所带的约束也随之被删除。 在SQL Server中,约束包括CHECK约束、PRIMARY KEY约束、FOREIGN KEY约束、UNIQUE约束和DEFAULT约束等。,2019/8/12,8,SQL Server的数据类型,在创建表时,涉及数据表的结构问题,也就是涉及数据表中各列的数据格式:是数值?是字符?是日期还是货币?是图像等其他格式?因此,在讲述数据表的操作之前,必须介绍SQL Server的数据类型。
6、在SQL Server的数据表中,列的数据类型既可以是系统提供的数据类型,也可以是用户自定义的数据类型。SQL Server系统提供了丰富的数据类型,表11-1列出了SQL Server所支持的数据类型。,2019/8/12,9,数据类型,2019/8/12,10,数据类型,2019/8/12,11,数据类型,2019/8/12,12,数据类型,空值(NULL) 先来了解空值的概念。数据列在定义后,还需要确定该列是否允许空值。 空值通常是未知的、不能用的或将在以后添加的数据。允许一个列为空值,则向表中输入记录值时,可不为该列给出具体值;不允许为空值时,则在输入时,必须给出具体的值。 空值与空格
7、字符或数字0是不同的,空格实际上是一个有效的字符,0则表示一个有效的数字 。,2019/8/12,13,数据类型,字符型 字符型数据类型主要用来存储由字母、数字和符号组成的字符串,它又分为定长类型和变长类型。 SQL Server提供三种字符型数据类型,分别为char、varchar和text。 Char列中可以有字母、数字和符号,甚至是Tab键和空格键,但不包含其他的非可打印字符。Char字符列是定长的,如果定义的字符列为400个字符大小,那么即使列中的数据小于400个字符,这些数据也要占用400个字符的磁盘空间。 Varchar列存储变长的字符数据。,2019/8/12,14,数据类型,二
8、进制型 二进制型数据是指字符串是由二进制值组成,而不是由字符组成。该类型通常用于时间标记(timestamp)和image类型。 对于二进制型数据的存储来说,SQL Server提供三种数据类型,分别为binary、varbinary和image。 binary用于存储长度固定的二进制字符串,varbinary用于存储长度可变的二进制字符串,image用于存储大的二进制字符串(理论上每行可达2GB)。,2019/8/12,15,数据类型,整型和精确数值型 SQL Server 2005提供的整型和精确数值类型有bit、int、smallint、tinyint和decimal、numeric。
9、最常用的是int和numeric类型。int类型是指取值在-21474836482147483647之间的整数,numeric类型则是十进制数。 bit数据类型可用于存储逻辑数据,可用作状态标志位,它只存储1或者0。并且该类型的值不允许为空值、不允许建立索引、几个bit列可占用同一字节。,2019/8/12,16,数据类型,浮点型 SQL Server 2005提供了float和real类型,来表示浮点数和实数。 float整型数据取值范围是-1.79E+3081.79E+308,real型数据的取值范围是-11.40E+3811.40E+38。 real类型存储在四个字节中,可以在real数
10、据类型中存储正的或者负的十进制值。如果不指定float数据类型的长度,它会被存储在8个字节中。,2019/8/12,17,数据类型,日期型 SQL Server 2005可以用datetime和smalldatetime数据类型来存储日期数据和时间数据。 smalldatetime的精度较低,包含的日期范围也较窄,但占用的空间小。 datetime类型数据的取值范围是1753年1月1日到9999年12月31日。可以省略datetime中的部分值,但如果全部省略,则默认的取值为1900,1,1,12: 00: 00: 00AM。如果省略的是时间部分,默认值为12:00: 00: 00。如果省略的
11、是日期部分,则默认值为1,l,1900。,2019/8/12,18,数据类型,字符串数据类型 SQL Server 2005提供三种Unicode字符串数据类型,分别为nchar、nvarchar和ntext。 SQL Server Unicode数据类型是基于SQL-92标准中的National Character数据类型的。SQL-92使用前缀字符号n来表示这些数据类型和值。 在使用Unicode数据类型时,一个列可以存储由Unicode标准所定义的任何字符,该字符包括各种字符集中所定义的所有字符。其中,ntext数据类型用来存储大量的文本,存储的数据通常是直接能够输出到显示设备上的字符,
12、显示设备可以是显示器、窗口或者打印机。,2019/8/12,19,数据类型,用户自定义数据类型 用户自定义数据类型,是基于SQL Server系统提供的数据类型。当多个表的列中要存储同样类型的数据,并且确保这些列具有完全相同的数据类型、长度和是否为空属性时,可使用用户自定义数据类型。 创建用户自定义数据类型必须提供名称、新数据类型所依据的系统数据类型、数据类型是否允许空值。,2019/8/12,20,创建与管理表,以学生信息系统为例,介绍如何用SSMS图形界面来创建表,以及对这些表进行管理。 学生信息系统共包括学生信息表(student)、课程信息表(course)、选课信息表(select)
13、三张表,具体表结构如表11-2、表11-3和表11-4所示。,2019/8/12,21,创建表,student表结构,2019/8/12,22,创建表,course表结构,select表结构,2019/8/12,23,创建表,创建步骤 在SSMS窗口中,展开“bnuep”选项,右击“表”选项,在弹出的快捷菜单中选择“新建表”命令,如图11-2所示。,2019/8/12,24,创建表,在弹出的“编辑”面板中,分别输入各列的名称、数据类型、长度、是否允许为空等属性(可以参考表11-2、表11-3和表11-4所示的表结构),如图11-3所示。,2019/8/12,25,创建表,输入完各列属性后,单击
14、 “保存”按钮,弹出“选择名称”对话框,如图11-4所示。在“选择名称”对话框中输入表的名称student,点击“确定”按钮表创建完成。 按照同样的方法和步骤创建course表和score表。,2019/8/12,26,约束,SQL Server中有五种约束类型,分别是CHECK、DEFAULT、PRIMARY KEY、FOREIGN KEY和UNIQUE。 CHECK约束 CHECK约束用于限制输入一列或多列的值的范围,通过逻辑表达式来判断数据的有效性,也就是一个列的输入内容必须满足CHECK约束的条件,否则,数据无法正常输入,从而强制数据的域完整性。 DEFAULT约束 若在表中某列定义了
15、DEFAULT约束,用户在插入新的数据行时,如果该列没有指定数据,那么系统将默认值赋给该列,当然该默认值也可以是空值。,2019/8/12,27,约束,PRIMARY KEY约束 在表中经常有一列或多列的组合,其值能唯一标识表中的每一行。这样的一列或多列成为表的主键,通过它可以强制表的实体完整性。 一个表有且只有一个主键,而且主键约束中的列不能为空值。如将student表中学号Sno设为该表的主键,因为它能唯一标识该表,且该列的值不为空。如果主键约束定义在不止一列上,则一列中的值可以重复,但主键约束定义中的所有列组合的值,必须唯一,因为该组合列是表的主键。,2019/8/12,28,约束,FO
16、REIGN KEY约束 外键,是用于建立和加强两个表(主表与从表)的一列或多列数据之间的连接的,当添加、修改或删除数据时,通过参照完整性来保证它们之间的数据的一致性。定义表间的参照完整性的顺序是先定义主表的主键,再对从表定义外键。 UNIQUE约束 用于确保表中的行在非主键中没有相同的列值。与PRIMARY KEY约束类似,UNIQUE约束也强制唯一性,为表中的一列或多列提供实体完整性。但UNIQUE约束用于非主键的一列或多列组合,且一个表可以定义多个UNIQUE约束,另外UNIQUE约束可以用于定义多列组合。,2019/8/12,29,CHECK,在Ssex上创建约束 在SSMS窗口中,右击
17、dbo.student选项,在弹出的快捷菜单中选择“修改”命令,选中Ssex后右击数遍,在弹出的快捷菜单中选择“CHECK 约束”,如图所示:,2019/8/12,30,CHECK,单击“添加”按钮,单击“表达式”后面的 按钮,进入如下图所示的“CHECK约束表达式”对话框。 如果已经在该列上创建了约束,则该操作将查看之前创建的CHECK约束表达式。 在文本框中输入约束表达式“Ssex=男 OR Ssex=女”。,2019/8/12,31,CHECK,最后,在“设计表”窗口单击“保存”按钮,完成了创建和保存CHECK约束的操作。用户输入时,若输入性别不是“男”或“女”,系统将报告输入无效。 删
18、除约束。,2019/8/12,32,DEFAULT,在Ssex上创建DEFAULT约束 选择“Ssex”列,在“列属性”选项卡中选择“默认值或绑定”,在右侧的文本框中输入“男”,单击“保存”按钮。 删除DEFAULT约束。,2019/8/12,33,PRIMARY KEY,将Sno定义为主键。 选择“Sno”列,右击,在弹出的快捷菜单中选择“设置主键”命令。 若主键由多列组成,先选中此列,按住Ctrl不放,同时用鼠标单击选择其他列,然后单击“设置主键”按钮。 移除主键。,2019/8/12,34,FOREGIN KEY,创建student表与select表之间的外键约束。 检查student表
19、中是否将“Sno”设置为主键。 选择“select”表,右击选择“修改”,单击“关系”按钮,在弹出的“外键关系”对话框中,单击“添加”按钮,如图所示:,2019/8/12,35,FOREGIN KEY,选中“表和列规范”单击后面的按钮,进入下图所示的界面。 在“主键表”下拉列表中选择student,单击主键表的下拉列表框选择Sno,在“外键表”下拉列表框中选择Sno。,2019/8/12,36,UNIQUE,给Sname添加UNIQUE约束 在“修改”定义窗口完成所有列的定以后,单击 “管理索引和键”按钮,打开“索引/键”对话框,单击“添加”按钮,在“列”下拉列表中选择“Sname”,在“是唯
20、一的”下拉列表中选择”是“。,2019/8/12,37,修改表结构,修改表名。 SQL Server允许修改一个表的名字,当表名改变后,与此相关的某些对象(如视图,存储过程等)将无效,因为它们都与表名有关。因此,建议一般不要随便更改一个已有的表名,特别是在其上已经定义了视图等对象。 右击“dbo.student”,在弹出的快捷菜单中,选择“重命名”命令,在原表上输入表的新名称即可。,2019/8/12,38,修改表结构,增加列。 给student增加”宿舍“属性。 右击“dbo.student”,在弹出的菜单中选择“修改”命令。 接着在“设计表”面板中,单击“第一个空白行”,输入列名“domi
21、tory(宿舍)”,数据类型选择“varchar(20)”,并选中“允许空”复选框。然后点击“保存”按钮。,2019/8/12,39,修改表结构,删除列。 删除刚才在student表中建立的“domitory”列。 打开student表的“修改”面板,右击“domitory”列,在弹出的快捷菜单中选择“删除列”命令。该列即被删除,最后单击“保存”按钮,以保存修改的结构。 修改已有列的属性。 和增加、删除列类似,打开表的“修改”面板,可以对已有列的列名、数据类型、长度以及是否允许为空值等属性直接进行修改。修改完毕后,单击“保存”按钮以保存修改的结构。 但是,在表中已有记录后,不要轻易修改表的结构
22、,特别是修改列的数据类型,以免产生错误。,2019/8/12,40,查看表结构,在SSMS窗口中,若要查看某个表的结构,则右击该表,在弹出的快捷菜单中选择“修改”命令,即可查看表信息。,2019/8/12,41,删除表,删除select表 右击”select“表,在弹出的快捷菜单选项中选择”删除“,此时,出现“删除对象”对话框,单击“确定”按钮即可将select表删除。,2019/8/12,42,操作表中的数据,查看表中的数据 在SSMS窗口中,右击需要查看数据的表,在弹出的快捷菜单中,选择“打开表”命令,打开查询窗口,即可看到表中的数据。 向表中插入、更新 、删除数据 打开查询窗口,在下面的
23、空白行处输入新的数据,然后点击“保存”按钮,完成插入数据的操作。 在已有的数据上进行修改,修改完毕后点击“保存”按钮,完成更新数据的操作。 右击需要删除的数据,在弹出的快捷菜单中选择“删除”命令,即可完成删除数据的操作。,2019/8/12,43,实验一,创建数据库bnu 创建表student(Sno, Sname, Ssex, Sage, Sdept, Tel) Sno,Char(10),主键 Sname,Varchar(10) Ssex,Nchar(2),男或女,默认值为男。 Sage,Int,1630 Sdept,Nchar(20) Tel,Varchar(13),2019/8/12,44,实验一,创建表course(Cno,Cname) Cno, char(10), 主键 Cname, Varchar(50) 创建表select(Sno, Cno, Score) Sno, char(10),主键,外键 Cno, char(10),主键,外键 Score,Int 在每张表中插入三条记录,练习操作查看、更新、删除记录。,THE END,Thank you,
链接地址:https://www.31doc.com/p-3323781.html