SQL表操作是数据库管理的核心技能,涵盖结构定义(创建/修改/删除表)与元数据查询(查看表结构)四大操作。下面按SQL表操作的操作类型进行解析:
一、创建表(CREATE TABLE)
作用:定义新表的结构(字段名、数据类型、约束等)
基本语法:
CREATE TABLE 表名 (
字段名1 数据类型 [约束条件],
字段名2 数据类型 [约束条件],
...
);
语法元素说明
| | |
---|
CREATE TABLE | | |
表名 | | |
字段名 | | |
数据类型 | | |
约束条件 | 可选规则(如主键PRIMARY KEY 、非空NOT NULL ) | |
数据类型说明
| | |
---|
INT | | 18 |
VARCHAR(n) | | '张三' |
CHAR(n) | | 'M' |
DATE | | '2005-08-12' |
DECIMAL(p,s) | | 99.95 |
BOOLEAN | | TRUE |
返回值
- 成功:无直接数据返回,在系统表(如
information_schema.tables
)中注册新表
应用示例:创建学生表
需求描述:建立学生信息表,包含:
CREATE TABLE students (
student_id INT PRIMARY KEY,
name VARCHAR(30) NOT NULL,
gender CHAR(1) CHECK (gender IN ('M', 'F')),
class_code VARCHAR(10),
birth_date DATE
);
关键约束说明:
二、修改表(ALTER TABLE)
作用:动态调整已存在的表结构
基本语法:
ALTER TABLE 表名
[ADD | DROP | MODIFY | CHANGE] 列名 [新数据类型] [位置选项];
子命令解析
1. 新增字段(ADD COLUMN)
ALTER TABLE 表名
ADD COLUMN 新字段名 数据类型 [FIRST|AFTER 已有字段];
位置选项:
2. 删除字段(DROP COLUMN)
ALTER TABLE 表名
DROP COLUMN 字段名;
⚠️ 风险提示:该操作直接删除列及数据,无确认步骤
3. 修改字段类型(MODIFY COLUMN)
ALTER TABLE 表名
MODIFY COLUMN 字段名 新数据类型;
限制:仅兼容数据类型转换(如VARCHAR(10)
→VARCHAR(20)
),非兼容转换(如文本→数字)需数据清洗
4. 重命名字段(CHANGE COLUMN)
ALTER TABLE 表名
CHANGE COLUMN 旧字段名 新字段名 数据类型;
注:必须携带数据类型(即使不改类型)
5. 表重命名(RENAME TO)
ALTER TABLE 旧表名
RENAME TO 新表名;
返回值
应用示例:班级表结构迭代
初始表结构:
CREATE TABLE classes (
class_id INT,
class_name VARCHAR(20)
);
需求变更:
- 添加班主任字段(
head_teacher VARCHAR(30)
)
-- 添加班主任字段(置于末尾)
ALTER TABLE classes
ADD COLUMN head_teacher VARCHAR(30);
-- 重命名字段(需保留数据类型)
ALTER TABLE classes
CHANGE COLUMN class_name name VARCHAR(20);
-- 删除旧ID列
ALTER TABLE classes
DROP COLUMN class_id;
三、删除表(DROP TABLE)
作用:彻底移除表结构及所有数据
基本语法:
DROP TABLE [IF EXISTS] 表名;
语法元素说明
返回值
应用示例:清理临时表
-- 安全删除写法(避免因表不存在导致脚本中断)
DROP TABLE IF EXISTS temp_log_data;
-- 传统写法(表不存在时报错)
DROP TABLE debug_records;
📌 重要提醒:生产环境务必通过权限控制限制DROP
操作,并搭配备份机制
四、查看表结构(DESCRIBE/DESC)
作用:获取表的字段定义元数据
基本语法:
DESC 表名;
-- 或
DESCRIBE 表名;
返回结果字段说明
| | |
---|
Field | | student_id |
Type | | int(11) |
Null | | NO |
Key | | PRI |
Default | | NULL |
Extra | | |
应用示例:查看学生表结构
DESC students;
典型输出:
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| student_id | int(11) | NO | PRI | NULL | |
| name | varchar(30) | NO | | NULL | |
| gender | char(1) | YES | | NULL | |
| class_code | varchar(10) | YES | | NULL | |
| birth_date | date | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+
五、综合应用:全流程模拟数据操作
步骤1:创建模拟表(公司部门表)
CREATE TABLE departments (
dept_id INT PRIMARY KEY AUTO_INCREMENT,
dept_name VARCHAR(50) NOT NULL UNIQUE,
create_date DATE DEFAULT '2023-01-01'
);
步骤2:插入模拟数据
INSERT INTO departments (dept_name, create_date)
VALUES
('技术研发部', '2018-05-10'),
('市场运营部', '2019-11-22'),
('人力资源部', '2020-03-15');
步骤3:结构变更(添加预算字段)
ALTER TABLE departments
ADD COLUMN annual_budget DECIMAL(12,2) NOT NULL DEFAULT 100000.00;
步骤4:验证操作
-- 查看最新表结构
DESC departments;
-- 查询数据
SELECT * FROM departments;
输出样例:
+-----------+------------------+------------+----------------+
| dept_id | dept_name | create_date| annual_budget |
+-----------+------------------+------------+----------------+
| 1 | 技术研发部 | 2018-05-10 | 100000.00 |
| 2 | 市场运营部 | 2019-11-22 | 100000.00 |
| 3 | 人力资源部 | 2020-03-15 | 100000.00 |
+-----------+------------------+------------+----------------+
语法要点总结
🔍 扩展提示:
- 表操作常配合约束(
PRIMARY KEY
, FOREIGN KEY
)保证数据质量 - 生产环境建议使用可视化工具(如MySQL Workbench)辅助生成DDL语句
阅读原文:原文链接
该文章在 2025/9/1 12:06:22 编辑过