SQL基本表的定义、删除与修改——《数据库系统概论》学习笔记

《数据库系统概论》学习笔记

前言

本篇文章为数据库系统概论学习笔记之一,主要用于复习~

如果有错误或者歧义的地方希望大佬们指出,免得误导更多人!!!


正文

定义基本表

SQL语言使用 CREATE TABLE语句定义基本表,格式如下
在这里插入图片描述
建表的同时还可以定义与该表有关的完整性约束条件,这些完整性约束条件被存入系统的数据字典中。

举例:
其中PRIMARY KEY表示主码、UNIQUE表示取值唯一,它们都是列级完整性约束条件。除此之外还有NOT NULL 表示不为空

CREATE TABLE Student(
 Sno CHAR(9) PRIMARY KEY,
 Sname CHAR(20) UNIQUE,
 Ssex CHAR(2),
 Sage SMALLINT,
 Sdept CHAR(20)
);

运行结果表示建表成功。
在这里插入图片描述
此时,数据库中建立一个新的空“学生”表 Student,并将有关该表的定义及有关约束条件存放在数据字典中。

在这里插入图片描述
接下来我们再建两个表。

CREATE TABLE Course(
 Cno CHAR(4) PRIMARY KEY,  -- 列级完整性约束条件,Cno是主码
 Cname CHAR(40) NOT NULL,  -- Cname 不能取值为空
 Cpno CHAR(4),
 Ccredit SMALLINT,
 -- 表级完整性约束条件,Cpno是外码,被参照表是Course,被参照列是Cno
 FOREIGN KEY(Cpno) REFERENCES course(Cno)  
);

在这里插入图片描述

CREATE TABLE SC(
 Sno CHAR(9),
 Cno CHAR(4),
 Grade SMALLINT,
 PRIMARY KEY(Sno,Cno), -- 主码由两个属性构成,必须作为表级完整性进行定义 
 FOREIGN KEY(Sno) REFERENCES student(Sno),  -- 表级完整性约束条件,Sno是外码,被参照表是Student
 FOREIGN KEY(Cno) REFERENCES course(Cno)  -- 表级完整性约束条件,Cno是外码,被参照表是Course
);

在这里插入图片描述


通过以上三个建表,我们知道定义表的各个属性时需要指明其数据类型及长度。SQL标准支持多种数据类型,如下列出几种常见数据类型
在这里插入图片描述
在这里插入图片描述
一个属性选用哪种数据类型需要考虑

  • 取值范围
  • 做哪些运算

修改基本表

ALTER TABLE语句可以修改基本表。

  • ADD 子句用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件
  • DROP COLUMN子句用于删除表中的列。如果指定了CASCADE则自动删除引用了该列的其他对象,比如视图。如果指定了RESTRICT短语,则如果该列被其他对象引用,RDBMS将拒绝删除该列
  • DROP CONSTRAINT子句用于删除指定的完整性约束条件
  • ALTER COLUMN 子句用于修改原有的列定义,包括修改列名和数据类型。
    在这里插入图片描述

例:

-- 向Student表添加“入学时间”,其数据类型为日期。
ALTER TABLE Student ADD S_entrance DATE;
-- 添加课程名称必须取唯一值的约束条件
ALTER TABLE course ADD UNIQUE(Cname);

删除基本表

DROP TABLE语句可以删除基本表。
在这里插入图片描述

  • 若选择RESTRICT,则该表的删除是有限制条件的。欲删除的基本表不能被其他表的约束引用(如CHECK FROEIGN KEY等约束),不能有视图,触发器,不能有存储过程或函数。如果存在这些依赖该表的对象,则此表不能被删除。(默认情况
  • 若选择CASCADE,则该表的删除没有限制条件。在删除基本表的同时,相关的依赖对象,例如视图,都将被一起删除。

注意:不同的数据库产品在遵守SQL标准的基础上具体实现细节和处理策略会与标准有差别。

下面就SQL 2011标准对 DROP TABLE的规定,对比分析Kingbase ESOracle 12c Release1(12.1)MS SOL Server 2012这三种数据库产品对DROP TABLE的不同处理策略。

R表示 RESTRICT,即 DROP TABLE<基本表名> RESTRICT; C表示CASCADE,即 DROP TABLE<基本表名>CASCADE。其中 Oracle 12c没有 RESTRICT选项;SOL Server没有RESTRICT和 CASCADE选项。

在这里插入图片描述
“X”表示不能删除基本表,“√”表示能删除基本表,“保留”表示删除基本表后
还保留依赖对象。

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

焦妮敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值