1、创建表
方式一:
语法格式:
CREATE TABLE [IF NOT EXISTS] 表名( 字段1, 数据类型 [约束条件] [默认值], 字段2, 数据类型 [约束条件] [默认值], 字段3, 数据类型 [约束条件] [默认值], …… [表约束条件] );
加上了IF NOT EXISTS关键字,则表示:如果当前数据库中不存在要创建的数据表,则创建数据表;如果当前数据库中已经存在要创建的数据表,则忽略建表语句,不再创建数据表。[ ]内的都是可选的,根据实际情况;其它的都是必须写的。
举例:
CREATE TABLE emp ( -- int类型 emp_id INT, -- 最多保存20个中英文字符 emp_name VARCHAR(20), -- 总位数不超过15位 salary DOUBLE(10,2), -- 日期类型 birthday DATE );
emp表结构显示:
方式二:
语法格式:
CREATE TABLE 表名 AS 查询语句;
举例:
#将employees表中所有的数据添加到emp1中 CREATE TABLE emp1 AS SELECT * FROM employees; #创建的emp2是空表,是一个表结构 CREATE TABLE emp2 AS SELECT * FROM employees WHERE 1=2;
2、查看表结构
在MySQL中创建好数据表之后,可以查看数据表的结构。MySQL支持使用DESCRIBE/DESC语句查看数据表结构,也支持使用SHOW CREATE TABLE语句查看数据表结构。
语法格式如下:
SHOW CREATE TABLE 表名;
使用SHOW CREATE TABLE语句不仅可以查看表创建时的详细语句,还可以查看存储引擎和字符编码。
3、修改表
修改表指的是修改数据库中已经存在的数据表的结构,而不是修改表中的数据,不要弄错了。
使用 ALTER TABLE 语句可以实现:
1、向已有的表中添加列
语法格式:
#【FIRST|AFTER 字段名】是把要插入的字段名放在已经存在的字段的前面或者后面 ALTER TABLE 表名 ADD 【COLUMN】 字段名 字段类型 【FIRST|AFTER 字段名】;
举例:
#向dept表中添加新的一列,列名是job_id,数据类型是varchar(15) #添加新列默认的位置是放在最后面 ALTER TABLE dept ADD job_id varchar(15);
- 2、修改现有表中的列
可以修改列的数据类型,长度、默认值和位置
语法格式:
ALTER TABLE 表名 MODIFY 【COLUMN】 字段名 字段类型 【DEFAULT 默认值】【FIRST|AFTER 字段名】;
举例:
#修改dept表中last_name中的数据类型是varchar(30) ALTER TABLE dept MODIFY last_name VARCHAR(30); #修改dept表中salary中的数据类型是double(9,2),默认值是1000 ALTER TABLE dept MODIFY salary double(9,2) default 1000;
3、删除现有表中的列
语法格式:
ALTER TABLE 表名 DROP 【COLUMN】字段名
举例:
ALTER TABLE dept DROP job_id;
4、重命名现有表中的列
语法格式:
ALTER TABLE 表名 CHANGE 【column】 列名 新列名 新数据类型;
举例:
ALTER TABLE dept CHANGE department_name dept_name varchar(15);
4、重命名表
语法格式:
RENAME TABLE emp TO myemp;
5、删除表
语法格式:
DROP TABLE [IF EXISTS] 数据表1 [, 数据表2, …, 数据表n];
IF EXISTS的含义为:如果当前数据库中存在相应的数据表,则删除数据表;如果当前数据库中不存在相应的数据表,则忽略删除语句,不再执行删除数据表的操作。
举例:
DROP TABLE dept80;
注意: DROP TABLE 语句不能回滚,在实际工作中要小心谨慎!
6、清空表
语法格式:
TRUNCATE TABLE 数据表;
举例:
#这里清空的是表中的数据,表的结构不会删除 TRUNCATE TABLE dept;
注意: TRUNCATE TABLE 语句也是不能回滚的,在实际工作中要小心谨慎!