【数据库系统概论】数据定义之基本表的定义/创建、修改和删除

前言 🚩

SQL支持数据库系统的三级模式结构,其模式、外模式和内模式中的基本对象有表、视图和索引,因此,SQL的数据定义功能包括定义表、定义视图和定义索引。

前面【数据库系统概论】SQL是什么?它有什么特点?提到,SQL中只有三个数据定义动词,分别是:CREATE(创建)、DROP(删除)ALTER(修改)。虽然只有三个动词,但通过灵活的使用能够发挥强大的作用。

本篇文章介绍如何定义/创建、修改和删除基本表。

定义/创建基本表

定义表需要定义表名、列名、列的数据类型。还可以定义与该表有关的完整性约束条件。

语法

CREATE TABLE <表名><列名> <数据类型>[ <列级完整性约束条件> ]
	        [<列名> <数据类型>[ <列级完整性约束条件>] ][<表级完整性约束条件> ];
  • <表名>:所要定义的基本表的名字
  • <列名>:组成该表的各个属性(列)
  • <列级完整性约束条件>:涉及相应属性列的完整性约束条件
  • <表级完整性约束条件>:涉及一个或多个属性列的完整性约束条件

定义表的各个属性时需要指明数据类型和长度。不同的RDBMS中支持的数据类型不完全相同

SQL Server中常用的完整性约束:

  • 主码约束: PRIMARY KEY
  • 唯一性约束:UNIQUE
  • 非空值约束:NOT NULL
  • 参照完整性约束(外码约束):FOREIGN KEY……REFERENCES
  • 检查约束:CHECK
  • 默认值约束:DEFAULT

示例

建立一个学生表Student,其中包括学号(Sno),姓名(Sname),性别(Ssex),年龄(Sage),入学时间(Sdate)5个属性。其中学号为主键,姓名唯一,入学时间不能为空。

 CREATE TABLE Student
     (Sno CHAR(6) PRIMARY KEY,
      Sname CHAR(10) UNIQUE,        
      Ssex CHAR(2) CHECK(Ssex IN (’男’,’女’)),
      Sage SMALLINT,
      Sdate DATE NOT NULL;

建立一个课程表Course,其中包括课程号(Cno),课程(Cname),先修课(Cpno),学分(Ccredit)4个属性。其中课程号为主键,学分不能为空。

CREATE TABLE Course
      (Cno  CHAR(3) PRIMARY KEY,
       Cname CHAR(20),
       Cpno  CHAR(3),
       Ccredit  SMALLINT  NOT NULL);

建立学生选课表SC,其中包括学号(Sno),课程号(Cno)和成绩(Grade)。学号和课程号为主键。

CREATE TABLE SC 
    (Sno  CHAR(6),
     Cno  CHAR(3),
     Grade  SMALLINT,
     PRIMARY KEY(Sno,Cno), /*表级完整性约束条件,(Sno,Cno)为主键*/
     FOREIGN KEY (Sno) REFERENCES Studnet(Sno),
        /*表级完整性约束条件,Sno为外键,参照Student表中的Sno*/
     FOREIGN KEY (Cno) REFERENCES Course(Cno)
        /*表级完整性约束条件,Cno为外键,参照Course表中的Cno*/
    );

修改基本表

语法

修改表包括:添加新的属性列、删除列、添加完整性约束、删除完整性约束、修改列的数据类型。

 ALTER TABLE <表名>
[ADD <新列名> <数据类型> [完整性约束]]
[ADD <表级完整性约束>]
[DROP [COLUMN ] <列名> ]
[DROP  CONSTRAINT <完整性约束名>]
[ALTER COLUMN <列名> <数据类型> ]

示例

向Student表中增加 “所在系(Sdept)”列:

ALTER TABLE Student ADD Sdept CHAR(20);
/* 注意当向表中新增加一列后,表中相应列的值为空值 */

将年龄的数据类型改为长整型:

ALTER TABLE Student ALTER COLUMN Sage INT;

删除基本表

基本表删除后,表中的数据以及此表上建立的索引、视图、触发器等都将自动被删除。另外,DROP TABLE不能用于删除由外键约束引用的表,必须先删除有外键约束条件的表,然后才能删除其引用的表。

语法

DROP TABLE <表名>;

示例

删除Student表:

DROP TABLE Student;

感谢 💖

好啦,这次的分享就到这里,感谢大家看到这里🤞

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不怕娜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值