首页 > 数据库 > 文库 > 正文

SQL:基本表的创建与管理

2024-09-07 22:12:22
字体:
来源:转载
供稿:网友

本文讲解了使用SQL语言创建基本表的方法,以及使用SQL修改基本表和删除基本表的方法。

首先说一下什么是基本表,本身独立存在的表称为基本表,在SQL语言中一个关系唯一对应一个基本表。基本表的定义指建立基本关系模式,而变更则是指对数据库中已存在的基本表进行删除与修改。

1、基本表的定义

SQL使用CREATE TABLE语句来定义基本表,其语句格式为:

CREATE TABLE [<数据库名>.]<表名>
(<列名> 数据类型 [缺省值] [NOT NULL / NULL]
[,<列名> 数据类型 [缺省值] [NOT NULL / NULL]]......
[,UNIQUE (列名[,列名]......)]
[,PRIMARY KEY(列名)]
[,FOREIGN KEY(列名[,列名]......)REFERENCE <表名>(列名[,列名]
......)]
[,CHECK(条件)] [其它参数])

其中,〈数据库名〉.]指出将新建立的表存放于该数据库中; 新建的表由两部分组成:其一为表和一组列名,其二是实际存放的数据(即可在定义表的同时,直接存放数据到表中);

列名为用户自定义的易于理解的名称,列名中不能使用空ge;数据类型为上面所介绍的几种标准数据类型;

[NOT NULL/NULL]指出该列是否允许存放空值,SQL语言支持空值的概念,所谓空值是"不知道"或"无意义"的值,值得注意的是数据"0"和空ge都不是空值,系统一般默认允许为空值,所以当不允许为空值时,必须明确使用NOT NULL;

[,UNIQUE]将列按照其规定的顺序进行排列,如不指定排列顺序,则按列的定义顺序排列;

[PRIMARY KEY]用于指定表的主键(即关系中的主属性),实体完整性约束条件规定:主键必须是唯一的,非空的;

[,FOREIGN KEY (列名[,列名]......) REFERENCE<表名>(列名[,列名] ......)]是用于指定外键参照完整性约束条件,FOREIGN KEY指定相关列为外键,其参照对象为另外一个表的指定列,即使用REFERENCE引入的外表中的列,当不指定外表列名时,系统将默认其列名与参照键的列名相同,要注意的是:使用外键时必须使用参照,另外数据的外键参照完整性约束条件规定:外键的值要么与相对应的主键相同,要么为空值(具体由实现系统不同而异)

[,CHECK]用于使用指定条件对存入表中的数据进行检查,以确定其合法性,提高数据的安全性。

例1:要建立一个学生情况表(student)

CREATE TABLE student                //创建基本表student
(st_class CHAR(8),           // 定义列st_class班级,数据类型为8位定长字符串
st_no CHAR(10) NOT NULL,       //定义列st_no学号,类型为10位定长字符串,非空
st_name CHAR(8) NOT NULL, //定义列st_name姓名,类型为8位定长字符串,非空
st_sex CHAR(2),              //定义列st_sex性别,类型为2位定长字符串
st_age SMALLINT,          //定义列st_age年龄,类型为短整型
PRIMARY KEY (st_no)      //定义st_no学号为主键。
)  

例2:要建立课程设置表(subject)

CREATE TABLE subject              --创建基本表subject
(su_no CHAR(4) NOT NULL,       --定义列su_no课号,类型为4位定长字符串,非空
su_subject CHAR(20) NOT NULL,--定义列su_subject课程名,类型为20位定长字符 串,非空
su_credit INTEGER,      --定义列su_credit学分,类型为长整数
su_period INTEGER,       --定义列su_period学时,类型为长整数
su_preno CHAR(4),        --定义列su_preno先修课号,类型为4位定长字符串
PRIMARY KEY(su_no)  --定义su_no课号为主键。
)

例3:要建立学生选课表(score)

CREATE TABLE score        --创建基本表score
(st_no CHAR(10),               --定义列st_no学号,类型为10位定长字符串
su_no CHAR(4),                  --定义列su_no课号,类型为4位定长字符串
sc_score INTEGER NULL,--定义列sc_score,类型为长整形,可以为空值
FOREIGN KEY (st_no) REFERENCE student(st_no ),
--从表student中引入参照外键st_no,以确保本表与表student的关联与同步
FOREIGN KEY (suno) REFERENCE subject(su_no)
--//从表subject中引入参照外键su_no,以确保本表与表subject的关联与同步
)

2、基本表的删除

如果确认基本表不再需要,可以使用DROP TABLE语句将其删除,这样表的结构及存储在表中的内容全部删除。其语句格式为:

DROP TABLE[<数据库名>.]表名

例如:将上面建立的表都删除

DROP TABLE student,subject,score

3、基本表的修改

可以根据实际需要对表的定义进行修改,修改基本表的SQL语句是ALTER TABLE ,其语句格式如下:

 ALTER TABLE [<数据库名>.]表名
        ADD  (<列名> 数据类型 [缺省值] [NOT NULL / NULL] 
             [,<列名> 数据类型[缺省值][NOT NULL / NULL]]......
            [,UNIQUE (列名[,列名]......)]
           [,PRIMARY KEY(列名)] 
           [,FOREIGN KEY(列名[,列名]......) REFERENCE <表名>(列名[,列名] ......)]
           [,CHECK(条件)][其它参数])

例如:在基本表student中加入列stborn出生日期,数据类型为DATE,且不能为空值

ALTER TABLE student ADD (stborn DATE NOT NULL)

删除属性的语句格式为:

ALTER TABLE [<数据库名>.]表名 DROP
( <列名> 数据类型 [缺省值][NOT NULL / NULL]
[,<列名> 数据类型 [缺省值][NOT NULL / NULL]]......)

例如:将基本表student中的列st_age删除

ALTER TABLE student DROP (st_age) 

以上对使用SQL定义、修改和删除基本表的方法进行了介绍。实际很简单,只要不断地练习和琢磨,你还可以定义出更加复杂的基本表。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表