SQL Server 数据库基本记录(三)

继续上一篇内容 SQL Server 数据库基本记录(二)

数据表

数据的完整性:数据的准确性和可靠性,不准确、不一致的数据,则导致数据 失去了完整性

实体完整性

  • 要求表中的所有的行唯一
UserIdUserPwdUserNameGender
bobo123456王波0

不能添加以下行,加粗部分表示重复

bobo123456王波0
  • 约束方法:唯一约束、主键约束、标识列

域完整性约束

  • 保证列值符合规定要求
UserIdUserPwdUserNameGender
bobo123456王波0

不能添加以下行,加粗部分表示密码长度小于六位

yuyu1236王雨1
  • 约束方法:限制数据类型、检查约束、外键约束、默认值、非空约束

引用完整性约束

  • 要求两表相同字段必须一致
SortIdSortName
1手机数码
2图书音像
3家用电器

下表相同字段必须一致,不能填写主键中未存在的内容

SortIdCommodityName
1IPhone 8
1OnePlus 5
3三门冰箱

下表不可添加,因为 SortId 不存在 4

SortIdCommodityName
4电商时代
  • 约束方法:外键约束

主外键

主键

  1. 表中一列或几列组合的,能够唯一标识表中的每一行
  2. 一个表只能有一个主键
  3. 多列组合当主键称为复合主键

原则:最少性和唯一性

外键

  1. 相对应于主键
  2. 一个表可以有多个外键

标识列

  • 自动增长列自动编号
  • 本身没有具体的含义,只是用来标识不同的实体

标识列的实现方式

  • 标识列用来区分不同的实体
  • 定义成标识列时,需要指定 标识种子标识增量,默认值都为 1
  • 标识列通常也被定义为 主键
  • 定义为标识列的列必须是 整型
  • 标识列数据是 自动增加 的,不能手动的为标识列插入值

空值:NULL 在填入数据值时可不填 默认值:表中的某列,用户不输入数据的时候,将被自动填入

数据类型

分类数据类型说明
文本数据类型
字符数据包括任意字母、符号或数字字符的组合
char
varchar
nchar
nvarchar
text
ntext
固定长度的非 Unicode 字符数据
可变长度非 Unicode 数据
固定长度的 Unicode 数据
可变长度的 Unicode 数据
存储长文本信息
存储可变长度的长文本
日期和时间datetime
数字数据类型
仅包含数字,包括整数和浮点数
int、smallint、float、real、numcric(18,0)整数、浮点数
货币类型数据
十进制货币值
money
bit 数据类型
表示 是/否 的数据
bit存储布尔数据类型

创建表

USE E_Market -- 指向当前所操作的数据库
GO -- 批处理标识
CREATE TABLE CommoditySort	-- 创建名为 CommoditySort 的表
(
	SortId int IDENTITY(1,1) NOT NULL,	-- SortId 列,不允许空值
	SortName varchar(50) NOT NULL	-- SortName 列,长度 50,不允许空值
)
复制代码

约束

约束类型

  1. 主键约束:要求主键列不能为空以及唯一
  2. 非空约束:要求该列不能存在空值
  3. 唯一约束:要求该列的值必须唯一,允许为空,但只能出现一个空值
  4. 检查约束:限制某列取值的范围是否合适
  5. 默认约束:设计某列的默认值
  6. 外键约束:用于在两表之间建立关系,需要指定引用主键的时哪一列
  • 主键约束与唯一约束的区别 -- 主键约束所在的列不允许有空值,唯一约束所列允许空值 -- 每个表中可以有一个主键,多个唯一键

语法

ALTER TABLE 表名
ADD CONSTRAINT 约束名 约束类型_约束列

E.g:
USE E_Market
GO
-- 为用户表UserInfo添加约束
ALTER TABLE UserInfo
ADD CONSTRAINT PK_UserId PRIMARY KEY(UserId),	-- 主键约束
	CONSTRAINT CK_UserPwd CHECK(LEN(UserPwd)>=6),	-- 唯一约束
	CONSTRAINT CK_Gender CHECK(Gender=0 OR Gender=1),	-- 唯一约束
	CONSTRAINT DF_GENDER DEFAULT(0) FOR Gender,	-- 默认约束
GO
复制代码

适用于表中没有任何数据时,若有数据,会报错

约束取名规则

推荐采用:约束类型_约束列

约束名例如
主键 (Primary Key) 约束PK_UserId
唯一 (Unique Key) 约束UK_UserCardId
默认 (Default Key) 约束DF_UserPasspwd
检查 (Check Key) 约束CK_Gender
外键 (Foreign Key) 约束FK_SortId

语法_已存在数据

ALTER TABLE 表名 WITH NOCHECK
ADD CONSTRAINT 约束名 约束类型 具体的约束说明

E.g:
-- 向已存在数据的表中添加约束
ALTER TABLE Employee WITH NOCHECK
ADD CONSTRAINT CK_EmployeeId CHECK(LEN(EmployeeId)=18)
GO
复制代码

对表中现有的数据不做检查,只对添加约束后再录入的数据进行检查

删除约束

ALTER TABLE 表名
DROP CONSTRAINT 约束名

E.g:
-- 删除检查约束
ALTER TABLE Employee
DROP CONSTRAINT CK_EmployeeId
GO
复制代码
  • 有时候表之间存在关系,删除约束时提示存在关系,这时需要先删除主键
-- 先删除主键
ALTER TABLE Employee
DROP CONSTRAINT PK_Employee
GO

-- 再删除检查约束
ALTER TABLE Employee
DROP CONSTRAINT CK_EmployeeId
GO
复制代码

数据库关系图

  • 对特定的数据库表进行可视化管理与分析
  • 一个数据库中可以创建多个数据库关系图

删除数据表

DROP TABLE 表名

E.g:
IF EXISTS (SELECT * FROM sysobjects WHERE name='CommodityInfo') -- 检测要删除的表是否存在
DROP TABLE CommodityInfo
复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值