Mysql 表的操作
表操作的基本语法
# 创建表语法: create table 表名( 字段名1 类型[(宽度) 约束条件], 字段名2 类型[(宽度) 约束条件], 字段名3 类型[(宽度) 约束条件] ); # 删除表语法 drop table 表名; # 修改表名 alter table 表名 rename 新表名; # 增加字段 alter table 表名 add 字段名 数据类型 [完整性约束条件…] alter table 表名 add 字段名 数据类型 [完整性约束条件…] first # 字段显示第一位 alter table 表名 add 字段名 数据类型 [完整性约束条件…] after 字段名 # 插入到某个字段后 # 删除字段 alter table 表名 drop 字段名; # 修改字段 alter table 表名 modify 字段名 数据类型 [完整性约束条件…] alter table 表名 modify 字段名 数据类型 [完整性约束条件…] first alter table 表名 modify 字段名 数据类型 [完整性约束条件…] after 字段名 alter table 表名 change 旧字段名 新字段名 数据类型 [完整性约束条件…] alter table 表名 change 旧字段名 新字段名 数据类型 [完整性约束条件…] first; alter table 表名 change 旧字段名 新字段名 数据类型 [完整性约束条件…] after 某字段; # 查看所有的表名字 mysql> show tables; # 查看表结构 mysql> desc 表名; mysql> describe 表名; mysql> show create table 表名\G;
完整的创建表的语法 Navicat 导出的表sql 分析
set names utf8; set foreign_key_checks = 0; # 禁用外键 drop table if exists employee; # 如果存在 删除表 create table employee ( id int(11) unsigned not null auto_increment, name varchar(20) character set utf8 collate utf8_general_ci null default NULL, sex enum('male','female') character set utf8 collate utf8_general_ci not null default 'male', age tinyint(2) unsigned null default NULL, dep_id int(11) unsigned null default NULL, primary key (id) using BTREE, index depids(dep_id) using BTREE, constraint depids foreign key (dep_id) references department (id) on delete cascade on update cascade ) engine = InnoDB auto_increment = 7 character set = utf8 collate = utf8_general_ci row_format = Dynamic; set foreign_key_checks = 1; # 启用外建 # unsigned 无符号 # character set 设置字符集 # collate 数据库校对规则。ci是case insensitive的缩写,意思是大小写不敏感;相对的是cs,即case sensitive,大小写敏感; # using BTREE BTREE 和 HASH
Mysql的row_format
在mysql中, 若一张表里面不存在varchar、text以及其变形、blob以及其变形的字段的话,那么张这个表其实也叫静态表,即该表的row_format是 fixed,就是说每条记录所占用的字节一样。其优点读取快,缺点浪费额外一部分空间。
若一张表里面存在varchar、text以及其变形、blob以及其变形的字段的话,那么张这个表其实也叫动态表,即该表的row_format是 dynamic,就是说每条记录所占用的字节是动态的。其优点节省空间,缺点增加读取的时间开销。
静态表,查询速度快,空间利用率不高
动态表,查询速度慢,空间利用率较高
所以,做搜索查询量大的表一般都以空间来换取时间,设计成静态表。