SQL server 数据表的操作
内容大纲:
- 以界面方式操作数据表
- 使用CREATE TABLE语句创建表
- 创建、修改和删除约束
- 使用ALTER TABLE语句修改表结构
- 使用DROP TABLE语句删除表
- 使用INSERT语句添加数据
- 使用UPDATE语句修改数据
- 使用DELETE语句删除数据
- 数据表关系
- 批量插入表信息
- 查看表信息
- 操作数据表常遇问题
-
以界面方式操作数据表
1.创建数据表
下面在SQL Server Management Studio中创建数据表“mrkj”,具体操作步骤如下。
①启动SQL Server Management Studio,并连接到SQL Server 2012中的数据库。
②鼠标右键单击“表”选项,在弹出的快捷菜单中选择“新建表”命令。
2.使用CREATE TABLE语句可以创建表,其基本语法如下
3.CREATE TABLE语句的参数及说明
-
创建、修改和删除约束
1.什么是约束?
数据库—由若干张数据表组成(理解为一个类库)
数据表—由行和列组成的一个二维表(理解为一个类)
列—字段(理解为表中对象的一个属性)
行—理解为表中的一个对象
约束是数据库中保证数据完整性的方法
(1)实体完整性
例如:每个表中有一个必须要指定的字段
(2)区域完整性
针对表中的某个字段进行特殊化限制
(3)参照完整性
表与表之间的一种特殊化关联限制
2.约束类型(5):
①主键约束(Primary KEy)
确定表中的标识列,(主键字段不能为空,必须唯一)
标识:确定一个对象的唯一表现
②外键约束(Foreign key)
确定表与表之间的联系方式,一般情况下通过从表的标识列进行确定
主表:给哪张表添加约束哪张表就是主表,辅助表为从表
③唯一约束(unique)
确定这个字段中的数据必须是唯一
④非空约束(not null)
确定这个字段中的数据必须不能为空
⑤检查约束(CHECK)
设置这个字段中的数据的特性
3.非空约束
列的为空性决定表中的行是否可为该列包含空值。空值(或 NULL)不同于零 (0)、空白或长度为零的字符串(如 “”)。NULL 的意思是没有输入。出现 NULL 通常表示值未知或未定义。
(1)创建非空约束
可以在CREATE TABLE创建表时,使用NOT NULL关键字指定非空约束,其语法格式如下:
[CONSTRAINT <约束名>] NOT NULL
(2)修改非空约束
修改非空约束的语法如下:
ALTER TABLE table_name
alter column column_name column_type null | not null
参数说明:
table_name:要修改非空约束的表名称。
column_name:要修改非空约束的列名称。
column_type:要修改非空约束的类型。
null | not null:修改为空或者非空。
4.主键约束
可以通过定义 PRIMARY KEY 约束来创建主键,用于强制表的实体完整性。一个表只能有一个 PRIMARY KEY 约束,并且 PRIMARY KEY 约束中的列不能接受空值。
由于 PRIMARY KEY 约束可保证数据的唯一性,因此经常对标识列定义这种约束。
(1)创建主键约束
①在创建表时创建主键约束
说明:
在上述的语句中,CONSTRAINT PK_ID PRIMARY KEY为创建一个主键约束,PK_ID为用户自定义的主键约束名称,主键约束名称必须是合法的标识符。
②在现有表中创建主键约束
在现有表中创建主键约束的语法如下:
ALTER TABLE table_name
ADD
CONSTRAINT constraint_name
PRIMARY KEY [CLUSTERED | NONCLUSTERED]
{(Column[,…n])}
参数说明:
CONSTRAINT:创建约束的关键字。
constraint_name:创建约束的名称。
PRIMARY KEY:表示所创建约束的类型为主键约束。
CLUSTERED | NONCLUSTERED:是表示为PRIMARY KEY或UNIQUE约束创建聚集或非聚集索引的关键字。PRIMARY KEY约束默认为CLUSTERED,UNIQUE约束默认为 NONCLUSTERED。 -
使用ALTER TABLE语句修改表结构
ALTER TABLE语句的参数及说明。
-
使用DROP TABLE语句删除表
1.使用DROP TABLE语句可以删除数据表,其语法如下:
DROP TABLE [ database_name . [ schema_name ] . | schema_name . ]
table_name [ ,…n ] [ ; ]
参数说明:
database_name:要在其中删除表的数据库的名称。
schema_name:表所属架构的名称。
table_name:要删除的表的名称。
-
使用INSERT语句添加数据
INSERT语句可以实现向表中添加新记录的操作。该语句可以向表中插入一条新记录或者插入一个结果集。
语法如下:
INSERT [ INTO]
table_or_view_name
VALUES
(expression) [,...n]
参数说明:
table_or_view_name:要接收数据的表或视图的名称。
VALUES:引入要插入的数据值的列表。
expression:一个常量、变量或表达式。表达式不能包含 SELECT 或 EXECUTE 语句。
INSERT语句可以实现向表中添加新记录的操作。该语句可以向表中插入一条新记录或者插入一个结果集。
语法如下:
INSERT [ INTO]
table_or_view_name
VALUES
(expression) [,...n]
参数说明:
table_or_view_name:要接收数据的表或视图的名称。
VALUES:引入要插入的数据值的列表。
expression:一个常量、变量或表达式。表达式不能包含 SELECT 或 EXECUTE 语句。
- 使用DELETE语句删除数据
DELETE语句用于从表或视图中删除行。
语法如下:
DELETE
[ FROM <table_source> [ ,…n ] ]
[ WHERE { <search_condition> } ]
DELETE语句的参数及说明。
- 数据表关系–一对一关系
一对一关系是指表A中的一条记录确实在表B中有且只有一条相匹配的记录。在一对一关系中,大部分相关信息都在一个表中。此关系的特点主要体现在以下几点:
分割一个含有许多列的表。
出于安全考虑而隔离表的某一部分。
存储可以很容易删除的临时数据,只需删除表即可删除这些数据。
存储只应用于主表子集的信息。
如果两个相关列都是主键或具有唯一约束,创建的就是一对一关系。
在学生管理系统中,“tb_Course”表用于存放课程的基础信息,这里定义为主表;“tb_Teacher”用于存放教师信息,这里定义为从表,且一个教师只能教一门课程。下面介绍如何通过这两张表创建一对一关系。
说明:
“一个教师只能教一门课程”,在这里不考虑一名教师教多门课程的情况。如:英语专业的英语老师,只能教英语。
操作步骤如下:
(1)启动SQL Server Management Studio,并连接到SQL Server 2012中的数据库。
(2)在“对象资源管理器”中展开“数据库”节点,展开指定的数据库“db_2012”。
(3)鼠标右键单击Course表,在弹出的快捷菜单中选择“设计”命令。
(4) 在表设计器界面中,右键单击“Cno”字段,在弹出的快捷菜单中选择“关系”命令,打开“外键关系”窗体,在该窗体中单击“添加”按钮。
(5)在外键关系窗体中,选择“常规”下面的“表和列规范”文本框中的“ ”按钮,添加表和列规范属性,弹出“表和列”窗体,在该窗体中设置关系名及主外键的表。
(6)在“表和列”的窗体中,单击“确定”按钮,返回到“外键关系”窗体,在“外键关系”窗体中单击“关闭”按钮,完成一对一关系的创建。
注意:
创建一对一关系之前,tno、Cno都应该设置为这两个表的主键,且关联字段类型必须相同。
案例:
- 数据表关系–一对多关系
一对多关系是最常见的关系类型,是指表A中的行可以在表B中有许多匹配行,但是表B中的行只能在表A中有一个匹配行。
如果在相关列中只有一列是主键或具有唯一约束,则创建的是一对多关系。例如,“tb_student”用于存储学生的基础信息,这里定义为主表;“tb_Course”用于存储课程的基础信息,一个学生可以学多门课程,这里定义为从表。下面介绍如何通过这两张表创建一对多关系。
操作步骤如下:
(1)启动SQL Server Management Studio,并连接到SQL Server 2012中的数据库。
(2)在“对象资源管理器”中展开“数据库”节点,展开指定的数据库“db_2012”。
(3)鼠标右键单击Course表,在弹出的快捷菜单中选择“设计”命令。
(4)在表设计器界面中,右键单击“Cno”字段,在弹出的快捷菜单中选择“关系”命令,打开“外键关系”窗体,在该窗体中单击“添加”按钮。
(5)在外键关系窗体中,选择“常规”下面的“表和列规范”文本框中的“ ”按钮,选择要创建一对多关系的数据表和列。弹出“表和列”窗体,在该窗体中设置关系名及主外键的表。
(6)在“表和列”的窗体中,单击“确定”按钮,返回到“外键关系”窗体,在“外键关系”窗体中单击“关闭”按钮,完成一对多关系的创建。 - 数据表关系—多对多关系
多对多关系是指关系中每个表的行在相关表中具有多个匹配行。在数据库中,多对多关系的建立是依靠第3个表即连接表实现的,连接表包含相关的两个表的主键列,然后从两个相关表的主键列分别创建与连接表中匹配列的关系。
例如,通过“商品信息表”与“商品订单表”创建多对多关系。首先就需要建立一个连接表(如“商品订单信息表”),该表中应该包含上述两个表的主键列,然后“商品信息表”和“商品订单表”分别与连接表建立一对多关系,以此来实现“商品信息表”和“商品订单表”的多对多关系。 - 批量插入数据
- 操作数据表常遇问题—创建外键约束失败
创建外键约束时提示:在被引用表中没有与外键 ‘FKEY_ID’ 中的引用列列表匹配的主键或候选键。无法创建约束。
这是因为要引用作为外键的列不是被引用表的主键,非主键的字段不能被引用做为外键。 - 操作数据表常遇问题—数据库被使用导致无法删除
删除数据库时提示:无法删除数据库,因为该数据库当前正在使用。
这是因为使用该数据时建立了连接,用后没有关闭连接,可以通过use建立其他数据库的使用连接,该数据库的连接自动断开,就可以删除了。 - 操作数据表常遇问题—修改表属性失败
通过“设计”修改表字段属性时提示:“不允许保存更改,您所做的更改要求删除并重建表。”导致所做修改无法保存。
解决:在SQL Server 2012的管理器中,选择菜单栏中的“工具”/“选项”菜单项,在弹出的对话框中依次选择“Designers”/“表设计器和数据库设计器”,然后取消勾选“阻止保存要求重新创建表的更改”即可。