my sql 结构化查询语句分类---DDL 数据定义语言 创建外键的注意事项 属性的执行顺序

在这里插入图片描述在这里插入图片描述
1.创建表
create table student(
id int(4)
primary key auto_increment, //auto_increment 自动增长注意不要写错,auto-increment写法错误。加入zerofill零填充属性会报错不知道为啥,没有主键,设置零填充可以;没有主键,设置自动增长却不行 为什么呐?
zerofill零填充 必须在primary key前面 才有用
Zerofill零填充 和unsigned无符号 必须在最前面 顺序可以颠倒
Primary key 和auto_increment必须在后面 顺序可以颠倒
设置auto_increment 必须设置主键,自动递增只能给主键,且只能设置一个
所有主键都必须设置约束not null
name varchar(10) //字段名必须用反引号xxx 不能用单引号 同理表也一样
) engine=innodb charset=utf8 comment=‘学生id’ //comment ‘学生id’ 中间也可以用空格隔开 必须用单引号

2.创建主键(三种方式)
1.字段中设置主键
create table student(
id int(4)
primary key,
name varchar(10)
) engine=innodb charset=utf8 comment ‘学生id’
2.写完所有字段后再设置主键
create table student(
id int(4),
name varchar(10),
primary key(id)
)
3.修改表时添加主键
alter table student add CONSTRAINT pk primary key(id)
// 主键名 pk可以省略
创建外键(两种方式)
1.写完字段后设置外键
create table student(
id int(4) ZEROFILL UNSIGNED primary key auto_increment,
name varchar(10) ,
gradeId int(4),
constraint fk_gradeId foreign key(gradeId) REFERENCES grade(id)
) engine=innodb charset=utf8 comment ‘学生’
2.修改表时添加外键
create table student(
id int(4) ZEROFILL UNSIGNED primary key auto_increment,
name varchar(10) ,
gradeId int(4)
) engine=innodb charset=utf8 comment ‘学生’
alter table student add constraint fk_gradeId foreign key(gradeId) references grade(id)
注意:
设置外键时,主表字段必须设置主键否则报错
设置外键后,主表grade 不能删除,必须先删除附表student
设置外键时,主表和从表的字段数据类型必须一样
Constraint 会变色 不变色的话说明constraint 书写错误
如果只有一列,不用设置主键就可以
创建外键遇到的Bug:
compitable 不兼容 两表的数据类型不一样
Index 主表(所参考的表)有问题 看该字段是否没设置主键

修改
– 修改名字
alter table student rename as newstudent
– 添加字段
alter table student add age tinyint(1) unsigned; 一般年龄必须设置unsigned 范围会增大 -128-127 0-255
– 修改字段名
alter table student change name Name int(4) // int(4) 必须有 必须设置数据类型
– 修改列类型
alter table student modify name char(10);
– 删除字段(可以不用删除主键,就能删除该字段,但是如果有外键 必须先删除外键)
alter table student drop age; //注意都必须用
– 删除主键(可以不用删除主键,就能删除该字段)
alter table student drop primary key;
– 删除外键(必须有名字) 外键必须先删除外键 ,才能删除该字段
alter table student drop foreign key fk_gradeId
删除
– 删库
drop database lianxi;
– 删表
drop table student

猜你喜欢

转载自blog.csdn.net/luckyGirlIT/article/details/94589486