💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[toc] # 库和表的管理 ## 1.库的管理 ~~~ //数据库的管理:创建(create)、修改(alter)、删除(drop) create database books; //创建数据库 alter database books character gbk; //修改库的字符集(修改后才能插入中文数据) drop database books; //删除数据库 ~~~ 注意点:数据库管理的三个操作后面都要跟<b>database</b> ## 2.表的管理 ~~~ //表的管理:创建(create)、修改(alter)、删除(drop) create table book( //创建表 字段名 字段类型 id int, bName varchar(20), price double, ) alter table book drop column price; //修改表之删除列 drop table book; //删除表book ~~~ 注意点:数据库管理的三个操作后面都要跟<b>table</b> ## 3.外键约束 ![](https://img.kancloud.cn/c6/22/c62242131647b65e9733db373daa5bc8_914x138.png) **`RESTRICT、NO ACTION`** 删除:从表记录不存在时,主表才可以删除。删除从表,主表不变 更新:从表记录不存在时,主表才可以更新。更新从表,主表不变 **`CASCADE`** 删除:删除主表时自动删除从表。删除从表,主表不变 更新:更新主表时自动更新从表。更新从表,主表不变 **`SET NULL`** 删除:删除主表时自动更新从表值为NULL。删除从表,主表不变 更新:更新主表时自动更新从表值为NULL。更新从表,主表不变 注意点:删除一般用<b>set null</b>,更新用<b>cascade</b>。(restrict和no action都是限制表的删除和更新) # 数据操纵(DML) ## 1.插入(insert into) 方式一:经典的插入 ~~~ /* 语法: insert into 表名 (列名,...) values(值1,...); */ INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id) VALUES(13,'唐艺昕','女','1990-4-23','1898888888',NULL,2); //列名要和values里的值一一对应。 ~~~ 方式二:通过set赋值 ~~~ /*语法: insert into 表名 set 列名=值,列名=值,... */ INSERT INTO beauty SET id=19,NAME='刘涛',phone='999'; ~~~ 两种方式对比: ~~~ //1.方式一支持多行插入,方式二不支持 insert into beauty values(23,'唐艺昕1','女','1990-4-23','1898888888',NULL,2) ,(24,'唐艺昕2','女','1990-4-23','1898888888',NULL,2) ,(25,'唐艺昕3','女','1990-4-23','1898888888',NULL,2); //2.方式一支持子查询,方式二不支持 INSERT INTO beauty(id,NAME,phone) SELECT 26,'宋茜','11809866'; ~~~ ## 2.修改(update) ### 修改单表的记录 ~~~ //语法: update 表名 set 列=新值,列=新值,... where 筛选条件 //案例:修改beauty表中姓唐的女神的电话为13899888899 UPDATE beauty SET phone = '13899888899' WHERE NAME LIKE '唐%'; ~~~ ### 修改多表的记录 ~~~ //修改多表的记录只需要把两个表连接,再修改即可 //案例:修改没有男朋友的女神的男朋友编号都为2号 UPDATE boys bo RIGHT JOIN beauty b ON bo.`id`=b.`boyfriend_id` SET b.`boyfriend_id`=2 WHERE bo.`id` IS NULL; ~~~ ## 3.删除(delete) ### 单表删除 ~~~ //语法: delete from 表名 where 筛选条件 案例:删除手机号以9结尾的人的信息 delete from boys where phone like "%9"; ~~~ ### 多表删除 ~~~ //语法: delete 表 1,表2 from 表1 join 表2 on 连接条件 where 筛选条件; 案例:删除黄晓明的信息以及他女朋友的信息 DELETE b,bo FROM beauty b INNER JOIN boys bo ON b.`boyfriend_id`=bo.`id` WHERE bo.`boyName`='黄晓明'; ~~~ 注意:单表删除是delete <b>from</b> 表名,多表删除没有from关键字! ### truncate语句 当你仍要保留该表,但要删除所有记录时, 用 truncate;当你要删除部分记录时(经常配合where使用), 用 delete。 <b>delete和truncate区别</b>: - delete可以加where来加筛选条件,truncate不能加 - 假如要删除的表中有自增长列,如果用delete删除后,再插入数据,自增长列的值从断点开始,而truncate删除后,再插入数据,自增长列的值从1开始。 - truncate删除不能<b>回滚</b>,delete删除可以回滚。 - truncate删除没有返回值,delete删除有返回值 - truncate删除的效率高一点点