python进阶(九、mysql:修改表结构、多表结构、数据增删改)

3.mysql数据库
3.7 修改表结构 alter(很少使用)
语法:
1)修改表名
ALTER TABLE 表名RENAME 新表名;

2)增加字段
ALTER TABLE 表名
ADD 字段名 数据类型 [完整性约束条件…],
ADD 字段名 数据类型 [完整性约束条件…];
此处可以增加排序的约束

3)删除字段
ALTER TABLE 表名 DROP 字段名;

4)修改字段
ALTER TABLE 表名 MODIFY 字段名 数据类型 [完整性约束条件…]; # 不能改名
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];

5)修改字段排列顺序/在增加的时候指定字段位置
ALTER TABLE 表名 ADD 字段名 数据类型 [完整性约束条件…] FIRST;
ALTER TABLE 表名 ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名;
ALTER TABLE 表名 CHANGE 字段名 旧字段名 新字段名 新数据类型 [完整性约束条件…] FIRST;
ALTER TABLE 表名 MODIFY 字段名 数据类型 [完整性约束条件…] AFTER 字段名;

6)去除或添加null或unique
去掉null约束
alter table t modify name char(10) null;
添加null约束
alter table t modify name char(10) not null;
去掉unique约束
alter table t drop index id;
添加unique约束
alter table t modify id int unique;
添加联合唯一
alter table t add unique index(aa,bb);

7)去除或添加主键
如果发现主键设置错了,应该是id是主键,但如今表里已经有好多数据了,不能删除表再重建了,仅仅能在这基础上改动表结构。
先删除主键
alter table table_test drop primary key;
然后再增加主键
alter table table_test add primary key(id);
注:在增加主键之前,必须先把反复的id删除掉。

8)去除或添加外键
为book表添加外键
alter table book add constraint fk_id foreign key(press_id) references press(id);
删除外键
alter table book drop foreign key fk_id;

3.8 多表结构的创建与分析
1)多对一:
多个学生在同一班

2)多对多
两张表双向的多对一,即多对多,需要定义一个这两张表的关系表来专门存放二者的关系。
1个订单包含多个商品,1个商品属于多个订单。

3)一对一:
左表的一条记录唯一对应右表的一条记录,反之亦然。这种情况很简单,就是在左表foreign key右表的基础上,将左表的外键字段设置成unique即可
学生的学号和身份证号码是一一对应。

4)作业:

student_id int,
course_id int,
foreign key(student_id) references student(sid),
foreign key(course_id) references course(cid)

3.9 数据的增删改
3.9.1. 新增数据insert into
1)插入完整数据(顺序插入)
INSERT INTO 表名 VALUES (值1,值2,值3…值n);

2)指定字段插入数据
INSERT INTO 表名(字段1,字段2,字段3…) VALUES (值1,值2,值3…);

3)插入多条记录
INSERT INTO 表名 VALUES
(值1,值2,值3…值n),
(值1,值2,值3…值n),
(值1,值2,值3…值n);

4)插入查询结果(了解)
INSERT INTO 表1(字段1,字段2,字段3…字段n)
SELECT字段1,字段2,字段3…字段n FROM 表2
WHERE …;
将表2的查询结果写入表1,表1的字段名和表2可以不同,但要一一对应。不写where语句,可以复制表2所有数据的对应字段

3.9.2. 删除数据delete/truncate
1)按条件删除
DELETE FROM 表名 WHERE 条件;

2)清空表(慎用)
DELETE FROM 表名; 清空表,但不会清空自增字段的offset(偏移量)值
show create table 表名; 可以查到offset值

3)清空表和offset值(慎用)
truncate table 表名; 清空表和offset值

3.9.3. 修改数据update
UPDATE 表名 SET
字段1=值1,
字段2=值2
WHERE 条件;

原文地址:https://www.cnblogs.com/bdzxh/p/14088689.html