9.4 表管理
表是数据库中最基本的逻辑单元,由行和列组成,用户保存在数据库中的基本数据库都由表的形式存储。本节将介绍如何管理MySQL的表。
9.4.1 表的概念
表是数据库中最重要的逻辑对象,是存储数据的主要对象。在设计数据库结构时,很重要的工作就是设计表的结构。例如,在设计二手交易市场系统数据库时,可以包含公告信息表、商品分类表、二手商品信息表、用户信息表等,而用户信息表可以包含用户名、用户密码、用户类型等列。
关系型数据库的表由行和列组成,其逻辑结构如图9-19所示。
图9-19 表的逻辑结构演示图
在表的逻辑结构中,每一行代表一条记录,而每一列代表表中的一个字段,也就是一项内容。列的定义决定了表的结构,行则是表中的数据。表和列的命名要遵守标识符的规定,列名在各自的表中必须是唯一的,而且必须为每列指定数据类型。
9.4.2 MySQL数据类型
要定义表的结构,需要设计表由哪些列组成,指定列的名称和数据类型。MySQL 的数据类型包括数值类型、日期和时间类型、字符串类型等。
1.数值数据类型
数值数据类型如表9-3所示。
表9-3 数值数据类型
可以看到,这些数据类型都是在其他数据库和程序设计语言中比较常见的数据类型。可以根据字段可能取值的具体情况来选择使用的数据类型。
对于TINYINT、SMALLINT、MEDIUMINT、INT、INTEGER、BIGINT、FLOAT、DOUBLE、DECIMAL(DEC)等数值类型,如果在其后面指定UNSIGNED,则不允许负值(即有符号);否则,不运行负值(即无符号)。
2.日期和时间数据类型
日期和时间数据类型如表9-4所示。
表9-4 日期和时间数据类型
3.字符串数据类型
字符串数据类型如表9-5所示。
表9-5 字符串数据类型
续表
9.4.3 创建表
可以在phpMyAdmin中通过图形界面创建表,也可以使用SQL语句创建表。
1.在phpMyAdmin中创建表
在phpMyAdmin中单击要创建表的数据库名,打开管理数据库页面,如图9-20所示。
图9-20 数据库管理页面
在“名字”文本框中输入要创建的表名(假定为 Departments),在“字段数”文本框中输入表中字段的数量(假定为2),然后单击“执行”按钮,打开创建表页面,如图9-21所示。
图9-21 创建表页面
在创建表页面中,可以按照前面设置的字段数量自动生成编辑字段的表格。可以为每个字段输入字段名、字段的数据类型、长度、默认值、是否创建索引等属性。
【例9-12】 在数据库MySQLDB中创建一个部门信息表Departments,表结构如表9-6所示。
表9-6 部门信息表Departments
主键是表中的一列或一组列,它们的值唯一地标识表中的每一行,也就是说在表的所有行中,此列的数据是唯一的。通常情况下,可以把编号列设置为唯一标识列,如表 Departments 中的部门编号DepId。定义主键可以强制在指定列中不允许输入空值,如果要插入行的主键值已经存在,则此行不允许被插入。表只能有一个主键,在索引组合框中选择PIMARY。
在创建表页面中,向右拉动滚动条,可以看到列的其他属性列,如图9-22所示。
图9-22 列的其他属性列
下面介绍设置列属性的步骤。
(1)输入列名。在“字段”文本框中输入字段的名称,在第1列中输入DepId,在第2列中输入DepName。
(2)选择数据类型。在“类型”组合框中选择字段的数据类型。将DepId字段的类型选择为INT,将DepName字段的类型选择为VARCHAR。
(3)输入字段长度。在“长度/值”文本框中输入字段的长度。因为DepId字段的数据类型是INT,所以不需要输入字段长度;将DepName的字段长度设置为50。
(4)设置自动增加字段。选中DepId字段后面的A_I复选框,实现DepId字段的自动增加功能。在插入数据时,不需要指定DepId字段的值,系统会自动为其分配一个字段值。
(5)设置主键。在DepId字段后面的索引组合框中选择PRIMARY,即可将DepId字段设置为表Departments的主键。
(6)添加字段的描述信息。在“注释”文本框中可以输入字段的描述信息。
输入完成后,单击“保存”按钮,完成创建表的操作。
2.使用CREATE TABLE语句创建表
CREATE TABLE语句创建表,语法结构如下:
CREATE TABLE 表名
(列名1 数据类型字段属性,
列名2 数据类型字段属性,
……
列名n 数据类型字段属性
)
在“字段属性”中,可以使用下面的关键字来定义字段的属性。
• PRIMARY KEY:指定字段为主键。
• AUTO_INCREMENT:指定字段为自动增加字段。
• INDEX:为字段创建索引。
• NOT NULL:字段值不允许为空。
• NULL:字段值可以为空。
• COMMENT:设置字段的注释信息。
• DEFAULT:设置字段的默认值。
CREATE TABLE的语法非常复杂,上面只给出了它的基本使用情况。表9-7所示为另外一个示例表Employees的结构。
表9-7 表Employees的结构
【例9-13】 使用CREATE TABLE语句创建表Employees的代码如下:
CREATE TABLE Employees (
EmpId INT AUTO_INCREMENT PRIMARY KEY,
EmpName VARCHAR(50) NOT NULL,
DepId INT,
Title VARCHAR(50),
Salary INT
)
可以在MySQL命令行工具中执行此SQL语句,执行前使用USE命令将当前数据库切换为MySQLDB。
9.4.4 编辑和查看表
在phpMyAdmin的数据库管理页面中,可以查看到数据库中包含表的信息,如图9-23所示。
图9-23 数据库管理页面
单击表后面的“结构”超链接,打开编辑表结构页面,如图9-24所示。
图9-24 编辑表结构页面
在编辑表结构页面中,以表格的形式列出了字段名称、类型和其他属性。单击“修改”超链接,可以打开设置字段属性页面,如图9-25所示。
图9-25 设置字段属性页面
在设置字段属性页面中,可以修改字段名称、字段类型、字段长度、默认值等属性。设置完成后,单击“保存”按钮,返回表管理页面。
在表管理页面中,单击字段后面的“删除”超链接,可以删除当前的字段。选中字段前面的复选框,然后单击后面的“主键”按钮,可以设置选中字段为主键。也可以选择多个字段前面的复选框,然后单击列表格下面的图标按钮批量设置列属性。
在表管理页面的字段表格下面,可以添加字段。输入要添加的字段数量,选择添加字段的位置,然后单击“执行”按钮,可以在指定的位置插入指定数量的新字段。
也可以使用ALTER TABLE语句修改表的结构,包括添加列、修改列属性、删除列等操作。
1.向表中添加列
使用ALTER TABLE语句向表中添加列的基本语法如下:
ALTER TABLE 表名 ADD 列名数据类型和长度列属性
【例9-14】 使用ALTER TABLE 语句在表Employees 中增加一列,列名为Tele,数据类型为varchar,长度为50,列属性为允许空。具体语句如下:
ALTER TABLE Employees ADD Tele VARCHAR(50) NULL
2.修改列属性
使用ALTER TABLE语句修改列属性的基本语法如下:
ALTER TABLE 表名 MODIFY 列名新数据类型和长度新列属性
【例9-15】 使用ALTER TABLE语句在表Employees中修改Tele列的属性,修改数据类型为CHAR,长度为50,列属性为允许空。具体语句如下:
ALTER TABLE Employees MODIFY Tele CHAR(50) NULL
3.删除列
使用ALTER TABLE语句删除列的基本语法如下:
ALTER TABLE 表名 DROP COLUMN 列名
【例9-16】 使用ALTER TABLE语句在表Employees中删除Tele列。具体语句如下:
ALTER TABLE Employees DROP COLUMN Tele
9.4.5 删除表
在phpMyAdmin的数据库管理页面中,可以查看到数据库中包含表的信息。单击表后面的“删除”超链接,可以删除指定的表。
也可以使用DROP TABLE语句删除表,语法如下:
DROP TABLE 表名