4.2 创建数据表
在创建完数据库之后,就可以在数据库中创建数据表了。创建数据表可以通过使用CREATE TABLE语句。使用CREATE TABLE语句创建数据表的语法格式如下:
CREATE TABLE table_name( column_name1 datatype1 [constraint_condition1] [, column_name2 datatype2 [constraint_condition2]]... )
这段使用CREATE TABLE创建数据表。其中,CREATE TABLE是创建数据表的关键字;table_name表示要创建的数据表的名字;column_name1用来指定数据表的列名;datatype1指定列名为column_name1中的数据类型;constraint_condition1指定列名为column_name1中的完整性约束条件;column_name2、datatype2和constraint_condition2与column_name1、datatype1和constraint_condition1表示的意义相同。
这里所说的完整性约束条件可以是唯一约束(UNIQUE)、主键约束(PRIMARY KEY)、外键约束(FOREIGN KEY)、检查约束(CHECK)以及非空约束(NOT NULL)。有关这些约束的详细的使用方法可以参考4.3节。
注意 完整性约束条件可以定义在列级上,也可以定义在表级上。列级完整性约束是指在定义列和指定列中数据类型之后就定义完整性约束条件;表级的完整性约束是指在定义了所有列之后再定义完整性约束条件。
在创建数据表的CREATE TABL语句中,可以为数据表创建多个列,数据表中的每个列都需要指定列名和该列对应的数据类型,列名对应的完整性约束条件是可选的。下面通过一个例子介绍一下如何使用CREATE TABLE语句创建一个数据表。
例4.1 创建表名为T_student的学生信息表。
CREATE TABLE T_student ( stuID VARCHAR (15) PRIMARY KEY, stuName VARCHAR (10) NOT NULL, age INT NOT NULL, sex VARCHAR (2) NOT NULL, birth DATETIME NOT NULL )
这段SQL语句是使用CREATE TABLE创建一张学生信息表。其中,T_student表示创建数据表的表名,在T_student表中,共指定了5个列用来描述学生信息。
❑stuID指定数据表的列名,列stuID用来表示学生编号;VARCHAR (15)用来指定stuID列的数据类型,这里将其指定为VARCHAR类型,并且设定该列中字符串长度为15;PRIMARY KEY用来指定列stuID的完整性约束条件,这里将列stuID设定为主键,表示列stuID的值唯一并且不能为空值(NULL值)。
❑stuName指定数据表的列名,列stuName用来表示学生姓名;VARCHAR (10)用来指定stuName列的数据类型,这里将其指定为VARCHAR类型,并且设定该列中字符串长度为10;NOT NULL用来指定列stuName的完整性约束条件,这里将列stuName设定为非空,表示该列中不允许存在空值(NULL值)。
❑age指定数据表的列名,列age用来表示学生年龄;INT用来指定age列的数据类型,这里将其指定为INT类型,表示学生的年龄存储在数据库中都应该是整数;NOT NULL用来指定列age的完整性约束条件,这里将列age设定为非空,表示该列中不允许存在空值(NULL值)。
❑sex指定数据表的列名,列sex用来表示学生性别;VARCHAR (2)用来指定sex列的数据类型,这里将其指定为VARCHAR类型,并且设定该列中字符串长度为2;NOT NULL用来指定列sex的完整性约束条件,这里将列sex设定为非空,表示该列中不允许存在空值(NULL值)。
❑birth指定数据表的列名,列birth用来表示学生出生日期;DATETIME用来指定birth列的数据类型,这里将其指定为DATETIME类型,即将学生的出生日期设定为日期时间类型;NOT NULL用来指定列birth的完整性约束条件,这里将列birth设定为非空,表示该列中不允许存在空值(NULL值)。
注意 使用CREATE TABLE语句创建数据表后,数据表中不会存在任何记录,如果想向数据表中插入记录,需要使用INSERT INTO语句。有关使用INSERT INTO语句向数据表中插入数据记录的方法可以参看第12章。
下面以MySQL 5.0数据库为例,看一下在MySQL 5.0数据库中,如何在MySQL 5.0 Command Line Client窗口下,使用CREATE TABLE语句创建学生信息表(T_student)。这里将学生信息表(T_student)再创建到test_STInfo数据库中。
(1)进入MySQL 5.0 Command Line Client窗口中输入密码。其密码为root。
(2)在MySQL 5.0 Command Line Client窗口中mysql>的后面使用USE test_STInfo,告诉数据库管理系统,现在要使用的是test_STInfo数据库。
(3)使用CREATE TABLE语句创建学生信息表(T_student),并在CREATE TABLE语句的后面以分号结尾。
(4)按“Enter”键,执行创建数据表的SQL语句,其执行后的结果如图4.1所示。
图4.1 创建学生信息表(T_student)
为了查看学生信息表(T_student)是否已经创建,可以使用鼠标双击“我的电脑”,进入到C:\Program Files\MySQL\MySQL Server 5.0\data\test_stinfo的目录下,若可以看到在该目录下多出了一个t_student.frm文件,则表明学生信息表T_student已经创建完成了。
当然,除了可以在MySQL 5.0 Command Line Client窗口中创建数据库之外,还可以在MySQL 5.0的MySQL 5.0用户图形界面中直接创建数据表。
(1)单击“开始”|“所有程序”|“MySQL”|“MySQL Query Brower”命令,输入用户名、密码后,在Default Schema选项对应的文本框中输入一个数据库的名字。这里输入的是test_STInfo。
(2)进入到MySQL 5.0的图形用户界面中,在该界面上方的空白处写入创建学生信息表(T_student)的SQL语句。
(3)单击空白处右侧的“Execute”按钮,如果执行的SQL语句没有错误,则在该界面的下方会出现如下提示信息:
Query returned no resulted
这段信息表示数据表已经得到了正确的创建。
(4)选中MySQL 5.0用户图形界面的右侧Schemata选项的下面对应的名为test_STInfo数据库,右击test_STInfo数据库,选择“Refresh”命令(或者按F5键,刷新test_stinfo数据库,如图4.2所示。
图4.2 刷新test_STInfo数据库
(5)刷新操作执行后,在test_stinfo数据库下方就可以看到一个名为T_student的数据表,如图4.3所示。
图4.3 在MySQL 5.0用户图形界面中显示学生信息表(T_student)
例4.1给出的是创建数据表的一个比较简单的例子,在实际应用中,有时需要创建的数据表可能会很复杂,例如,创建的数据表做主键的列可能不只一列,而是多个列组合起来作为数据表的主键;两个表在相互关联时,需要为数据表定义外键约束;为数据表创建适当的索引等。这些在数据表的创建中也是经常会用到的,因此在创建数据表时有必要了解约束和索引是如何使用的。有关在创建数据表中使用约束和索引的内容将在4.3节和4.4节中做详细的介绍。
说明 在CREATE TABLE语句中,还可以使用子查询创建数据表。有关使用子查询创建数据表的方法可以参看9.7节。