Download presentation
Presentation is loading. Please wait.
1
数据库技术与应用
2
数据表的创建和管理 表数据的管理 数据库完整性管理 管理数据表的方法、数据库完整性管理
第3章 数据表的管理与维护 数据表的创建和管理 表数据的管理 数据库完整性管理 管理数据表的方法、数据库完整性管理
3
? 问题提出 数据表与数据库是什么关系? 数据表与表数据的区别? 为什么要进行数据库完整性设置?
数据表(或称表)是数据库最重要的组成部分之一。数据库只是一个框架,数据表才是其实质内容。根据信息的分类情况,一个数据库中可能包含若干个数据表。 数据表与表数据的区别? 为什么要进行数据库完整性设置?
4
3.1 数据表的创建和管理 3.1.1 使用对象资源管理器创建数据表 3.1.2 使用T-SQL语言创建数据表
3.1.3 使用对象资源管理器对数据表进行管理 3.1.4 使用T-SQL语言对数据表进行管理
5
3.1 数据表的创建和管理 一个数据库可以拥有许多表,每个表都代表一个特定的实体。
例如,学生数据库可能包含学生个人信息、院系信息、课程信息、成绩信息等多个表。每个实体使用一个单独的表可以消除重复数据,使数据存储更有效并减少数据输入项错误。 SQL Server 2008中数据库的主要对象是数据表,创建好数据库后,就可以向数据库中添加数据表。 数据表由行和列组成,行有时也称为记录,列有时也称为字段或域。
6
3.1.1使用对象资源管理器创建数据表 在SQL Serve中,一个汉字占据两个字符的位置,因此计算一个字段长度时,一个汉字的长度是2Byte。
7
表约束,可选的关键字PRIMARY KEY、NOT NULL、UNIQUE、FOREIGN KEY 或 CHECK
3.1.2 使用T-SQL语言创建数据表 语法格式: CREATE TABLE [database_name.[owner.]|owner.] table_name ( {<column_definition> | column_name AS computed_column_expression | <table_constraint>∷=[CONSTRAINT constraint_name] } | [{PRIMARY KEY | UNIQUE}] ) [ON { filegroup | DEFAULT}] [TEXTIMAGE_ON{ filegroup | DEFAULT } ] <column_definition>∷={column_name data_type} [COLLATE<collation_name>] [DEFAULT constant_expression] 数据库拥有者 表名最多可包含 128 个字符 定义计算列的值的表达式 表约束,可选的关键字PRIMARY KEY、NOT NULL、UNIQUE、FOREIGN KEY 或 CHECK
8
3.1.2 使用T-SQL语言创建数据表 例3.1:在数据库Student中创建Student学生信息表,要求包含S_NO(学号)、NAME(姓名)、AGE(年龄)、SEX(性别)信息。 Use Student Go CREATE TABLE STD ( S_NO CHAR(7) , NAME CHAR(10), AGE SMALLINT, SEX CHAR(1) )
9
3.1.2 使用T-SQL语言创建数据表 例3.2:在数据库Student中创建STD_1学生信息表,要求包含S_NO(学号)、NAME(姓名)、AGE(年龄)信息,并限制年龄在15~25周岁之间,学号不能为空,指定学号为主关键字。 CREATE TABLE STD_1 ( S_NO CHAR(7) NOT NULL, NAME CHAR(10), AGE SMALLINT, PRIMARY KEY(S_NO), CHECK(AGE BETWEEN 15 AND 25) )
10
3.1.2 使用T-SQL语言创建数据表 例3.3:创建临时表temp_student 。 语句如下:
CREATE TABLE #temp_student ( 学号 SMALLINT NOT NULL , 姓名 VARCHAR(30) NOT NULL, 年龄 INT NOT NULL, PRIMARY KEY (学号) ) 临时表与永久表相似,但临时表存储在tempdb中,当不再使用时会自动删除。 临时表与永久表相似,但临时表存储在tempdb中,当不再使用时会自动删除。 除非使用 DROP TABLE 语句显式除去临时表,否则临时表将在退出其作用域时由系统自动除去: 临时表,是建立在系统临时文件夹中的表,当工作在十分大的表上运行时,在实际操作中你可能会需要运行很多的相关查询,来获的一个大量数据的小的子集,不是对整个表运行这些查询。而是让MySQL每次找出所需的少数记录,将记录选择到一个临时表可能更快些,然后对这些表运行查询。
11
3.1.3 使用对象资源管理器对数据表进行管理 使用对象资源管理器更改数据表名称
12
3.1.3 使用对象资源管理器对数据表进行管理 使用对象资源管理器删除数据表 勾选要删除的表对象
13
3.1.3 使用对象资源管理器对数据表进行管理 使用对象资源管理器修改数据表结构
14
Precision用于指定数据类型的精度;scale用于指定数据类型的小数位数。
3.1.4 使用T-SQL语言对数据表进行管理 修改数据表 语法格式: ALTER TABLE table { [ ALTER COLUMN column_name { new_data_type [ ( precision [ , scale ] ) ] [ COLLATE < collation_name > ] [ NULL | NOT NULL ]| {ADD | DROP } ROWGUIDCOL }] | ADD { [ < colum n_definition > ] | column_name AS computed_column_expression } [ ,...n ] | [ WITH CHECK | WITH NOCHECK ] ADD { < table_constraint > } [ ,...n ] | DROP { [ CONSTRAINT ] constraint_name | COLUMN column } [ ,...n ] | { CHECK | NOCHECK } CONSTRAINT{ ALL | constraint_name [ ,...n ] } | { ENABLE | DISABLE } TRIGGER { ALL | trigger_name [ ,...n ] } } Precision用于指定数据类型的精度;scale用于指定数据类型的小数位数。
15
3.1.4 使用T-SQL语言对数据表进行管理 例3.4在例3.1的STD学生信息表中增加zzmm(政治面貌)字段 增加该字段的语句:
ALTER TABLE Student ADD zzmm char(4) 例3.5:将例3.4中增加的字段zzmm的宽度由4修改为8。 修改该字段的语句: ALTER TABLE Student Alter column zzmm char(8)
16
3.1.4 使用T-SQL语言对数据表进行管理 删除数据表 语法格式: DROP TABLE table_name 注意:
(1)DROP TABLE 不能用于删除由 FOREIGN KEY 约束引用的表,必须先删除引用的 FOREIGN KEY 约束或引用的表。 (2)在系统表上不能使用 DROP TABLE 语句。 例3.9:删除当前数据库中的STD_1学生信息表。 Drop TABLE STD_1 例3.10:在同一个语句中指定多个表对它们进行删除。假设有一个stu数据库,此数据库中存在book表和temp2表。 DROP TABLE book, temp2
17
3.2 表数据的管理 3.2.1 使用对象资源管理器管理表数据 3.2.2 使用T-SQL语言管理表数据
18
3.2 表数据的管理 表数据的管理主要是指 操作方法 对表进行添加或插入新数据 更改或更新现有数据 删除现有数据
3.2 表数据的管理 表数据的管理主要是指 对表进行添加或插入新数据 更改或更新现有数据 删除现有数据 检索(或查询)现有数据的操作 操作方法 使用对象资源管理器 T-SQL语句
19
3.2.1 使用对象资源管理器管理表数据 在表设计器中管理数据
20
3.2.1 使用对象资源管理器管理表数据 在数据库关系图中管理数据
21
3.2.2 使用T-SQL语言管理表数据 表数据的添加 语法格式:
INSERT [INTO] table_or_view [(column_list)] data_values 例3.6:将新课程记录( ,网络技术与应用,选修,3)添加到课程信息数据表C_Info中。 语句如下: INSERT INTO C_Info VALUES (' ', '网络技术与应用', '选修', 3, Null )
22
3.2.2 使用T-SQL语言管理表数据 表数据的添加
例3.7在已经创建的数据库Student中的学院信息表D_Info。试将学院记录(16,商学院)、(17,文学院)、(20,法学院)添加到学院数据表D_Info中。 语句如下: INSERT INTO D_Info VALUES ('16','商学院'), ('17','文学院'), ('20','法学院') 22
23
3.2.2 使用T-SQL语言管理表数据 表数据的修改 语法格式: UPDATE { table_name | view_name }
SET { column_name = { expression | DEFAULT | NULL } = expression = column = expression } [ ,...n ] [ FROM { < table_source > } [ ,...n ] ]
24
3.2.2 使用T-SQL语言管理表数据 例3.8:将数据表C_Info中的所有学分加1。 无条件修改数据,使用语句:
UPDATE C_Info SET C_Credit=C_Credit+1 例3.9:将数据表C_Info中课程号为“ ”的学分减1。 有条件修改数据,使用语句: UPDATE C_Info SET C_Credit=C_Credit-1 WHERE C_NO =' '
25
3.2.2 使用T-SQL语言管理表数据 表数据的删除(删除表中的所有记录) DELETE语句 DELETE [ FROM ]
{ table_name | view_name } [ FROM { < table_source > } [ ,...n ] ] TRUNCATE TABLE语句 TRUNCATE TABLE [ { database_name.[ schema_name ]. | schema_name . } ] table_name [ ; ] TRUNCATE英 [trʌŋˈkeɪt] ,DELETE,DROP放在一起比较: TRUNCATE TABLE:删除内容、释放空间但不删除定义。 DELETE TABLE:删除内容不删除定义,不释放空间。 DROP TABLE:删除内容和定义,释放空间。
26
3.2.2 使用T-SQL语言管理表数据 SQL中删除语句的区别 注意:
DELETE TABLE: 删除表记录内容不删除表结构,不释放空间。 TRUNCATE TABLE: 删除表记录内容、释放空间但不删除表结构。 DROP TABLE: 删除表(表记录、表的结构、属性、索引也会删除)。 注意: TRUNCATE和不带WHERE子句的DELETE语句以及DROP都能删除表内数据; TRUNCATE 比 DELETE 速度快,且使用的系统和事务日志资源少。 DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。
27
3.3 数据库完整性管理 3.3.1 数据库完整性概述 数据库完整性的类型 使用对象资源管理器实现数据库完整性设置
28
3.3.1 数据库完整性概述 数据库完整性是指数据库中数据的正确性、有效性和一致性。 (1)正确性
指数据的合法性,如数值型数据只能包含数字,不能包含字母。 (2)有效性 指数据是否处在定义域的有效范围之内。 (3)一致性 指同一事实的两个数据应该一致,不一致即是不相容的。
29
3.3.2 数据库完整性的类型 数据库完整性有4种类型 实体完整性 一般用标识列、主键约束、唯一约束、唯一索引实现。 域完整性(或列完整性)
域完整性是指给定列的输入有效性。通过规则、默认、约束和触发器等数据库对象实现。 如 年龄0~150,一般用check等实现。 引用完整性 一般用外码实现。 用户定义完整性 针对某个特定关系数据库的约束条件。
30
3.3.3 使用对象资源管理器实现数据完整性的设置 主键约束操作
31
3.3.3 使用对象资源管理器实现数据完整性的设置 主键约束操作
输入新记录后(学号不在St_Info表),单击其他任意一条记录,此时系统提示出错 31
32
3.3.3 使用对象资源管理器实现数据完整性的设置 CHECK约束操作
在打开的“表设计器”中指向C_Credit字段并右键单击,单击“CHECK约束”命令,打开“CHECK约束”对话框。
33
3.3.3 使用对象资源管理器实现数据完整性的设置 默认值约束操作
34
本章小结 (1)数据表的创建和管理 (2)表数据的管理 (3)数据库完整性管理 主要工具是对象资源管理器及T-SQL语言。
主要 指对表进行添加或插入数据、更改或更新现有数据、删除现有数据、检索现有数据。 (3)数据库完整性管理 包括实体完整性、域完整性、参照完整性和用户自定义完整性。 数据库完整性问题的解决主要通过设置主键、各种约束、默认值和规则等数据库对象来保证。
Similar presentations