博客
关于我
数据库原理与应用(SQL Server)教程 主键、外键以及联合主键、复合主键和设置种子数目和增量
阅读量:571 次
发布时间:2019-03-09

本文共 1872 字,大约阅读时间需要 6 分钟。

文章目录


前言

这篇文章,我们将通过知识点以及例子来了解SQL Server中主键、外键以及联合主键和复合主键的相关创建操作,以下我们均使用T-SQL语句来创建。

注:以下例子中所有的数据表都创建在Sales数据库下。

一、主键、联合主键和复合主键

(一)主键

主键格式:

主键即在要设置的字段的后面加上PRIMARY KEY就可以了。

我们给出下表,也就是我们接下来要用T-SQL语句进行操作的表:

在这里插入图片描述

在SQL Server查询分析器中输入以下语句:

USE SalesCREATE TABLE Category(  CategoryID int NOT NULL PRIMARY KEY,  CategoryName varchar(20) NOT NULL,  Description varchar(80) NULL)

(二)联合主键

联合主键就是用多个字段一起组成主键,例如:

USE SalesCREATE TABLE grade(  student char(10) NOT NULL,  coursestudent char(10) NOT NULL,  grade int NOT NULL,  PRIMARY KEY(student,coursestudent))

其中字段student和coursestudent就是联合主键

(三)复合主键

复合主键跟联合主键的差别是联合主键体现在多个表上,而复合主键体现在一个表中的多个字段。复合主键即数据表中的主键含有一个以上的字段组成。

例如:

USE SalesCREATE TABLE Test(  NO_1 char(10) NULL,   NO_2 char(20) NOT NULL,  NO_3 varchar(10) NOT NULL,  PRIMARY KEY(NO_1,NO_2))

这上面的PRIMARY KEY(NO_1,NO_2)组合起来就是复合主键

二、外键、设置种子数目和增量

(一)外键的概念

外键即用于与另外一个数据表的关联,是确定另一个表的字段,例如有两个表分别是基本表A和信息表B,其中C是表A的主键,而表B中也有C字段,则我们称C就是B的外键,所以外键的作用就是来维护多个表之间数据的一致性。

(二)添加外键

添加外键我们分为两种,一种是在创建数据表时设置外键,另一种则是修改表的形式来设置,我们先来看第一种的格式:

CREATE TABLE Test(  列名 
<参数>
,[,...n] FOREIGN KET
<列名>
REFERENCES
<目标表名>
)

第二种格式,也就是我们已经创建了表,现在通过修改表来添加外键:

ALTER TABLE Test  ADD CONSTRAINT 
<外键名>
REFERENCES
<外键表(即被别的表引为外键的表)>

(三)设置种子数目和增量

设置种子数目和增量的格式是:

列名 IDENTITY(种子数目,种子增量)

e.g.

USE SalesCREATE TABLE Test(  NO_1 char(10) IDENTITY(1000,1) NULL,   NO_2 char(20) NOT NULL,  NO_3 varchar(10) NOT NULL,  PRIMARY KEY(NO_1,NO_2))

上sql语句中,“NO_1 char(10) IDENTITY(1000,1) NULL”, IDENTITY(1000,1)表示的含义就是其约束是自动增长种子1000,增长值为1。

接下来我们通过一个例子来深刻了解外键以及设置种子数目和增量的用法来创建数据表。

例:给出下表,使用T-SQL语句进行建表
在这里插入图片描述

在SQL Server查询分析器中输入以下语句:

USE SalesCREATE TABLE Orders(  OrderID int IDENTITY(1001,1) NOT NULL PRIMARY KEY,  CustomerID char(3) NOT NULL ,  SaleID char(3) NOT NULL,  OrderDate datetime NULL,  Notes varchar(80) NULL,  FOREIGN KEY CustomerID REFERENCES Orders,  FOREIGN KEY SaleID REFERENCES Orders)

结语

文章到此结束,如有错误欢迎读者指出!

转载地址:http://yawpz.baihongyu.com/

你可能感兴趣的文章
ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名
查看>>
NHibernate学习[1]
查看>>
NHibernate异常:No persister for的解决办法
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_更新时如果目标表中不存在记录就改为插入数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0059
查看>>
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表或全表增量同步_实现指定整库同步_或指定数据表同步配置_04---大数据之Nifi工作笔记0056
查看>>
NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_生成插入Sql语句_实际操作02---大数据之Nifi工作笔记0041
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_无分页功能_02_转换数据_分割数据_提取JSON数据_替换拼接SQL_添加分页---大数据之Nifi工作笔记0037
查看>>
NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
查看>>
nifi使用过程-常见问题-以及入门总结---大数据之Nifi工作笔记0012
查看>>
NIFI分页获取Mysql数据_导入到Hbase中_并可通过phoenix客户端查询_含金量很高的一篇_搞了好久_实际操作05---大数据之Nifi工作笔记0045
查看>>
NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
查看>>
Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
查看>>