nidr 发表于 2018-10-21 06:10:32

SQL学习之使用命令方式创建、删除与修改关系表

  首先,先介绍用命令方式创建、删除和修改关系表,
  (1)、创建表
  基本格式:create table 表名
  (
  列名 数据类型 列级完整性约束,列名 数据类型 列级完整性约束(如果有多个列,注意要用       英文式的逗号隔开)
  ,表级完整性约束(表级完整性约束和列级完整性约束之间也要用逗号分隔开)
  )
列级完整性约束有:not null限制列取值为空default指定列的默认值unique定义列取值不能重复check定义列的取值范围(check是定义的多列之间的取值约束,只能在表级完整性约束)处定义primary key定义主码约束foreign key定义外码约束表级完整性约束:unique定义列取值不能重复check定义列的取值范围(check是定义的多列之间的取值约束,只能在表级完整性约束)处定义primary key定义主码约束foreign key定义外码约束  知道呢有哪些约束,那么,怎么定义完整性约束呢?他们的格式是什么呢?
  主码约束:primary key (列名,列名,列名......)
  外码约束:foreign key (列名) references 外表名 (外表列名)
  unique约束:列名 数据类型 unique (列名,列名......)
  default约束:列名 default 默认值
  check约束:check 逻辑表达式(逻辑表达式中不能包含来自多个表的列)
  (2)、修改表:
  基本格式: alter table 表名
  alter column 列名 新的数据类型   (修改列的定义)
  add 列名 数据类型 约束         (增加新的列)
  drop column 列名            (删除列)
  add 约束定义               (添加约束)
  drop 约束名                  (删除约束)
  注意:不同的DBMS的alter table语句格式都不同,在这里以SQL2014为例
  (3)、删除表:
  基本格式: drop table 表名
  注意:如果被删除的表中有其他表对他的外码引用约束,则必须先删除外码所在的表,然后再删除被引   用码所在的表
  实例说明:(1)创建3张表,学生表(student)、课程表(course)和学生选课表(sc)
  学生表(student)
列名含义数据类型约束Sno学号char(11)主码Sname姓名nchar(4)非空Snumber身份证号char(18)取值不重Ssex性别nchar(1)默认值为'男'Sage年龄tinyint取值范围为15—45Sdept所在系nvarchar(20)  创建student表代码:
  use student
  create table student
  (
  Sno char(11) primary key,
  Sname nchar(4) not null,
  Snumber char(18) unique,
  Ssex nchar(1) default '男',
  Sage tinyint check(sage >= 15and sage0),
  Semeter tinyint
  )
  
  选课表(sc)
列名含义数据类型约束Sno学号char(11)主码,引用student的外码Cno课程号char(6)主码,引用course的外码Grade成绩tinyint  创建sc表代码:
  use student
  create table sc
  (
  Sno char(11) not null,
  Cno char(6) not null,
  Grade tinyint,
  primary key (sno,cno),
  foreign key (sno) references student(sno),
  foreign key (cno) references course(cno)
  )
  (2)为sc表添加‘修课类别’(type)列,允许为空,代码如下:
  alter table sc
  add type nchar(1) null
  (3)为sc表添加‘修课类别’(type)列修改他的数据类型为nchar(2),代码如下:
  alter table sc
  alter column type nchar(2)
  (4)为sc表添加‘修课类别’(type)列添加取值范围为{必修,重修,选修}的约束,代码如下:
  alter table sc
  add check(type in ('必修','重修','选修'))
  (5)删除type列,代码如下:
  alter table sc
  drop column type

页: [1]
查看完整版本: SQL学习之使用命令方式创建、删除与修改关系表