文章目录
下面学习MySQL中对表的一些操作指令集
创建表
语法:
sql
CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;
其中
- table_name表示创建表的名字
- fieldx 表示列名
- datatype表示该列的类型
- character set 字符集 如果没有设置字符集就默认使用所在数据库的字符集,校验规则也是一样
- 指定该表的存储引擎类型,否则就是使用系统默认的存储引擎
创建表的案例
下面演示创建表的实例,在创建表的之前需要使用use指令指定要操作的数据库。
sql
create table users (
id int,
name varchar(20) comment '用户名',
password char(32) comment '密码是32位的md5值',
birthday date comment '生日'
) character set utf8 engine MyISAM;
创建完成之后可以使用desc指令查看
说明:
不同的存储引擎,创建表之后产生的文件不一样,我们进入/var/lib/mysql/db1/
目录就能找到我们生成的表的的表文件
上图是使用MySAM存储引擎生成的表文件,下面换成innodb演示:
我们发现使用innodb存储引擎创建表生成的表文件只有一个。那这些文件分别存储什么内容呢?
其实不同的版本下,这些存储引擎生成的文件类型也是不同的。
·MYD
文件存储表的数据.MYI
文件存储表的索引.sdi
文件存储表的元数据.frm
文件存储表的结构定义.idb
存储数据和索引
查看表的结构
查看库中所有表
使用show tables
指令可以查看当前数据库的所有表名:
下面介绍如何查看表的详细信息
desc 表名
show create table
可以使用show create table
指令查看详细的表信息,将;
号换成\G
可以帮我们格式化显示 ,有助于我们查看。
通过上图我们可以看到,其实mysql真正建表的语句和我们输入的建表语句是有些差别的,这是mysql帮我们做了优化。
修改表
添加列
sql
ALTER TABLE table_name ADD column_name column_definition;
添加一列到table_name
表中,列名为column_name
,数据类型为column_definition
修改列
sql
ALTER TABLE table_name MODIFY column_name new_definition;
将table_name
表中的column_name
列的所有信息替换为new_definition
,不包括列名。
修改列名
sql
ALTER TABLE table_name CHANGE old_column_name new_column_name column_definition;
将table_name
表中的column_name
列的所有信息替换为new_definition
,包括列名。
删除列
sql
ALTER TABLE table_name DROP column_name;
删除table_name
表中的column_name
列。
修改表引擎
sql
ALTER TABLE table_name ENGINE = new_storage_engine;
将表的引擎设置为new_storage_engine
修改表名
sql
RENAME TABLE old_table_name TO new_table_name;
将表名修改为new_table_name
修改表的默认字符集和校验规则
sql
ALTER TABLE table_name DEFAULT CHARSET=new_charset COLLATE=new_collation;
修改表的字符集为new_charset,校验规则为new_collation
删除表
sql
drop table table_name;