SQL学习之使用命令方式创建、删除与修改关系表
admin
2023-05-30 03:21:20
0

首先,先介绍用命令方式创建、删除和修改关系表,

(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—45
Sdept所在系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 >= 15  and sage <= 45),

Sdept nvarchar(20)

)


课程表(course)

列名含义数据类型约束
Cno课程号char(6)主码
Cname课程名nvarchar(20)非空
Credit学分numeric(3,1)大于0
Semester学期tinyint


创建course表代码:

use student

create table course

(

Cno char(6) primary key,

Cname nvarchar(20) not null,

Credit numeric(3,1) check(Credit > 0),

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

相关内容

热门资讯

我国首座抗17级台风高技术难度... 本文转自【新华网】; 新华社北京8月6日电(记者王悦阳、梁姊)中国海油8月6日宣布,我国自主设计建造...
山西省灵丘县科技馆里“热度”飙... 央广网大同8月6日消息(记者张洁 通讯员马明清)8月5日,山西省大同市灵丘县科技馆展厅内人头攒动、氛...
校地协同 聚力科研攻关 8月3日,在市沙漠综合治理中心主任张雁平的陪同下,青岛农业大学教授刘建龙、内蒙古自治区林科院研究员杨...
唐波、崔洪芝获颁2025年度山... 8月6日下午,全省科技大会在济南召开。会上,宣读《中共山东省委山东省人民政府关于2025年度山东省科...
台风“白海豚”逐渐逼近华东沿海... 据中央气象台消息,今年第13号台风“白海豚”的中心8月6日14时位于距离浙江省温州市偏东方向约120...
阿联酋、土耳其、沙特等8国外长... 【环球网报道 记者 索炎琦】据《以色列时报》等媒体报道,阿联酋、卡塔尔、约旦、印度尼西亚、巴基斯坦、...
字节CEO梁汝波承认大语言模型... 8月6日,字节跳动召开2026年度年中全员会,公司CEO梁汝波、新成立的“创造力服务平台”(Crea...
知名经济学家、教育家、出版人高... 澎湃新闻记者 蒋子文 岳怀让据台湾《远见》杂志网站消息,知名经济学家、教育家、出版人,远见‧天下文化...
“女生洗澡,大叔帮搓背”,苏泊... 国民级厨房小家电品牌苏泊尔,最近因几段AI生成的短视频,被指内容低俗,引发关注。而就在不久前,苏泊尔...
网红,被罚10万欧元? 在法国,一个中等收入消费者,打开手机上的跨境电商平台,花几欧元就能买到一件不错的T恤,而同样的产品在...