00:01
首先呢,呃,咱们先回顾一下咱们昨天的这个内容啊,我觉得这个每天的回顾是很重要的。啊,那早晨你们早来的,来了一会儿有没有就把最近三天的东西啊,也就是说买车后第一天第二天以及呢,之前的这个多线程啊,今天早晨你有没有把这个搂一眼啊,这个其实也很重要啊,也很重要,咱们不能说杜老师每每每天都说,结果呢,你下去之后没做啊,该几点钟来几点钟来,我觉得你得早来点,早来点的话你回顾一下啊。你晚上就早走一会儿呗。是吧,哎,11点再走呗。对吧,哎,11点然后呢,回去之后洗漱,12点了睡觉睡睡睡睡睡到七点钟,七个小时够了吗?就七点钟七个小时肯定够了啊。年轻人,你七个小时肯定够了呀,你你还想睡几个小时,十个小时跟跟跟小孩似的,一天必须得睡够11个小时。
01:01
是吧,这这这肯定不能这样啊,所以说呢,就早来一会儿,那有的同学醒的早,他磨叽。明白吧,就大部分有的是睁开眼,就是时间就是七点钟。手机拿来再看会,手机一看啊,到点了,行走就这样,我觉得这个不能这样啊,这这个这个这个这个这个这个我觉得你你只要睁开眼,你就意味着你睡不着了,我跟你说啊,你睡不着了,你要再睡着那。对自己身体不好。真的,你们查阅相关的资料,中医上认为啊,就是你醒了,那就是醒了,你不要再睡一觉,醒了再睡一觉,你整个的一天就很颓废。你你不知道这个事,你没有研究过啊,你没研究过这个,所以说你就睁开眼别在床上啊,嗯,这个是吧,啊赖着不起床,起床赶紧洗漱几分钟啊,完事之后赶紧过来这边安安静静的把最近几天东西回顾一下,不要敲代码啊,不用敲代码,大概浏览一遍啊,大概浏览一遍,比如说来对吧,线程实现几种方式。
02:09
对吧,如果你这个继承thread实现run组接口就这个,你想想你连续三天你都在回顾,你虽然没有写代码,你脑袋上是不是有印象,你百分百的每天早上原来回顾三遍,三遍什么,哎,你最近才回顾了三点什么现成的生命周期对吧?新建状态,就绪状态,运行状态,阻塞状态,死亡状态是吧?你把这个了解一下,我觉得大概浏览一下,这个肯定对你有很大的一个帮助。你不会说到中间就说了啊,杜老师,我现在这个学了,后面忘了,前面前面都忘了。那谁让你不复习呀?这就是你不复习的后果。你找我没用啊。我没法给你给你编再弄起来啊,没办法,你除非自己就是说重新把这个东西再再从头到尾再搂一眼啊,行了,不多说了啊,就是说咱们的同学们,我我感觉是没有前两天好了,有点懒散了啊,有点懒散了对不断的会有一个迟到的啊,我觉得这样不行啊不行啊来咱们得还得那根弦还得绷紧一点啊,绷紧一点啊呃,首先咱们先回顾一下这个昨天的一个内容,我们把这个D02的笔记我们打开啊,首先第一个去重,大家还记得吧,哎,这个东西呢,Distinct。
03:26
Distinct啊,驱虫。那驱虫这个呢,要注意啊,它只能出现在所有字段的最前面。是不是所有字段进行吗?它出现在所有字段最前方,表示什么含义,大家还记得吗?表示说后边所有的字段联合起来驱重吧,哎,然后呢,这个要知道啊,我们可以先对工作岗位驱重,然后进行统计来进行统计,那这是我们昨天上来讲的第一个知识点,就是去除重复记录,但这件事我需要强调的是什么呢?哎,就是去重啊,只是对查询结果及驱虫。
04:01
他这个对表里边数据不改的啊,不改数据下面这个呢,就是连接查询,连接查询这个内容呢,在咱们整个加码程序员的这个软件生涯当中啊,我觉得连接查询你是天天要写的,因为呢,我们软件处理的就是数据啊,在实际开发过程中,业务是稍微复杂一些的,一般单表的操作很少,都是这种多表的操作,那么连接查询又分什么呢?诶根据语法年代啊,它分什么SQ92啊,还分什么SQ99对吧,我们现在用的比较多的是九九语法,那根据。连接方式啊,分为什么呢?内联外联全联对吧?内联的话就是说AB2张表做内连接,能能匹配上的记录就查出来,匹配不上的就不显示了,那这就是内连接,内连接就是AB2张表是平等关系,没有主副之分的。但是这个这个这个内连接它又分为很多种,比如说这个什么等值啊,什么非等值啊,什么内这个自连接是不是等值的话,就是等量关系,非等值。
05:07
那就是非等量关系呗,自连接就是说把一张表看成两张表,自己跟自己连接呗,是不是?哎,你这个要我觉得我一回顾你就能想起来,课堂上我们讲的是哪个例子,比如说自连接我们讲的是哪个例子呀,自连接自己连自己讲的是哪个例子,就是找出每个员工的上级领导是不是,但是我们第一版写的是一个内连接,对吧?后来我们讲了外连接的时候,我们怎么写呢?我们是不是把每一个员工的上级领导都显示出来,也就是说这个员工他上级领导如果没有的话,这个员工也得给我显示出来。这个用外连接吗?是不是,哎,那大家想一想再往下的内连接讲完之后,我们讲的是外连接嘛,那同学们告诉我这个外连接它的这个和内连接的区别是什么。一个主见,哎,说的很好啊,主之分上来一句话一针见血,就是外连接就是有主副之分了,我主要是查主表的数据,捎带着把副表数据查出来,对吧,你不能说你因为这个呃,这个这个这个这个你附表的这个这个这个数据跟我这个跟跟我这个主表的数据跟我匹配不上,你就你就耽误我这个主表查询出来,我觉得这个是有问题的。
06:18
对吧,就是说你不管你附表的数据跟我主表的数据呃,能匹配上还是不能匹配上,总之我主要就是我查主表数据,捎带着我要查这个附表数据,那这个时候我们需要用外连接,但外连接又分左外跟右外,那左外右外的话,这个都都都都都可以的。那都可以的,嗯,主表在左边,你就用left。主表在右边,你就用right对吧?内连接有一个关键词叫inner,可以省略吧?外连接有一个关键字叫al,是不是也可以省略?哎,区分一个内连接和外连接,不是inner和al的,是这个语句当中有left还是有没有right啊,但凡带有left和我们都可以认为它是连接。只要不带这两个关键字的,都是内敛。
07:03
是不是,哎,这是我们说的这个关于这个连接查询,那昨天我觉得这个难度最大的就是什么呢?就是说超越了两张表,比如说三张表或者是四张表进行关联查询,对吧?尤其我们当时让大家写的那个叫什么,找出每个员工的上级啊,找出每个员工的部门名,你跟部门表是不是连,找出他的薪资等级,是不是就跟薪资等级表连,再找出每个员工的上级领导。是不是自连接,诶,这个自连还挺有意思,他是个外联。自连接还是个外联,找不领导吗?是不是,所以这是几张表,四张表那张一个是员工表。部门表。工资等级表。领领领导表是不是一共四张表做表连接,就是咱们这个这个这个表的数量一旦上去之后呢,我觉得你把这个琢磨清楚啊,琢磨明白啊,这个是比较重要的,那这是我们所说的这个昨天我们讲的这个连接查询,连接查询讲完之后大家。
08:09
哎,我直接过了啊,连接查询讲完之后,好像我们讲了一个叫子查询的东西。对,那子查询呢,首先我们对这个概念要有一定的理解,子查询就是select语句,嵌套select语句,这个子查询也非常之重要啊,在以后的开发当中呢,我们除了这个表的连接查询之外呢,我们还需要进行子查询,子查询就是写一个SQL语句啊,然后嵌套SQL啊,就是这样的啊。呃,Where当中使用子查询对吧?还可以在哪使用子查询啊,From后边使用咨询,还有后面可以使用子查询,这里边from后边使用子查询这个事呢,我我需要给大家说的是什么呢?就是说这个select语句必须将它的查询结果当做一张什么临时表。明白,哎,但是各位啊,我在讲课的过程当中,我也给大家说了。
09:05
这个莱克语句。当成不当成临时表,那要看你这个select语句本身。能不能往后继续,就是说我们好像写过这样一个例子,在哪忘了。找出每个部门平均的薪水等级。应该是平均薪水的等级。啊,这个找出每个部门平均薪水的等级分两步,第一步先找每个部门的平均薪水吧。十部门20分,30部门是不是平均薪水都有了,要找出它的等级对不对,那等级,那找出等级能不能,哎,我们我们是怎么做的,当时。根据这个,我们这个是把这个当成当做一个什么呀,临时表的。是不是哎,继续和这张表做表连接,下面这个呢。
10:05
下边就是找出每个部门平均的薪水等级,是先找出每个员工的薪水的一个等级,在按照部门编号分组吧,还记得吗?那当时有同学就认为这是个什么临时表,还记得吗?就把这个当做临时表,然后按照这个字段分组,然后分组之后呃,再计算这个字段的一个平均值,当时我说这个不用把它看作一个临时表,其实我们这个查询语句可以继续往后加一个什么group。啊,往后加直接加个就行了。如果你要是把上面这个看作一个临时表T的话,按照这种写法的话,你写复杂了,这个词语就写复杂了,所以我想说的是这一点。啊,讲述这一点行了,那这是我们的一个子查询大家。昨天啊,讲的最重要的就是两块啊,哪两块连接查询跟谁子查询子查询,再往下我们讲的什么呀。
11:00
紫查询好像我们。往下讲的limit吧啊,这子量行我看看啊,往下讲的是unit啊,合并合并结果集这个事呢,大家注意啊,就是说有要求什么要求啊,就是列要一样,第一条查询语句和第二条查询语句啊,它这个列要求是一样的。列的数量,就是你比如说我查两列,你也查两列,咱俩的结果集能干什么合并啊,然后再往下呢,咱们说了一个就是这个这个这个这个这个叫limit啊对,Limit是重点中的重点,这个也很重要,为什么?因为以后啊,大家写这个SQL语句的时候要进行什么分页。分页一般就是取整个这个结果的某一部分吧,它的语法是什么?厘米的后边跟俩数字,第一个数字是起始下标,第二个数字是长度。中间用逗号隔开是不是?哎,同学们还记不记得如果写一个数字是啥意思?
12:01
五是啥意思?米五就等于米零逗号五。是吧,哎,这个要知道咱们昨天写这个通用的分页circle,还记得那个通用的分页circle,你把这个公式给我背会啊。就是逗号两边两个数字,前面这个数字和后边这个数字,后边是每页显示的这个条数,前面是页码减一,页码减一乘以配置三。你先把这个你你先把这个公式给记会了,哥,因为后边后边老师会问你的啊,我会问你杜老师讲一讲那个通用的飞印三国语句,没想没想到我就交代了,对,我们下去开会的就开批斗会了,就开始啊嗯。对。这这块呢,有一个公式啊,你一定要记住啊,呃,别掉链子啊掉链子嗯,行,那再往下呢,咱们就是开始讲那个创建表了,Li米的说完之后我们创建表这一块呢,就其实最主要就是关于这个数据类型这一块,就建表的话,这个数据类型这块是int是整数啊,长整型啊,浮点型啊,诶尤其这个差和挖差,差和挖叉呢,这个东西呢,也是经常面试的时候,他会问这个和挖叉有什么区别,你是咋选的,就你告诉他差是定场,挖叉是可变场,那如果在我们开发中,如果某一个数据他是固定长度不变的,比如说生日,那就是年月日加起来一共十十个长度嘛,对不对,那那你你不管是哪个人,他的生日永远都是十位,那你就没必要挖差呀,你直接整一个差,这样的话大家想想是不是既节省空间,速度还快对吧,挖差呢,挖这个东西比较智能啊,挖叉智能是智能在哪啊,就是你传过来这个数据是多长,我可以根据你的数据的长度来动态的分配空间,它明显是节省空间的对不对。
13:49
挖叉是不是很智能,是节省空间啊,但它的效率怎么着啊,没有差的效率高,所以这两个你最好进行什么合理的一个选择,合理选择看实际开发中,你你你你这个你选哪个合适啊,这样的合适date是日期类型,Blo就是存这个什么图片啊,声音啊,视频啊,Clo是存什么呀,大字符串,大字符串大文本啊,就是这个意思,好了,那这个呢,是关于我们建表这块啊,建表这块诶各位建表的时候,我们可不可以给这个字段指定默认值。
14:25
我们建表的时候给这个字段指定这个默认值是啥意思啊。不输入的话,它就式就是说将来插入数据的时候,如果没有给这个字段插入值的话,这个默认插入它后面指定的这个值是不是啊,是这样的,那好了大家回顾一下,在出讲完这个创建表之后,再往下我们插入数据的各位啊,那插入数据这个事儿,大家好好回顾一下,这个insert语句怎么写在你的脑子里面过一遍啊insert。Into表明,表明后面有个小括号。
15:00
小括号里边是字段名儿。Y64后边有个小括号,小括号里边都是直的。一次能插入多个值吗?怎么写逗逗号values后边一个括号,再加逗号,再加个括号,再加逗号加括号是不是?哎,能不能把查询结果插到一张表里边,就是我查询一张表的数据,把它通过in色插入到另外一张表当中可以吧?Insert语句前面那个字段能不能省?Insert into表名后边那个括号那个里面的字段名能省吗?省略的话,它后边那个值在写的时候就必须得按照什么表的这个顺序以及数量对吧,都要对应上啊,这个不建议啊,不建议,建议你还是把前面这个字段怎么着都写上,但是这个呢,我说一下啊,都写上,我们是建议在Java开发的时候。就你写Java代码,你自己在DOS窗口里边,你是不是完全可以把前面那个括号给它省掉啊,哎。
16:02
知道这个意思,知道这个意思,呃。Insert语句,如果给,如果这张表有三个字段,我给其中一个字段插入一个值,后边两个字段没有插入值,默认它会插入那。还记得吧,哎,后边那两个nu,你只能通过这个update更新语句去把后边那两个nu给它更新了,你不能再插入了,我们有一个原则,就是insert语句啊,它只要执行成功,表里边必然会怎么着,多一条记录,这一行记录肯定是多少了,肯肯定就就出来了,那不管你给这个字段插入值,还是没有给这个字段插入值,它有默认值的。或者说你自己在创建表的时候,通过这个default方式给他指定了一个什么默认值。是不是?那insert语句说了之后,我们往下说的是更新update,那大家想一想,在脑子里过一下啊,Update语句怎么写?Update后边是表名,哎,对,Set你别掉了,这这个单词啊,叫set set是设置吧,Set后面的是字段名等于值。
17:17
逗号字段名等于值,逗号字段名等于值。我这里强调一个逗号。别写暗的。行吧,别把逗号写成and,我说了后期有同学把这个逗号写成and,因为我我我之前是吧,在后边讲的时候啊,有同学就就是啊就不会写。R不矩啊,逗号写实暗了啊,太常太常见了,太常见了啊。再往后就是update句,如果没有加where条件,就一下就把这张表的数据全部给它更新了,所以要讲where条件。Where吧,你就更新哪些数据。Where条件是指定更新哪些数据?那更新语句说完之后,再往下说的是删除删除,如果没有更条件,就会把这张表的数据全部删除吧,哎。
18:13
Delete语句怎么写?Delete from?表名。外条件。是吧?哎,那我们刚才所说的增删改insert delete和update,增删改这三个语句都是对谁操作呀?对表当中的数据是不是?哎,对表当中数据操作啊,这个是很重要的,因为这个是。你将来在做Java开发的时候,你需要在Java程序里边写的语句,所以这个呢,你你有一有一个,哎,硬性的任务就是你必须掌握,你必须得。哎,不借助任何工具能写出来。明白吧,增删改这几个语句。另外呢,这个删除这边我说了删除大表当中的数据。
19:09
但注意,不能不能不能恢复啊,删完之后这个数据就真的丢了,还记得那个语句吗?K的吧。表的复制。啊看啊,删除表中的数据是这个语句。怎么删除啊,这个写错了啊,怎么删除大表中的什么数据对吧?这这不是删表啊,删表是怎么删。这样或者什么加一个什么。但是要注意,Oracle不支持这种写法。Oracle支持这个。
20:07
也就这两个,哪个通用,这个通用。这个就是如果存在的话就删掉。如果不存在,那就算了呗。但如果您硬要用这个语句删的话啊,这个语句如果这张表不存在的话,这个语句就会报错。如果存在的话,这张表将被删除。我这会儿可能没有说太明白,各位啊,怎么删除大表中的数据,这个可不是删表啊同学,这个NK table后面跟表,这是直接把表当中的数据给它截断。表还在,如果您真的想删表的话,教您一招,Table后面上表,Drop if exist。
21:04
啊,标明这个写法在my circleql中支持,Oracle不支持这种写法,这个更通用,所以你记这个就可以了。啊,这是我们的这个增删改这一块,那增删改结束之后,我们怎么说的,这个就是对表结构的增删改,我们好像昨天也没怎么太讲,对吧,如果我们对这个表进行表结构这一块想改,比如说这块想改改名字啊,类型我们想改一改啊,长度我们想改一下啊对吧,对这个表结构的一个修改这一块。大家借助工具就可以了。明白吗?删你会删吗?是不是这么删,或者用我刚才说的哪个语句呀,就是这个呀。
22:00
这个DDL语句一共就三个create,一个drop,一个al,一个,其中这个create我们学没学建表语句,Drop上面是不是删表啊,就一个al al修改,修改是对表结构进行修改,我说了你修改表结构,你这块就不用了解了,你用工具能不能修改啊?咱们能使,诶能用工具这块,咱们用一下这个工具啊,因为因为有一个比较特殊的地方,就是这个东西以后改的机会太少了。啊,改的机会太少了,因为这个表的设计如果失败的话,后期再改的话,那这个成本太高了啊,所以说这种情况,反正我以前在开发的时候就是这样啊,以前在一线开发的时候,我们这个团队一般在我们定这个表的时候,我们会反复商量开会,哪怕就是说我们开一个月的会也是值得的,为什么我们这一个月只确定一件事,什么事我们这个系统。
23:04
能有哪些表?设计成哪些表?反复推敲,这样设计后期有没有问题?最后呢,我们比如说诶几个领导啊,把这个事儿定下来签字,客户也在对吧,后期可能就不用改了吧,不用改了啊,客户必须在啊,客户得签字。你懂吗?客户参与不参与这个会议?咋的,你不来,就我在,我在凭空想象,我给你同仁医院,假如同仁医院附近的同仁医院开发一个医院管理系统,我需不需要找那边的负责人过来,或者说我们要不要去甲方那块跟那个负责人见个面啊,我们要不要聊一聊需求啊,你们这个系统到底谁用啊?用这个系统干啥呀?是不是好,那我最后把这个这些表,这些数据全部设计好之后,我们需不需要那对方的这个这个负责人签字啊,不需要啊,对吧,他签完字。
24:02
以后就没问题了。明白吧,他要不签字,万一以后要扯皮了呢?他说当时我不是这么说的。但当时我说这个东西怎么弄怎么弄是吧,你看没有实现这个表少两少两个字段,或者多了两个字段,类似的他会扯皮,所以一切呢,一般情况下都是。有文书的。对,这个必须得有啊,在项目开发过程当中,我们需求文档确定下来,客户要点头了,说这个东西需求这么定了,就这么定了,对吧,将来要改需求,你所导致的这个人力财力的成本,您需要承担的。那不是说这个你就随便定一下需求咋打,就这样,那不是这样啊,不是这样,对一个对于一个正规的好的团队来说应该是这样的,但是如果一个团队缺少这个管理经验的话啊,或者这个团队的领导呢,缺缺少缺乏这块的一个经验的话,可能就会弄得很乱。对吧,你看有的好多团队啊,井井有条,井井有条的意思什么意思,每一天每一个程序员都可以很清晰的知道自己当天的任务是什么。
25:10
这个任务几天之内完成没有完成怎么办?完成之后怎么办?该奖励奖励,该惩罚惩罚,一个团队井井有条,有些管理能力就是很差的话,他可能就是说整个这个团队啊,乱糟糟的,预计这个项目三个月之后上线,结果拖到四个月。对,或者说到第三个月到期了,这个项目没有到上线级别,硬要上线,为啥我不上线钱拿不到。有这种情况吧,有啊客户他知道啥呀,是吧,做的可以了。上了之后一完蛋了,对吧,客户一访问。全是500。就是这样啊,所以说建一个好的团队是很重要的,建一个好的团队也是很重要的,将来你选团队就是说你呀找工作,不是说工作,工作这个公司就选您啊,您要选工作的这种意识也要有。
26:15
啊,一个一个好的团队真的很重要,你看有些同学进到一个好的团队之后呢,就知道,诶,我今天该干嘛啊,我今天任务很清晰啊,我该做什么,该该动了,这一个不好的团队就是两三天没人搭理你,两三天没人搭理你,到第四天没要东西,我的天呐,你受得了吗?跟不说了,你找我了吗?是不是就是很乱,很混乱,有些团队就是这样,很混乱。特别困难,你看我好的团队也待过,差的团队我也待过,差的团队我一般待的时间比较短。啊,你比如说这个团队可能就是很差,我可能就待一年时间,这个团队很好,我可能待个三四年。就是这样,你想你遇到好多团队,你舍得离开吗?你不会不会不会离开,对吧,你遇到一个团队天天扯皮。
27:02
那你肯定对对,时不时的让你背个锅。对吧,诶不懂这个啊,因为在工作过程当中啊,你可能就是人人这个人际关系处理不好之后,有的时候你就不小一不小心就背锅了。对,你又是,加上你是新来的对吧,你跟谁都。不太敢说话,是不是也不好意思麻烦别人对吧,时不时的有的时候背个锅对吧,你你都不知道背锅了,关键是有的时候啊,行啊,这是一个咱们昨天所说的这个,哎,对表结构的一个修改啊,叫al,那再往下呢,说了一个术语叫c rud,这个c rud呢,我希望大家将来出去之后能跟别的程序员说的时候也说什么呀,C rud啊,不用说增删改查,C rud呢,Create retrieve update和delete增删改查,要知道这个东西。再往下呢,我们说的是约束是吧。约束这一块呢,就是首先第一个您要知道一张表在创建的时候,我们有的时候需要给这个,给这张表的某一些字段添加一些约束,比如什么非空约束。
28:07
非空约束,就是说这个字段上的数据它不能为空,唯一性约束,说这个字段上的数据也不能重复,逐渐约束,还包括什么外键约束啊,包括还有一个约束叫什么检查约束。检查约束是不是拆干嘛,只不过说了Oracle里边支持支持这个检查约束买当中他不支持什么呀,哎,这个检查约束。是这样吧。那昨天呢,咱们说了一个非空约束是不是啊,就是我们双减表的时候加一个notno,就表示这个字段当中,这个字段不能为空。你将来在插入数据的时候这么做,你要没有给这个字段指定值的话,就会出错啊,这样写可以。行了,那这个内容咱们就简单回顾到这吧啊。
我来说两句