数据表管理
数据表基本概念
主键
:表中一列或者多列组合的,能够唯一的标识表中的每一行,一个表只能有一个主键,多列组合当主键称为复合主键。
外键
:相对应于主键而言。一个表中可以有多个外键。
标识列:
又叫做自动增长列或者自动编号,本身没有具体的含义只是用来标识不同的实体。
- 标识列用来区分不同的实体
- 定义成标识列时,需要指定标识种子和标识增量,默认值都是1
- 标识列通常也被定义为主键
- 定义为标识列的列必须是整型
- 标识列的数据是自动增加的,不能手动的为标识列插入值。
数据类型
视图下创建表
。
右键表,新建。
当字段名字为关键字时,自动添加中括号。
SQL语句创建表
USE E_Market--选择数据库
GO
CREATE TABLE CommoditySort--CREATE TABLE 表名
(
SortId int IDENTITY(1,1)NOT NULL,--代表的意思 :字段名 数据类型 标识列自动增长(标识种子,每次增长) 不为空
SortName varchar(50)NOT NULL
)
GO
约束的类型
数据完整性:要求数据具有准确性和可靠性。
实体完整性:表中的每一行都叫做一个实体,要求表中的所有的行唯一。例如:不能有相同的两个信息被录入。
约束方法:唯一约束,主键约束,标识列。
域完整性约束:保证列值符合规定要求。例如:密码长度至少6位。
约束方法:限制数据类型,检查约束,外键约束,默认值,非空约束。
引用完整性约束:要求两表相同字段必须一致。引用完整性确保键值在所有表中一致。这样的一致性要求不能引用不存在的值,如果键值更改了,那么在整个数据库中,对该键值的所有引用要进行一致的更改。
约束方法:主键约束
主键约束:
主键列不能为空,主键列唯一,只有主键列才能被作为其他表的外键所创建。
右键选中的表,选择设计,然后选中相应的字段设置为主键,需要标识列就在下方属性选择。
例如:将EmployeeNo设置为主键,标识种子从1001开始,每次增加1
外键约束:
用于在两表之间建立关系,需要指定引用主表是哪一列。
右键选择关系。添加,然后选择表和列规范,然后设置相对应的主键和外键。
唯一约束:
要求该列的值必须是唯一的,允许未空,但只能有一个
选中字段右键选择索引/键。选择添加,然后将类型改为唯一键,选择要使用唯一键的列。
默认约束:
某列没有写值的话,有一个默认值
检查约束:
通过逻辑表达式判断数据的有效性,用来限制某列或者多列取值的范围。
右键选择check约束,然后输入表达式即可。
非空约束:
要求该列不能为空值。
例子:我们创建两个表,一个部门表,一个员工表。
1.外键约束,我们将员工所属的部门设置为外键约束。有四个部门,当我们设置为5时,就会出错,因为外键只能引用主键表中有的内容。
2.检查约束:当我们输入的年龄不符合要求时,报错。
注意:当我们录入完数据的时候,最后发现主键的值并不是连续的,这是因为当我们录入错误的时候,他已经取了一个值,我们更改错误的时候,他自动取下一个值。
使用SQL语句添加约束。
对E_Market数据库的UserInfo表添加约束
USE E_Market--选择数据库
GO
ALTER TABLE UserInfo--选择表
ADD CONSTRAINT PK_UserId Primary Key(UserId),--对UserId设置主键
CONSTRAINT CK_UserPwd CHECK(LEN(UserPwd)>=6),--密码长度大于等于6
CONSTRAINT CK_Gender CHECK(Gender=0 OR Gender=1),--值只能为0或1
CONSTRAINT DK_Gender DEFAULT(0) FOR Gender,--默认值为0
CONSTRAINT CK_Email CHECK(Email LIKE '%@%')--Email里要包含@
GO
添加外键约束:
CONSTRAINT FK_UserId FOREIGN KEY(UserId) REFERENCES UserInfo(UserId)--引用UserInfo表中的UserId
向已有数据的表中添加约束
不检查已经存在的数据,对后加入的数据进行检查
ALTER TABLE Employee WITH NOCHECK
ADD CONSTRAINT CK_EmployeeId CHECK(LEN(EmployeeId)=18)
GO
删除约束
视图删除:
sql语句删除约束:
--删除Employee表中的主键
ALTER TABLE Employee
DROP CONSTRAINT PK_UserId
GO
数据库关系图
对特定的数据库表进行可视化管理与分析,一个数据库可以创建多个数据库关系图。
(1)可以清楚的看到表之间的主外键引用关系
(2)建立引用关系时,从主表的主键向子表的引用键拖动。
(3)在设计状态下是从子表向主表建立关系,数据库关系图下则刚好相反。
删除数据表
视图下删除表:要注意先删除没有被引用的表,否则会报错。
sql语句删除表:
USE Demo--选择数据库
GO
DROP TABLE Employee--DROP TABLE 表名
DROP TABLE Post
GO