为了账号安全,请及时绑定邮箱和手机立即绑定

【备战春招】第8天 Java数据库开发与实战(MySQL对数据的基本操作)

课程名称:Java工程师2022版
课程章节:Java数据库开发与实战
课程讲师:IT老齐 悟空 八戒猪 神思者 Leo
课程内容:MySQL对数据的基本操作

一、数据插入
1.INSERT语句
INSERT语句可以向数据表写入记录,可以是一条记录,也可以是多条记录。
可以有两种写法,两种写法都写上了表名,这是为了让这条语句可以更快的执行。

INSERT INTO 表名(字段1,字段2,...)
VALUES(值1,值2,...), (值1,值2,...);
INSERT INTO 表名 (字段1,字段2,...)
VALUES(值1,值2,...), (值1, 值2,...);

首先两种写法都是正确的,但是第一段代码是写入一条数据,第二段代码是写入两条数据。也可以在这里书写子查询,但是要求子查询是单行单列的。
2.INSERT语句的方言
MYSQL的INSERT语句还有一种方言语法 INSERT INTO 表名 SET 字段1=值1,字段2=值2,......; 因为这属于MYSQL语言的方言,所以只能在MYSQL中使用,不能再其他的数据库中使用。

INSERT INTO t_emp
SET empno=8002,ename="JACK",job="SALESMAN",mgr=8000,
hiredate="1985-3-14",sal=2500,comm=NULL,deptno=50;

这里表示的是往t_emp表中插入一条数据,方言的写法中甚至可以省略INTO,省略INTO后依然是正确的。
3.IGNORE关键字
IGNORE关键字会让INSERT只插入数据库不存在的记录。INSERT [IGNORE] INTO 表名......;

INSERT IGNORE INTO t_dept(deptno,dname,loc)
VALUES(70,"A","北京"),(80,"B","上海");

再原有的数据上进行添加数据,因为原有数据中已经有70部门了,又由于IGNORE关键字的存在,所以SQL语句执行的过程中不会报错,但是执行完成后显示的只是执行成功了一条,80部门执行成功。
二、数据更新
1.UPDATE语句用于修改表的记录

UPDATE [IGNORE] 表名
SET 字段1=值1,字段2=值2,......
[WHERE 条件1...]
[ORDER BY ...]
[LIMIT ...];

代码中第一行括号中的IGNORE表示可写可不写,但是要注意,存在IGNORE之后,就算在修改的过程中遇到什么问题,也不会影响代码的正常运行,会去修改不冲突的内容。
同时第一行的UPDATE语句也是确定需要修改的表是哪张表的,也是首先执行的,接着就是WHERE字句,筛选掉不符合的记录,保留符合的记录。这里的LIMIT不能写两个参数,只能写一个,只能是修改前多少条的记录,比如写5,那么就是修改前5条的记录。SET字句是最后一个执行的字句,等筛选后再执行SET语句。
UPDATE语句是可以使用表连接的。因为相关子查询效率非常低,所以我们可以使用表连接的方式来改造UPDATE。UPDATE 表1 JOIN 表2 ON 条件 SET 字段1=值1,字段2=值2,......; 表连接的UPDATE语句可以修改多张表的记录。
UPDATE语句的表连接可以演变成下面的样子,UPDATE 表1,表2 SET 字段1=值1,字段2=值2,...... WHERE 连接条件;

UPDATE t_emp e JOIN t_dept d 
SET e.deptno=d.deptno,e.job="ANALYST",d.loc="北京"
WHERE e.ename="ALLEN" AND d.dname="RESEARCH";

上述代码是表连接,但是没有连接条件,首先这样的语法是正确的,因为这个语法再UPDATE中的。然后修改t_emp表中ALLEN的职位,由原来的RESEARCH部分改为ANNLYST,且修改t_dept中的loc字段。
UPDATE语句的表连接既可以是内连接,又可以是外连接。

UPDATE 表1 [ LEFT|RIGHT ] JOIN 表2 ON 条件
SET 字段1=值1,字段2=值2,.....;

三、数据删除
1.DELETE语句用于删除记录,语法如下:

DELETE [IGNORE] FROM 表名
[WHERE 条件1,条件2,......]
[ORDER BY ......]
[LIMIT ......]

首先要说的是关于[],括号表示,可以写也可以不写,然后就是如果没有下面的WHERE,ORDER BY,LIMIT等条件的话就是直接删除表中的数据,但是有这些条件的话就是根据条件去删除。
上述代码执行的顺序是首先执行FROM字句,接着执行WHERE字句,再执行ORDER BY字句,再执行LIMIT字句,最后执行DELETE字句。
因为相关子查询效率非常低,所以我们可以利用表连接的方式来改造DELETE语句。

DELETE 表1,... FROM 表1 JOIN 表2 ON 条件
[WHERE 条件1,条件2,...]
[ORDER BY ...]
[LIMIT ...]

问题:删除员工KING和他的直接下属的员工及记录,用表连接实现。
在执行DELETE语句的过程中,首先临时表(结果集)是不能够删除的。

DELETE e 
FROM t_emp e JOIN
(SELECT empno FROM t_emp WHERE ename="KING") t
ON e.mgr=t.empno OR e.empno=t.empno;

DELETE语句的表连接既可以是内连接,又可以是外连接。

DELETE 表1,... FROM 表1 [LEFT|RIGHT] JOIN 表2 ON 条件 ...;

问题:删除SALES部门的员工,以及没有部门的员工。

DELETE e
FROM t_emp e LEFT JOIN t_dept d ON e.deptno=d.deptno
WHERE d.dname="SALES" OR e.deptno IS NULL;

删除的是t_emp表中的记录,条件是SALES部门的员工,以及没有部门的员工,涉及到的表除了t_emp还有t_dept,连接的条件是两张表部门编号字段deptno。
快速删除数据表全部记录。DELETE语句是在事务机制下删除记录,删除记录之前,先把将要删除的记录保存到日志文件里,然后再删除记录。
TRUNCATE语句再事务机制之外删除记录,速度远超过DELETE语句。TRUNCATE TABLE 表名;

课程总结:

完成了今天的学习目标:
1.数据插入。
2.数据更新。
3.数据删除。
图片描述

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消