MYSQL Create创建表

这篇博客详细介绍了MySQL创建表的关键要素,包括数据类型的指定,如char、int和datetime,主键和自增字段设定,以及not null、default和索引创建。还提到了外键和ON DELETE/UPDATE操作,如restrict、cascade和set null策略。

格式:
create table name(
    '列名' 类型(大小) NOT NULL auto_increment 
)
//auto_increment 自增属性来自动生成唯一编号


格式:
create table name(
    '列名' 类型(大小) NOT NULL|NULL default (默认值) comment '(列描述)' 
)
//NULL和NOT NULL设置为空和非空
例如:
create table class(
    id int(8) NULL default NULL comment 'id号'
)


格式:
create table name(
    '列名' 类型(大小) character set utf8 collate utf8_general_ci
)ENGINE = InnoDB auto_increment = 1 character set= utf8 collate = utf8_general_ci ROW_FORMAT = Dynamic;
/*
    ROW_FORMAT行记录格式,决定物理存储模式
    character set utf8 collate utf8_general_ci那么采用字符集utf8和校对规则utf8_general_ci、                                        
    COLLATE utf8_general_ci:数据库校对规则。ci是case insensitive的缩写,意思是大小写不敏感;相对的是cs,即case sensitive,大小写敏感;还有一种是utf8_bin,是将字符串中的每一个字符用二进制数据存储,区分大小写
*/


create table tablename(
     col_name1 type auto_increment,
     col_name2 type not null|null default val,
     col_name3 type unique,
     col_name4 type character set utf8 collate utf8_general_ci
     .... ,
    primary key(col_name),
    index idx_name(col_name1,col_name2,...),
    foreign key(col_name) references tablename(col_name)
) engine=innoDB|myISAM default charset=utf8;

//engine=innoDB|myISAM default charset=字符集;
//字符集需要在创建表时设置好

 (1)type:定义字段的数据类型。其中:字符串类型(char,varchar)需要指定长度;整型(int,biging,tinyint等)和日期类型(datetime,timestamp等)只需要指定类型,不需要指定长度;decimal类型需要指定精度和小数位数。
(2)primary key参数指定表的主键。
(3)auto_increment参数指定字段为自增字段,该字段的类型必须为int或bigint才能设置为自增字段。
(4)not null|null参数设置字段能否取空值。
(5)default参数设置字段的默认值。
(6)index参数用来创建索引。idx_name指定索引名,该参数可以省略,如果省略则索引名就是字段名。
(7)foreign key参数用来指定外键。
(8)engine参数用来设置引擎类型,常用的有innoDB和myISAM引擎。
(9)default charset参数设置表所用的字符集。
 


CONSTRAINT `约束名` FOREIGN KEY (`子表字段名`) REFERENCES `父表名` (`父表字段名`) ON DELETE RESTRICT ON UPDATE RESTRICT
/*
    子表字段名和父表字段名可以不同但类型要求相似,或者可转换
    如int和bigint,但char和int就不行
    
*/

ON DELETE操作
restrict(约束): 当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除。

no action: 意思同restrict,即如果存在从数据,不允许删除主数据。

cascade(级联): 当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则也删除外键在子表(即包含外键的表)中的记录。

set null: 当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(不过这就要求该外键允许取null)。

ON UPDATE操作
restrict(约束): 当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许更新。

no action: 意思同restrict,即如果存在从数据,不允许删除主数据。

cascade(级联): 当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则也更新外键在子表(即包含外键的表)中的记录。

set null: 当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(不过这就要求该外键允许取null)。
 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值