(关注“数据库架构师”公众号,提升数据库技能,助力职业发展),今天小编就来说说关于mysql建表步骤 最常见MySQL建表及改表写法?下面更多详细答案一起来看看吧!

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数据库系统专用关键字,为避免后续操作带来歧义请不要用于 表名称、表字段名称等。


如果这篇文章对你有帮助,还请帮忙点赞、转发 以下,你的支持会激励我们输出更多高质量的文章!

如果你还想看更多优质文章,欢迎关注我的公众号「数据库架构师」,提升数据库技能,助力职业发展。

,