【MySQL】表的定义/创建、修改和删除

前言 

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值