mysql笔记系列——建表问题

mysql建表

对于mysql建表的问题需要明确以下几点:
- 需要哪些字段
- 字段选择什么数据类型,如varchar、date、enum()等
- 字段是否自增长(auto_increment)
- 字段是否有默认值(default)
- 字段进行什么样的约束,建议用CONSTRAINT进行约束,如主键(primary key)、非空(not null)、唯一(unique key)、外键(foreign key references )、检查(check)等
- 字段的注释(comment)
- 对表的定义与注释,如表采用什么存储引擎(ENGINE)、数据库默认编码(DEFAULT CHARSET)、自增长的初始值定义
- 表中字段和约束的属性,如X ON UPDATE Y(X在更新时变为Y)、ON DELETE NO ACTION ON UPDATE NO ACTION(主数据如果存在从数据,不允许删除主数据。),详细说明见【* mysql 外键约束 on delete和on update*

mysql 外键约束 on delete和on update

on delete和on update是一种事件触发限制,在外键约束中使用
ON DELETE :
1. RESTRICT:绑定
如果存在从数据,不允许删除主数据
2. NO ACTION:绑定
如果存在从数据,不允许删除主数据
3. CASCADE:级联
删除主数据,顺便也删掉从数据
4. SET NULL:级联
删除主数据,从数据外键的值设为NULL

ON UPDATE :
1. RESTRICT:绑定
修改主数据中被关联的Field,如果有该主数据有从数据,不允许修改
2. NO ACTION:绑定
修改主数据中被关联的Field,如果有该主数据有从数据,不允许修改
3. CASCADE:级联
修改主数据中被关联的Field,如果有该主数据有从数据,顺便一起修改从数据的外键值
4. SET NULL:级联
修改主数据中被关联的Field,如果有该主数据有从数据,从数据的外键值设为NULL


mysql建表实例

CREATE TABLE vp_channel_maint (

ID int(11) NOT NULL AUTO_INCREMENT COMMENT ‘主键自增长’,

CHANNEL_ID int(11) DEFAULT NULL COMMENT ‘通道编号’,

MAINT_START timestamp NULL DEFAULT NULL COMMENT ‘维护期起止时间’,

MAINT_END timestamp NULL DEFAULT NULL COMMENT ‘维护期结束时间’,

LAST_UPDATE timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘更新时间’,

PRIMARY KEY (ID),

KEY FK_CHANNEL_ID__MAINT (CHANNEL_ID),

CONSTRAINT FK_CHANNEL_ID__MAINT FOREIGN KEY (CHANNEL_ID) REFERENCES vp_channel (channel_id) ON DELETE NO ACTION ON UPDATE NO ACTION

) ENGINE=InnoDB AUTO_INCREMENT=64 DEFAULT CHARSET=utf8 COMMENT=’通道维护期管理’;

你可能感兴趣的:(mysql)