MySQL 表
1. 建表的基本语法
CREATE TABLE <表名> ([表定义选项])[表选项][分区选项];
# 表定义选项的格式:<字段> <type>,<字段> <type>, ...
在当前数据库下创建表
# 切换数据库
mysql> use test_db
Database changed
# 在当前数据库创建表 student
mysql> create table student (id INT(5),name varchar(10),age int(3));
Query OK, 0 rows affected, 2 warnings (0.04 sec)
在其他数据库下创建表:使用 <DBname>.<TableName>
mysql> create table atmuser.test (name varchar(5));
Query OK, 0 rows affected (0.03 sec)
mysql> desc atmuser.test;
+-------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| name | varchar(5) | YES | | NULL | |
+-------+------------+------+-----+---------+-------+
2. 查看所有表
# 查看当前数据库的表
mysql> show tables;
+-------------------+
| Tables_in_test_db |
+-------------------+
| student |
+-------------------+
# 查看其他数据库下的表 使用关键字 in
mysql> show tables in atmuser;
+-------------------+
| Tables_in_atmuser |
+-------------------+
| test |
| user |
+-------------------+
3. 查看表结构
- Null:表示该列是否可以为 NULL
- Key:表示该列是否已编制索引。PRI 表示该列是表主键的一部分,UNI 表示该列是 UNIQUE 索引的一部分,MUL 表示在列中某个给定值允许出现多次。
- Default:表示该列是否有默认值
- Extra:其他额外信息,如 AUTO_INCREMENT 等。
mysql> desc atmuser.user;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| id | int(10) | NO | PRI | NULL | auto_increment |
| name | varchar(20) | YES | | NULL | |
| password | varchar(20) | YES | | NULL | |
| balance | int(10) | YES | | NULL | |
| debt | int(10) | YES | | NULL | |
+----------+-------------+------+-----+---------+----------------+
4. 查看建表时的语句:
# \G 可以规范的打印
mysql> show create table atmuser.user\G;
*************************** 1. row ***************************
Table: user
Create Table: CREATE TABLE `user` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`password` varchar(20) DEFAULT NULL,
`balance` int(10) DEFAULT NULL,
`debt` int(10) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
5. 修改表结构
语法:
ALTER TABLE <表名> [修改选项]
修改选项:
- 添加新字段
ADD COLUMN <字段> <类型> [first|after <已存在的字段>]
- 修改字段和类型
CHANGE COLUMN <旧字段> <新字段> <新列类型>
- 修改字段的值
ALTER COLUMN <字段> { SET DEFAULT <默认值> | DROP DEFAULT }
- 修改字段的类型
MODIFY COLUMN <字段> <新类型>
- 删除字段
DROP COLUMN <字段>
- 重命名表
RENAME TO <新表名>
e.g.
# 查看当前表
mysql> show tables;
+-------------------+
| Tables_in_test_db |
+-------------------+
| student |
+-------------------+
# 查看表结构
mysql> desc student;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(5) | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
| age | int(3) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
# 添加新字段 class,指定位置 放到字段 class之后(不指定位置则默认放到最后)
mysql> alter table student
-> add column class varchar(5) after name;
mysql> desc student;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(5) | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
| class | varchar(5) | YES | | NULL | |
| age | int(3) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
6. 删除数据表
语法:
DROP TABLE [IF EXISTS] <表名> [ , <表名1> , <表名2>] …
e.g.
mysql> show tables
-> ;
+-------------------+
| Tables_in_test_db |
+-------------------+
| student |
| test |
+-------------------+
mysql> drop table if exists test;
Query OK, 0 rows affected (0.02 sec)
mysql> show tables;
+-------------------+
| Tables_in_test_db |
+-------------------+
| student |
+-------------------+
分类:
MYSQL
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构