别再被SMTP坑了!Python3发邮件报错‘Connection unexpectedly closed‘的3个真实原因与排查指南
2026/6/16 23:52:04
继上一篇 MySQL 入门实验后,这一次我们聚焦数据库和数据表的核心管理操作。无论是数据库的创建与删除,还是数据表的结构设计、修改与维护,都是数据库开发中的高频基础技能。本文将通过实验实操,详细拆解 MySQL 中数据库与数据表的全套管理方案,帮你夯实基础、熟练运用!
数据库是数据表的容器,所有表操作都需基于指定数据库进行,核心操作如下:
查看系统中所有数据库:
sql
SHOW DATABASES;执行后会列出 MySQL 中所有已创建的数据库(如默认的 mysql、sys 等)
查看数据库引擎(了解存储机制):
sql
SHOW ENGINES;常用引擎包括 InnoDB(支持事务、外键)、MyISAM(查询速度快)等
sql
-- 创建YGGL数据库 CREATE DATABASE YGGL; -- 创建studentsdb数据库 CREATE DATABASE studentsdb;sql
-- 选择YGGL为当前数据库 USE YGGL; -- 选择studentsdb为当前数据库 USE studentsdb;sql
-- 删除YGGL数据库 DROP DATABASE YGGL; -- 删除studentsdb数据库 DROP DATABASE studentsdb;数据表是存储数据的核心载体,掌握表结构的设计与修改是关键技能。
创建表时需指定字段名、数据类型、是否允许为空、是否为主键等属性,常用数据类型说明:
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) -- 家庭住址,可变长度,允许为空 );表创建后,可根据需求修改字段(增、删、改),核心语法如下:
| 操作需求 | 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 地址; |
修改或创建表后,可通过以下命令查看表结构是否符合预期:
sql
-- 查看emp表结构 DESC emp; -- 查看student_info表结构 DESC student_info;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,二值数据用bitvarchar(8)改为varchar(10)可兼容,反之可能截断数据)DROP DATABASE和DROP TABLE会直接删除数据,且无法恢复,操作前务必确认是否需要备份通过本次实验,我们系统掌握了 MySQL 数据库和数据表的全生命周期管理,这些技能是后续进行数据插入、查询、更新等操作的基础。建议大家多结合实际场景练习(比如设计一个班级信息表、图书信息表),加深对表结构设计和 SQL 语法的理解。如果在操作中遇到问题,欢迎在评论区留言交流~