创建表
语法:
sql
CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;
说明:
- field表示列名
- datatype表示列的类型
- character set字符集,如果不指定字符集,默认为当前数据库的字符集
- collate校验规则
- engine搜索引擎,如果不指定,则选用配置文件的引擎
创建表示例
sql
create table users (
id int,
name varchar(20) comment '用户名',
password char(32) comment '密码是32位的md5值',
birthday date comment '生日'
) character set utf8 engine MyISAM;

此时在MySQL的默认存储路径/var/lib/mysql/,对应我们当前数据库user_db的路径/var/lib/mysql/user_db下就会新增三个文件:

- .sdi是数据库镜像文件
- .MYD是表数据
- .MYI是表索引
- 8.0以前的MySQL没有.sdi文件而是 .frm表结构
我们可以以默认形式创建一个表:
sql
create table users2 (
id int,
name varchar(20) comment '用户名',
password char(32) comment '密码是32位的md5值',
birthday date comment '生日'
);
此时我们的搜索引擎就是InnoDB。

可以看到InnoDB引擎形式创建的表只会生成一个.ibd文件。
- .ibd 文件是 MySQL InnoDB 存储引擎的独立表空间文件
查看表的结构
语法:
sql
desc 表名;

- Fileld 字段名字
- Type 字段类型
- Null 是否允许为空
- Key 索引类型
- Default 默认值
- Extra 扩充
此外,我们还能用:
sql
show create table 表名;
来显示创建语句:

有很多-妨碍我们,我们可以在show create table 表名后加上\G去掉这些字符:

此时\G后面就不用跟;了。
注意到我们的user2就是默认字符集,默认引擎。
修改表
我们可以修改表的名字,字段名字,字段大小之类的。
语法:
sql
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);
如我们先在users中插入两条数据:
sql
insert into users values(1,'a','b','1982-01-04'),(2,'b','c','1984-01-04');

- 此时我们可以添加一个字段来存储图片保存路径:
sql
alter table users add img_path varchar(100) comment '图片路径' after birthday;

这里的after就是指img_path这一列在birthday之后.
- 修改name的类型长度:
sql
alter table users modify name varchar(60);

注意我们再查看创建语句:

细心的读者已经发现了,我们的comment描述被覆盖了。所以modify是覆盖式的修改,因此我们修改的时候要把类型打全哦,包括之前的comment。
- 删除password列:
sql
alter table users drop password;

此时password的数据都丢失了,所以不要随意删除列。
4.修改表名
sql
alter table users rename (to) employee;

此时我们的文件名也会跟着一起修改:

5.将name列修改为xingming:
sql
alter table employee change name xingming varchar(60);
注意把类型带上哦。

删除表
语法:
sql
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
如:

以上我们对表操作,除了插入数据都是DDL【data definition language】数据定义语言。