(关注“数据库架构师”公众号,提升数据库技能,助力职业发展),今天小编就来说说关于mysql建表步骤 最常见MySQL建表及改表写法?下面更多详细答案一起来看看吧!
mysql建表步骤 最常见MySQL建表及改表写法
(关注“数据库架构师”公众号,提升数据库技能,助力职业发展)
说明:如下建表和改表用法适用于MySQL的各个版本,虽然某些操作可能还有其他写法,但是为了标准统一建议使用如下写法,避免一些审核系统或者管理上的复杂度!
一、创建表:
CREATE TABLE tab_name (
id int NOT NULL AUTO_INCREMENT COMMENT '主键',
uid int NOT NULL COMMENT '唯一流水id',
name varchar(20) NOT NULL DEFAULT '' COMMENT '名称',
amount int NOT NULL DEFAULT 0 COMMENT '数量',
create_date date NOT NULL DEFAULT '1000-01-01' COMMENT '创建日期',
create_time datetime DEFAULT '1000-01-01 00:00:00' COMMENT '创建时间',
update_time timestamp default current_timestamp on update current_timestamp COMMENT '更新时间(会自动更新,不需要刻意程序更新)',
PRIMARY KEY (id),
UNIQUE KEY uniq_uid (uid),
KEY idx_name (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='测试表';
建表规范
1、表必须有主键,不允许使用多个字段建立联合主键,不允许使用外键
2、表存储引擎仅仅支持InnoDB,且必须指明ENGINE=InnoDB
3、每个表索引的个数不能超过6个【包括主键】,每个联合索引包含的字段个数不能超过5个
4、普通索引名称必须以idx_开头,唯一索引必须以uniq_开头,且索引名越简洁越好(越长占用磁盘空间越大)
5、建表时表必须有备注,字段可以没有备注
6、字符集仅支持'utf8,utf8mb4',且建表时必须指明,不能指定列的字符集
7、表名、字段名、索引名只能是数字、小写字母、下划线组成,禁止使用其他特殊符号
8、建表工单只允许出现建表[CREATE]相关关键字,对于改表[ALTER]、删表[DROP]以及数据修改[UPDATE/DELETE/INSERT]等关键词及一些MYSQL的保留字(如date、like、desc、return等)不能出现在建表工单中
二、修改表结构
01:加单个字段
-- -- 添加字符串型字段:
ALTER TABLE tab_name ADD address varchar(100) NOT NULL DEFAULT '' COMMENT '地址' AFTER amount;
-- -- 添加整型字段:
ALTER TABLE tab_name ADD uid bigint NOT NULL DEFAULT 0 COMMENT '唯一流水id' AFTER amount;
-- -- 注意:字符串、整数字段对应的默认值应为对应的类型, 否则会导致改表失败
02:加多个字段
ALTER TABLE tab_name
ADD address01 varchar(100) NOT NULL DEFAULT '' COMMENT '地址1' ,
ADD address02 varchar(100) NOT NULL DEFAULT '' COMMENT '地址2' ;
注意:多个改表SQL之间请以分号[;]分割,如果同一个表一次有多个操作【例如一次添加或者修改多个字段等】,需要合并为一条SQL提交,示例:
03:改字段类型
##单字段:
ALTER TABLE tab_name MODIFY COLUMN amount bigint DEFAULT 0 COMMENT '数量';
##多字段:
ALTER TABLE tab_name MODIFY COLUMN amount bigint DEFAULT 0 COMMENT '数量',MODIFY COLUMN sumAmt bigint DEFAULT 0 COMMENT '总数量';
04:改字段备注
ALTER TABLE tab_name MODIFY COLUMN amount bigint DEFAULT 0 COMMENT 'name数量';
05:该字段默认值
ALTER TABLE tab_name MODIFY COLUMN new_amount bigint DEFAULT 100 COMMENT 'name数量';
06:调整字段顺序
ALTER TABLE tab_name MODIFY COLUMN new_amount bigint DEFAULT 100 COMMENT 'name数量' after create_date;
07:改字段名称
ALTER TABLE tab_name CHANGE amount new_amount bigint DEFAULT 0 COMMENT 'name数量';
08:加普通索引
ALTER TABLE tab_name ADD INDEX idx_create_date (create_date);
09:加唯一索引
ALTER TABLE tab_name ADD UNIQUE uniq_name (name);
10:删除主键
##自增主键不能直接删除,要先删自动增长属性,再删主键
ALTER TABLE tab_name MODIFY COLUMN id int;
ALTER TABLE tab_name DROP PRIMARY KEY ;
11:添加主键
ALTER TABLE tab_name ADD PRIMARY KEY (id);
12:给主键添加自动增长
ALTER TABLE tab_name MODIFY COLUMN id int auto_increment;
13:改表备注
ALTER TABLE tab_name COMMENT='测试表2.0';
14:修改表自增值【必须比实际存储自增字段的最大值大】
ALTER TABLE tab_name auto_increment=xxx;
15: 改变表所有的字符列的字符集到一个新的字符集(示例为改为utf8mb4)
alter table tab_name convert to character set utf8mb4;
16.删一个字段
ALTER TABLE tab_name DROP COLUMN address;
17.删多个字段
ALTER TABLE tab_name DROP COLUMN address1, DROP COLUMN address2;
18.删除索引
ALTER TABLE tab_name DROP INDEX uniq_name;
-- 禁用关键字列表:
create insert delete select trigger procedure view function delimiter database use event grant revoke show desc source truncate load infile rename collate fulltext
注意:上述为MySQL数据库系统专用关键字,为避免后续操作带来歧义请不要用于 表名称、表字段名称等。
如果这篇文章对你有帮助,还请帮忙点赞、转发 以下,你的支持会激励我们输出更多高质量的文章!
如果你还想看更多优质文章,欢迎关注我的公众号「数据库架构师」,提升数据库技能,助力职业发展。
,