00:36
DL数据操作与,也就是封山改没有查。合并,然后是插入新的数据,Insert更新update,删除、delete合并。我们先来看一下insert insert into table字段,Values,这个比较简单。
01:11
插入烟码insert领土T。你要向de pd的哪个表,这个表里的哪个字段de pd number name LC-ID插入什么值,50?字符型的数据要使用单引号。销售部。位置1000。语句没有什么,看这两个灯,现在这是灭的。
02:05
走。他会把这俩灯点亮了。DML语句。会引起。数据库中。发生一个事故。什么是事物呢?是。什么是事物?现在兜里还有钱吗?没钱了吧?我想好了一个办法,让我们兜里有钱。出门之后,往。
03:09
往左走,然后再往右一走,那十字路口,十字路口的西北角那儿,东北角那有一家农业银行。那家农业银行,那交通比较便利,而且那保安也特别少,今天夜里头两点的时候,咱们一块在那集合。那由于我岁数大了,跑不动了,然后体力也不行了,肯定就是说我负责放哨,然后有你们尽管怎么说,想办法进到他的金库里头去,把那钱拿出来,拿出来之后咱们一块儿分钱去。注意这个操作,这个事物,这个相关的操作有几个事物呢?有几个操作,第一你们。
04:00
成功的进入银行。第二,把钱装兜里。第三,你们。好了,第四我也要跑这个正常的操作,然后是干嘛呢,第五分钱呗。这样咱们就有钱了。这是几个,我们这件事分成这么几步,但是你以后你说别说抢银行是我教的啊,我这儿只是给你讲事物呢。那现在注意,你们第一步成功了。第二步成功了,结果有一笨蛋把那警铃给触发了,警察又来了,警察来了,结果你们趁警察来之前,你们都跑了。
05:07
警察把我抓住了,那我只能做一件事。所有人的名单都在我这儿了,不可能说让我一个人去坐牢,然后你们在外头嗨吧,那多不仗义啊,要坐牢,咱们一块坐牢,我肯定我只能做一件事,把你们一个个的都兜了出来,有谁呢?有杨志国、曹小猛、梁永明、于佳,这些人都参与了这个事件。那刚才我们说这个,我注意我并不是教你怎么去讲银行,我是在告诉你什么是事物。我们刚才提到的这个东西里面就包含了一个事物的概念。按照中国有句老话,叫一个线上的俩蚂蚱跑不了你,也蹦不了我。
06:01
把一条线,一个蚂蚱,两蚂蚱拴到一条线上,这跑不了,那也跑不了,要被抓一块被抓,要跑一块跑,那现在我们看这个你们进入银行了。第一个操作,第二个操作,第三个操作都成功了。但是我跑了,由于你们跑了,我没跑,由于某个环节失败。导致整个行动完全失败。那我们这里头就是一个事物,什么是事物呢?把多个相关的操作。捆绑成一个逻辑单元,也就是一个整体。捆绑成一个整体,要么全都成功,要么全都失败。
07:08
要么全程,所谓全程是什么呢?所有的操作我们都执行了,最后我们大家去分钱,但是由于某个环节出了问题,导致整个行动失败,为什么呢?我为什么要把你们都召出来呢?因为我们是一个整体,没有说整体的一部分成功,整体的一部分失败,要么全成,要么全都不成,这就是一个事物的概念,把多个操作捆绑成一个整体,要么全成,要么全都不成,那对于事物。必须要。事物。开始于第一个操作,我们的事务什么时候开始呢?
08:01
注意,当我们在夜里两点的时候在银行外头溜达。那警察来了,我们有必要跑吗?没必要跑,我们在这儿聚会,你管不着我们。我们在没有在银行没有进入银行之前,警察是没有权抓住我们的,顶多说你们赶紧回家吧,它处理不了我们,但是当我们进入银行之后。我们的事务就已经开始了,这时候警察就可以有权抓我们了。事务开始于第一个操作。结束语。对于束开始点比较简单,结束点这号就有两种方式了,要么提交结束,所谓提交结束的时候是什么呢?所有的操作都成功回滚。
09:03
混混结束。所有的操作都失败,那在这个事物发生的过程中,你们兜里曾经有没有钱?你们已经把钱都装到兜里了,你们已经跑了,但是我们是一个整体,你曾经兜里装进去的钱怎么装进去的,怎么拿出来?所有的操作都失败,回滚到以前的状态。回滚。回。滚到事物开始之前的状态,现在我兜里是一分钱都没有,就你们兜里头有一毛钱也好,有一块钱也好,就回滚到事物开始之前的状态了。
10:11
对于事物,我们必须要去控制它的结束,开始的时候,你只要执行了一个操作,那它就会引起一个事物,那和我们的数据库结合起来。什么时候会引起事物呢?DL语句是第一个执行的,L语句会引起事物,引起了一个逻辑单元,那引起了一个整体,对于事物的话,我们要么去提交结束啊。看他。要么?我这现在插入了一条数据,我没有提交,我也没有结束,我又插了一条数据。60。开发部。
11:02
100。行,我又执行了一下,现在我去查询select形from DEP。我确实插进来了。现在我好像连的是瑜伽的数据库吧,你查一下。不用他查我的自己查也行,我单起一个客户端。跟他跟他那查是一样的T。他那看到的结果应该跟我这是一样的。只有四条路,其他人是看不到的。那现在我的问题是数据库中。
12:03
发生了几个事物?一个还是两个?发生了一个事故还是两个?张教局,你不是学过数据库吗?发生了几个事故。一个是。我这儿执行了一个语句,这也执行了一个语句啊,你为什么说它是一个事物呢。只发生了一个失误,为什么呢?因为我这个语句。引发了,引起了一个事物,我这个事物没有结束之前。
13:00
所有的操作。甭管你执行多少个操作,只要你这个事务没有执行之,没有结束之前。这支事物的开始点,这是事物的结束点。开始点,你结束,开始了一个事物,只要你没有到结束点,你执行1000个操作,1万个操作没关系。它都是属于同一个事物的,因为我们一个事物中可以包含多个操作嘛。这是一个事物的概念,那对于事物我可以以回滚方式结束,那现在我们注意我在现在来查询,从我这儿当前用户这我当前这个链接,我可以看到我插入的数据,但是其他用户。是看不到的。对于事物。我们可以以。回滚结束,我也可以以提交结束,当我以回滚结束的时候。
14:12
事物可以以。回滚。的方式结束。也可以提交的方式来结束,当我们以回滚的方式来结束的时候,所有的操作被放弃。回滚的。事物开始之前的状态,我在事物开始之前数据库中是34条记录吧。
15:06
走。我再去查四条,其他用户查也是四条。我们再来执行一遍,开始了一个事物。在事物里面又执行了一个语句,我当前用户可以看到插入的数据,我已提交方式。当然我们可以按那两个按钮看一下。这个现在我已提交方式结束走。查询。查询你那是啥。看到这两条数据了吧,应该。提交方式,结束事务。对数据库的修改,对永久的保存,其他用户可以看到,对修改的数据,其他的用户可以看见了。事物没有结束之前。
16:25
在事物没有结束之前,只有当前。用户可以看到对数据库的修改操作,其他用户是看不到的,只有你当前操作的用户能看到这个状态,其他用户是看不到的。一个事物,那关于事物还有一些其他的内容,后面我们会说到,那现在我们先去主要讲的是DM,所以在这儿我们主要精力放在。
17:13
点卯语句的插入,我可以插入它的全部字段,现在我去查询。我把它删掉。山瑚,Delete from,走。我要删314班行吗?不行,因为还有原学员属于314班的,那在这哈,我要删部门不行,因为员工还有员工属于部门呢,那我可以加入条件where DD number。大于。
18:02
40我把刚才差那两条删掉走。我现在查。我删掉了,但是其他用户查。还有的,因为这数据库的操作还没有被永久的保存呢,我这儿已提交方式结束。再去查40,这边来查40。那我们再看插入的时候,这是说我插他全部的字段。我也可以查它指定的字段,Insert into dept。如果说我要不给它指定字段呢。不指定插入的字段,则表示要插入全部的字段。
19:04
也就是要给他足够的,也就这个表里头有三个值,有三个字段,那我要插三个值。就把这个value。就不要这个字段了。也就是你要插三个值。走,回滚。我汇总回来了。那。这样呢,你没有指定字段表示要插入全部的字段,全部的是三个字段,但是你只给他两个值啊。不行。没有差,全部字段表示你要插全部值,那我就想插两个值,那我就给出字段。D number d。
20:05
走。DP。T,那么。插进去了,对于那个没有给定,那LCD呢。这时候他就是捺。我再插一个。LC-ID我们可以通过这种方式给他一个缺省的呢,我也可以在这指定给的那。走。我们这个部门表里的第1PD number是主件吧?还记得主见有什么限定条件来了吗?不能重复吧?那你里头已经有了一个50了,你再差50当然不让你查了。
21:18
60。走。提交。查询。可以这样用默认的呢,可以指定啊。用insert语句的时候,他每次只插一条记录。那我们现在。可以卡me robot back select,切from fromp,我们向员工表里插条记录in色的into,阳气violence。
22:00
802020。它的它的。张一。职位。转变工程师,然后job,这是他的job,然后他的MGRR7902,然后他的开雇工日期1987年12月9号,然后他的薪水3000,奖金1000,部门编号20。走。sc.e.job的值过大,实际值五个,最大值九个。软件工程师,一个汉字两个字节,那我们看一下这个表里头。他咋不让我插呢?
23:05
因为你这个字段指定了最大的长度是九个,软件工程师占十个,所以不让你查。叫工程师。应该没问题了。奥瑞使用日期合适的时间是日、月、年。九-12月。杠1987OK。插进去查询。
24:10
1987年12月5号。8001。我就想这么查。我不想写成这种格式。怎么办?你这是个字符吧。转换一下啊。
25:01
哪儿报错呢?看,再看他报错的信息,未找到负向关键字。你部门表里头有90这个部门吗?你的员工表里的这个字段,部门编号是不是要在这个范围之内啊,外界元素吗?所以这酒是不让你查。啊,这用了拖带打。提交。查询。嗯,查这个。1987年12月5号,这是我新插起来。插入可以使用我们用到的函数to。
26:03
一次性的插入多条扎好。哦。打开锁。删掉它。提交。形,From ept这些条数据我想象insert into de PT-bak。
27:11
我向j bak一趟。那我下面应该是说写value了吧,不写了。一块儿执行。注意,它也是一条DML语句查询。这是复制数据呀。复制表中的数据。把查询结果当做数据插入啊表中,同样也会引发事故,在这儿我们以提交方式结束。
28:07
Insert。然后看update。Update,上次我们在做学生系统的增长改查的时候,我在更新一个学生的时候,我只能先把原来那条删掉,然后我把新的数据添加进去,但是现在我们在数据库里头就不用这么做了,我可以在不删除这条数据的情况下去修改这个数据。我想把。
29:03
张,这个张一改成张二,他的职位给他改成经理。U1NAME等于。张二,然后它的兆等于。经理。他既然是经理了,塞了等于3500。等于1500。查询。都改了,还好我写错了,我可以回滚。写错了,我还可以反悔啊。
30:03
回滚到开始之间的状态,那我在这里面可以加入条件了,Where number等于七等于8001。查询。改过来了。现在他想把这个人,想把那个7001改成张三。销售员。薪水给他降到1500,奖金给他改成500。
31:06
这边已经把它改了。但是这边事务没结束呢。看这边。So。是成功呢还是没成功呢?是执行了呢,还是没执行呢?你要直行之后会把这两个灯点亮的。现在在用update的时候,为了防止这种情况的出现。我要把它改为经理,你那边要把它改成销售员,咱俩以谁说了算啊。多个就有点儿像我们加入里讲的,多个线程要同时修改相同的数据。谁说了算啊?多个线程要同时修改相同的数据,在加号里头怎么处理来了?
32:04
给它上锁吧,Or里头同样一种方式,在你使用update的时候。使用。Update语句的。时候。在事物没有结束之前,该条数据会被。锁住,现在只有我这个第一个客户端或者锁进来了,他能去修改数据,他把它锁起来了。其他的用户。
33:01
无法修改这条数据。在我事务没有结束之前,其他的用户是注意这哈,他是执行不了,执行成这个语句,根本就没法执行。在这儿。要么中断,中断这个语句,要么等那边结束。现在这边还在死等呢。看这边,我在结束这个事物的同时,你注意这两个灯。甭管我是提交结束还是回滚结束。我注意我点的同时你看这边。
34:02
我这边把事误结束了。这条数据被。放开了,他的锁被放开了,其他用户才能修改这条数据啊,那最终张一是这个701是张张二还是张三。是销售员还是经理?这边塔。这边长呢。
35:00
你这个用户对数据又修改了。你刚才在这边把它改成张二了,这个用户就认为他是张二,但是他已经把事物结束了,而这边呢,是不是又对数据修改,但是这边是没有结束呢,这边只能看到它原来的状态吧,但是在你这个用户中,他已经看到是。张三了。因为这边又对它进行修改了,那这边结束之后呢,这边看到的当然也是张三了。Update语句。数没有结束之前,该条数据被锁住。其他的用户无法操作。在。事物结束之后,该条数据的锁被放开,其他的用户才可以操作这条update语句。
36:20
然后删除语句。删除语句就比较简单了,Delete from d PT可以加入条件where。就是这儿update的时候也可以加入where条件增删改这个语句相对来说比较简单。五。句,这是从奥瑞九二新增的一个major语句。
37:02
这个是什么意思呢?比如说我们在日常操作中,我们肯定有一个原表,我对这个表进行操作。但是我为了保证数据的完整性,我每隔一段时间会对这个表进行一个备份。别说你的数据一丢,所有的数据都丢了,每隔一段时间对这个,把这个数据备份到备份表中。一个原表,一个备份表,那我们可以用那个create table as1个子查询吗?那在一开始刚备份的时候,它里面的状态肯定是一致的。这里面三条数据,在我刚创建这个备份表的时候,这两个表里的状态肯定是一致的,过了一段时间,我又继续操作这个原表。
38:10
我向其中插入了两条数据。然后我又。修改了两条记录。把原来的数据修改掉了,然后我又。删除了一条记录。这时候我要去再次执行备份。那对于这边来说。这边没有的数据。我应该执行插入吧,我都要把这两条新的数据。也插入到这个表里来。
39:00
对于修改的两条数据。我也要在这边执行一个修改的操作。那对于这条删除的数据,我在这边要不要把它删掉?比如说我们一般一开始来上学的同我们班一开始刚开课的时候有个同学叫张三,结果张三后来由于某种原因从我们班退出了。那我要不要把它从动力节点的数据库中也干掉呢?干掉他了。那以后过了一段时间,张三又回来了。如果说我在数据库中备份着他,我一查,哦,你以前来过。我可以知道他以前来过吧,你要干掉他之后,那你就不知道了。这叫备份,点啥叫备份,保留着你操作的所有的历史数据啊。
40:05
所以对于插入这条我们执行插入,对于更新的我们执行更新,但是对于删除的我们在这边是不删的,也就是说在这边操作的时候。要么插入,要么。更新,但是不会执行删除的操作,这叫备份表,要保留它所有的历史操作记录。做不掉的。第一。For update也是一个DL语句。
41:01
也会引起失误,他也会把表锁住,For update就是锁的这个表,全部的表了,刚才我们用update只锁一条鱼,For update锁的是这个完整的表。那现在我这个执行一个备份。Create table。Dept放PA as select形from depp。我们先看看第1PT里有啥表四条记录。走。分分出来了,现在我去查询BACK,它的状态是一致的,那刚才我们分析的在这边,你要么插入,要么更新。以什么为标准呢?
42:01
注意每条数据是不是都有一个不能重复的数据啊,也就是那个主线呀。每条数据都有一个不能重复的dp number字段,这就是那主键啊,那也就是说我在这边就是根据这个主键字段来判断的,如果这边你这边也有这个数据。就说明这条数据在原来是存在的,我则执行一个更新,如果这边有,这边没有。说明是这边新插入的吧,我在这边则执行一个插入语句。先把这个已经放在这。
43:04
DPD-BA。那是角BC吗?Measure into d PT-BAC,这是那个备份表,这是那个原表啊d.dp number等于s.DP用主键来作为条件温match的,当它匹配的时候。也就是说。这边里有一条记录,这边也有啊,匹配的时候我应该执行一个。更新的操作。SDM等于s.D内正号。d.LC-ID等于。s.LC-AB。注意更新到哪个表里的。我们没写更新到哪个表里,更新到哪个,肯定是更新到备份表里了吗。
44:05
如果不匹配的时候,音色也没有写表明啊。肯定是插入到备份表里头,S插入到什么呢?S点的DNADNADNA。LC海。我们把这语句先准备好,之后我向部门表里头再插几条数据。走。走。Update。DEPT12。DD面等于。
45:01
人事部,Well。第number等于40更新了。现在我的原表中的数据发生了变化,Select形from原表中的数据发生了变化了,我插入了两条数据,执行了一个更新于,但是现在他肯定不让我们删。删除的操作证明。我。删掉它一下不删了,然后我去执行这个合并语句。走。它也是DL,也会引起食物提交。Slide frompt。杠BXBA。
46:02
新他的更新的。现在这两个表的状态又一致了吧?Delete BP。Delete from DEP from number等于。60,我把60删掉了走。提交,现在这俩表状态又不一致了。何必?DPT表里头已经没有60了。但是dpd BA里头。那是历史数据,历史数据要得以保留的。
我来说两句