1. 创建表
语法:
CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;
- field 表示列名, datatype 表示列的类型
- character set 字符集, 如果没有指定字符集, 则以所在数据库的字符集为准
- collate 校验规则, 如果没有指定校验规则, 则以所在数据库的校验规则为准
举个例子, 现在创建 users 表(使用InnoDB), users2 表(使用MyISAM).
create table users(-> id int,-> name varchar(20) comment '用户名',-> password char(32) comment '密码是32位md值',-> birthday date comment '生日'-> ) character set utf8mb4 engine InnoDB;create table users2 (-> id int,-> name varchar(20) comment '用户名',-> birthday date comment '生日',-> password char(32) comment '密码是32位的md值'-> ) character set utf8mb4 engine MyISAM;
在对应的数据库目录下, 可以看到:
users 表存储引擎是 MyISAM, 在数据目中有三个不同的文件, 分别是:
- 表结构, MySQL5.5 是users.frm; 8.0是 users.sdi
- 表数据: users.MYD
-
表索引: users.MYI
users2 表存储引擎是 InnoDB, MYSQL 8.0 下, 目录里是一个 ibd 文件.
2. 查看表结构
如果查看数据库有哪些表?
show tables;
如何查看特定表的信息?
desc 表名;
如何查看当时创建表时的选项等具体的信息?
show create table users \G;
3. 修改表
在项目实际开发中, 有时候需要修改某个表的结构, 比如字段名字, 字段大小, 字段类型, 表的字符集类型, 表的存储引擎等等. 我们还有需求,添加字段,删除字段等等. 这时我们就需要修改表:
ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column
datatype]...);
ALTER TABLE tablename MODIfy (column datatype [DEFAULT expr][,column
datatype]...);
ALTER TABLE tablename DROP (column);
添加列
当前表只有四列属性:
现在我想添加一列address属性:
alter table users add address varchar(60) comment '地址' after birthday;
插入新字段后, 对原来表中的数据没有影响:
修改列
修改列的字段类型
现在把一个列 name 的类型修改为varchar 60:
alter table users modify name varchar(60);
需要加上列修改后的属性
修改表的名称
ALTER TABLE 原表名 RENAME TO 新表名;
alter table users rename to user
指令中to可以省略
修改列的名称
ALTER TABLE 表名 CHANGE 原字段名 新字段名 新数据类型;
alter table user change name xingming varchar(60);
注意: 新的目标字段需要完整地定义, 即使其类型和之前一模一样, 否则报错:
删除列
注意: 删除字段一定要小心, 删除字段及其对应的列数据都没了
alter table users drop address;
4. 删除表
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
比如: drop table t1; 表t1就被删除了.