00:00
数据查询是咱们整个数据库啊,非常非常重要的一件。非常非常重要啊。而且今天的内容还比较多,所以大家咬咬牙是吧。好,咱们先回顾一下昨天的内容啊。第一个DDL是什么?它包含什么?都有吧?呃,DDL叫数据定义语言,它包含建表、修改表。对吧,删除表。DML是什么呢?叫做。数据操纵语言或者是操作语言是吧。他包含什么呢?增加、删除和修改。增加、删除、修改。是吧,三个啊。来看。Student表啊,有ABC3个列。
01:03
添加数,添加这个数据的语句怎么写?那么咱们用这个笔就画一画啊。Inserter刚写过啊,然后是student表这个不写就写这样了啊。然后呢,完整点啊完整点。Into没写呢,是吧,哎,Into into。Insert into表明。然后呢?括号里边写上列名ABC3个列是吧。然后value括号里边分别对应成相应的值,比如说一、二、三。OK。这是咱们的添加语句哈。好,然后删除表中全部的数据呢,刚写过了是吧。
02:02
表名表名,这个表名你就写上就好了。最后一个。修改student表,那直接就是up。Student就写到这了啊,然后设置set。然后他说设置什么呀。密码是吧,那比如说咱们就是密码就是MM哈,等于123。然后条件是什么呀。Where?年龄大于20岁的密码改为123,那么条件就是A是大于20。OK吧?参加我下面这个语句啊。有没有啥问题?爱了。嗯。你看到这个插入语句啊,首先呢,你就要看它的这个有点类似于行参和实参似的,首先你得对数量对吧,然后再对什么呀,数据类型啊。
03:06
这里数据类型其实你看不太出来,那你就对先对数量呗。我想。地址。的。Email诶诶没了是吧。是吧,就少了一个值,哎,问题就出现在这儿哈。啊。改过来。你甭管零还是啥玩意儿,我加个数字就行了是吧。好,然后呢,再看一下这个修改,学生记录这个语句有没有啥问题,有问题的话出现在哪。Set这个单词关键字哈,就只出现一次就好。对吧,如果你想修改多个列。出现一个set多列之间干嘛?逗号隔开是吧。逗号隔开好,修改完成之后就这样。OK。
04:00
哎,这里边儿这个sex跟上边保持一致,我这个性别用什么来表示的。我用零和一来表示的可以不?零表示男,一表示女,没问题的是吧。好了,本章目标啊,本章目标。哎,有查询函数函数和。查询。哎,一个叫单行函数,一个叫聚合函数,就这一堆就很多东西是吧。好,咱们挨个来看啊。首先呢,什么是查询?这边是咱们的客户端程序,这边是咱们的Oracle的服务器。那么,我将发送一条命令。你看,我发送一条命令。对吧,在这里边我咚咚咚敲完命令了,然后一执行是把这个命令发送到数据库里边了,然后数据库里边你甭管里边它怎么做的,反正他得到了这个命令之后啊,里边进行了各种什么排列组合是吧。
05:01
最终它会返回给你一个结果,这个结果呢,长的是一张表结构。也就是说,你给他一个命令,他还还你一个表。给一条命令,还你一个表。这个其实就是查询嘛。查询啊。来看一看啊,它产生的是一张虚拟表。也就是说,看到的只是显示的结果。并不是真正的储存啊,并不是真正的储存。来,咱们来看看啊。强调一下,我这个动画做的其实挺好的啊,我这PPT,所以大家在看PPT的时候可以全屏播放啊。看一下啊。查询机制,首先呢,我有这么一个语句。这个select形from表明这个就是查询表中全部数据。等会咱们再细说好吧,然后你看这个条件,条件是什么呢?查询全部数据,条件是班级为202班级。
06:08
那其实很明显就是找二班的呗,对吧,对咱们全校的学生查找202班级的。对吧,看好动画是怎么做的,它是这样的。表呢?Student表就在这里。这是数据的原始表,也是真正存放数据的表。然后这个语句执行,他会这样做。OK,它会在原始表的基础之上啊,把符合的这三条数据拎出来,组成了一个新的结构,OK。对吧,数记住了,数据还是在这儿呢,还是在原始表中,只不过它这个查询语句会把你。匹配的这个数据单独拎出来,组成了这么一个新的结构,那么这个新的结构你看装的是不是就是满足咱们条件的结果啊。
07:07
满足条件的结果。这个过程其实就是查询。查询。好,那咱们来具体看一下查询的语法。语法啊,这个语法呢,记得中括号表示啥意思。可有可无哈,那也就是说现在如果没有什么条件,没有什么排序,也就是说查询语句这些是必须要不能少的。这些是不能少的啊。来看一看怎么写的。查询全部的行和列。来,咱们写一个。比如说我下来了啊。查询。员工表。中全部的数据。好,怎么写呢?哎,你看到查询只要是查询或者是什么获得了,对吧,搜索了这样的关键字啊,都是select语。
08:05
Select语句。然后呢,他说全部的数据。也就是说,这个表中所有列是不是都得查出来,甭管什么姓名啊,性别啊什么东西的,所以这块写上星。星表示全部列。所有的。然后呢,你要查询全部的数据来自于。From。像初中学的是吧,什么I'm from America是吧。哎,来自是吧,哎查实全部列来自于哪儿员工。表。就这么写的好,一直行。数据呢,就会在下边儿显示出来。看到这个就是咱们员工表中的所有数据。所有数据简单的给大家介绍一下哈。
09:00
知道。把这个关掉。简单的给大家介绍一下这个表中的所有列都是什么意思哈,第一列就是员工编号。员工编号ID列。然后是lastname。这是姓还是名?是吧,然后first name是。零是吧。然后这个呢,是UID就是账号账号。就是卡门这哥们如果想登录系统的话,账号是这玩意儿。然后后边这个started。叫开始日期,其实翻译过来是什么呀?就是他的入职日期,员工吗?来咱们公司的这个日期是吧,入职日期。然后这个comments备注哈,啥也没有,甭管它,然后这个列,看这个列,这个列啊叫manager。
10:05
前面这个单词叫manager。你看大写不看不懂是吧。Manager。管理。管理是吧。叫manager ID啥意思嘞,这叫管理ID,就是说领导。大家看一下啊,什么意思,给大家看一看,你看啊,比如说咱们就是这个麦克。他说我麦克啊,然后这个列是吧,我的领导编号是一。啥意思嘞,那就是找呗,那谁的员工编号是一呀。是不是卡没了?听到了吗?所以这句话应该怎么翻译过来啊?就是我麦克的领导是卡门,OK。对吧,这一过来了吗。然后随便再来一个,比如说这个。呃,这什么玩意儿,罗罗卜塔。
11:02
哎,罗伯塔的,看他啊,我的领导是谁?我的领导是二号,那二号是谁呀?这个是吧,拉杜瑞斯,也就是说罗伯塔的直属领导是拉杜瑞斯。吃啥东西吃坏了是吧。边上OK,知道这个列啥意思了吧?哎,知道这个列啥意思了啊。然后下一个开头叫做头衔或者是职位。卡门的职位是什么呀?总裁是吧?哎,就是这个意思啊。然后嘞。DEP。ID department ID叫部门编号,就是说卡门它隶属于50号部门。本它隶属于43号部门,OK。哎,部门编号啊,所属部门最后一个呢,叫做工资。Salary月薪月薪salary。
12:03
卡门作为一个总裁,月薪2500。两千五是吧。嗯,太太寒碜了。当时我就做这个表的时候,我没想整太大,整太大。我没整几百块钱,不错了哈。太大的话,咱咱口算起来也费劲是吧。一个玩吧。好,最后一列,最后一列啊,其实我想做的时候是做的是奖金。奖金。哎,有很多人是没有奖金的,但是我就做了几个人有奖金。十块钱。啊,你转不一定十块啊,我的单位万一给定改成万呢。奖金10万可以了吧,对吧。好了,那这个表中的所有的列,大家是否已经了解了?了。那比如说。呃,咱们这个语句看清了吧?查询全部数据来自于这张表。
13:02
那我想查询一下的,那表中的全部数据是啥嘞。查询全部数据来自于student表。一直行。这是16的的表。这十个表这些列,你看看就应该知道啥意思吧。地址、生日、邮箱电话、年级、性别姓名。密码、学号。这个就是查询表中全部的数据了,再往下走。第二个呢,是查询部分列。查询不可列,你看这里边儿有一个需求,我把这个需求粘过来。他说,我想查询学生的姓名和地址。也就是说,我不希望查这么复杂,这么多东西,我不认识,这个我都不认识,我只想要什么呢。
14:01
你叫啥?你家在哪?只想要这两个链。咋了?那就不能用星了,因为星表示的什么,记住了,星表示的是所有链。OK,所有列不画了啊。那我现在只要什么?学生的姓名。逗号隔开还有一个是不是地址啊,叫做a res。我只要这个列和这个列,那么这两个列来自于哪里?我看。非常。就这个结果。查询结果是不是就这样?这是部分列啊,部分列就是查询具体的啥,具体的啥。没问题吧,哎,具体的啊,等下来。啊,然后呢,简单的查询,咱们说过了之后啊,咱们再说说这个SQ语句中的就是数据库语句中的运算符哈。
15:03
想说。啊,运算符这里边儿。跟Java一样,我捣鼓再捣鼓一遍吧,其实没啥意思啊啊符号,它就是一个符号,用来计算什么呀。变量之间的比较和数学是吧,比如说加法减法是吧。一样一样的啊。它这个运算符里边包含算术赋值,比较逻辑。一个一个来看,首先看算术运算符。加减乘除。没问题吧?啊跟Java一模一样啊,没有区别,最后一个叫取就取模是吧,求模是吧?啊这个呢,取运算呢,就是使这个函数了。使用这个函数了。这个呢,一会儿咱们讲到单行函数的时候,我具体给大家介绍好吧,你指这篇暂时你就记住取模或者取余数跟之前并不是一样的。没有百分号那个操作啊好吧。
16:00
哎,这个一会儿再讲啊。然后咱们再看逻辑运算符。这个逻辑运算符啊,就是与或非,只不过呢,Java中用这种符号是吧,而咱们在数据库中直接用单词。用单词哈,用单词做条件,比喻做条件。哎,这叫并且。或者。去看。或者对吧,并且。哎,用法呢还是一样的,用到的时候咱们再说啊。OK,下一个比较运算符。比较运算符,这不是负值,这叫比较。例如。年龄等于23。这是判断是吧,比较的意思是不是就是判断啊。大于小于不等于大于等于小于等于还来个不等于两种不等于。两种不等于,那么其实应该用哪种不等于呢?
17:04
这个说了。他说非。标准是吧,非口九二标准。这个啥意思呢?是九二年定的,全世界开了个大会,说以后数据库咱们统一一下是吧,有点像秦始皇统一杜阳衡已经。啊,以后你别这个脊梁几几湿斤了是吧,青绿色的用公斤。哎,就是这个意思啊,然后统计之后啊,这个就是独有的,所以统计之后标准的所有数据库都是这种方式。要不等于。就等于这么写。一会儿咱们来看一看啊,这块咱就用一下,这个不等于啊。比如说呃,咱们来看一看这个员工表哈。啊,这个比如说啊,就看这个员工编号吧,我想查询不是一的员工。员工编号不是一个员工。咋写啊?Select from员工表条件是ID等于一的话,就是一号员工不等于一的话,是不是就是。
18:04
怎么着啊?五一之外的呗。是不是除了一之外的,剩下的234567就全都搞出来了是吧?啊,这个叫不等于。OK。不等于啊好,然后呢,接下来说这个列的别名,这个特别有用,但是很少用,因为很麻烦写下来,来看这。啊,这个放在这吧。年薪的话是不是又回到员工表了?From员工表。然后这个是啥来着。这是月薪对吧,那求年薪的话呀,是不是得乘以,乘以多少啊。可以12个月啊,你们公司福利待遇太好了是吧。正常公司开12个月工资能开出来就不错了啊。呃,为什么非得搞好学历,好好学进大公司呢?像百度新浪这个级别的公司啊,基本上最次最次也会发15薪。
19:04
哎,一年发15个月的工资对吧,正常的小公司12个月开满就不错了啊。可以往大公司进啊。那咱们就往大公司对比呗,咱乘一个15对吧。哎,15好,这怎么做呢?看好了啊。这块我如果写成salary。查询的就是月薪,OK,第一个值咱就记第一个值就行了呗。然后呢,我现在要想查。要想查年薪咋办?我就需要把这个值直接乘15就行了。其实很简单是吧,直接乘十五二十五,呃,两千五乘15等于多少。不太知道,行,谢谢。OK。然后呢,这样大家看到那这个钱放在这儿,我也不知道谁是谁的,三减37500,谁挣的这个年薪啊,我再把这个名字在前边再给求出来呗。
20:05
OK,参考这个语句,现在咱们查询的是不是一个值啊,在前面再补个值呗,补个名。叫啥来着?呃,一个是last,一个是first是吧。Last的英文咱也看不太明白,咱使用fire。请逗号隔开,注意了啊,再执行是不是这样的?前面一个名,后边一个年薪啊。现在这个列的别名是什么意思,是这样的,你看我查询出的这个列的这个表头啊,还有这个列的表头啊。如果我是个大老板,我英文不好就有钱是吧?我不知道啥意思,你给我改成中文。他就这样的需求,你给我改成中文件。咋办?这么办啊,非常简单,看好了这个first name叫列名,是不是就是它呀?我想把它进行一个重命名,很简单,在列名后空格直接写中文。
21:09
这是啥,这个这个这个名字吧,好吧。OK吧,后边这个呢也同理,三乘15是啥来着?圆心在这个列。后边空格连心。妥妥的是吧,哎,很简单,这就一个空格,直接写名字是吧。直接写别的。啊,这就是列的别名。烈的别名。也可以理解为是。列的重命名啊,列的同。嗯。好,那么这个年薪啊,年薪还有一种特殊的要求,什么叫特殊的要求呢?空下格。
22:07
这就这就毁了一执行,包括。未找到from关键字啥意思嘞?是这样的啊。它这个作为一个列名空格,后边它直接是不是找的是列别名啊。这一块这一块它满足咱们的语法要求。对吧,那么列别名后边之后,紧跟着就应该是from关键字了。对吧?而你是个什么鬼?是个心这个字,所以他说我找不到符号。啥意思吧?这块是一段空格之后直接找from了。然后你看如果没空格呢。这位来看列名重命名空格是不是直接找from了?而现在,你多了个空格,它就会把心这个字看成from该出现的位置。
23:00
结果呢,找不到,所以报错了。咋办?空格挺要挺挺挺恶心是吧,咱们将这个字啊,如果中间你非用空格加双引号给它包起来。就类似于字符串。双引号过去。中文的哈,不对啊。中间是不是有空格啊。好,再来。是不是几个空格都没问题了?对。哎,这是空格的问题啊,空格的问题。有空格。呃,别名中是吧,别名中。有空格用双引号。怎么说?就这么着吧,双引号是吧。好,咱们来再往后看。查询。
24:00
我现在要求是查询。所有员工的姓名,这个姓名指的是姓家名。咱们这张表里边是不是既有姓又有名啊?哎,我要把它俩连到一起。姓呢,叫做last name呢,First。嗯。这。那现在这不是连起来了啊,它俩是两个列,中间是不是隔着呢。我想把它俩拼到一起,并且比如说中间,例如。例如,比如说叫做。詹姆斯。来个啥呢?来个来个杠吧,杠哈登是吧。怎么着,我想要这样的一个格式。而现在是满足不了啊,咱咋办嘞,就是拿到这个值,拿到这个值中间用一个杠拼接。
25:07
哎,在加法中就特别容易了吧。这是一个变量,这是一个变量,中间啥呢。如果是加绒。连接连接用一个杠是不是就完事了?是不是这样的,一个变量连接一个横线,然后再连接另一个变量,认为就是Java中用法啊,但在数据库里边这样不行哈,数据库里边就是这个加号表示的,叫做字符连接是吧?字符连接的话,数据库中用这个玩意儿。那个。两个竖线是啥来着。或是吧,哎,用这个玩意儿表示连接。后边这个加号也改了。哎,表示连接。那这样写行不行呢?
26:00
还是不行,他说中间这个线啊无效。记住了,连接符不能用双引,数据库中清一色的用单音。单引号。再次。少个S哈,尴尬了。好了,没问题了吧,就中间一个杠啊。对吧,来中间一个杠。这样的话咱们就连上了,嗯。好,这就是刚才咱们讲的这一篇PPT的全部内容。讲内容啊,你看一下它这块年薪有空格的双引号对吧。连接符号。然后是常量链。好嘞。
我来说两句