Dawn's Blogs

分享技术 记录成长

0%

MySQL基础 (10) 创建和管理表

创建表

  • 创建新的表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE TABLE IF NOT EXISTS myemp1 (
id INT,
emp_name VARCHAR(15),
hire_date DATE
);

DESC myemp1;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| emp_name | varchar(15) | YES | | NULL | |
| hire_date | date | YES | | NULL | |
+-----------+-------------+------+-----+---------+-------+
  • 基于现有的表,利用SELECT语句查询,创建新的表,同时导入数据
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE myemp2
AS
SELECT employee_id, last_name, salary
FROM employees;

DESC myemp2;
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| employee_id | int | NO | | 0 | |
| last_name | varchar(25) | NO | | NULL | |
| salary | double(8,2) | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+

管理表

修改表

增加字段

添加字段,默认添加到最后

1
2
ALTER TABLE myemp1
ADD salary DOUBLE(10, 2); # 共10位,小数点2

添加字段,指定位置

1
2
3
4
5
6
7
# 添加到第一列
ALTER TABLE myemp1
ADD phone_number VARCHAR(20) FIRST;

# 添加到emp_name后
ALTER TABLE myemp1
ADD email VARCHAR(45) AFTER emp_name;

修改字段

1
2
ALTER TABLE myemp1
MODIFY emp_name VARCHAR(25);

重命名字段

1
2
ALTER TABLE myemp1
CHANGE salary monthly_salary DOUBLE(10, 2);

删除字段

1
2
ALTER TABLE myemp1
DROP COLUMN email;

重命名表

1
2
RENAME TABLE myemp1
TO myemp11;

删除表

1
DROP TABLE IF EXISTS myemp2;

清空表

1
TRUNCATE TABLE myemp1;

TRUNCATE TABLEDELETE区别

  • TRUNCATE TABLE属于DDL,不能回滚。DELETE属于DML,可以回滚
  • TRUNCATE TABLEDELETE执行速度块,且使用的系统和事务资源少
  • TRUNCATE无事务,不触发TRIGGER