粉丝5844获赞2.4万

本节课程我们来介绍一下如何使用这个叫 pga 里面这么个管理工具来连接数据库,同时呢出手画一下我们后面所用到的是个视力表。首先我们在这个开始菜单中找到啊, postco, 那么这个下面呢,有一个叫 pga 的米,哇,这么一个彩蛋,我们打开它,这个 pga 的米呢? 从名字我们看出来,他是一个 pg 的管理工具,对吧?那他是实际上是一个由官方所提供的一个。 呃,不仅仅是管理了,像管理功能肯定有像这个数据库的监控啊,对吧?看一些服务器的这个压力状态呀,连接数啊等等。同时他也有一些日常的这种备份恢复的这些操作。呃,另外他其实还是一个开发工具,我们可以用这个 皮夹地面来设计我们的表结构,甚至画我们的一二图,还有像我们这个编写这个四个查询语句,甚至像存储过程这样的。 那我们启动他之后呢,首先他会弹出来一个就是叫 master password, 这个是干什么用的呢? 其实这是一个安全的选项啊,就通常我们在建立数据库连接的时候,比如说我用这个工具连接不同的数据库,对吧?通常我们有一个选项,就是保存密码,我们就把这个用户名密码本地存储,对吧?当然这样可能不是特别安全,那 这个 pga 里面提供了一个加密存储那些用户名和密药的这个功能,就是你输入一个主密,要他会用这个来加密你指定的那些用户名和密码,当然你可以不用这个功能哈,当然我们也可以啊,需要的话就输入 一个简单的就可以了,点击这个 ok 就可以了。那么接下来呢,我们看一下这个工具啊,最大化一下,我们看一下这是一个图形化的工具,那他有很多菜单呢,一些工具啊等等,包括帮助啊,这个大家可以慢慢去了解。 那么我们主要是看这个,首先第一步我们是要建立数据库连接吗?当你点击的时候呢,他默认给我们创建了一个这个 pos 盖十四的这个一个连接,所以呢我们可以啊,在这里输入我们的密码就可以了,当然我们这里演示一下怎么新建一个连接 啊?右击这个 servers, 然后呢有一个注册 register, 然后这里可以选 server, 那这里呢,就说我们先给这个连接定一个名称,比如说因为我的 福气就在本地吗?我叫 local house, 对吧?进了一个本地链接,那么必要的信息是什么呢?首先是一个主机,对吧?你的福气在哪?那我们这个福气是在本机,然后七点零点零点幺,那这个端口五四三二,就是我们安装这个 posecaceco 默认的一个端口, 然后呢?呃,连接到哪个数据库呢?目前我们只有一个数据库,就用这个就行了,然后用户名是这个 posty go, 对吧?我们没有创建其他用户,那这个时候呢,如果我们输入一个 postword, 然后点 civo 的时候呢, 就可以建立一个连接了,那实验他已经连上了,对吧?当然这就是一个新的,当然这个上面是已经提前创建好的,所以呢,我们,呃不用这个,下面这个啊,我们可以把这个去 删掉,删掉的时候呢我我们还用上面的,上面其实就是也是一样的,我们输入一个密码, 那么点击 ok, 我们看他默认已经连接上了,然后呢显示的这个 desper 的是服务器的一些,呃,当前的监控信息, 像有多少个活动的绘画呀,总绘画有多少啊?然后呢?每一秒的数数啊,包括每一秒的这个读写,这个记录数啊, io 啊什么的 blog, 还有下面的这些,呃,绘画呀,锁呀等等这些配置,包括数据库的一些配置都可以在这里看。 那么我们看一下左边这个有几个节点,第一个就是这个 daddybase 是我们主要关注的,我们看一下默认我们是连接到了 postcard, 对吧?这是一个系统说语话,一般来说呢,我们做开发的时候肯定是要建立一个 自己的应用数据库吗?比如说我们在这里点 crete credit, 一个叫 hrdb, 对吧?我们这个 hr 系统用的,当然这个欧暖默认就这样了, 当然我们也可以定一些他的呃,磁浮集啊什么的,等等,对吧?连接数啊等等很多参数。那最后呢,我们可以看到他都提供了一个叫思考这个,那这个思考就是你前面点的这个东西对应的思考语句,那这样呢?呃,对出学者来说呢,我们可以用这个来学习,对吧?这里是叫 hitb, 也就是我们创建一个数据库,好 seve 一下,那么这个 ceo 呢,就会导致这个服务器在后台去创建相应的文件,对吧?去创建整个数据库的文件,所以呢这个时间会相对长一点,那我们稍微等一下,等到创建完成之后,我们看 这就已经连接到这个 hrdb 了,出现了这个,对吧?这个时候呢,我们有两个数据户,对吧?那一般这种情况下呢?呃,待开发呢?我建议大家就是这个时候,就是先这样先断开一个连接, 然后呢我们改一下刚才的配置,因为刚才我们配置的这个连接是直接连接到系统这个数据库了,对吧?所以我一般就是默认年代的我们这个应用数据库,对,把它改一下,然后再碎一下,碎一下之后呢我们再连接一下, 那么这样呢,我每次进来的时候呢,他实际上就哎默认点接到我们这个应用的这个数据库叫 hrdb, 对吧?那他下面也有很多这个子目的,我们看一下这里我们主要关注的叫 sky 码, sky 码就是我们组织这个表的一个逻辑的单元,目前呢他只有一个, 这个是给吗?那我们可以直接用用这个就行了,然后下面他会有很多对象,像这个,呃, a boss 就是表,对吧? c 口子就是序列,然后有什么吹格的函数什么的,首发器,还有仕途等等。那我们看你点开这个 abos, 默认就什么都没有,因为我们现在什么表都没有创建,对吧?所以接下来我们要做的就是初时候啊,我们后面视力所要的几张表吧。 那这里呢,我们需要用到菜单里头的这个叫 tours, tours 我们看到他会有一二图的这个工具,然后还有 pso 口的这个客户端。那这里呢,我们用这个叫 query tour, 这是一个查询工具, 可以方便我们来查询这个数据,这里我们可以简单查一个,比如说我去看一下当前的服务器版本,对吧?这个 为什么函数呢?是访问,就是用于返回这个数据库的版本,我们执行一下,看一下,来看一下,我们可以看到他目前我们装的是 pos 四口的十四点四这个版本。 那接下来我们要做的一个事情,就是去我们这个 gettop 上把我们的这个视力脚本下下来,对吧?那下下来呢?他是有一个叫 scribe 的目录, 他下面有一二三四个脚本,简单介绍一下,第一个脚本叫 cretabo, 是创建表用的。第二个脚本叫 insert data, 是生成数据用的。 第三个脚本 chris index 就是我们创建所引用的。那最后一个脚本是迪丽推宝,就是如果我需要重新出手画的话,我可以先删掉他,然后再重重新从这个 cry tape 开始。那我们看一下,打开这个 crate tape, 简单说一下, 这个脚本会创建三个表,部门表叫 departments, 职位表叫 drops, 然后员工表 employees, 当然还有个试图,那这些语句呢?我们在后面的视频中再介绍这里呢,我们简单的就把它复制出来,直接复制 copy 一下, copy 之后呢直接 pass 到这里 copypace, 那这就在这里了。然后我们点的这个这个三角形,这个就是执行的意思,就执行,那我们执行一下, 那么执行成功呢?他会告诉你执行成功,执行成功呢,我们就可以在这个 apple 上面刷新一下,我们看到会有三张表,对吧?同时我们也有一个,有一个试图三张表加一个试图,那么就是表已经创建成功了,对吧?那接下来我们处置画一些数据, 用这个音色 data 这个脚本同样 copypass 过来,当其实他这里也有打开文件哈,当然这个就是你直接打开文件点击到呢,也可以,那我们这就 cobypass 过来,然后直接执行,那么他就是已经成功了,对吧? 成功之后呢,使用我们就是可以看到这个表里的一些数据了,比如说我们用这个右键右键的时候呢,可以看一些,呃,这里有一个叫六 dat, 比如说看前一百行六 dat, 你看一下,其实这个数据已经有了,就是员工表里 这样吧,可以最大化,有个表里头有一些数据在这里头呢,我们能看到,对吧? 呃,接下来呢,我们再把这个锁引给它创建上,所以跟我们后面的所引优化有关,我们先把它创建上 好了,这就成功了。当然最后一个表呢,这最后一个脚本呢,就是如果我们不需要的话,或者想重新出的话,就执行这个,他会删掉我们所创建的表和试图 好了,那么到这里呢,我们其实就已经呃完成了我们这个准备工作,对吧?我们这个数据库也已经连接了,然后呢我们的整个一个处置化的脚本和数据也有了, 那接下来呢,我们就会从简单的这个查询语句开始来学习我们这个 pose crew。

今天我们给大家介绍一下怎么用这个 p g admin 这么一个工具来制作我们的这个实体关节图,也叫做 erd。 那么在我们设计数据库的时候呢,通常会去了解业务之后呢,要去设计这么一个 e r d 的图,那么这个工具呢,已经帮我们提供了设计的这么一个功能,我可以点开这个菜单里头叫做工具,那它下面有个叫 e r d 工具, 当我打开它之后呢,是一个空白的面板,那么这个面板上面呢,有很多这种常见的按钮哈,像我们这个什么去保存一个项目啊,加载一个项目啊,然后呢?呃,生成一个烧烤啊,导出图片等等。 一般来说呢,我们可能是先从这个添加表开始,对吧?比如说我添加一个 t e 表,那么 t e 表呢?我可能是一个叫测试表, 是个备注,然后呢我可以去给他定义列哎,比如说我定一个 id, 那么它的数据类型 big int 不为空,是主键啊,然后它没有默认值。可能我还有一些其他的 啊,比如说他有一个内幕字段,然后是一个可变长度的字符串,然后长度最多一百,那这样呢,也不为空, 但我们可以去加更多的字段,对吧?包括后面还有一些属性,我们就可以去设置,但这个一般来说呢,我们用的不是很多, 呃,这里呢,我们也可以去设置一些约束,主见、外界唯一性约束等等,根据需要我们可以设置。简单来说呢,我这样就创建了一张表 te 表,那么呢,通常来说呢,我们还 会去添加更多的表,对吧?比如说这里呢,我们简单的再添加一张表,然后呢简单的给他一些列,比如说他也有自己的 id, 然后呢他也是个整数,主见不为空, 那然后呢我可能再设置一个 f i d 用来显示外键的,那么也是这样的,但是它有可能是为空,好,我们保存一下, 我们看下它合在一起了哈,当然我们用这个自动对齐的工具给它对齐一下。那接下来呢,我们需要设置一个外界关系 t 二表呢,有一个 f i d, 我要引用到这个 t 一,那这里呢我们可以点开一张表,然后呢这里有 e m 和 m m 是一对多,以及呢那个多对多的关系。假如说我是一对多,那么我们看到当我选择 t 二的时候呢一对多, 那么第二表呢?就是指表了,那么它就是用 f i t 去关联什么呢?关联 t 一的主见 i d, 这样呢,当我建立之后呢,他就会有一个外界关联的关系,对吧?也就说我 t 一的一个记录可以对应 t 二的多条记录,那么这外界关联关系也就出来了。 当然我们还可以有很多设置啊,比如说我去填充它的颜色,对吧?我可以不同的表,或者说我一类表,我去填充某一类颜色,对吧?比如说我去 呃填充一下它的颜色,然后呢和它相关的表,我可能也都去填充一下,对吧?呃,然后这样的话,我可能是这一类表,就是用来区分呃,当然字体颜色也是可以的,这些里头的字体包括一些其他的,这个像自动 对齐呀,显示详情和这个减钱,就说,比如说这里我不显示这个数据的类型,这里呢我们显示详细的类型等等。呃, 当然这里还有说我这个关系的一个注视法,如果我用这个哎,我们可以看到是一对 n 的关系,对吧?那等等这些都有,那再说一下这些常见的可能用到的功能哈,比如说像这个下载镜像,他实际上是把我们这个 ert 图啊,他是 下载一个偏激图片,他可以下载图片,然后我们可以把这个图片去做一个使用啊,然后其他的就是一些对齐等等。当然他还有一个功能,就是可以帮我们去生成基于我这个 ert 的一个设计来去生成我们这个 circle, 那么生成 circle 它就会打开,对吧?当我们设计完了之后呢,当我们想要去生成这个,直接去跑这个交 创建表层呢,我们就可以直接这样去跑,然后呢他就会有相应的这些色刻语句就出来了啊,如果我们的工作没有做完呢,我可以去保存一下,对吧?保存到某一个地方,然后下次再把它打开继续工作。 那除了这个之外呢,还有一个功能,就是说当我连接到一个已经有的表,比如说现在我已经连接到这个数据库了,对吧?那么我可以从这里直接抽取他的结构, 我直接点这个对象,点开这个数据库,然后点对象对象,他下面有一个数据库的压地工具,那么他就会把我表里的这个数据库里的表呢直接生成一个压地,当然可能不是很 整齐。那通常这个时候呢,我们可能需要去做一些呃自己的一些调解吧,或者说去把这个图拖的相对来说要好看一点,那么这样的话呢, 我们也可以去方便,哎,去展示,可能这个地方我们需要再调整一下,目前来说呢,他这个关系显示的可能这个线不是特别稳定,可能我们可以去根据自己的这个去拖动一下,那这个是可以拖动的, 再去调整一下,再设置一些颜色什么的。这样的话呢,我可以很方便的把我现有的数据库的结构呢导出一个结构图,或者说我导出一个 super 语句出来,呃,到其他地方去部署等等,这样都可以。

大家好,今天分享如何备份达芬奇数据库,打开 pgu 的密软件,连接达芬奇数据库,因为数据库在东瑞 dr8 共享寸处中,所以此处需要输入阵列的 ip 地址。输入达芬奇数据库的密码, 找到自己想要备份的数据库,右线选择办卡备份,此处需要输入存放备份数据的文件夹名称,新建一个文件夹,复制粘贴文件夹地址,输入斜杠,斜杠后是备份数据库的名称, 可以看到贝贝已经完成了,现在进入 pgm 软件 删除数据库,测试能否还原 新电视,就 右键选择复原,找到备份数据,点击还原就可以了。回套达分器,断开连接, 便选择连接数据库,输入名称和存放数据库的这列的 ip 地址, 可以看到数据库和时间线都复原了。今天的分享就到这里,我们下次再见。

接下来我们介绍几个和这个紫茶群相关的运算服啊,这里我们先介绍三个,一个是印,一个是奥,一个是 any。 首先我们说这个硬哈,其实硬运算法呢,我们在前面其实已经学习过,他就是可以指定一个列表,对吧?比如说我,我查询这个部门,然后呢我这个 部门 id, 这个硬是二十、三十,说白了,其实我就是要查这三个部门,对吧?部门,呃,这个部门 id 等于十,或者部门 id 等于二十,或者部门等于 id 等于三十,对吧?其实我就是查这个新 信息,那另这里呢,我们是直接给了一个列表,对吧?那其实呢,这个里头的值呢?也可以用一个子查询来返回子查询,返回一个列表 啊,比如说呢,我们假如说,我们现在想啊,搜索这个部门哈,看有哪些部门呢?有啊,这个员工是在比如说二零零八年一月一号入职的,对吧?就说 如果这个部门当中有员工是在这个日期之后入职的,那么我们就返回这个部门,如果没有就不返回,那所以这个时候呢,我们可以哎查询一个,查询什么呢?查询一个部门 id, 我们从哪里查呢?我们要从我们这个员工表当中,对吧?那我们的条件是呢,就是他的 date 要大于等于,对吧?那这个入词,比如说二零零八杠零一杠零一,对吧? 那么这个查询是什么呢?他就是返回了有哪些员工是在这个呃,他的这个指定日期之后入职的,对吧?然后呢返回他们的部门 id, 当然肯定会有重复的,当然比如说这里我们也可以加一个 distinct, 对吧?就是 查询一下有哪些这个员工,呃,他的有哪些部门包含了这个日期之后的,对吧?入职的这个员工,然后呢,我们通过这个查询呢,来判断一下,包括这个部门的信息, 那这样的话呢,就会分为这两个部门,说明这两个部门有员工是在这个日期之后入职的。那么这是一个 硬运算服的一个使用,对吧?那么二呢?通常是和一个比较运算服来进行一起使用的,比如说我们想看一个二的视力,哈, 就说假如说我想要啊,查询一个我们用员工吧查询员工的信息, well, 为了什么呢?就是他这个员工的月啊, siri 啊,他应该大于什么呢?大于。 就比如说我有一个这个销售部门,销售部门他有很多员工,对吧?他每个员工都有 siri, 那我想看看,呃,咱们这个员工表当中呢?呃,有哪些员工是比这个销售部 们所有的员工的工资都高的?也就说呢,那是大于哦,大于哦的意思就是要大于你这里面访问的所有的内容,对吧?那么 比如说我选择 siri from the nplv, 哎,这个瞧错了,那我从这个表当中返回 we are 他这个 department id 等于八十,因为这个八十是 sales 部门的。 那我们看一下这个字查询呢,他其实也是返回了一个集合,对吧?就是他返回了什么呢?返回了所有的这个 sell 的部门的所有的员工的这个月薪,对吧?那是一个列表,那现在呢? 我这个是大于二,也就是说我要比你这里列表所有的内容都大,对吧?那其实我们先看一下这个效果,那么他就会返回几个这个月薪比较高的这些员工,对吧?那实际上这里的大于二,他的效果其实是等价于什么呢?他其实是等价于大于,然后呢? 对吧?也就说其实我是要返回这个部门当中最高的,然后你比这个最高的还大,其实是一个等价的效果,对吧?那当然啊,除了二之外呢,我们还有一个叫安妮,我们来看一下,如果说我把它换成安妮, 他是什么意思呢?哎,你是任何吗?也就说你只要比我这里头的任何一个值大都行,对吧?我会放 我一个列表,你比我这个,比如说你大于一万四,当然可以了,对吧?你不大于一万四,你大于一万三千五百也是可以的,对吧?我们看一下,那这样呢,肯定会返回更多的这个员工信息了,就是比,只要比你这个相当于来说只要比你这个最小值大就可以了,对吧?实际上他其实也是相当于这样的,他相当于命, 哎,你只要比我这里头最小的大,那你就可以了,对吧? 那么这是啊,安尼运算服的一个效果,当然我们也可以不仅仅是大于哈,我们也可以等于啊,不等于啊这样的,对吧?和其他的运算服就呃 在一起去进行运,进行预算,对吧?或者我们是 not 也呃,不等于啊,不大于啊什么的,对吧?那当然这个安妮其实呃还有一个写法哈,就说和安妮等 下的也叫萨姆啊,就是我也可以在这里写萨姆。所谓的萨姆其实就是安尼的意思吗?只要满足其中的任何一个都可以的,是一个效果啊,萨姆和安妮的这个写法是一样的。 那么今天就是我们主要介绍这三个啊,就是硬哦,爱你,这三个和这个紫茶群相关的这个运算府。

c 口呢,它不仅仅是一种操作数据库的语言啊,实际上它本身还有很多这种数据分析的功能,那么今天我们就来介绍一个在这个 c 口语句中对数据进行逻辑处理的这么一个叫做条件表达式,或者也叫做 case 表达式。那我们首先来看一个视力, 那假如说我要去还是查询这个员工表当中的一些信息,比如说我查询这个叫 first 两个字段,然后呢我可能还查一个叫的 id, 就是部门的这个编号。 那么上一啊,前面的这个视频当中呢,我们已经介绍过这个用 joy 连接查询,对吧?去把 这个底盘的 id 呢,我和这个部门表的 id 进行关联,然后呢我可以返回这个部门的一些啊名称,那接下来呢,我们来看一下如何在我不使用这个连接产权的时候呢,我就想把这个部门的这个 id 啊给他转换成有意义的名称,对吧?我不想看 id, 那么这个时候呢,我们看一下啊,这个部门的 id 有很多值,有像这种九十,六十,一百等等,对吧?那如果说我想把这个编号转换成一个有意义的这种文字的描述呢,我们可以使用一个叫做 case, case 表达是什么意思?就是我来判断后面的这个词,然后呢如果说 他等于某一个值,比如说如果说他等于九十,那么我们就把这个表达式的值呢转化成某一个值,嗯?这是什么值呢?比如说九十,我们呃就随便写一个,比如说我们认为他可能都是一些管理层,对吧? 当这个和我们真实的这个底牌的们的那个表里头不一定能对的上啊,我们这就做一个视力,就是说假如说他是九十,那我就把它转换成这个管理部门,对吧? 那如果说他不是九十,那我再来判断一下他是不是六十,对吧?那六十的话呢?好像是这个,呃,开发,开发部门的, 那如果说他是也不是九十六十,那如果说他是其他的吧? 当然我们可以写很多哈,你可以不停的问问,很多很多所有的分支你都可以写进来,然后呢,你可以有一个最后的分支 boss, 就是你前面都没有匹配到,对吧?我可以叫做其他,那我们简单就写这几个吧。 好,那 case 呢?有一个 end 是表示这个结束,那么这是一个完整的一对 case 开头摁的结束,然后呢,我们可以把这个定义为这个是部门,对吧?我们先来看一下, 那这里我们可以看到,只要他是这个九十,其实我们可以在这里再把这个部门写到这,这可能清晰一点。 我们看到其实说白了我就是基于这个 case 表达,是对这个底盘的 id 做了一个翻译嘛,如果他等于 九十,那么我翻译成开管理,对吧?否则呢,我看一看他等不等于六十,那如果他等于六十,我就是开发,那这里我写的比较简单,其他的呢?我就没有做区分,如果是 l 四是其他的,那我们就是全部是,就是其他这个部门,对吧? 那这是一个逻辑处理的概念,也就说我可以基于这个值的取值来返回一个对应的值,实现一个逻辑的一个。呃,像,如果大家有编程经验的话,其实它很像那种易服,然后呢 then else 这种,呃逻辑分支, 说白了就是做一个翻译。好,那我们来看一下啊,就说这种 case 他有没有一些啊?实际的或者说其他的用途呢?我们我们可以看一下,比如说看 一个视力,前面我们也介绍了,当我按照这个部门来统计的时候呢,我们可以看到他会啊,加油, 你说我按照每一个部门来统计他的员工的人数,那么他会一个部门一行数据,对吧?那假如说现在我要实现一种所谓的呢这个行转列的功能,什么意思呢? 我想要第一列是返回,比如说部门编号为十的这个部门的员工,第二列呢,返回部门编号为二十的这个员工数量,对吧?部门这个第三列呢,就是部门编号为三十的 实现这种把这个一行一行的汇总呢转换成一列一列的汇总,那么这种情况下呢,我们就可以使用这个 汇总函数加上我们的一个 case 的,这个什么意思呢?我们来看一下啊,写到下面来 count, 我们说了炕的,如果你不是炕的心,他会忽略这个空值,对吧?所以呢,这个时候呢,我们可以这样写 case, 这个部门我其实就不用了,就说我来判断一下这个部门,如果他是等于十,那么我就随便返回一个值,抗的一个值,对吧?比如说我就放个一,对吧, 如果不是呢,我就我就不管他。这个时候呢,如果我们没有写 l 三,说白了什么意思呢?就是如果这个部门不是十,那么他不会匹配到值,那么 直接访问的是闹值,那闹值呢?我们知道抗的闹,其实他是会忽略掉的,对吧?所以呢,其实呢,我这是 department 十的一个人数,对吧?那同样, 如果说我先要看这个二十这个部门,那我们就提拔他们二十,对吧?如果要看这个三十的这个部门,我就 三十,这样我们先来看一下效果,那实际上他反过来的就是部门十有一位员工,部门二十呢有两位员工,部门三呢有六位员工,大家可以自己去对照一下,是不是这样的哈?就是,那为什么他会出现这个效果呢?这里我 我们使用的是两个概念哈,第一个就是说我们用这个 case 表达是,对吧?说白了我这个抗的只会抗的给帕特曼的 id 等于十的 给他的员工,为什么呢?因为我只有当他是十的时候才会有一,否则其他的我没有写钥匙,那默认他的就是空,就是闹。 另外一个质检就是我们说了抗的闹他是不会被统计出来的,对吧?所以说只有部门 id 等于十的,才会真正被这个抗的函数来统计,那么我得的就是部门十的这个人数,对吧?那下面都是一样的,那这是一个 case 的一个使用。 那说到这里呢,我们再给大家介绍一个知识点啊,就是关于这个汇总函数的一个知识点,前面我们没有介绍,就说 如果我不想使用这个,我可以用这个 pos 个 c 口里头的另外一个功能啊,就是抗的心,它可以有一个什么功能呢?我们说一般的来说,你这个抗的心其实就是统计人数吗?那它其实呢,它可以在这里啊,加一个叫 filter 选项, 所谓的 feel 它是什么意思呢?就是过滤的意思,靠的心就是统计所有的,但是呢,我要进行一个过滤,说白了就跟我的 case 实现过滤是一样的,什么意思呢?就是比如说 where department i d 等于十, 我们看到这里其实加了一个外耳条件,对吧?额外的在这个抗寒书里加了一个,后面加了一个外耳条件,那它的意思就是呢, 我只看他部门 id 等于十的是这个一个意思,和这个 case 下面这个是打的效果是一样的,我们来看一下, 你看同样是反过来这个部门时的这个员工数量,对吧?但这个 feel 的这个东西呢,是在其他数据库里目前还不支持的哈,但是 pg 他是可以支持的, 那他其实是可以帮我们实现这个更加这个精确的一个抗的,或者说汇总的一个效果哈,当然我们像萨姆 iv 这都可以,对吧?比如说我只想统计这个部门,或者说我只想统计满足某一些条件,对吧?我也这里的外表条件可以写的很复杂,对吧? 是针对这些满足条件的数据再进行一个数据的汇总,那这是 pg 对于这个汇总函数提供的一个扩展。 好了,那接下来呢,我们呃,再说一个新的这个 case 表达式,刚刚我们所说的 case 表达式的形式是这样的,它是把 case 一个表达式,然后判断它的值,对吧?那么 case 表达式还有一种形式哈,我们再写一个 什么形式呢?啊?这里呢,我们实现另外一个功能哈,我们还是 listen it, 上面这个就不要了, sorry, 我们来看一下这个员工的收入,对吧?这个时候呢,我们 考虑一个问题啊,假如说我想把这个员工收入啊进行呃分类,对吧?比如说,呃,我们认为五千以下的,对吧?那就是低收入的, 那五千到呃一万的,我们可以认为,比如说中等收入的,然后呢一万以上的我们认为是高等收入的,那这种情况下呢,我们就没有办法用这个 case, 因为我们说了 case, 比如说你这个 case, 这个 siri, 你这个问,你这个问里头你没有办法,你只能用,比如说 siri 等一万,我怎么样,对吧?等一千,我,我翻译成什么值, 但是我现在是一个不是等值的条件,对吧?甚至是一个,呃,比较复杂的一种条件,对吧?就是我想要判断这个 siri 啊,他小于五千, 那这种情况下呢,我们可以使用 case 的另外一种形式,他就要搜索的这种条件表达,或者说复杂的这种 case 表达,是吧?我们可以把这个判断条件直接写到后面 case 后面,不跟任何东西, 直接问为什么呢? sorry, 小于五千,嗯,你说低收入,对吧? 然后再问,比如说啊, 比去五千 and 一万,对吧?在五千和一万之间 中等收入, 其实呢我们可以呢直接 l s 高收入 and as 这个是收入, 什么意思呢?我们看一下啊。这里我们简单说一下 case 呢,是他是这么判断的哈,他首先是判断第一个分支,对吧? 如果他小于五千,我直接就返回了,否则呢,我会进入到第二个分值,看他是不是在五千到一万之间,对吧?那在的话就是中等收入 s 呢?我们不要写,不需要写这个大于一万哈,因为你 s 本身就是前面两个 不满足的情况下才会走这个 aos 嘛,那自然就是大于一万了,我们就是高等收入了,对吧?那看一下, 哎,这样的话,我们就把每个收入呢进行了一个翻译,对吧?分类分成三类, 所有的这种,我们说了简单的,刚才我们看的那种简单的 case 表达,是啊,比如说等号的,那肯定都可以用这个方式来实现,对吧?而这种方式呢,通常是为了实现这种比较复杂的这种产权条件哈,比如说我可以按照呃这个不不同的部门加职位,对吧?然后呢, 这个部门当中的职位如果是小于五千会怎么样?或者说我们针对 sales 的这个销售部门,我们说了,因为他有提成,对吧?我们可以考虑了 sere 加上提成,然后做一个这个分类,对吧?那我们可以 在这个开始逻辑表达室里头呢,去加任何的这种逻辑判断,可以让他们去根据我们的条件满足不同条件返回不同的值啊, 那这个 case 呢,逻辑表达式呢,是一个非常实用的这种对数据进行处理的功能哈,我们在后面的视力当中呢,也会经常会给大家介绍或者使用到这个 case 表达式啊。那这里呢,我们先是简单介绍了一下他的语法, 那在这个视频之后呢,我们再给大家再介绍两个啊,相当于是这种 case 表达式的一个简写的,或者说是一个呃缩写的一个情况吧,就是和这个空值处理相关的。 那么首先来看一下第一个函数呢,叫 naive ruif, naive 是什么意思呢?就是说 他有两个参数,他的意思说如果这两个参数啊,不相同, 那么我就返回第一个参数,对吧?比如说第一个参数是一,第二参是二,我们看一下,一和二不同,我就返回一,但如果是 这两个参数相同,二和二相同,我就返回空,对吧?他是返回空值,条件就是他俩相同就返回空值,那他有什么用呢?其实这种最常用的地方呢?就是我们会这样, 我们说了是这样的啊,先看一下一除以零,那他会就是报这个除零错误,对吧?但是有时候呢,我们这个参数呢,比如说你是一的时候,他就不会出现除零错误,对吧?要是二也要 不会,那他指不定在什么时候会出现这个除零错误,那这个时候呢?我不知道什么时候出现,那这个时候怎么办呢?我们可以用这个闹一幅函数呢,把我前面这个参数啊和零去比较, 一旦指这个东西是零,那么我们就让他等于闹那一除以闹,就是就是,闹嘛,他不会出现除零,凑,对吧?所以我们看一下,如果这种情况下,哎, 这里好像有一个错误,看一下是个中文符号吗? 不是啊,看一下可能是那个中文符号的问题, 哎,对了,就说你看啊,如果我是 一,他没有问题的吧,他能一除以,但是如果我是零,我们看一下,因为他是零,这两个相等,所以他是闹一除以,闹也是闹,这种情况,我就可以避免这个除零错误了,对吧?就是闹一幅的函数的一个使用场景,另外一个函数呢?是叫呃 call this, 这个函数是什么意思啊?你可以随便给给 n 个参数啊,他可以给 n 个参数, 他说白了他就是先判的第一个参数是不是空,如果不是,那你就返回第一个参数我看一下,那他就返回了一,对吧。但如果第一个参数为空呢, 他就会找第二个参数啊,第二个参数不为空,那我就返回第二个参数。第二个参数如果也为空呢?那我就返回第 第三个参数吧。如果所有的参数都为空了,那他就是放为空吗?说白了空里参数就是找后面的参,是列表当中啊,按照顺序找第一个不为空的这个值,那他有什么用呢?呃, 其实他通常是在我们做数据转换的时候用的,比如说我,我查询一下啊, first name, 然后 for 员工表当中我们说他有一些自断,叫 他没事,他这个员工的这个提成我们说了只要不是销售部门的员工,提成都是空值,对吧?但如果这个时候呢,我觉得空值可能不太好,对吧?好像体现不出他的这个我可 所以呢,就说用这个 扣里斯这个函数啊,把空值转换成零显示什么意思呢?我认为这个,呃佣金版比呢,显示为零可能就是更清醒一点,对吧? 看,那他其实就说只要你看,如果是,我们找找,如果不是零,他就是这样的,对吧?那或者说我们也可以把它改成随意想要的嘛,比如说不适用,我们试试 啊,这里有一个语法的问题啊,就是因为这个佣金它是个数字哈,所以我们只能把它改成这个数字,我们不能改成这个 字符串哈,否则的话他会告诉你类型不匹配哈,因为这个类型数据类型是一个纽麦瑞,是一个数字哈,我们不能用这个来把它转换啊,除非是我们是先把这个类型转换成字符串,然后再来去转换针,不是用这种字啊。呃呃, 这又是个中文符号吗?好像是。嗯,那么就这样吧,就是扣里次函数呢,我们记住了,他就是找到第一个不为空的这个参数,这样呢,可以我们做一个数据的转换显示。 我们总结一下这节课的内容啊,今后我们主要介绍的这个条件表达是也叫做 case 表达是,那它其实是就是可以在我们三个语句中呢增加类似于这种 epison, 就是基于不 不同的条件得到不同的结果这种逻辑的处理功能。那么我们介绍了 postco 里头支持的两种,一种是简单的对吧?就是直接用这个表达式的值去等词查找这种方式,还有一种方式就是我们用这种可以构造复杂条件的这种 case 表达式。 另外呢,我们还介绍了两个呃,缩写神式的这种呃函数吧,其实是两个函数,一个是叫闹艺术,另外一个是叫 colys, 这样函数呢都是和这个空值的一个转换处理相关的。

关于集合运算符呢,我们最后再介绍一个知识点啊,就是关于他们的这个优先集的问题。 首先我们来看一下,如果说我是相同的这种运算符,比如说构造一个什么, 这里呢?我们是构造了一个查询题,那么他返回来就是一,对吧。接下来呢,我们去构造他优点来优点 这个,然后呢我再优捏哦,这里是 t 二 t 三, 那么这里我们看到我使用了两个优点,对吧?那如果说是相同的这种集合预算符呢?我们就说它的执行顺序就是从前往后执行,我们看一下这个结果, 那这个结果呢,有两个一对吧?这是因为呢,他是按顺序执行的,他首先执行前面这部分,前面这部分是优年,优年是驱虫的,对吧?我们看一下,那其实返回了一个一,这一个一在和后面这个一做优年二,我们说优年二会保留所有的记录,那么他就最终会出两条记录,对吧? 那如果说我把这个哦放到前面去看一下,哎,他只有一个一,这个原因也很简单,就是你前面是优点哦,返回了两个一,但是呢你后面做优点去重,他就是最终返回一个一,对吧?所以说对于这个相同的这个运算符呢,他是前后 按顺序执行的,那如果说不同的运算符呢?这里呢我们需要注意一点,就是 intersect 这个运算符, intersect 的是要高于另外两个的,就是 union accept, uni 和 accept 是呃,级别相同的,有限级一样,就是如果碰到是按顺序执行,但是 intersect 他不是,我们来看一下啊, 我们看这个呢,他是这样执行的,如果说,比如说我是这样执行哈, 我这样执行是两个一,如果两个一和我这个英特赛克的去做交集的时候呢?因为我没有加二,对吧?就说加了在这里其实也没有效果,就说我这里是两个一,这是一个一,求交集的话,按理说他应该是分为一个一,对吧? 但实际上为什么他返回了两个一呢?他那他执行的过程是这样的,他是先执行了这个部分,返回了一个一,然后和这个一去优年沃返回了两个一,所以因为这个英特赛的他的优先及高,他是大于优年和这个 accept 这两个预算符。 那么说如果在这种情况下呢,我们对吧?写成这样了,对吧?我又想让他顺序执行的话呢?这里有一个解说,我们可以用这个括号, 就是我可以把前面这个括起来,那括起来呢,我们说了括号通常来说就是可以改变这个优先节吗?括号之内的会先执行,因为他们是一个整体, 那这样的话呢,他就先执行这个,会返回两个一,然后呢这两个一和这个英姿赛的一个一去求交警,那他会返回一个一,那这样的话呢,我们就 通过这个括号来改变他的一个优先级,对吧?所以说呢,这里关于情况运算的优先级的有三个知识点,一个就是 intersect 是优先级,高于优良和 except, 然后呢,如果是相同的,对吧?相同的优先级,那么他就是按照顺序执行。另外呢,如果我们想要自定义这个,或者是想要改变他的优先级,我们可以用括号实现这个效果。

上一个视频我们介绍了使用 select 语句来查询表中的数据,再给查询一下员工表, 点击这个执行一下,那么这里我们可以看到啊,当我们用 select from 查询的时候呢,默认他会返回这个表中的所有的数据,对吧?接着我们是总行数,有一百零七条是这个表中的所有数据, 那现在问题是在我们实际的应用当中呢?使用我们不太可能说去经常要查这个所有的数据,我们更多的是呢, 指定某一些查询的条件,对吧?我是有一些我想要查询的指定的数据啊,这里呢我们可以看一下,比如说我想要查询员工编号 id 等于一百的,那这里我们可以看到我增加了一个词句,叫做 where 外是一个条件,指定的是一个查询条件,那外后面呢?我们看这是 inprayid, 那这里我们指定的这个字段 inprayid 的这个员工编号他等于一百,那意味着呢?我是想要查询员工编号等于一百的这个员工,我们看一下, 那这里呢,他就只会返回一条数据了,这是我们满足这个财运条件的数据,对吧?那 像我们这种常见的产生条件呢?这点等于是一个比较运算,对吧?我们是用这个员工的编号和我们这个纸进行比较,那同时呢,还有不等于,对吧?就是 等于一百呢?还有不等于一百,那不等于一百,我们会返回这个编号不是一百的其他的员工,对吧?或者这个不等于呢?我们有时候也可以用这种就是一个小括号加一个大括号的方式来表示不等于, 当然同时除了等于不等于,对吧?我们列出来吧,这里是有等于,有不等于,然后呢?这种,然后我们还有大于,对吧?比如说,那这里我们换一个,假如说我想要查询这个 sorry 这个月薪大于一万的有哪些员工,我们看一下, 那这里呢?返回了十五条记录,这里呢?如果我们去看他的这个 sorry 这个字段,那么 他所有的 siri 都是大于一万的,这个员工才会返回,小于的话他是不会返回的, 那么小于或者等于都不会返回,那当然有大于,我们就有大于等于,对吧?比如说我们试试看看有没有等于一万的大于等于, 哎,这里返回了十九条,显然比刚才要多一点,那实际上是说明他这里有一些像这种情况下,他就对吧?我们看一下这条记录,那这个员工他的月薪正好是等于一万,所以我们大于等于,那同样有小于 和这种小鱼等于了,对吧?哎,这里那就是我们常见的这种比较运算,他都是可以的,这里我们就不做演示了,对吧?但是我们也可以啊, 演示一个别的字段吧,比如说我想看一下这个,按这个这个日期 hair date, hair date 就是他的人家入职日期,比如说我想看入职日期,我找一个吧,比如说我找这个 啊,小于等于,也就是某一个时间,比如说二零零五年一月一号, 对吧?比如说我小鱼吧,那小鱼其实就是二零零五年一月号之前,意味着就是零四年了,对吧?最晚就是零四年。我们看一下,那这里返回的所有的结果就是入职日期应该是早于零四年,对吧?早于零四年的所有数据,那么这是我们常 的这几个比较运算符,那除了这个之外呢,我们还有几个常见的这个运算符,比如说我们看一下这个皮训,就是在某一个范围之内,我们还是用这个 sara 来做演示,比如说我想查月薪,然后是比讯一万 and 一,这个一万二,看一下,那这个意思是什么呢?就是查询这个月薪在一万到一万二之间, 我们看一下,那么当我查询所有数据的时候呢,这时候我来找一下这个月薪,这让我们看到一万一,一万二,一万一,对吧?这肯定都是在一万到一万二之间。 同时我们也需要注意的是,我们看到啊,这个他是返回了一万二,也返回了一万,对吧?所以意味着这个比特呢是包含这两端的直的,就是既有这个一万,也有一万二,是一个两端包含的这个概念。另外呢我们再看一个 另外一个预算符,叫印,印代表什么意思?就是你这个值处于我这个某一个值之内,就是我会列出几个值,比如说一万,一万一, 对吧?我可以立很多。那这种情况就是说我就想查找这个月薪等于一万,或者对吧?就是在这个列表之内都可以吗?或者你也可以是一万一,对吧?但是你也可以一万二、一万三,这样都可以。那我们来看 看一下,那这种情况下呢,他返还的就是月薪要么得一万,要么得一万一的这两种情况下他所有的值,对吧?所以呢,那我们再说一下,这里我们写了一个比特,同时呢我们还写了一个印, 那么这就是呃 pose 的 c 口呢?当然这也是 c 口了,标准 c 口以后提供的一些这个 weld 子句里头可以用的一些比较的运算符,对吧?那么这就是我们这节课的主要内容, 简单总结一下 pose 的 suit, 他是使用这个 yo 子句来过滤表中的数据,只有满足这个我条件的数据才会返回。 那么呢,他提供了以下的常见的比较运算服,等于不等于大于大于等于,小于小于等于,对吧? 然后有鼻涕和印等等,那么这一刻建议大家学习呢,就是来熟悉一下我们上面列出的这些比较运算符。