表是数据库存储数据的主要对象,sql server数据库的表由行和列组成 如下图

如何创建表

数据库中创建一张表的语法为:

create table table_name(
列名1 数据类型和长度 列说明,
列名2 数据类型和长度 列说明,
列明3 数据类新和长度 列说明.......
)

创建上述表的语句为

create table table1(
DepID int identity(1,1) not null,
DepName varchar(40) not null,
DepTotal int not null
)

 table1是这张二维表的名字 在一个数据库里面表的名字是不可以重复的。

DepID、DepName、DepTotal是列名再一张表里面列名是不能重复的

not null表示该列的值不能为空 但你不写时默认是null 即可以为空

完整性约束

 为了确保数据库中数据的完整性,再创建表的时候还要再加上适当的约束性规则,大致有五个约束性规则。

1.主键约束:primary key

2.唯一性约束:unique

3.默认约束:default

4.检查约束:check

5.外键约束:foreign key

主键约束

主键用于唯一的表示表中的数据,在一个表中可以定义一列或多列为主键。

注意

  1. 标识为主键的一个或一组字段的值不可以重复,一张表仅允许创建一个主键。
  2. 主键上的取值不允许为null
  3. 主键的取值一般不能更新
  4. 主键可以被其他表参照(外键)

create table Student(
StuID char(10) constraint pkStuID primary key,
StuNama varchar(10)
)

 constraint约束的意思后面跟你添加的约束的名字,主键约束一般起名为pk+字段名

create table SC(
StuID char(10),
CourseID int constraint pkStuIDCourseID primary key,
Score int
)

 上面的表中有两个主键,再定义主键的时候需要在最后一个字段上加上约束。或者用表级约束

create table SC(
StuID char(10),
CourseID int,
Score int,
constraint pkStuIDCourseID primary key(StuID,CourseID)
)

unique约束

unique约束,使字段的值不能重复,允许有null值 但只能有一个,多了不就重复了

create table Course(
CourseID int constraint pkCourseID primary key,
CourseName varchar(40) constraint unqCourseName unique,
CourseCredit float
)

 unique约束的约束名字一般是nuq加上字段名

check约束

check约束,即检查性约束 作用是可以指定字段的取值,check约束一般与几个关键字一起使用

  1. in关键字
  2. between关键字
  3. like关键字

create table Student(
StuID char(10) constraint pkStuID primary key
               constraint chkStuID check(StuID like'[A,B,Z][0-9][0-9][0-9][0-9][0-9]'),
StuName varchar(10) nou null,
StuBirthDate datetime,
StuSex char(2) constraint chkStuSex check(StuSex in('男','女')),
StuCity varchar(20),
StuGrade int constraint chkStuGrade check(StuGrade between 0 and 800) not null,
DepID int not null
)

 检查性约束一般以chk打头 check() 括号里面第一个是字段名 然后是你对这个字段进行的约束

in 表示这个字段的值只能在in里面取 between 表示这个字段的值在这个范围之

like是使用通配符来表示相应的格式

default约束

默认值约束可以指定列一个默认值 ,当你插入操作不给值的时候就使用默认值。

create table Course(
CourseID int constraint pkCourseID primary key,
CourseName varchar(40) constraint unqCourseName unique,
CourseCredit float constraint defCourseCredit default 0
                   constraint chkCourseCredit check(CourseCredit between 0 and 5) not null
)

 默认值约束的命名一般以def打头 default后跟你要给这个字段设置的默认值。默认值可以为空,或者是一个常量值

外键约束

外键约束表明了两张表之间的联系,外键的取值需要参照主键的取值,被参照的表称作主表

 

create table Departemnt(
DepID int constraint pkDepID primary key
)

create table Student(
StuID char(10),
StuName varchar(10) not null,
StuBirthDate datetime,
StuSex char(2),
StuCiry varchar(20),
StuGrade int not null,
DepID int not null,
constraint pkStuID primary key(StuID),
constraint chkStusex check(StuSex in('男','女')),
constraint defStuSex default '男',
constraint chkStuGrade check(StuGrade between 0 and 800),
constraint defStuGrade default 0,
constraint pkDepID foreign key references Department(DepID)
)

Student这张表的DepID字段是外键参照了Department这张表的DepID 在这个关系里面 Student表就称作从表,Departemt这张表被称作主表 一个字段要想被其他表参照那末这个字段必须在主表里是主键才可以,比如这个例子如果DepID这个字段在Departemnt这张表里不是主键那么就被参照。这两张表还要有先后的创建顺序 必须先创建主表然后再创建从表 同理删除的时候也存在先后顺序正好反过来必须先删除从表,然后才可以删除主表

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐