《第3章-数据表的管理与维护.ppt》由会员分享,可在线阅读,更多相关《第3章-数据表的管理与维护.ppt(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、中南大学信息科学与工程学院数据库技术与应用数据库技术与应用数据库技术与应用教材编写组数据库技术与应用教材编写组数据库技术与应用本章内容重点难点第第3 3章章 数据表的管理与维护数据表的管理与维护数据表的创建和管理数据表的创建和管理表数据的管理表数据的管理数据库数据库完整性管理完整性管理管理数据表的方法、数据库完整性管理管理数据表的方法、数据库完整性管理2数据库技术与应用问题提出问题提出数据表与数据库是什么关系?数据表与数据库是什么关系?数据表数据表(或称表或称表)是数据库最重要的组成部分之一。数据库只是数据库最重要的组成部分之一。数据库只是一个框架,数据表才是其实质内容。根据信息的分类情况,是
2、一个框架,数据表才是其实质内容。根据信息的分类情况,一个数据库中可能包含若干个数据表。一个数据库中可能包含若干个数据表。数据表与表数据的区别?数据表与表数据的区别?为什么要进行数据库完整性设置?为什么要进行数据库完整性设置?3数据库技术与应用3.1 3.1 数据表的创建和管理数据表的创建和管理3.1.1 3.1.1 使用对象资源管理器创建数据表使用对象资源管理器创建数据表3.1.2 3.1.2 使用使用T-SQLT-SQL语言创建数据表语言创建数据表3.1.3 3.1.3 使用对象资源管理器对数据表进行管理使用对象资源管理器对数据表进行管理3.1.4 3.1.4 使用使用T-SQLT-SQL语
3、言对数据表进行管理语言对数据表进行管理4数据库技术与应用3.1 3.1 数据表的创建和管理数据表的创建和管理一个数据库可以拥有许多表,每个表都代表一个特一个数据库可以拥有许多表,每个表都代表一个特定的实体。定的实体。例如,学生数据库可能包含学生个人信息、院系信息、课程例如,学生数据库可能包含学生个人信息、院系信息、课程信息、成绩信息等多个表。每个实体使用一个单独的表可以信息、成绩信息等多个表。每个实体使用一个单独的表可以消除重复数据,使数据存储更有效并减少数据输入项错误。消除重复数据,使数据存储更有效并减少数据输入项错误。SQL Server 2008SQL Server 2008中数据库的主
4、要对象是数据表,创建好数据中数据库的主要对象是数据表,创建好数据库后,就可以向数据库中添加数据表。库后,就可以向数据库中添加数据表。数据表由行和列组成,行有时也称为数据表由行和列组成,行有时也称为记录记录,列有时也称为,列有时也称为字字段或域。段或域。5数据库技术与应用3.1.13.1.1使用对象资源管理器创建数据表使用对象资源管理器创建数据表6在在SQL ServeSQL Serve中,一个汉字占据两个字符的位中,一个汉字占据两个字符的位置,因此计算一个字段长度时,一个汉字的置,因此计算一个字段长度时,一个汉字的长度是长度是ByteByte。数据库技术与应用3.1.2 3.1.2 使用使用T
5、-SQLT-SQL语言创建数据表语言创建数据表语法格式:语法格式:CREATE TABLECREATE TABLEdatabase_name.owner.|owner.table_namedatabase_name.owner.|owner.table_name(|column_name AS computed_column_expression|column_name AS computed_column_expression|=CONSTRAINT constraint_name =CONSTRAINT constraint_name|PRIMARY KEY|UNIQUE )|PRIMAR
6、Y KEY|UNIQUE )ON filegroup|DEFAULTON filegroup|DEFAULTTEXTIMAGE_ON filegroup|DEFAULT TEXTIMAGE_ON filegroup|DEFAULT =column_name data_type=column_name data_typeCOLLATECOLLATEDEFAULT constant_expressionDEFAULT constant_expression7表名表名最多可包含最多可包含 128 个字符个字符表约束,可选的关键字表约束,可选的关键字PRIMARY KEY、NOT NULL、UNIQU
7、E、FOREIGN KEY 或或 CHECK 定义计算列的值的表达式定义计算列的值的表达式数据库拥有者数据库拥有者数据库技术与应用3.1.2 3.1.2 使用使用T-SQLT-SQL语言创建数据表语言创建数据表例例3.13.1:在数据库:在数据库StudentStudent中创建中创建StudentStudent学生信息表,要求包含学生信息表,要求包含S_NOS_NO(学号)、(学号)、NAMENAME(姓名)、(姓名)、AGEAGE(年龄)、(年龄)、SEXSEX(性别)信(性别)信息,其中学号不能为空。息,其中学号不能为空。Use StudentUse StudentGoGoCREATE
8、TABLE STDCREATE TABLE STD(S_NO CHAR(7),(S_NO CHAR(7),NAME CHAR(10),NAME CHAR(10),AGE SMALLINT,AGE SMALLINT,SEX CHAR(1)SEX CHAR(1)8数据库技术与应用3.1.2 3.1.2 使用使用T-SQLT-SQL语言创建数据表语言创建数据表例例3.23.2:在数据库:在数据库StudentStudent中创建中创建STD_1STD_1学生信息表,要求包含学生信息表,要求包含S_NOS_NO(学号)、(学号)、NAMENAME(姓名)、(姓名)、AGEAGE(年龄)信息,并限制年龄
9、(年龄)信息,并限制年龄在在15152525周岁之间,指定学号为主关键字。周岁之间,指定学号为主关键字。CREATE TABLE STD_1CREATE TABLE STD_1(S_NO CHAR(7)NOT NULL(S_NO CHAR(7)NOT NULL,NAME CHAR(10),NAME CHAR(10),AGE SMALLINT,AGE SMALLINT,PRIMARY KEY(S_NO PRIMARY KEY(S_NO),),CHECK(AGE BETWEEN 15 AND 25 CHECK(AGE BETWEEN 15 AND 25)9数据库技术与应用3.1.2 3.1.2 使
10、用使用T-SQLT-SQL语言创建数据表语言创建数据表例例3.33.3:创建临时表:创建临时表temp_student temp_student。语句如下:语句如下:/*/*用用#说明说明temp_studenttemp_student为本地临时表为本地临时表*/CREATE TABLE CREATE TABLE#temp_student#temp_student(学号学号 SMALLINT NOT NULL,SMALLINT NOT NULL,姓名姓名 VARCHAR(30)NOT NULL,VARCHAR(30)NOT NULL,年龄年龄 INT NOT NULL,INT NOT NULL
11、,PRIMARY KEY(PRIMARY KEY(学号学号)临时表与永久表相似,但临时表存储在临时表与永久表相似,但临时表存储在tempdbtempdb中,当不再使用时会自动删除。中,当不再使用时会自动删除。10数据库技术与应用3.1.3 3.1.3 使用对象资源管理器对数据表进行管理使用对象资源管理器对数据表进行管理使用对象资源管理器更改数据表名称使用对象资源管理器更改数据表名称11数据库技术与应用3.1.3 3.1.3 使用对象资源管理器对数据表进行管理使用对象资源管理器对数据表进行管理使用对象资源管理器删除数据表使用对象资源管理器删除数据表12勾选要删除的表对象勾选要删除的表对象数据库技
12、术与应用3.1.3 3.1.3 使用对象资源管理器对数据表进行管理使用对象资源管理器对数据表进行管理使用对象资源管理器修改数据表结构使用对象资源管理器修改数据表结构13数据库技术与应用3.1.4 3.1.4 使用使用T-SQLT-SQL语言对数据表进行管理语言对数据表进行管理修改数据表修改数据表 语法格式:语法格式:ALTER TABLE ALTER TABLE tabletable ALTER COLUMN ALTER COLUMN column_namecolumn_name new_data_typenew_data_type (precision ,scale (precision ,
13、scale )COLLATE COLLATE NULL|NOT NULL|ADD|DROP ROWGUIDCOL NULL|NOT NULL|ADD|DROP ROWGUIDCOL|ADD ADD|column_namecolumn_name AS AS computed_column_expressioncomputed_column_expression ,.n ,.n|WITH CHECK|WITH NOCHECK ADD|WITH CHECK|WITH NOCHECK ADD ,.n ,.n|DROP DROP CONSTRAINT CONSTRAINT constraint_name
14、constraint_name|COLUMN|COLUMN columncolumn ,.n ,.n|CHECK|NOCHECK CONSTRAINT ALL|CHECK|NOCHECK CONSTRAINT ALL|constraint_nameconstraint_name ,.n ,.n|ENABLE|DISABLE TRIGGER ALL|ENABLE|DISABLE TRIGGER ALL|trigger_nametrigger_name ,.n ,.n 14Precision用于指定数据类型的精度;用于指定数据类型的精度;scale用于指定数据类型的小数位数。用于指定数据类型的小数
15、位数。数据库技术与应用3.1.4 3.1.4 使用使用T-SQLT-SQL语言对数据表进行管理语言对数据表进行管理例例3.63.6在在例例3.13.1的的STDSTD学生信息表中增加学生信息表中增加zzmmzzmm(政治面貌)(政治面貌)字段字段增加该字段的语句:增加该字段的语句:ALTERALTER TABLE TABLE StudentStudent ADDADD zzmm char(4)zzmm char(4)例例3.73.7:将例:将例3.63.6中增加的字段中增加的字段zzmmzzmm的宽度由的宽度由4 4修改为修改为8 8。修改该字段的语句:修改该字段的语句:ALTERALTER
16、TABLE TABLE StudentStudent AlterAlter column zzmm char(8)column zzmm char(8)15数据库技术与应用3.1.4 3.1.4 使用使用T-SQLT-SQL语言对数据表进行管理语言对数据表进行管理删除数据表删除数据表语法格式:语法格式:DROP DROP TABLE TABLE table_name table_name注意注意:(1)DROP TABLE 不能用于删除由不能用于删除由 FOREIGN KEY 约束引用的表,约束引用的表,必须先删除引用的必须先删除引用的 FOREIGN KEY 约束或引用的表。约束或引用的表。
17、(2)在系统表上不能使用)在系统表上不能使用 DROP TABLE 语句。语句。例例3.93.9:删除当前数据库中的:删除当前数据库中的STD_1STD_1学生信息表。学生信息表。Drop TABLE Drop TABLE STD_1STD_1例例3.103.10:在同一个语句中指定多个表对它们进行删除。假设有一个:在同一个语句中指定多个表对它们进行删除。假设有一个stustu数数据库,此数据库中存在据库,此数据库中存在bookbook表和表和temp2temp2表。表。DROP TABLE DROP TABLE book,temp2book,temp216数据库技术与应用3.2 3.2 表数
18、据的管理表数据的管理3.2.1 3.2.1 使用对象资源管理器管理表数据使用对象资源管理器管理表数据3.2.2 3.2.2 使用使用T-SQLT-SQL语言管理表数据语言管理表数据17数据库技术与应用3.2 3.2 表数据的管理表数据的管理表数据的管理主要是指表数据的管理主要是指对表进行添加或插入新数据对表进行添加或插入新数据更改或更新现有数据更改或更新现有数据删除现有数据删除现有数据检索(或查询)现有数据的操作检索(或查询)现有数据的操作操作方法操作方法使用对象资源管理器使用对象资源管理器T-SQLT-SQL语句语句18数据库技术与应用3.2.1 3.2.1 使用对象资源管理器管理表数据使用
19、对象资源管理器管理表数据在表设计器中管理数据在表设计器中管理数据19数据库技术与应用3.2.1 3.2.1 使用对象资源管理器管理表数据使用对象资源管理器管理表数据在数据库关系图中管理数据在数据库关系图中管理数据20数据库技术与应用3.2.2 3.2.2 使用使用T-SQLT-SQL语言管理表数据语言管理表数据表数据的添加表数据的添加语法格式:语法格式:INSERT INTO INSERT INTO table_or_viewtable_or_view(column_listcolumn_list)data_valuesdata_values例例3.133.13:将新课程记录:将新课程记录(9
20、7200449720044,网络技术与应用,选修,网络技术与应用,选修,3 3)添加到课程信息数据表添加到课程信息数据表C_InfoC_Info中。中。语句如下:语句如下:INSERTINSERT INTO INTO C_InfoC_Info VALUES VALUES(9720044,(9720044,网络技术与应用网络技术与应用,选修选修,3,3,Null Null )21数据库技术与应用3.2.2 3.2.2 使用使用T-SQLT-SQL语言管理表数据语言管理表数据表数据的添加表数据的添加例例3.15在已经创建的数据库在已经创建的数据库Student中的学院信息表中的学院信息表D_Inf
21、o。试。试将学院记录(将学院记录(16,商学院)、(,商学院)、(17,文学院)、(,文学院)、(20,法学,法学院)添加到学院数据表院)添加到学院数据表D_Info中。中。语句如下:语句如下:INSERT INTO D_Info VALUES(16,商学院商学院),(17,文学院文学院),(20,法学院法学院)22数据库技术与应用3.2.2 3.2.2 使用使用T-SQLT-SQL语言管理表数据语言管理表数据表数据的修改表数据的修改语法格式:语法格式:UPDATEUPDATE table_nametable_name|view_nameview_name SETSET column_name
22、column_name=expression|DEFAULT|NULL =expression|DEFAULT|NULL|variable=expression|variable=expression|variable=column=expression ,.n|variable=column=expression ,.n FROM FROM ,.n ,.n 23数据库技术与应用3.2.2 3.2.2 使用使用T-SQLT-SQL语言管理表数据语言管理表数据例例3.163.16:将数据表:将数据表C_InfoC_Info中的所有学分加中的所有学分加1 1。无条件修改数据,使用语句:无条件修改数
23、据,使用语句:UPDATE UPDATE C_InfoC_Info SET SET C_CreditC_Credit=C_Credit+1=C_Credit+1例例3.173.17:将数据表:将数据表C_InfoC_Info中课程号为中课程号为“9710011”9710011”的学分减的学分减1 1。有条件修改数据,使用语句:有条件修改数据,使用语句:UPDATE UPDATE C_InfoC_InfoSET SET C_CreditC_Credit=C_Credit-1=C_Credit-1 WHERE C_NO=9710011WHERE C_NO=971001124数据库技术与应用3.2.
24、2 3.2.2 使用使用T-SQLT-SQL语言管理表数据语言管理表数据表数据的删除表数据的删除(删除表中的所有记录删除表中的所有记录)DELETEDELETE语句语句DELETE FROM table_name|view_name FROM ,.n TRUNCATE TABLETRUNCATE TABLE语句语句TRUNCATE TABLE database_name.schema_name.|schema_name.table_name ;25数据库技术与应用3.2.2 3.2.2 使用使用T-SQLT-SQL语言管理表数据语言管理表数据SQL中删除语句的区别中删除语句的区别DELETE
25、TABLE:删除表记录删除表记录内容不删除表结构,不释放空间。内容不删除表结构,不释放空间。TRUNCATE TABLE:删除表记录删除表记录内容、释放空间但不删除表结构。内容、释放空间但不删除表结构。DROP TABLE:删除表删除表(表记录、表的结构、属性、索引也会删除)。(表记录、表的结构、属性、索引也会删除)。注意:注意:1.TRUNCATE和不带和不带WHERE子句的子句的DELETE语句以及语句以及DROP都能删除表内都能删除表内数据;数据;2.TRUNCATE 比比 DELETE 速度快速度快,且使用的系统和事务日志资源少。,且使用的系统和事务日志资源少。DELETE 语句每次删
26、除一行,并在事务日志中为所删除的每行记录一项。语句每次删除一行,并在事务日志中为所删除的每行记录一项。26数据库技术与应用3.2.2 3.2.2 使用使用T-SQLT-SQL语言管理表数据语言管理表数据例例3.183.18:设学生数据库:设学生数据库student_dbstudent_db中存在中存在Table_1Table_1表,并且有若表,并且有若干记录,要求删除干记录,要求删除Table_1Table_1表中全部记录,但保留数据表结构。表中全部记录,但保留数据表结构。这是无条件这是无条件全部全部删除记录,使用语句如下:删除记录,使用语句如下:TRUNCATE TABLE student_
27、db.dbo.Table_1例例3.193.19:在:在C_InfoC_Info表中删除课程号为表中删除课程号为“9720045”9720045”的记录。的记录。这是有条件删除记录,使用语句如下:这是有条件删除记录,使用语句如下:DELETE FROM C_Info WHERE C_NO=972004527数据库技术与应用3.3 3.3 数据数据库库完整性管理完整性管理3.3.1 数据库完整性概述数据库完整性概述3.3.2 数据库完整性的类型数据库完整性的类型3.3.3 使用对象资源管理器实现数据库完整性设置使用对象资源管理器实现数据库完整性设置28数据库技术与应用3.3.1 3.3.1 数据
28、库完整性概述数据库完整性概述数据库完整性是指数据库中数据的数据库完整性是指数据库中数据的正确性、有效性正确性、有效性和一致性和一致性。(1)正确性)正确性指数据的合法性,如数值型数据只能包含数字,不能包含字母。指数据的合法性,如数值型数据只能包含数字,不能包含字母。(2)有效性)有效性指数据是否处在定义域的有效范围之内。指数据是否处在定义域的有效范围之内。(3)一致性)一致性指同一事实的两个数据应该一致,不一致即是不相容的。指同一事实的两个数据应该一致,不一致即是不相容的。29数据库技术与应用3.3.2 3.3.2 数据库完整性的类型数据库完整性的类型数据库完整性有数据库完整性有4 4种类型种
29、类型实体完整性实体完整性一般用标识列、主键约束、唯一约束、唯一索引实现。一般用标识列、主键约束、唯一约束、唯一索引实现。域完整性(或列完整性)域完整性(或列完整性)域完整性是指给定列的输入有效性。域完整性是指给定列的输入有效性。通过规则、默认、约束通过规则、默认、约束和触发器等数据库对象实现。和触发器等数据库对象实现。如如 年龄年龄0 0150150,一般用,一般用checkcheck等实现。等实现。引用完整性引用完整性一般用外码实现。一般用外码实现。用户定义完整性用户定义完整性针对某个特定关系数据库的约束条件。针对某个特定关系数据库的约束条件。30数据库技术与应用3.3.3 3.3.3 使用
30、对象资源管理器实现数据完整性的设置使用对象资源管理器实现数据完整性的设置主键约束操作主键约束操作31数据库技术与应用3.3.3 3.3.3 使用对象资源管理器实现数据完整性的设置使用对象资源管理器实现数据完整性的设置主键约束操作主键约束操作 输入新记录后输入新记录后(学号不在学号不在St_InfoSt_Info表表),),单击其他任意一条记录,此时系统提单击其他任意一条记录,此时系统提示出错示出错32数据库技术与应用3.3.3 3.3.3 使用对象资源管理器实现数据完整性的设置使用对象资源管理器实现数据完整性的设置CHECKCHECK约束操作约束操作在打开的在打开的“表设计器表设计器”中指向中
31、指向C_CreditC_Credit字段并右键单击,单字段并右键单击,单击击“CHECKCHECK约束约束”命令,打开命令,打开“CHECKCHECK约束约束”对话框。对话框。33数据库技术与应用3.3.3 3.3.3 使用对象资源管理器实现数据完整性的设置使用对象资源管理器实现数据完整性的设置默认值约束操作默认值约束操作34数据库技术与应用本章小结本章小结(1 1)数据表的创建和管理)数据表的创建和管理主要工具是对象资源管理器及主要工具是对象资源管理器及T-SQLT-SQL语言。语言。(2 2)表数据的管理)表数据的管理主要主要 指对表进行添加或插入数据、更改或更新现有数据、指对表进行添加或
32、插入数据、更改或更新现有数据、删除现有数据、检索现有数据。删除现有数据、检索现有数据。(3 3)数据库完整性管理)数据库完整性管理包括实体完整性、域完整性、参照完整性和用户自定义完整包括实体完整性、域完整性、参照完整性和用户自定义完整性。性。数据库完整性问题的解决主要通过设置主键、各种约束、默数据库完整性问题的解决主要通过设置主键、各种约束、默认值和规则等数据库对象来保证。认值和规则等数据库对象来保证。35数据库技术与应用 本章思考本章思考(1 1)数据通常存储在什么对象中?表对象存储在什么文件中?什么用户可)数据通常存储在什么对象中?表对象存储在什么文件中?什么用户可以对表对象进行操作?以对
33、表对象进行操作?(2 2)什么是数据的完整性?数据完整性包括哪些内容?为什么要使用数据)什么是数据的完整性?数据完整性包括哪些内容?为什么要使用数据的完整性?的完整性?(3 3)假定利用)假定利用CREATE TABLE CREATE TABLE 命令建立下面的命令建立下面的BOOKBOOK表:表:CREATE TABLE BOOKCREATE TABLE BOOK(总编号总编号 char(6),char(6),分类号分类号char(6),char(6),书名书名char(6),char(6),单价单价 numeric(10,2)numeric(10,2)则则“单价单价”列的数据类型是什么?列宽度是多少?是否有小数位?列的数据类型是什么?列宽度是多少?是否有小数位?(4 4)在)在SQL Server SQL Server 中删除数据表和删除表数据是一个问题吗?为什么?若中删除数据表和删除表数据是一个问题吗?为什么?若要删除表的定义及其数据,应使用什么语句?要删除表的定义及其数据,应使用什么语句?(5 5)什么是实体完整性?实体完整性可通过什么措施实现?主键约束和唯)什么是实体完整性?实体完整性可通过什么措施实现?主键约束和唯一性约束有什么区别?一性约束有什么区别?36数据库技术与应用本章结束37
限制150内