在使用数据库时,绝大多数时间都是在使用基本表。

SQL Server数据类型

截图来源: https://www.w3school.com.cn/sql/sql_datatypes.asp

创建基本表

基本格式如下:

create table <表名>
(
<列名1> <数据类型> [<列级完整性约束条件>],
……
<列名n> <数据类型> [<列级完整性约束条件>]
[, <表级完整性约束条件>]
)

如果完整性约束涉及到多个属性列,则必须定义在表级上,否则可以定义在列级或表级

如下创建一个Persons基本表:

use test -- 在该数据库中创建基本表
go
create table Persons
(
Id_P int primary key, -- Id_P为主键
LastName nvarchar(20),
FirstName nvarchar(20),
Address nvarchar(50),
City nvarchar(10)
)
go

完整性约束

完整性约束的用途是限制输入到基本表中的值的范围,SQL的完整性约束可分为列级完整性约束和表级完整性约束:

  • 列级完整性约束:针对关系属性值的限定条件,只能应用在一列上
  • 表级完整性约束:涉及关系中的多个属性的限制条件,可以应用在一个基本表中的多个列上。

如果完整性约束涉及到多个属性列,则必须定义在表级上,否则可以定义在列级或表级。当创建完整性约束之后,它作为基本表定义的一部分,存入数据字典中。

primary key约束

主键(primary key)约束是实体完整性约束,primary key用于定义主键,它保证主键的唯一性与非空性。一个基本表的主键由一列或者几列构成,可以定义在列级或者表级上,但是不能在两个级别上进行定义。

定义主键约束的方法如下:

  1. primary key之间写在列名及其数据类型之后。例如:

    create table test
    (
    col_name int primary key,
    ……
    )
  2. 按照语法在相应的列名及其数据类型后单独列出:

    constraint <约束名> primary key

    约束名就是主键的名字。例如:

    create table test
    (
    col_name int constraint PK_name primary key,
    ……
    )
  3. 在create table语句中定义完所有列之后定义表级主键约束:

    primary key (列名1, 列名2, ……)

    constraint PK_name primary key (列名1, 列名2, ……)

    例如:

    create table test
    (
    col_name1 int,
    col_name2 nvarchar(10),
    ……
    constraint PK_name primary key (col_name1, col_name2)
    )

foreign key约束

外键(foreign key)约束也称为参照表约束,用于定义参照完整性,即用来维护两个基本表之间的一致性关系。外键的建立主要是通过将一个基本表的主键(或者unique唯一性约束)所在的列包含在另一个表中,这些列就是另一个表的外键。

例如,因为销售订单和销售人员之间存在一种逻辑关系,所以 Sales.SalesOrderHeader 表含有一个指向 Sales.SalesPerson 表的外键链接。 SalesOrderHeader 表中的 SalesPersonID 列与 SalesPerson 表中的主键列相对应。 SalesOrderHeader 表中的 SalesPersonID 列是指向 SalesPerson 表的外键。 通过创建此外键关系,如果 SalesPerson 表的主键中不存在 SalesPersonID 的值,则 SalesPersonID 的值将无法插入到 SalesOrderHeader 表。

外键的作用不只是对输入自身表格的数据进行限制,同时也限制了对主键所在基本表的数据进行修改。主键所在的数据被另一张表的外键所引用时,用户将无法对主键中的数据进行修改或者删除,除非事先删除或修改引用的数据。

foreign key约束定义外键的方法如下:

  1. 如果外键只有一列,可以在它的列名和类型后面直接用references说明它参照了某个基本表的某些列(必须为主键):

    references <表名> (<列名>)
  2. 在属性列表后面增加一个或几个外键说明,其语法格式为:

    foreign key (<列名>) references <表名> (<列名>)

    其中,第一个列名是外键,第二个列名是被参照基本表中的列名。

  3. 在相应的列名及其类型后单独列出并指定约束名,语法格式为:

    constraint <约束名> foreign key (<列名>) references <表名> (<列名>)

unique约束

unique约束是唯一性约束,主要用来确保不受primary key约束的列上的数据的唯一性,两者的区别主要表现如下:

  1. unique约束主要用在非主键的一列或者多列上要求数据唯一的情况。
  2. unique约束允许该列上存在NULL值,而主键不允许。
  3. 一个表可设置多个unique约束,但是只能有一个主键约束。

unique约束可以在列级和表级上设置,但是要在多个列上设置unique约束必须设置表级约束。

定义unique约束的方法:

  1. unique约束直接写在列名和数据类型之后

  2. 按照语法在相应的列名及其类型后单独列出:

    constraint <约束名> unique
  3. 表级unique约束:

    constraint <约束名> unique (<列名1> [, <列名2>, <列名2>,……])

check约束

check约束时检查约束,它通过检查输入表列的数据的值来维护值域的完整性,它依次检查每一个要进入数据库的数据,只有符合条件的数据才允许通过。check约束通过对一个逻辑表达式的结果进行判断来对数据进行检查。

default约束

default约束用于向列中插入默认值,如果没有规定其他的值,则添加默认值到所有新记录中。

not null或null约束

not null约束不允许列值为空,null约束允许列值为空。

create table 图书
(
图书号 varchar(15),
图书名称 varchar(30),
主编 varchar(30) not null,
出版社 varchar(15) default '清华大学出版社'
单价 float,
constraint CH_dj check (单价>=0 and 单价<=1000)
)

最新文章

  1. DevExpress.XtraEditors.xtraScrollableControl
  2. js的高级知识---词法分析
  3. 练习3:修改withdraw 方法 练习目标-使用有返回值的方法:在本练习里,将修改withdraw方法以返回一个布尔值来指示交易是否成功。
  4. SCOPE_IDENTITY的作用
  5. android wifi驱动移植详细过程
  6. Access数据库连接方式
  7. IOS 日志输出控制
  8. 利用while(code!=EOF){}来实现“无限”循环
  9. 如何定位Release 版本中程序崩溃的位置 ---利用map文件 拦截windows崩溃函数
  10. Dungeons and Candies
  11. jquery Tab默认情况下自动切换
  12. VBS 操作注册表 十六进制
  13. 【NOIP模拟】table(动态规划)
  14. python中面向对象元类的自定义用法
  15. React 入门学习笔记整理(三)—— 组件
  16. 【BZOJ】3575: [Hnoi2014]道路堵塞
  17. 验证码 kaptcha 参数详解
  18. springsecurity的remember me
  19. Oracle EBS AR 其他API
  20. Tidb进行缩减扩容tikv节点

热门文章

  1. 3、oracle表空间及索引操作
  2. Sql Server 查询正在执行的sql信息和锁定事务
  3. 『无为则无心』Python序列 — 24、Python序列的推导式
  4. Prometheus(一):Web服务环境监控
  5. WebService:WebService+Springboot常用注解
  6. Automation Framework Design 自动化框架设计思想
  7. CTF-Streamgame2-writeup
  8. C语言:外部函数
  9. asp.net c#整理所有本地的图片一次性保存到SQL表中
  10. es-head部署