继上一篇 MySQL 入门实验后,这一次我们聚焦数据库和数据表的核心管理操作。无论是数据库的创建与删除,还是数据表的结构设计、修改与维护,都是数据库开发中的高频基础技能。本文将通过实验实操,详细拆解 MySQL 中数据库与数据表的全套管理方案,帮你夯实基础、熟练运用!
一、实验核心目标
- 精通数据库的创建、查看、选择与删除操作(SQL 语句 + 工具实操)
- 掌握数据表的创建、结构修改(增删改字段)、复制与删除技巧
- 熟悉 MySQL 常用数据类型(char、varchar、date、bit 等)的应用场景
- 能够根据业务需求设计数据表结构,并灵活调整表结构
二、核心知识点与实操详解
(一)数据库管理:从创建到删除的完整流程
数据库是数据表的容器,所有表操作都需基于指定数据库进行,核心操作如下:
1. 查看相关信息
-
查看系统中所有数据库:
sql
SHOW DATABASES;执行后会列出 MySQL 中所有已创建的数据库(如默认的 mysql、sys 等)
-
查看数据库引擎(了解存储机制):
sql
SHOW ENGINES;常用引擎包括 InnoDB(支持事务、外键)、MyISAM(查询速度快)等
2. 创建与选择数据库
-
创建数据库(以 YGGL 和 studentsdb 为例): sql
-- 创建YGGL数据库 CREATE DATABASE YGGL; -- 创建studentsdb数据库 CREATE DATABASE studentsdb; -
选择当前操作的数据库(必须先选择再操作表): sql
-- 选择YGGL为当前数据库 USE YGGL; -- 选择studentsdb为当前数据库 USE studentsdb;
3. 删除数据库(谨慎操作!数据不可恢复)
sql
-- 删除YGGL数据库
DROP DATABASE YGGL;
-- 删除studentsdb数据库
DROP DATABASE studentsdb;
(二)数据表管理:创建、修改与删除全操作
数据表是存储数据的核心载体,掌握表结构的设计与修改是关键技能。
1. 数据表创建(含数据类型应用)
创建表时需指定字段名、数据类型、是否允许为空、是否为主键等属性,常用数据类型说明:
char(n):固定长度字符串,适合长度固定的数据(如学号、ID)varchar(n):可变长度字符串,适合长度不固定的数据(如姓名、地址)date:日期类型(格式:YYYY-MM-DD),存储生日、日期等bit:布尔类型(1 代表真,0 代表假),适合存储性别(男 / 女)等二值数据
实操示例 1:创建 emp 表(雇员表)
sql
-- 先选择YGGL数据库
USE YGGL;
-- 创建emp表
CREATE TABLE emp(
eid char(6) NOT NULL PRIMARY KEY, -- 员工ID,固定6位,非空,主键
name varchar(8) NOT NULL, -- 员工姓名,可变长度,非空
birthday date, -- 生日,日期类型,允许为空
sex bit -- 性别,布尔类型,允许为空
);
实操示例 2:创建 student_info 表(学生信息表)
sql
-- 先选择studentsdb数据库
USE studentsdb;
-- 创建student_info表
CREATE TABLE student_info(
学号 char(4) NOT NULL PRIMARY KEY, -- 学号,固定4位,非空,主键
姓名 char(8) NOT NULL, -- 姓名,固定8位,非空
性别 char(2), -- 性别,固定2位,允许为空
出生日期 date, -- 出生日期,日期类型,允许为空
家庭住址 varchar(50) -- 家庭住址,可变长度,允许为空
);
2. 数据表结构修改(ALTER TABLE 核心用法)
表创建后,可根据需求修改字段(增、删、改),核心语法如下:
| 操作需求 | SQL 语法 | 实操示例 |
|---|---|---|
| 增加字段 | ALTER TABLE 表名 ADD 字段名 数据类型 [是否允许为空] | 为 emp 表增加 deptid 字段(部门 ID):ALTER TABLE emp ADD deptid char(3); |
| 修改字段名 + 数据类型 | ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型 | 将 emp 表的 name 列改名为 ename,长度改为 10:ALTER TABLE emp CHANGE name ename varchar(10); |
| 删除字段 | ALTER TABLE 表名 DROP 字段名 | 删除 emp 表的 birthday 列:ALTER TABLE emp DROP birthday; |
| 修改字段约束(如允许为空) | ALTER TABLE 表名 MODIFY 字段名 数据类型 NULL | 允许 student_info 表的 "姓名" 列取空值:ALTER TABLE student_info MODIFY 姓名 char(8) NULL; |
| 修改字段名(保留数据类型) | ALTER TABLE 表名 RENAME COLUMN 旧字段名 TO 新字段名 | 将 student_info 表的 "家庭住址" 改为 "地址":ALTER TABLE student_info RENAME COLUMN 家庭住址 TO 地址; |
3. 查看表结构
修改或创建表后,可通过以下命令查看表结构是否符合预期:
sql
-- 查看emp表结构
DESC emp;
-- 查看student_info表结构
DESC student_info;
4. 数据表复制与删除
-
复制表(含结构和数据):创建与 student_info 结构和数据完全相同的 stu 表 sql
CREATE TABLE stu LIKE student_info; -- 复制表结构 INSERT INTO stu SELECT * FROM student_info; -- 复制表数据 -- 简化写法(部分MySQL版本支持): CREATE TABLE stu AS SELECT * FROM student_info; -
删除表(谨慎操作!数据不可恢复): sql
-- 删除stu表 DROP TABLE stu; -- 删除student_info表 DROP TABLE student_info;
(三)综合实操:学生信息表完整管理流程
将上述知识点串联,完成从数据库创建到表删除的全流程:
- 创建数据库:
CREATE DATABASE studentsdb; - 选择数据库:
USE studentsdb; - 创建表:
CREATE TABLE student_info(...);(见上文示例) - 修改表结构:
- 允许 "姓名" 列空值:
ALTER TABLE student_info MODIFY 姓名 char(8) NULL; - 改 "家庭住址" 为 "地址":
ALTER TABLE student_info RENAME COLUMN 家庭住址 TO 地址; - 增加 "备注" 字段:
ALTER TABLE student_info ADD 备注 varchar(50); - 删除 "出生日期" 列:
ALTER TABLE student_info DROP 出生日期;
- 允许 "姓名" 列空值:
- 复制表:
CREATE TABLE stu AS SELECT * FROM student_info; - 删除表:
DROP TABLE stu; DROP TABLE student_info; - 删除数据库:
DROP DATABASE studentsdb;
三、实验总结与避坑指南
- 数据类型选择技巧:固定长度用
char(效率高),可变长度用varchar(省空间);日期用date,二值数据用bit - 主键设计原则:主键必须非空且唯一,建议用无业务含义的 ID(如 eid、学号),避免用姓名等可能重复的字段
- 修改表结构注意:修改字段名或数据类型时,需确保不影响已有数据(如将
varchar(8)改为varchar(10)可兼容,反之可能截断数据) - 删除操作警告:
DROP DATABASE和DROP TABLE会直接删除数据,且无法恢复,操作前务必确认是否需要备份 - 语法规范:SQL 关键字建议大写(如 CREATE、ALTER、DROP),字段名和表名尽量使用英文或中文拼音,避免特殊字符
通过本次实验,我们系统掌握了 MySQL 数据库和数据表的全生命周期管理,这些技能是后续进行数据插入、查询、更新等操作的基础。建议大家多结合实际场景练习(比如设计一个班级信息表、图书信息表),加深对表结构设计和 SQL 语法的理解。如果在操作中遇到问题,欢迎在评论区留言交流~