MySQL(06)—创建和管理表
创建和管理表
1. 创建数据库
创建一个保存员工信息的数据库
1
2
3create database employee_date;
[2021-08-20 10:57:37] 1 row affected in 16 ms相关其他命令
show database:查看当前数据库
use employees:“使用”一个数据库,使其作为当前数据库1
2myemployees> use employee_date
[2021-08-20 11:00:02] completed in 0 ms
1.1 命名规则
数据库名不得超过30个字符,变量名限制为29个,必须只能包含A-Z,a-z,0-9,_共63个字符。不能在对象名的字符间留空格,必须不能和用户定义的其他对象重名,必须保证你的字段没有和和保留字、数据库系统或常用 方法冲突 •。保持字段名和类型的一致性,在命名字段并为其指定数 据类型的时候一定要保证一致性。假如数据类型在一 个表里是整数,那在另一个表里可就别变成字符型了
2. 创建表
CREAT TABLE语句
必须具备:
CREATE TABLE 权限
存储空间
1
CREATE TABLE [schema.]table (column datatype [DEFAULT expr][,...]);
必须指定:
表名;列名,数据类型,尺寸
2.1. 创建表
语法
1 | CREATE TABLE dept(deptno INT(2), |

确认
1 | DESCRIBE dept |
3. 描述各种数据类型
3.1 常用数据类型
| 数据类型 | 描述 |
|---|---|
| INT | 使用4个字节保存整数数据 |
| CHAR(size) | 指定字符数据。若未指定,则默认一个字符,最大长度255 |
| VARCHAR(size) | 可变长字符数据,根据字符串实际长度保存,必须指定长度 |
| FLOAT(M,D) | 单精度,M=整数位+小数位,D=小数位。D<=M<=255,0<=D<=30,默认M+D<=6 |
| DOUBLE(M,D) | 双精度。D<=M<=255,0<=D<=30,默认M+D<=15 |
| DATE | 日期型数据,格式’YYYY-MM-DD’ |
| BLOB | 二进制形式的长文本数据,最大可达4G |
| TEXT | 长文本数据,最大可达4G |
1 | #创建表 |
4.2 使用子查询创建表
使用AS subquery选项,将创建表和插入数据结合起来
1 | CREATE TABLE table [(column,column...)] |
指定的列和子查询中的列要一一对应,通过列名和默认值定义列
复制现有表
1
2create table emp1 as select* from employees;
create table emp2 as select* from employees [where ...];1
2
3
4
5
6
7CREATE TABLE dept80
AS
SELECT employee_id, last_name,
salary*12 ANNSAL,
hire_date
FROM employees
WHERE department_id = 80;

4. 修改表的定义
ALTER TABLE语句
- 向已有表中添加列
- 修改现有表中的列
- 删除现有表中的列
- 重命名现有表中的列
追加一个新列
1
2
3
4alter table dept80
add job_id varchar(15);
[2021-08-20 11:12:51] completed in 28 ms
修改一个列
可以修改列的数据类型,尺寸和默认值
1
2alter table dept80
modify last_name varchar(30) default 'null_name';对默认值的修改只影响今后对表的修改
删除一个列
使用DROP COLUMN子句删除不在需要的列
1
2alter table dept80
drop column job_id;
重命名一个列
使用CHANGE old_column new_column dataType子句重命名列
1
2alter table dept80
change hiredate hire_date datetime;
5. 删除,重命名和清空表
5.1 删除表
数据和结构都被删除,所有正在运行的相关事务被提交,所有相关索引被删除,DROP TABLE语句不能回滚
1 | drop table dept; |
5.2 清空表
TRUNCATE TABLE语句
删除表中所有的数据,释放表的存储空间
1
truncate table dept;
TRUNCATE语句不能回滚
可以使用 DELETE 语句删除数据,可以回滚
对比:
1
2
3
4delete from emp2;
select * from emp2;
rollback;
select * from emp2;
5.3 改变对象的名称
执行RENAME语句改变表,视图的名称
1 | alter table dept80 |