表结构修改:
修改表名:alter table tname rename to newname;
修改字段名:alter table tname change id number int;
修改字段类型:alter table tname modify id tinyint;
添加字段:alter table tname add age int;
删除字段:alter table tname drop number;
约束条件:
约束是一种限制,对表的数据进行限制,来确保数据的完整性,唯一性
每张表中都只能有一个主键 主键= 非空 + 唯一
自增长要和主键一起使用
create table t1(id int default 1,name varchar(20));
create table t2(id int primary key auto_increment,name varchar(20));
外键约束:保证数据的一致性,你有的我能有,你没有的我一定不会有
create table a(id_a int primary key,name varchar(20));
create table b(id_b int primary key,age int,foreign key(id_b) references a(id_a));
表关系:一对一、一对多(一个学院有多个学生,一个学生属于一个学院)、多对多(学生选课)
一对一:两张表的id都是primary key
一对多:一张表的id是primary key 另一张表的id可以重复值(不是primary key)
多对多:学生选课,一个学生可以选多个课程,一门课程可以有多个学生
多对多的例子:需要创建中间表实现
create table stu(id int primary key,name varchar(20));
create table course(id int primary key auto_increment,name varchar(20));
insert into stu values(1,'wl'),(2,'wang'),(3,'mao');
insert into course values(1,'python'),(2,'java'),(3,'web');
create table sel(
s_id int,c_id int,
primary key(s_id,c_id), //联合主键
foreign key(s_id) references stu(id), //外键约束
foreign key(c_id) references course(id)
);
insert into sel values(1,1),(1,3); 表明学号1的学生选了课程编号为1和3的课程,王磊选了python和web
select * from stu left join sel on stu.id = sel.s_id left join course on course.id = sel.c_id;