本文讲解了使用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定义、修改和删除基本表的方法进行了介绍。实际很简单,只要不断地练习和琢磨,你还可以定义出更加复杂的基本表。
新闻热点
疑难解答