内容正文:
项目5 MySQL数据表管理
数据库原理与应用技术MySQL
1
《数据库原理与应用技术-MySQL》
MySQL数据表管理
任务1 创建数据表
任务2 查看数据表结构
任务3 修改数据表结构
任务4 重命名数据表
任务5 复制数据表
任务6 删除数据表
1
《数据库原理与应用技术-MySQL》
任务1 创建数据表
子任务1 使用CREATE TABLE创建数据表
子任务2 使用Navicat创建数据表
1
《数据库原理与应用技术-MySQL》
子任务1 使用CREATE TABLE创建数据表
语法格式:
CREATE TABLE [IF NOT EXISTS ] <表名> (
字段名1 数据类型 [列级别约束条件],
字段名2 数据类型 [列级别约束条件],
……
)ENGINE=存储引擎类型 DEFAULT CHARSET=字符集类型 COLLATE=检验规则;
1
《数据库原理与应用技术-MySQL》
子任务1 使用CREATE TABLE创建数据表
说明:
(1)表是属于某个数据库的,在创建数据表之前,要使用USE语句选择指定的数据库为当前数据库,之后才能为该数据库创建表,如果没有选择数据库,系统会显示出错的提示“NO database selected”。
(2)IF NOT EXISTS: 如果数据库中已经存在<表名>的表,再使用CREATE TABLE 创建一个同名的表时,系统会给出错误信息,为了避免系统给出错误的提示信息,可以在创建表的名称前面加上这个判断,只有该表当前不存在时才执行CREATE TABLE 操作。
1
《数据库原理与应用技术-MySQL》
子任务1 使用CREATE TABLE创建数据表
表名命令规则:
① 表名可以由当前字符集中的任何字母、中文、数字字符组成,还可以包括下划线(-)和美元符号($),一般不建议使用中文,因为不同的字符集对中文字符的编码不同,如果字符集不匹配会出现乱码。
② 最长为64个字符,但长度受限于所用操作系统限定的长度。
③ 表名应尽可能做到“见名知意”,通过数据表的名称就可以知道数据表表示的实体集,从而增强可读性。
1
《数据库原理与应用技术-MySQL》
子任务1 使用CREATE TABLE创建数据表
字段名命令规则:
① 字段名可由中文、英文字母、数字、下划线(-)、#符号及$符号组合而成,在实际应用中,不建议使用中文作为字段名。
② 同一个数据表中,不能出现重名字段,但不同数据表中的字段名可以重名。
③ 字段名不能使用MySQL语言中的关键字,如DROP、ALTER、INSERT、CREATE等。
1
《数据库原理与应用技术-MySQL》
子任务1 使用CREATE TABLE创建数据表
定义字段的语法格式如下:
字段名 数据类型 [NOT NULL | NULL] [DEFAULT 默认值] [AUTO-INCREMENT] [UNIQUE KEY] [PRIMARY KEY] [COMMENT 注释名称] [REFERENCE 外键]
[INDEX 索引名] [CHARACTER SET 字符集] [COLLATE 校验规则]
1
《数据库原理与应用技术-MySQL》
子任务1 使用CREATE TABLE创建数据表
说明如下:
① NOT NULL或NULL:表示字段是否可以为NULL值,NULL不同于零、空白或长度为零的字符串,NULL值意味着此值是未知的或不可用的。
② DEFAULT:用来指定字段的默认值。
③ AUTO-INCREMENT:设置自增属性,只有整数类型才能设置该属性。
④ UNIQUE KEY:对字段指定唯一性约束,该字段不能有重复值,但可以有一个NULL值。
1
《数据库原理与应用技术-MySQL》
子任务1 使用CREATE TABLE创建数据表
⑤ PRIMARY KEY:对字段指定主键约束,该字段不能有重复值,也不能为NULL。
⑥ COMMENT:对字段指定注释名称,即给字段起一个别名。
⑦ REFERENCE:指定外键约束。
⑧ INDEX:为表的相关字段设置索引。
1
《数据库原理与应用技术-MySQL》
子任务1 使用CREATE TABLE创建数据表
对整个数据表设置存储引擎、字符集和校验规则的语法格式:
ENGINE=存储引擎类型 DEFAULT CHARSET=字符集类型 COLLATE=检验规则;
存储引擎是MySQL中数据存储在文件或内存中时采用的存储技术,可以根据自己的需要为每个数据表选择不同的存储引擎。MySQL支持的存储引擎有MyISAM、InnoDB、MEMORY等。
字符集是一种编码方案,定义可以存储的字符的集合以及这些字符存储到计算机中的编码规则。
每种字符集类型都包含几种校验规则,每种字符集也都有默认的校验规则,在实际应用中,应注意字符集类型和校验规则的对应关系,设置时不要发生冲突。
1
《数据库原理与应用技术-MySQL》
子任务1 使用CREATE TABLE创建数据表
例5.1 在db-student数据库中创建学生表(student)
(1)先将db-student设置为当前数据库
Mysql> USE DB-STUDENT;
Database changed
1
《数据库原理与应用技术-MySQL》
子任务1 使用CREATE TABLE创建数据表
(2)创建学生表(student)
CREATE TABLE STUDENT (
Stuid INT NOT NULL PRIMARY KEY COMMENT “学生ID”,
Stuname VARCHAR(20) NOT NULL COMMENT “学生姓名”,
Stusex CHAR(1) COMMENT “性别”,
Speciality VARCHAR(30) COMMENT “专业” ,
Classteach VARCHAR(20) COMMENT “任课教师”,
Address VARCHAR(30) COMMENT “地址”,
Photo BLOB COMMENT “照片”
);
1
《数据库原理与应用技术-MySQL》
子任务2 使用Navicat创建数据表
使用Navicat对话方式创建用户数据表的步骤如下:
(1)在Navicat中,双击连接对象MySQLLJ,展示数据库列表,双击列表中的db-student打开该数据库,在“表”上单击鼠标右键,选择“新建表”命令(或者单击工具样上的“新建表”按钮),则打开表结构设计窗口
1
《数据库原理与应用技术-MySQL》
子任务2 使用Navicat创建数据表
表结构设计窗口
1
《数据库原理与应用技术-MySQL》
子任务2 使用Navicat创建数据表
(2)在“表结构设计窗口”中可以设置字段名、数据类型及指定长度、是否允许为空值([NOT]NULL)、默认值、自动递增、主键、以及设置注释等。一个字段设置完成后,通过工具样上的“添加字段”按钮来添加新的字段,还可以进行“插入字段”或者“删除字段”操作。
1
《数据库原理与应用技术-MySQL》
子任务2 使用Navicat创建数据表
(3)完成学生表中所有字段的设置后,单击工具栏上的“保存”按钮,显示“表名”对话框,如图5-3所示。输入表名student后,单击“确定”按钮,即可完成学生表(student)的创建。
1
《数据库原理与应用技术-MySQL》
任务2 查看数据表结构
子任务1 使用SHOW COLUMNS查看数据表结构
子任务2 使用Navicat查看数据表结构
1
《数据库原理与应用技术-MySQL》
子任务1 使用SHOW COLUMNS查看数据表结构
语法格式:
SHOW [FULL] COLUMNS FROM <数据表名>
参数说明:
FULL:加上FULL输出时会包括用户对每个列所拥有的权限。
FULL也显示所有列的注释信息。;
1
《数据库原理与应用技术-MySQL》
子任务1 使用SHOW COLUMNS查看数据表结构
例5.2 使用SHOW COLUMNS命令查看db-student数据库中创建的学生表(student)的表结构。
Mysql> USE DB-STUDENT;
Database changed
Mysql> SHOW COLUMNS FROM student;
1
《数据库原理与应用技术-MySQL》
子任务1 使用SHOW COLUMNS查看数据表结构
执行完成后将显示student表的结构,如下所示:
1
《数据库原理与应用技术-MySQL》
子任务2 使用Navicat查看数据表结构
启动Navicat,在db-student数据库上双击鼠标,选定表后,在展示的student表上右击鼠标,选择“设计表”,则会显示student表的表结构。
1
《数据库原理与应用技术-MySQL》
任务3 修改数据表结构
子任务1 使用ALTER TABLE修改数据表结构
子任务2 使用Navicat修改数据表结构
1
《数据库原理与应用技术-MySQL》
子任务1 使用ALTER TABLE修改数据表结构
语法格式:
ALTER TABLE <表名>
ADD 字段名 数据类型 [属性][索引][FIRST | AFTER 字段名 ]|
MODIFY 字段名 数据类型 [属性][索引]|
CHANGE 字段名 新字段名 数据类型 [属性][索引]|
DROP 字段名|
AUTO_INCREMENT=N|
RENAME [AS|TO] 新表名
ENGINE=更改后的存储引擎名称
CHARSET=更改后的字符集名称
COLLATE=更改后的校验规则名称
1
《数据库原理与应用技术-MySQL》
子任务1 使用ALTER TABLE修改数据表结构
说明:
(1)ADD用来添加一个新的字段,如果没有指定FIRST或AFTER,则在表的列尾添加一个字段,否则在表的列头或者指定字段的后面添加新的字段。
(2)MODIFY用来更改指定字段的数据类型等。
(3)CHANGE也用来更改指定字段的数据类型等,但可以同时把指定字段更改为一个新的名字。
(4)DROP用来删除指定字段。
(5)AUTO_INCREMENT=N用来设置AUTO_INCREMENT的初始值。
1
《数据库原理与应用技术-MySQL》
子任务1 使用ALTER TABLE修改数据表结构
说明:
(6)RENAME AS|TO 用来给数据表重新命名。
(7)ENGINE:对指定表的存储引擎进行修改。
(8)CHARSET:对指定表的字符集进行修改
(9)COLLATE:对指定表的校验规则进行修改
1
《数据库原理与应用技术-MySQL》
子任务1 使用ALTER TABLE修改数据表结构
例5.3 在学生表(student)中Stusex字段的后面添加一个新的出生日期字段(Birthday)。
Mysql> USE db-student;
Database changed
Mysql> ALTER TABLE student
-> ADD Birthday DATE AFTER Stusex;
1
《数据库原理与应用技术-MySQL》
子任务1 使用ALTER TABLE修改数据表结构
例5.4 将学生表(student)中姓名(Stuname)的长度修改为VARCHAR(30)。
Mysql> ALTER TABLE student
-> MODIFY Stuname VARCHAR(30);
1
《数据库原理与应用技术-MySQL》
子任务1 使用ALTER TABLE修改数据表结构
例5.5 将学生表(student)改名为studentbak。
Mysql> ALTER TABLE student
-> RENAME TO studentbak;
1
《数据库原理与应用技术-MySQL》
子任务2 使用Navicat修改数据表结构
使用Navicat方式修改表结构的步骤如下:
(1)在Navicat中,双击展开MySQLLJ连接对象,再次双击数据库列表中的db-student,打开该数据库,在数据表列表中的student上单击鼠标右键,选择“设计表”命令(或者单击工具栏上的“设计表”按钮),则打开学生表的表结构设计窗口。
1
《数据库原理与应用技术-MySQL》
子任务2 使用Navicat修改数据表结构
1
《数据库原理与应用技术-MySQL》
子任务2 使用Navicat修改数据表结构
(2)在该窗口中,可以添加字段、插入字段、删除字段,可以修改某一字段的名称、数据类型、数据长度、是否允许为空值等。
(3)修改完成后,单击工具栏上的“保存”按钮即可。
1
《数据库原理与应用技术-MySQL》
任务4 重命名数据表
子任务1 使用RENAME TABLE重命名数据表
子任务2 使用Navicat重命名数据表
1
《数据库原理与应用技术-MySQL》
子任务1 使用RENAME TABLE重命名数据表
语法格式:
RENAME TABLE <旧表名> TO <新表名>
1
《数据库原理与应用技术-MySQL》
子任务1 使用RENAME TABLE重命名数据表
例5.6 将学生表(student)重命名为student1。
Mysql> RENAME TABLE student TO student1;
1
《数据库原理与应用技术-MySQL》
子任务2 使用Navicat重命名数据表
使用Navicat方式复制表操作步骤如下:
在Navicat中,双击展开MySQLLJ连接对象,再次双击数据库列表中的db-student,打开该数据库,在数据表列表中的student上单击鼠标右键,选择“重命名”命令,原表名变为可修改状态,重命名完成后,单击其他任意位置即可完成修改。
1
《数据库原理与应用技术-MySQL》
子任务2 使用Navicat重命名数据表
1
《数据库原理与应用技术-MySQL》
任务5 复制数据表
子任务1 使用CREATE TABLE …LIKE复制数据表
子任务2 使用Navicat复制数据表
1
《数据库原理与应用技术-MySQL》
子任务1 使用CREATE TABLE …LIKE复制数据表
语法格式:
CREATE TABLE <新表名> LIKE <旧表名>
说明:可以把旧表的表结构、索引、默认值等都复制到新表中。
1
《数据库原理与应用技术-MySQL》
子任务1 使用CREATE TABLE …LIKE复制数据表
例5.7 复制学生表(student),生成一张新的数据表studentnew。
Mysql> CREATE TABLE studentnew LIKE student;
1
《数据库原理与应用技术-MySQL》
子任务2 使用Navicat复制数据表
使用Navicat方式复制表操作步骤如下:
在Navicat中,双击展开MySQLLJ连接对象,再次双击数据库列表中的db-student,打开该数据库,在数据表列表中的student上单击鼠标右键,选择“复制表”命令,在弹出的子菜单中可以选择复制 “结构或数据”或者是“仅结构”。
1
《数据库原理与应用技术-MySQL》
子任务2 使用Navicat复制数据表
1
《数据库原理与应用技术-MySQL》
任务6 删除数据表
子任务1 使用DROP TABLE删除数据表
子任务2 使用Navicat删除数据表
1
《数据库原理与应用技术-MySQL》
子任务1 使用DROP TABLE删除数据表
语法格式:
DROP TABLE [IF EXISTS]<表名>
1
《数据库原理与应用技术-MySQL》
子任务1 使用DROP TABLE删除数据表
例5.8 删除数据库db-student中的studentnew表。
Mysql> DROP TABLE studentnew;
1
《数据库原理与应用技术-MySQL》
子任务2 使用Navicat删除数据表
使用Navicat方式删除数据表操作步骤如下:
(1)在Navicat中,双击展开MySQLLJ连接对象,再次双击数据库列表中的db-student,打开该数据库,在数据表列表中的studentnew上单击鼠标右键,选择“删除表”命令(或者单击工具栏上的“删除表”按钮),
1
《数据库原理与应用技术-MySQL》
子任务2 使用Navicat删除数据表
1
《数据库原理与应用技术-MySQL》
子任务2 使用Navicat删除数据表
(2)在弹出的“确认删除”提示对话框中,单击“删除”按钮,即可完成删除操作。
1
《数据库原理与应用技术-MySQL》
子任务2 使用Navicat删除数据表
1
《数据库原理与应用技术-MySQL》
$$