(数据库)MySQL数据管理 DML语言(增删改)
2022/7/26 2:24:22
本文主要是介绍(数据库)MySQL数据管理 DML语言(增删改),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
MySQL数据管理
外键(了解即可)
方式一、在创建表的时候,增加约束(麻烦,比较复杂)
-
学生表的gradeid字段,要去引用年级表的gradeid
-
定义外键key
-
给这个外键添加约束(执行引用) references 引用
-
删除有外键关系的表的时候,必须先删除引用别人的表(从表),再删除被引用的表(主表)
方式二、创建表成功后,添加外键约束
ALTER TABLE student ADD gradeid INT(10) -- 创建表的时候没有外键关系 ALTER TABLE `student` ADD CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`); -- ALTER TABLE `表名` ADD CONSTRAINT `约束名` FOREIGN KEY(`作为外键的列`) REFERENCES `哪个表`(`哪个字段`);
以上操作都是物理外键,数据库级别的外键,不建议使用(避免数据库过多造成困扰,了解即可)
最佳实践
-
数据库就是单纯的表,只用来存数据,只有行(数据)和列(字段)
-
我们想使用多张表的数据,想使用外键,通过程序实现
DML语言(全部记住)
数据库意义:数据存储,数据管理
DML语言:数据操作语言
-
insert
-
update
-
delete
添加
insert into
-- ALTER TABLE `表名` ADD CONSTRAINT `约束名` FOREIGN KEY(`作为外键的列`) REFERENCES `哪个表`(`哪个字段`); -- 插入语句(添加) -- insert into 表名([字段名1,字段2,字段3])values('值1'),('值2'),('值3'),('值4') INSERT INTO `grade`(`gradename`) VALUES('大三'),('大四'),('大五'),('大六') INSERT INTO `student`(`name`,`pwd`,`sex`) VALUES('张三','aaaaaa','男')
语法:
-
insert into 表名([字段名1,字段2,字段3])values('值1'),('值2'),('值3'),('值4')
注意事项:
-
字段和字段之间使用 英文逗号 隔开
-
字段是可以省略的,但是后面的值必须要一一对应,不能少
-
可以同时插入多条数据,values后面的值,需要使用,隔开
修改
update
-- 修改学员姓名 UPDATE `student` SET `name`='xd' WHERE id=1; -- 不指定条件的情况下,会改动所有表 UPDATE`student` SET `name`='xd' -- 语法:UPDATE `表名` SET `列名`='值' WHERE 条件; -- 修改多个属性,逗号隔开 UPDATE `student` SET `name`='xd',`emile`='5551545.com' WHERE id = 1;
条件:where 子句 运算符 id等于某个值,大于某个值,在某个值区间修改
操作符会返回 布尔值
操作符 | 含义 | 范围 | 结果 |
---|---|---|---|
= | 等于 | 5=66 | false |
<> | 不等于 | 5<>6 | true |
> | |||
< | |||
>= | |||
<= | |||
BETWEEN...AND... | 在某个范围内 | [2,5] | |
AND | && | 5>1 AND 1>2 | FALSE |
OR | || | 5<1 OR 1>2 | TRUE |
-- 通过多个条件定位数据 UPDATE `student` SET `name`='dddd' WHERE `name`='xd' AND sex='女'
注意
-
数据库的列名,尽量带上``
-
条件,筛选的条件,如果没有指定,则会修改所有的列
-
value,是一个具体的值,也可以是一个变量(主要用时间变量)
-
多个设置的属性,使用英文逗号隔开
删除
delete命令
语法:delete from 表名 [where 条件]
-- 删除数据(避免这样写,会全部删除) DELETE FROM `student` -- 删除指定数据 DELETE FROM `student` WHERE id=1
truncate命令
作用:完全清空一个数据库表,表的结构和索引约束不会变
-- 清空 student表 TRUNCATE `student`
-
相同点:都能删除数据,都不会删除表结构
-
不同:
-
truncate:重新设置 自增列 计数器会归零
-
truncate:不会影响事物
-
测试
-- 测试delete 和truncate区别 CREATE TABLE `test`( `id` INT(4) NOT NULL AUTO_INCREMENT, `coll` VARCHAR(20) NOT NULL, PRIMARY KEY(`id`) )ENGINE=INNODB DEFAULT CHARSET=utf8 INSERT INTO `test`(`coll`) VALUES('1'),('2'),('3') DELETE FROM `test` -- 不会影响自增 TRUNCATE `test` -- 自增会归零
了解即可:delete删除问题,重启数据库,现象
-
innodb 自增列会重1开始(存在内存中,断电即失)
-
mylsam 继从上一个自增量开始(存在文件中,不会丢失)
这篇关于(数据库)MySQL数据管理 DML语言(增删改)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-04-26MySQL查出时间比实际晚8小时的解决方案
- 2024-04-01JPA不识别MySQL的枚举类型
- 2024-03-30mysql数据库表卡死解决方法
- 2024-03-15MySQL多数据源笔记5-ShardingJDBC实战
- 2024-03-11natural join mysql
- 2024-03-11关于VS2017,VS2015 中利用 EF使用Mysql 不显示数据源问题解决方案
- 2024-02-26mysql 阿里云xb后缀备份文件恢复-icode9专业技术文章分享
- 2024-02-22docker mysql 5.7
- 2024-02-18从 20 多套 MySQL 到 1 套 TiDB丨骏伯网络综合运营管理平台应用实践
- 2024-02-07mysql 外键索引入门介绍,为什么工作中很少有人使用?