[其它技巧]SQL 第06章 表的创建与管理.ppt
《[其它技巧]SQL 第06章 表的创建与管理.ppt》由会员分享,可在线阅读,更多相关《[其它技巧]SQL 第06章 表的创建与管理.ppt(61页珍藏版)》请在三一文库上搜索。
1、第6章 表的创建和管理*,6.1 创建表 6.2 表结构的修改 6.3 表的重命名与删除 6.4 向表中添加、更新、删除数据 6.5 数据完整性的概念与实施方法,返回目录,6.1 创建表,表是包含数据库中所有数据的数据库对象,用来存储各种各样的信息。 在SQL Server 2000中,一个数据库中最多可以创建200万个表,用户创建数据库表时,最多可以定义1024列,每行最多8060字节。在同一数据库的不同表中,可以有相同的字段,但在同一个表中不允许有相同的字段,而且每个字段都要求数据类型相同。 6.1.1 设计表的结构 在创建表之前,需要定义表中的列(字段)的名称,同时还需要定义每列的数据类
2、型和宽度。数据类型指定了在每列中存储的数据的类型,例如文本、数字、日期等等。宽度指定了可以向列中输入多少个字符或数字,也可以使用用户自定义型数据。除此之外,还需要设定表中列是否允许为空,是否有缺省值,是否设置为标识列。,1. 几个与表结构设计相关的概念 NULL与 NOT NULL 在数据库中NULL是一个特殊值,表示数值未知。 NULL不同于空字符或数字0,也不同于零长度字符串。 比较两个空值或将空值与任何其它数值相比均返回未知,这是因为每个空值均为未知。空值通常表示未知、不可用或以后添加数据。 如果某个列上的空值属性为NULL,表示接受空值;空值属性为NOT NULL,表示拒绝空值。 在程
3、序代码中,要检查空值以便只在具有有效(或非空)数据的行上进行某些计算。执行计算时消除空值很重要,因为如果包含空值列,某些计算(如平均值)会不准确。若要测试数据列中的空值,可在WHERE子句中使用IS NULL 或 IS NOT NULL。 注意:为了减少对已有查询或报表的维护和可能的影响,建议尽量少使用空值。, 缺省值(DEFAULT) 缺省值表示在用户未输入数据时列的取值。 计算列(CALCULATED COLUMN) 一个表的某些列的取值是由基于定义该列的表达式计算得到的。该列不是存储数据的列,是表的虚拟列,该列中的值并未存储在表中,而是在运行时经过计算而得到的。 标识列(IDENTITY
4、) IDENTITY属性使得某一列的取值是基于上一行的列值和为该列定义的步长自动生成的。IDENTITY列的值可以唯一地标识表中的一行。 定义一个IDENTITY列,必须给出一个种子值(初始值),一个步长值(增量)。在一个IDENTITY列定义后,每当向表中插入一行数据时,IDENTITY列就会自动产生下一个值。在插入数据行的语句中,不应包含IDENTITY列的值,该列的值由系统自动给出。,定义IDENTITY列时,应注意如下几点: 每张表只允许有一个IDENTITY列。 IDENTITY列不能被更新。 IDENTITY列不允许有NULL值。 IDENTITY列只能用于具有下列数据类型之一的列
5、:INT、SMALLINT、TINYINT、NUMERIC(小数部分为0)、DECIMAL(小数部分为0)。 通过函数ident_seed (table_name) 可获得seed值,通过ident_incr(table_name)可获得步长值,使用全局变量identity可以返回标识列的数据。 2. 表结构设计示例 以 teacher 表结构设计为例,teacher表有9个列,其中,teacher_id 为主键,性别采用BIT数据类型,0表示女教师,1表示男教师,默认值为1,邮政编码使用前面第三章定义过的用户自定义的数据类型postalcode。整个表的列性质如表6-1:(P91),6.1.
6、2 利用Transact-SQL语言创建表 语法格式如下: CREATE TABLE table_name (column_name data_type null|not null,n) 在上述语法形式中: table_name:为新创建的表指定的名字。 column_name:列名。 data_type :列的数据类型和宽度。 null|not null :指定该列是否允许为空。 ,n:允许创建多个字段。,【例6-1】用CREATE TABLE语句创建表department。该表有三个字段:系号(department_id)、系名(department_name)、系主任(departmen
7、t_header)。 use jwgl go CREATE TABLE department ( department_id char(6) NOT NULL , department_name nvarchar(20) NOT NULL , department_header nvarchar(8) NOT NULL ) 表创建完成后,如要查看表的属性,可执行系统存储过程sp_help 。,6.1.3 利用企业管理器创建表 以创建数据库JWGL中表teacher为例,下面进行使用企业管理器创建表的介绍。 进入企业管理器,分别点击“数据库”、“JWGL”、“表”,再点击菜单“操作”、“新建表”
8、(或右击“表”,在弹出的快捷菜单上点击“新建表”); 依次输入字段名teacher_id、teacher_name、sex、birth、department_id、profession、telephone、home_addr、postal_code及相应的数据类型、字段长度等设置值。注意,postal_code字段的数据类型使用用户自定义的数据类型postal_code ;, 设置计算列与标识列 : 计算列的设置:选择要设为计算列的字段,在公式对应的输入栏输入公式 标识列的设置:在表的任意地方按右键,点击“属性”,进入表的“属性”窗口,如图6-2,选择“表”选项卡,在“表的标识列”栏选择要设为
9、标识列的字段,点击“关闭”回到创建新表的窗口6-1,分别输入“标识种子”和“标识递增量”即可 最后点击工具栏上的存盘按钮“”即可。 表创建完成后,如要查看表的属性,可在企业管理器中右击要查看的表,点击“属性”即可。,本章首页,6.2 表结构的修改,在表创建之后,由于某些原因,比如客户需求的变化,或对用户需求分析的不恰当,可能需要对表的结构进行修改。有关表的修改操作包括:增加和删除列、改变列的名称、宽度、数据类型、改变表的名称等。 修改表的结构有两种方法: 1. 使用企业管理器修改 2. 使用ALTER TABLE命令,6.2.1 使用ALTER TABLE语句修改表结构 使用ALTER TAB
10、LE语句可以为表添加或删除列,也可以修改列性质。 1. ALTER TABLE语句的语法形式: ALTER TABLE table ALTER COLUMN column_name new_data_type ( precision , scale ) NULL | NOT NULL | ADD ,.n | DROP COLUMN drop_colum_name ,.n ,在以上语法形式中: column_name:要修改的列名。 new_data_type :要修改列的新数据类型。 precision:是指定数据类型的精度。 scale:是指定数据类型的小数位数。 add_column_na
11、me :要添加到表中的列名。 add_data_type :要添加到表中的列的数据类型。 drop_colum_name :要从表中删除的列名 ,.n :可以有多个列。,2. ALTER TABLE语句使用示例 【例6-2】将表book的book_name字段的长度先改为32,再改回30。 use jwgl go alter table book alter column book_name varchar(32) not null go alter table book alter column book_name varchar(30) not null 【例6-3】将表book增加两个字
12、段:book_copy_no,publish_date use jwgl Go alter table book add book_copy_no varchar(10),publish_date smalldatetime go,【例6-4】将表book的新增加的两个字段book_copy_no,publish_date删除 use jwxt go alter table book drop column book_copy_no,publish_date go 6.2.2 使用企业管理器修改表的结构 使用企业管理器修改表结构的步骤如下: 启动企业管理器。 分别点击“数据库”、“JWGL”、
13、“表”,企业管理器右边区域显示数据库JWGL中所有的表。 右击要修改的表(假设要修改的表为teacher),在系统弹出的快捷菜单点击“设计表”,系统将弹出如图6-3的窗口。, 如要增加一列,先选择新增加列的新位置,然后右击鼠标,在系统弹出的快捷菜单点击“插入列”,这时,窗口会在选定列的前面出现一个空行,你只要在空行里输入相应的列信息就可以了。 如要删除一列,可右击要删除的列,在系统弹出的快捷菜单点击“删除列”。 如要更改列的名称、数据类型、宽度可以在此窗口上直接修改。 修改完成后,点击工具栏上的保存按钮“”即可。,本章首页,6.3 表的重命名与删除,使用企业管理器或T-SQL语句可以对数据库中
14、的不再使用的表进行删除,也可以对表进行重新命名。但要注意,对于要删除的表必须确认是没用的表,而重命名一个表将会导致引用该表的存储过程、视图、触发器无效。所以,对于表的重命名与删除要慎重。 1. 使用T-SQL 语言进行 重命名表使用系统存储过程sp_rename。语法形式如下: sp_rename table_old_name , table_new_name 删除表使用DROP TABLE命令。DROP TABLE命令的语法形式如下: DROP TABLE table_name 2. 使用企业管理器进行 进入企业管理器、分别点击“数据库”、“JWGL”、“表”,右击要删除或重命名的表,在系统
15、弹出的快捷菜单上,分别点击“重命名表”或“删除表”即可。,本章首页,6.4 向表中添加、更新、删除数据,管理表中的数据有两种方式:T-SQL语句和企业管理器。 6.4.1 使用T-SQL 语言进行 1. 插入数据 向表中插入数据使用的是INSERT INTO语句。INSERT INTO语句的语法形式是: INSERT INTO table_name |view_name column_list) VALUES (values_list) |select_statement 其中: table_name |view_name :要插入数据的表名及视图名。 column_list :要插入数据的字
16、段名。 values_list :与column_list 相对应的字段的值。 select_statement :通过查询向表插入数据的条件语句。,在使用INSERT INTO语句向表插入数据时要注意以下几点: 当向表中所有列都插入新数据时,可以省略列名表,但是必须保证VALUES后的各数据项位置同表定义时顺序一致。 要保证表定义时的非空列必须有值,即使这个非空列没有出现在插入语句中,也必须如此。 字符型和日期型值插入时要加入单引号。 没有列出的数据类型应该具有以下属性之一:IDENTITY属性、Timestamp数据类型、具有null属性或者有一个缺省值。对于具有IDENTITY属性的列,
17、其值由系统给出,用户不必往表中插入数据。,【例6-5】向teacher表中插入一行数据,具体数据如下: 教师标识:dep04_006,姓名:李微,性别:女(0),出生年月:5-31-1965, 系号:dep_04,职位:讲师,联系电话:8802976,家庭住址:南京古平岗35号,邮政编码:210008 USE jwgl GO INSERT INTO teacher (teacher_id,teacher_name,sex,birth,department_id,profession,telephone,home_addr,postalcode) VALUES (dep04_006,李微,0,5
18、-31-1965,dep_04,讲师,8802976,南京古平岗35号,210008) 注意:,在用INSERT INTO插入数据时,也可以省略字段名列表,但使用时一定要小心,因为在INSERT INTO语句中省略了字段名列表,所以,VALUES后数值的顺序一定要与表中定义列的顺序相同,否则,要么插入数据不成功,要么插入数据成功但结果不正确。一行数据所造成的问题很难发现,但危害很大。因此,建议插入数据时要写上字段名表。 使用INSERT语句一次只能插入一行数据,而在INSERT语句中加入查询子句SELECT,通过SELECT子句从其他表或视图中选出数据,再将其插入到指定的表中,可以一次插入多行
19、数据。 使用SELECT子句插入数据时应该注意以下几点: 使用SELECT子句插入数据时,table_name和table_1ist可以是相同的表,也可以是不同的表 要插入的数据表table_name必须已经存在,也就是说,不能向不存在的表中插入数据 要插入数据的表的列和SELECT子句中列的数量和顺序必须相同,列的数据类型也要相同,如果不相同,SQL Server也要能自动转化。,2. 更新数据 SQL Server中,对数据的修改是通过UPDATE语句实现的。使用UPDATE语句可以一次修改一行数据,也可以一次修改多行数据,甚至整张表的数据。无论哪种修改,都要求修改前后的数据类型和数据个数
20、相同。 它的一般语法是: UPDATE table_name | view_name SET column_list |variable_list =expression WHERE search_conditions 在这个语法形式中: table_name | view_name :要更新数据的表名或视图名。 column_list |variable_list :要更新数据的字段列表或变量列表。,expression :更新后新的数据值。 WHERE search_conditions 更新数据所应满足的条件。 注意:UPDATE只能在一张表上操作,并且更新后的数据必须满足表原先的约束条
21、件,否则,数据更新将不会成功。 【例6-6】将示例5插入的一行数据中李微的职位由“讲师”改为“副教授”。 USE jwgl GO UPDATE teacher SET profession=副教授 WHERE teacher_id=dep04_006,3. 删除数据 如果表中的数据不再需要时,可以将其删除,以释放存储空间。对表中数据的删除是用DELETE语句实现的。 DELETE语句的语法形式是: DELETE FROM table_name WHERE search_conditions 注意:不加WHERE子句,将会删除表中的所有的记录,所以使用时应特别小心。 【例6-7】将示例5插入的数
22、据从teacher表中删除掉。 USE jwgl GO DELETE FROM teacher WHERE teacher_id = dep04_006,6.4.2 使用企业管理器进行* 进入企业管理器、分别点击“数据库”、“JWGL”、“表”,右击要添加数据的表,在系统弹出的快捷菜单上,分别点击“打开表”、返回“所有行”,系统将弹出如图6-4的窗口。P98 可以把鼠标定位在窗口任一行的任一列上,对此单元格的数据进行修改,也可以右击单元格,在系统弹出的快捷菜单上选择“删除”将某条记录删除掉。如果把光标定位在一个新的空行上,就可以添加新的数据了。但要注意,表中的列经常是带有约束的,比如数据类型、
23、空值约束、CHECK约束(如取值范围)等,无论修改数据,还是插入新数据,都必须遵循约束的限制,否则,修改或插入数据就可能不成功。,本章首页,6.5 数据完整性的概念与实验方法,6.5.1 数据完整性概念 数据完整性是指数据的正确性、有效性和相容性,是衡量数据库质量好坏的重要标准。 在用INSERT、DELETE、UPDATE语句修改数据库内容时,数据的完整性可能会遭到破坏。可能会存在下列情况:无效的数据被添加到数据库的表中。如:将学生考试成绩输入成负数; SQL Server提供了对数据库中表、列实施数据完整性的方法。对表进行设计数据完整性有两个重要内容:标识列的有效值和确定如何强制列中的数据
24、完整性。 SQL SERVER 三个完整性:,1. 域完整性 域完整性是指一个列的输入有效性,是否允许空值。强制域完整性的方法有:限制类型(通过设定列的数据类型)、格式(通过CHECK约束和规则)或可能值的范围(通过 CHECK 约束、DEFAULT定义、NOT NULL定义和规则)。 2. 实体完整性 实体完整性是指保证表中所有的行唯一。实体完整性要求表中的所有行都有一个唯一标识符。这个唯一标识符可能是一列,也可能是几列的组合,称之为主键。也就是说,表中主键在所有行上必须取值唯一。强制实体完整性的方法有:索引、UNIQUE约束、PRIMARY KEY约束或 IDENTITY属性 。 3. 参
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 其它技巧 其它技巧SQL 第06章 表的创建与管理 其它 技巧 SQL 06 创建 管理
链接地址:https://www.31doc.com/p-2002078.html