【参加讨论】##2 (一)数据定义
sql数据定义功能包括定义数据库、基本表、索引和视图。首先,让我们了解一下sql所提供的基本数据类型:(如^00100009b^)
1.数据库的建立与删除
(1)建立数据库:数据库是一个包括了多个基本表的数据集,其语句格式为:create database <数据库名> [其它参数]
其中,<数据库名>在系统中必须是唯一的,不能重复,不然将导致数据存取失误。[其它参数]因具体数据库实现系统不同而异。
例:要建立项目管理数据库(xmmanage),其语句应为:create database xmmanage
(2) 数据库的删除:将数据库及其全部内容从系统中删除。其语句格式为:drop database <数据库名>
例:删除项目管理数据库(xmmanage),其语句应为: drop database xmmanage
2.基本表的定义及变更
本身独立存在的表称为基本表,在sql语言中一个关系唯一对应一个基本表。基本表的定义指建立基本关系模式,而变更则是指对数据库中已存在的基本表进行删除与修改。
(1)基本表的定义:基本表是非导出关系,其定义涉及表名、列名及数据类型等,其语
句格式为:create table[<数据库名>.]<表名>
(<列名> 数据类型 [缺省值] [not null / null]
[,<列名> 数据类型 [缺省值] [not null / null]]......
[,unique (列名[,列名]......)]
[,primary key(列名)]
[,foreign key(列名[,列名]......)reference <表名>(列名[,列名]
......)]
[,check(条件)] [其它参数]) 其中,〈数据库名〉.]指出将新建立的表存放于该数据库中;
新建的表由两部分组成:其一为表和一组列名,其二是实际存放的数据(即可在定义表的同时,直接存放数据到表中);列名为用户自定义的易于理解的名称,列名中不能使用空格;数据类型为上面所介绍的几种标准数据类型;
[not null/null]指出该列是否允许存放空值,sql语言支持空值的概念,所谓空值是“不知道”或“无意义”的值,值得注意的是数据“0”和空格都不是空值,系统一般默认允许为空值,所以当不允许为空值时,必须明确使用not null;
[,unique]将列按照其规定的顺序进行排列,如不指定排列顺序,则按列的定义顺序排列;
[primary key]用于指定表的主键(即关系中的主属性),实体完整性约束条件规定:主键必须是唯一的,非空的;
[,foreign key (列名[,列名]......) reference<表名>(列名[,列名] ......)]是用于指定外键参照完整性约束条件,foreign key指定相关列为外键,其参照对象为另外一个表的指定列,即使用reference引入的外表中的列,当不指定外表列名时,系统将默认其列名与参照键的列名相同,要注意的是:使用外键时必须使用参照,另外数据的外键参照完整性约束条件规定:外键的值要么与相对应的主键相同,要么为空值(具体由实现系统不同而异)[,check]用于使用指定条件对存入表中的数据进行检查,以确定其合法性,提高数据的安全性。
例:要建立一个学生情况表(student)
create table student file://创建基本表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学号为主键。
例:要建立课程设置表(subject)
create table subject//创建基本表subject
(su_no char(4) not null,// 定义列su_no课号,类型为4位定长字符串,非空
su_subject char(20) not null,// 定义列su_subject课程名,类型为20位定长字符 串,非空