CREATE TABLE 表名称(
字段名1 数据类型,
字段名2 数据类型,
字段名3 数据类型,
)
- mysql> create table tb_student(
- -> sid INT,
- -> sname VARCHAR(20)
- -> );
- Query OK, 0 rows affected (1.19 sec)
-
- mysql> create table tb_teacher(
- -> tid INT,
- -> tname VARCHAR(20)
- -> );
- Query OK, 0 rows affected (1.19 sec)
SHOW TABLES;
- mysql> show tables;
- +------------------+
- | Tables_in_test01 |
- +------------------+
- | tb_student |
- | tb_teacher |
- +------------------+
- 2 rows in set (0.00 sec)
使用show tables;前必须先use 数据库名称,选择具体的数据库。
如果不选择数据库,那么使用如下语句:
SHOW TABLES FROM 数据库名称;
- mysql> show tables from test01;
- +------------------+
- | Tables_in_test01 |
- +------------------+
- | tb_student |
- | tb_teacher |
- +------------------+
- 2 rows in set (0.00 sec)
DESCRIBE 表名称;简写 DESC 表名称;
或者
SHOW CREATE TABLE 表名称;
- mysql> desc tb_student;
- +-------+-------------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +-------+-------------+------+-----+---------+-------+
- | sid | int | YES | | NULL | |
- | sname | varchar(20) | YES | | NULL | |
- +-------+-------------+------+-----+---------+-------+
- 2 rows in set (0.00 sec)
- mysql> show create table tb_student\G
- *************************** 1. row ***************************
- Table: tb_student
- Create Table: CREATE TABLE `tb_student` (
- `sid` int DEFAULT NULL,
- `sname` varchar(20) DEFAULT NULL
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
- 1 row in set (0.00 sec)
这种方式查看数据库表定义不只是字段,还有字符集、字符集校对规则和存储引擎(例如,InnoDB)等信息。
ALTER TABLE 表名称 ADD COLUMN 新增字段名 数据类型;
- mysql> alter table tb_student add column score INT;
- Query OK, 0 rows affected (0.65 sec)
- Records: 0 Duplicates: 0 Warnings: 0
-
- mysql> desc tb_student;
- +-------+-------------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +-------+-------------+------+-----+---------+-------+
- | sid | int | YES | | NULL | |
- | sname | varchar(20) | YES | | NULL | |
- | score | int | YES | | NULL | |
- +-------+-------------+------+-----+---------+-------+
- 3 rows in set (0.00 sec)
默认在所有字段末尾添加新字段。 可以通过AFTER和FIRST指定添加位置。
ALTER TABLE 表名称 ADD COLUMN 新增字段名 数据类型 AFTER 字段名;
ALTER TABLE 表名称 ADD COLUMN 新增字段名 数据类型 FIRST;
- mysql> desc tb_student;
- +-------+-------------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +-------+-------------+------+-----+---------+-------+
- | sid | int | YES | | NULL | |
- | sname | varchar(20) | YES | | NULL | |
- | score | int | YES | | NULL | |
- +-------+-------------+------+-----+---------+-------+
- 3 rows in set (0.00 sec)
-
- mysql> alter table tb_student add column age INT AFTER sname;
- Query OK, 0 rows affected (0.80 sec)
- Records: 0 Duplicates: 0 Warnings: 0
-
- mysql> desc tb_student;
- +-------+-------------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +-------+-------------+------+-----+---------+-------+
- | sid | int | YES | | NULL | |
- | sname | varchar(20) | YES | | NULL | |
- | age | int | YES | | NULL | |
- | score | int | YES | | NULL | |
- +-------+-------------+------+-----+---------+-------+
- 4 rows in set (0.00 sec)
ALTER TABLE 表名称 DROP COLUMN 字段名;
- mysql> desc tb_student;
- +-------+-------------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +-------+-------------+------+-----+---------+-------+
- | sid | int | YES | | NULL | |
- | sname | varchar(20) | YES | | NULL | |
- | age | int | YES | | NULL | |
- | score | int | YES | | NULL | |
- +-------+-------------+------+-----+---------+-------+
- 4 rows in set (0.00 sec)
-
- mysql> alter table tb_student drop column age;
- Query OK, 0 rows affected (0.88 sec)
- Records: 0 Duplicates: 0 Warnings: 0
-
- mysql> desc tb_student;
- +-------+-------------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +-------+-------------+------+-----+---------+-------+
- | sid | int | YES | | NULL | |
- | sname | varchar(20) | YES | | NULL | |
- | score | int | YES | | NULL | |
- +-------+-------------+------+-----+---------+-------+
- 3 rows in set (0.00 sec)
修改字段名称可以通过CHANGE关键字实现,而修改字段数据类型、位置等属性则需要通过MODIFY关键字实现。
修改字段名称:
ALTER TABLE 表名称 CHANGE COLUMN 字段名 新字段名 数据类型;
- mysql> alter table tb_student change column score chinese INT;
- Query OK, 0 rows affected (0.79 sec)
- Records: 0 Duplicates: 0 Warnings: 0
-
- mysql> desc tb_student;
- +---------+-------------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +---------+-------------+------+-----+---------+-------+
- | sid | int | YES | | NULL | |
- | sname | varchar(20) | YES | | NULL | |
- | chinese | int | YES | | NULL | |
- +---------+-------------+------+-----+---------+-------+
- 3 rows in set (0.00 sec)
修改字段类型:
ALTER TABLE 表名称 MODIFY COLUMN 字段名 新数据类型;
ALTER TABLE 表名称 MODIFY COLUMN 字段名 数据类型 AFTER 字段名;
ALTER TABLE 表名称 MODIFY COLUMN 字段名 数据类型 FIRST;
- mysql> alter table tb_student modify column sname VARCHAR(30);
- Query OK, 0 rows affected (0.26 sec)
- Records: 0 Duplicates: 0 Warnings: 0
-
- mysql> desc tb_student;
- +---------+-------------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +---------+-------------+------+-----+---------+-------+
- | sid | int | YES | | NULL | |
- | sname | varchar(30) | YES | | NULL | |
- | chinese | int | YES | | NULL | |
- +---------+-------------+------+-----+---------+-------+
- 3 rows in set (0.00 sec)
ALTER TABLE 表名称 RENAME TO 新表名称;
RENAME TABLE 表名称 TO 新表名称;
- mysql> show tables;
- +------------------+
- | Tables_in_test01 |
- +------------------+
- | tb_student |
- | tb_teacher |
- +------------------+
- 2 rows in set (0.00 sec)
-
- mysql> alter table tb_student rename to student;
- Query OK, 0 rows affected (0.75 sec)
-
- mysql> show tables;
- +------------------+
- | Tables_in_test01 |
- +------------------+
- | student |
- | tb_teacher |
- +------------------+
- 2 rows in set (0.00 sec)
ALTER TABLE 表名称 CHARACTER SET 字符集名称 COLLATE 字符集对应的校对规则;
- mysql> show create table tb_student\G
- *************************** 1. row ***************************
- Table: tb_student
- Create Table: CREATE TABLE `tb_student` (
- `sid` int DEFAULT NULL,
- `sname` varchar(30) DEFAULT NULL,
- `chinese` int DEFAULT NULL
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
- 1 row in set (0.00 sec)
-
- mysql> alter table tb_student character set utf8 collate utf8_general_ci;
- Query OK, 0 rows affected, 2 warnings (0.34 sec)
- Records: 0 Duplicates: 0 Warnings: 2
-
- mysql> show create table tb_student\G
- *************************** 1. row ***************************
- Table: tb_student
- Create Table: CREATE TABLE `tb_student` (
- `sid` int DEFAULT NULL,
- `sname` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
- `chinese` int DEFAULT NULL
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3
- 1 row in set (0.00 sec)
DROP TABLE 表名称;
- mysql> show tables;
- +------------------+
- | Tables_in_test01 |
- +------------------+
- | tb_student |
- | tb_teacher |
- +------------------+
- 2 rows in set (0.00 sec)
-
- mysql> drop table tb_teacher;
- Query OK, 0 rows affected (2.60 sec)
-
- mysql> show tables;
- +------------------+
- | Tables_in_test01 |
- +------------------+
- | tb_student |
- +------------------+
- 1 row in set (0.00 sec)