00:00
那下边的话呢,我们看一下叫唯一性约束,哎,唯一性约束什么意思啊,我们说呢,是用来限制啊,某个字段呢,或者某个列的这个值啊,是不能够重复的,那也就我们所说的叫为一对吧,那比如说我们以这个表为例,这呢叫employees表,这个表中呢,有一个字段呢,叫做email,这email呢,邮箱是吧?它是用的一个unique来修饰的啊,这个unique的话呢,就是表示的是唯一的意思,那加上它这个修饰以后呢,当我们再往这个表中去添加数据的时候呢,那比如说我们这个208这条记录它的这个email呢,叫做嗯,J Smith是吧?诶当你再添加数据的时候呢,就不允许,呃,这个呢,跟刚才我们添加这个值上是一样的了。那因为呢,我们已经有了这个叫唯一性约束的条件啊,就是我们说的这个意思啊,那我们如何去实现这个唯一性约束呢?咱们用的关键字呢,叫做这个unique。好,下面呢,有关于这个有内可它的一个介绍,那比如说一个表里边呢,可以有多个违约束,然后呢,我们可以呢,作用在一个列上啊,这就是属于呢叫单列的约束了,那也可以呢,作用在多个列的组合上,那这呢就属于叫多列的约束,对吧?啊允许为空啊,然后关于命名啊等等,这个咱们等一下呢,讲到这个时候呢,再说好,那这块呢,我们回过来呢,相当于在代码层面呢,咱们去做一个说明。
01:17
啊,这呢,就我们说的叫unique啊,CTRLC。行,这个能往下啊,来一个四啊unique啊这块呢,这个单词呢,不是特别好写啊,大家呢,得稍微的熟悉一下啊,叫unique是吧?啊其实这个单词的话呢,哎,我一直觉得它是个蛮好的一个词啊,唯一的是吧,啊比如说大家呢,这个呃,跟女朋友说点这个这个这个情话啥的是吧,哎,就you are my unique lover啊哎,你是我这个唯一的这个爱人啊,就是挚爱。啊,这个意思啊,想起来以前呢,有一个那个钻石的一个广告语叫呃,钻石恒久远啊,一颗永流传是吧?啊这个广告语我觉得做的非常好啊行啊,这叫unique,好,那我们这块呢,来看一下如何呢?去这个呃添加这样的一个约束,那跟咱们前面讲的这个闹闹呢,其实是类似的啊,首先呢,我们提到第一个场景呢,就是呢,在我们创建啊表的时候呢,我们去添加这样的约束。
02:14
哎,这个是一样子的,好,那这块呢,我们来举例子,咱们呢啊create一下这个table啊,上面我们叫test词一了,这叫test词吧,行,那么这里边的话呢,我们去啊声明几个字段,那比如说ID呢,是int类型的啊,我先把这个呢,呃,我们想声明这个字段呢,咱们先写出来啊,Whatar类型的,比如这个15,然后这个email啊邮箱是吧,然后我们来一个watera,这个来一个25吧。然后来一个这个salary啊salary呢,我们是一个呃,数字类型的是吧,咱们用这个decim吧。好,这个呢,我们来十逗号二行,那这的话呢,我们这个表里边儿呢,我就声明了四个字段。好,那这些字段的话呢,我们看一看哪些字段呢适合呢,咱们去添加这个叫unique的约束。好,这不是第一个啊,这叫ID,每个员工呢,我们说都有一个这个员工的编号,那显然的话呢,每个人的编号呢,是不是都是不一样的呀。
03:05
好,那我们是不是可以给这个ID呢,加上这个叫的约束啊。哎,可以的是吧,哎,我们就这样写了,下面呢,这个叫lastname,那叫做员工的一个姓名,那比如我们就这样来成了,啊叫姓名了,这个呢是个家吗。那显然不适合对吧,啊,像公司里边呢,我们说很有可能是不是有两个同名的人啊。啊,那公司小一点,你可能没感觉,那公司要大的时候呢,通常都会有一些这个通名的了,那这时候呢,得区分清楚啊,像我上高中的时候呢,我们班里边呢,就有两个叫哎张超的啊,哎,一个男生一个女生,哎当时老师这个这个提问的时候,还得说这个男张超啊女张超哎这样的去叫啊,这个社会有这个聪名的。啊,你像我们一说的什么张伟啊李伟呀,还什么伟呀,是吧,一拉能拉出来一个牌来啊,很多重名的啊,所以这个呢,我们不能够去加了就好,下一个叫做email。那邮箱啊,每个员工的邮箱是不是都应该不一样啊,啊很显然的对吧,所以呢,我们这个呢,也适合呢,去给大家声明呢,叫做unique。
04:08
嗯,有那个是吧,啊,那你要是不加的话呢,呃,如果两个员工的邮箱是一样的,那你想想这是不是出事故了呀。啊,比如老板呢,想给其中的一个员工呢,说点悄悄话,结果呢,发现呢,这个两个人邮箱一样,一发呢,发给了别人呢,也那这时候不就出事了吗?啊所以说这时候呢,诶我们邮箱呢是不能一样的,那下一个呢,叫做salary这个呢。公司啊,公司呢,是千万不能加UN的,你想想,那如果说呢,这个老板告诉公司呢,作为员工说说诶,咱们公司的员工啊,每个人的公司啊都不一样。那这时候呢,是不是就出事了,哎,通常呢,我们说在公司当中,公司呢,都是背靠背的,就是你们是不知道这个跟你基本上是同样工作的这个,呃,这个同事的这个工资的,那如果说你们知道呢,彼此工资都不一样,那互相呢,一定会打听,那给你多少钱,一万五啊,你呢12000。啊,你像这些时候的话呢,一般比完以后,那薪资高的呢,他通常不会说因为自己高呢,心里边特别爽啊啊那但是呢,相对应的这薪资低的话呢,他会特别的不爽是吧?诶做一样的事儿,那为什么工资不一样呢?啊所以说这个salary的话呢,这个我们千万不要给他加上这个unique是吧?诶就要注意一下好那么这儿呢,我们就给ID呢和email呢,加上了这个的限制啊这里边呢,我们再多讲一个事儿。
05:24
我把这个unique呢,声明在我们这个字段的后面了啊,就像咱们前面呢,声明这个叫闹闹一样是吧,那把这种场景呢,咱们就称为叫什么呀,叫做这个叫列举约束啊,将此约束声明在对应字段的后面啊,这叫列约束,那么还有一种方式呢,叫做表约束,就是在表中所有的字段都声明完以后,在所有字段的后面的生命的约束,诶我们就以谁啊这个unique为例去说明,那比如说我们这个位置写的呢,就相当于呢,是不是叫列举约束啊。那这呢就叫做列举约束,那我们这个unit的话呢,我换一个位置,我写到哪呢?我写到整个这个字段声明的最后边,我想在这写,那这呢就叫做这个表级约束。
06:10
那叫表级约束。OK,那那么呢,咱们呢就在这写,那有可能想说,诶老师为什么刚才我们讲这个T子一的时候呢,嗯,我们这有个闹闹,这个闹闹为什么他不去演示一下表决数啊,是不是忘了呀,哎,不是的,这个闹闹的话呢,他是没有这个表决约束的写法的。这个闹闹的话呢,咱们只能够是使用这种列决书的写法啊,这个大家要注意一下,好,那下边呢,咱们看一下这个表决书呢,如何去写,这个叫unique,那怎么写呢?我写一个完整的,我写个完整的啊叫constraint,这个单词呢,就是咱们所说的叫约束是吧,叫约束的意思。然后呢,紧跟着后边呢,我们可以给当前的这个约束啊,咱们起个名,那起个名怎么起呢?哎,这个时候我们可以这样去去起这呢UK啊,Uniquei啊,或者有的那时候呢,会用的叫UNI了啊,这个都行啊,都能理解uniquei,我们先指明这个约束的作用啊,是唯一性约束啊,接下来呢,针对的是我们这个叫T3这个表它的谁呢?Email这个字段,所以我们可以这样的去做命名。
07:16
然后接着呢,我们指明的是叫unique的约束作用在谁那呢?是作用在我们这个这个字段上的,哎,就这样来写。哎,就这样来写,OK行,那写完以后的话呢,是不是就可以运行了呀,这块呢,其实它会报错的,你看我们跑一下看看。你发现是不是报错了,那主要哪错了呢?你看我们每一行这块呢,都是有个逗号的,所以这个位置呢,记着把这个逗号呢给加上。哎,把这个逗号呢加上好了,这事上是不是就写好了?啊就行了啊,然后这个位置呢,大家你发现这个列举说诶老师你怎么这个呃叫呃有那个约束也没起起名啊,哎,是没有起名这块的话呢,其实我们也可以把这个给删掉。我要这样删掉的话呢,其实约束呢也作用成功了,只不过呢,没有起名而已,嗯,只不过没有起名而已,OK,哎,这个呢,咱们这个运行完以后呢,再给大家再说一下这个名的事儿,好,那现在呢,我们就选中了做一个执行。
08:08
好了,这时候呢,大家发现呢,是不是就执行成功了呀,然后呢,我们来一个D,那比如我们叫TEST2。A test2是吧,好,我们这时候呢,选中呢,做一个执行,那这时候大家你看我们这个ID呢,跟email呢,大家在这个位置上是不是就能够看到它是有这个有的约束。啊,这就相当于我们是不是作用成功了是吧?啊作用成功了,然后的话呢,我们刚开始的时候也提到过一个点,就是说如何查看这个表中这个约束的事儿,来我们这时候呢,把它再拿下来查看一下我们这个T2表中的这个约束,来我们走起。那么关于闹闹呢,我们看到没有显示出来,那关于这个UN呢,就可以显示了,那么大家你看一下关于我们这个T2这个表叫unique的这个约束的类型是吧,然后这时候呢,提到这个约束的是不是有个名字呀。哎,约束有名字了,那么这名字的话呢,大家你会发现我们上边这个有那个约束呢,它的名字是不是叫ID,而我们下这个呢,是不是就是咱们刚才起的这个名字呀。
09:06
诶起的这个名字好,所以通过这儿呢,我们能够说明一个点,就是刚才咱们在这个课件里边看到的说在创建唯一约束的时候,如果呢,我们不给这个违约数去命名,那就默认呢,和我们这个列名呢是相同的。对吧,那大家通过刚才这个查看的话呢,我们是不是就得到这样的一个结论啊。诶没有问题,哎,这个大家体会一下就行,那为什么我们要提这个约束名的事呢?那这个因为我们后边呢,会涉及到咱们要删除这个约束的时候呢,我们要用到这个约束名。啊,要用的这约束名啊,好的,那这儿呢,我们就先说到这儿,然后的话呢,咱们既然给他声明了叫UN的约束以后呢,咱们接下来呢,是不是就会影响它往里边去添加数据这个事儿啊好,那我们inser into一下咱们这个T,嗯,那添加的话呢,这个其实大家应该能知道它这个意思了,所以这块呢,我就先暂时以这个,比如ID和这个last name啊咱为例呢,去做这个,诶或者我就先都加上吧。
10:01
这里边因为还有一个这个闹的事啊,来我们都加上吧。Salary。嗯,没问题是吧,好values这时候呢,咱们先整个正确的啊,比如我们这个叫Tom了,然后email的话呢,叫Tom啊126.comm好,然后salary呢,比如4500,诶没问题,这个呢,我们是不是可以添加成功的对吧?好走一下诶成功了,成功以后的话呢,嗯,咱们查看一下吧,Select。看星from一下我们这个台词。好,我们这周呢,再选中执行,OK,你看是添加成功的,然后接下来的话呢,我们把它CTRLC一下,我这块呢再来,那我这个原封不动的呢,我就开始,或者咱们把这个呢先改一下啊这个ID呢,你注意我是没有改的。啊,ID呢是没有改的啊,这个我们也改一下吧,啊主要刻意的我们就想看一下这个ID呢,我是,诶跟上边那个是一样的,此时呢,我们去做执行,大家你会发现呢,他就报了一个错误的信息。哎,这是一个错误的信息啊,说wlicate啊ENT1啊for kit,那相当于就是我们这个一呢,它这个是相同的了,就不让你呢去添加了。
11:08
对吧,诶这是这个场景,好,接着我们再CTRLC一下,我们拿过来,当我们把这个呢改成是个二的时候,这个呢是TOM2啊这个其实现在呢,是不是肯定能成功没问题,那那我现在呢,我故意呢,把这个位置我改成还改成跟咱们刚才这个移名呢是一样的,那么此时呢,来执行一下,是不是照样的出错了呀。哎,CTRLC一下。嗯,这呢,还是一个错误的。还是个错误的,你看还是一个重复的一个值。理解吧,好,这呢就是咱们相当于是这叫unique,它这个约束的一个限制的情况。哎,它的一个限制的情况,好,那么接下来呢,我来说这个点,大家你看能不能理解,我们现在的话呢,再往里边去添加注意呢,我们刚才这两次都没成功,其实这个表里边呢,还是只有这一条记录啊,在这只有一条记录的情况下呢,我下边这个ID呢,写的是二,这个呢叫TOM2,然后这个位置呢,大家注意TOM1啊,这个位置呢,大家注意我写的是个no。
12:02
诶,这个能不能添加成功呢。嗯,ID呢,不一样了,这个我写的是个no。可不可以啊?啊,有同学可能就不清楚了是吧,来我们走一下,诶你看这个情况来看呢,是不是成功了呀,没有问题,我们是可以添加成功的,那YIG呢,就是咱们这个位置呢,叫呃unique是吧,唯一性约束没有说呢,它这个unique的约束呢,上面还有一个no no的约束,No no是no no。啊,有内是有Nick是吧,所以这呢,我们说呢,哎,可以像。可以像这个像啊声明。啊,为这个unique的。啊,这个字段上啊,是不是添加这个闹纸啊,哎,这个是没有问题的,好那么现在呢,大家你看这个事儿啊,这就有点意思了,我现在再往这个表里边呢,去添加,添加一下记录,我这个呢就得改成13了,对吧?啊这个呢,其实改不改都行,比如我们叫TO2吧,好这个时候呢,我这个还是叫no。
13:00
这个呢就不用改了啊,那么问大家,你觉得这个时候我们再添加能成功吗。啊,这个时候呢,其实主要就看我们这个email这块让不让添加两个no是吧,那大部分同学呢,可可能就会想说,哎呀,我们这个现在呢,是有ni的,是唯一的,那已经是闹了,那再加个闹呢,这不就算破坏这个唯一性了吗?哎,所以说呢,就呃错误了。就错误了是吧,来我们走一下。大家看是不是又成功了呀,哎,我们走一下,你发现呢,诶还真添加成功了。哎,真填写成功了是吧,所以这个呢,我们想说明什么呢?就是我们可以向声明为unique的这个字段上添加not纸,而且呢,是不是可以多次添加not纸啊。啊对,我就统一的都写在这了啊,而且啊可以多次啊添加这个not纸,那这个怎么去理解呢?实际上的话呀,啊也不太难理解啊,当然你想啊,咱们在十几个公司当中,咱们给每个员工的email呢,设置成是一个设置成是一个有内的,是不是合情合理,因为每个人的邮箱啊,是不是都不一样啊,诶没问题啊,那比如说呢,这个员工刚入职的时候呢,呃,这个他填写这个表格啊,人事的让他填写表格,然后到邮箱这块呢,他就说哎呀。
14:14
我的邮箱呢,这个这个嗯,没有是吧,诶没有人是说呢,啊,那你就先空着,诶所以我们可以列解成了这个员工暂时呢,是不是个no是吧,那现在又个新员工入职,那这个员工说,哎呀,我这邮箱呢,我记不清了。啊,那本来呢也想空着,那你总部至于现在人事说说那不行啊,你必须得记得啊,因为已经有个人已经闹过了,你就不能再闹了。啊,这个是不是有点逗了,就是吧。哎,所以说呢,这个像我们声明为unique的这个字段上呢,诶,关于这个nu值呢,它是一个特例,就是你可以多次添加now值,除了now之外呢,你要是给他真正的赋了一个值了,那么这个值呢,我们保证它一定得是一个唯一的。哎,这个点的话呢,大家需要去注意一下。啊,这就可以了,行,那么关于咱们这个unique这个字段的话呢,它的一个作用呢,咱们就演示到这啊,咱们就演示到这儿,我就不拿这个update的去演示了啊呃,什么意思啊,你比如说我们现在的就比如说这三条数据吧,现在呢,这一条记录当中,我做一个update操作,想把这个IDV3的这个嗯记录的呢,改成是这个值,那你肯定呢,是不是改不成功啊,那因为我们已经说是唯一的了,你要改成跟现有的这个值呢,有一个是一样的,那肯定是失败的。
15:25
啊,这个我就不演示了啊,大家应该能理解行,那接下来我们再说一下第二个问题,那我们在创建这个表的时候呢,可以去添加约束,咱们是不是也可以在al这个表的时候呢,去添加或者呢去删除约束啊。啊,可以没问题的是吧,行,那这块我们就再加个他。在al table的时候呢,我们去添加这个约束啊,去添加约束,嗯,咱们目前的话呢,我de一下咱们叫TEST2啊,刚才是提到了我们这个表里边只有两个这个叫unique的约束,好,那这块呢,咱们就不讨论这个实际的意义的问题了啊呃,我只是单纯的呢,咱们往其中的一个字段呢,给它这个加上一个unique啊,至于说呢,它是不是满足11,你比如salary啊,实际上不太适合加是吧,我们这呢,也只是说明一下而已啊,理解精神就行。
16:12
那如何呢,给它去添加呢?哎,这里边的话呢,我们说有诶两种方式可以去做,那在这写的第一种的话呢,我们就叫out table,那写上表明叫ADD,呃,用那个key,那这种方式去添加还可以呢,叫out table呢,通过modified方式呢,去这个做一个添加,来我们这块呢,呃,分别呢,来做一个演示啊嗯,那首先的话呢,我们就来一个out table是吧,哎,TEST2ADD,那这个呢,叫unique是吧。诶,这个是吧,Unique,然后呢,咱们针对这个salary吧,那这块呢,我们就相当于是写了一个salary。诶。Salary是吧?哎,这么着的方式呢,我们是不是就给它添加了一个这叫有的约束啊,那这块呢,同样的道理,我们呢,加了这个约束之后呢,没有且名,那是不是相当于这个约束的名就叫做salary了,那要想加名怎么办呢?加名的话呢,就在前面这块加,那叫constraint。
17:08
诶,Constraint,然后呢,我们叫呃unique啊,针对咱们这个T2的。那这个表里边儿的,这里表里边的是根据这个salary,你可以简写一下,比如叫它吧,哎,就这样来写。这样写完之后呢,但是你会发现实际上我们这块叫ADDADD后边这个呢,写法实际上是不是跟咱们用的这个表级约束,你看这个写法是一样的呀。对吧,那是一样的啊好,那你就这样来记就行,来我们选中了做一个执行。啊哦,你看这个执行这块出错了,出错了有点意思啊,我们为什么出错了呢?大家你会发现呢,我想给这个salary呢,去加上这unique,你会发现呢,咱们现在是不是已经有两个这个员工,他的这个呃工资是一样的了啊,他要是添加成功了,是不是违背了我们所谓的违机性的这样一个条件了,是吧?啊就是这个原因造成的,诶顺带呢,我们把这个事儿呢,相当于说了说啊那这块呢,咱们就做一个调整吧,比如我们update一下。
18:05
啊,这个咱们的,呃,台词二。Set一下这个salary啊,等于比如咱们改成5000啊,Where。啊,ID等于三,那咱把这个呢,给它改成5000块钱啊,好走一下,那这时候我们再做一个select啊执行好没问题了,那此时的话呢,我们再去添加呢,是不是就OK了呀,来我们走一下啊。哎,你看就成功了,然后我们再去de,你做一个查看,你看这时候呢,是不是就加了一个叫unique。对吧,那如果呢,我们要使用咱们刚才提到的这样的一个啊,查询语句呢,去查看的时候呢,这不也也有了。啊,也有了是吧,那我们在这块看一下行不行啊,在这个表这块呢,我们这一块先F5刷新一下,然后打开这个表索引这块啊,大家你会发现是不是也有啊,哎,就这呢是通过图形化界面的方式呢,进行的一个查看,OK,行,那这呢是我们说的这一种方式,那咱们比如说再加一个吧。那再加一个,那咱就只能是把这个,呃,谁呀lastname呢,给它加上了,行,那也加一下这个怎么做呢?那我们叫al啊,Table test2,哎,是不是刚才提到一个叫modify啊。
19:12
对吧,嗯,Modify,然后呢,针对的是我们这个叫lastname,嗯,然后呢,给他声明成是一个叫什么unique是吧。哎,是不是这个意思啊好,那这时候我们选中,哎,咱们做个执行。说这个unique。啊,Modify那个last name这个unique,诶这块呢,跟我们提示是不是报了一个错误信息是吧。这块你看还得是不是得加上我们这个类型啊,啊,这个别丢了啊,我们现在是不是给这个lasting要加,你还得指明是不是叫whatar类型的,咱们呢,是诶事物相当于这个时候呢,我们,哎就得是像我们声明那个叫什么呀,列举约束一样,你把这个字段名,还有它这个类型呢,哎都得写上啊,这要小心一点,那我们再去执行。那这就可以了,好,那此时呢,我们再去做一下,嗯,来查看一下这个吧。
20:00
那这块我们选中啊,执行一下,好,这时候我们会发现呢,是不是有这样四个了。诶,我们看看这里边啊这四个,然后呢,咱们是不是这个拉呢,你看也给它加上了,因为呢,这个时候我们没有起名嘛,所以呢,它就是呃用的这个拉SIM这个名,我这课件这块呢,他还得在这稍微提一下叫字段名,还是不是得补充一个叫哎字段这个诶类型也得补充上是吧?哎,这要稍微注意一下啊。好,那么这样的话呢,咱们就通过叫al table的这个方式啊,咱们就把这个约束呢,就给它添加成功了,这样呢,这个我们称为呢,比如叫方式一,这个方式一呢,其实它有点类似于咱们上面那个表约束。你体会一下是吧,然后这呢是我们这个方式二,这个方式二呢,类似于咱们是不是那个列举约束啊,在这个列的后面呢,哎,我们就声明这样的一个约束。嗯,OK啊行这呢,咱们就添加成功了啊,下边呢,按说呢该讲删除了啊,咱们咱们先别着急讲删除先呢,给大家说一个什么呀,我们说叫诶复合的一个约束,或者呢,咱们可以称为呢,针对这个维型约束的一个叫多列的一个约束。
21:06
啊,我这写个复合吧。哎,复合的这个唯一性约束。实际上也就是咱们提到的那个,呃,你看咱们一开始讲分类的时候啊,分类的时候呢,这是我们按照功能来区分的,然后其中有一个叫unique是吧,然后呢,我们按照它这个作用的这个列呢,可以分成单列的和多列的,现在只不过是我们拿这个有内呢来说一下这个多列的情况啊,刚才呢,咱们举的例子是不是全都是单列的啊,针对一个字段呢,这个来作用的是吧,那下边我们举一个这个多列的场景啊。好大家看,嗯多列的话呢,就是这个意思,那我们去create一个table,那比如我这块呢,这个表呢,就叫做user表吧,然后里边我们有个ID,那是个int类型的,嗯,有一个比如说name吧,是一个water类型。啊,这个来一个15,好,我们再来一个呢,叫password啊,这个叫密码,密码的话呢,也是一个what类型啊,比如来一个25 OK可以了是吧?行,那这时候呢,这个表一共是有1233个字段啊,大家你会发现呢,这个变成蓝色了啊,你要怕它出问题的话呢,你可以再用我们这个叫哎着装号呢,是不是这样,哎这个标识一下就行好,那么接下来的话呢,我们想给这个表中的诶怎么着啊,这个name和password它俩结合在一起,我们作用一个unique的约束啊,我们用一个叫表约束来表示。
22:25
那这时候大家你想想,是不是也只能用这个表约束啊,因为呢,你要写到这儿呢,是针对于name了,要写在这儿呢,啊针对怕错了,你要这两个都写上呢,那成了有两个微型约束了,我们现在呢,实际上是只有一个是作用在两个列上,OK,那这时候我们就来写。啊,Constraint,然后起个名啊,咱们叫unique,是针对user表的,呃,有这个name和这个password,我就捡起了。哎,OK,然后呢叫unique。没问题对吧,然后呢,下边我们针对的是这个name字段和这个a password这个字段,那这两个字段而言的啊,此时呢,你也可以给它加上比如我们这个着重号啊。
23:06
嗯,可以了,那这时候呢,我们选中啊执行。啊,这个提示我们在这个位置呢,就出现问题了是吧,那咱们把这个去掉吧。来,那我们这时呢,选中啊。还是报错了,说这个near unique,嗯,看看在我们这个位置呢,出错了,嗯,看啊这个位置我们是没忘了加逗号了是吧?哎,忘了加逗号了啊把那逗号加上,然后这个位置呢,其实加上它应该是OK的啊来我们选中再执行。哎,可以了。哎,没有问题,行,那这样呢,执行成功以后,我们看一下这个所谓的复合的这种场景呢,它怎么叫唯一。来,我们insert into一下咱们的这个user,然后values,那我这写个1NAME呢,我写个Tom密码上写个ABC行,这个呢是第一条数据,那肯定是能够添加成功的啊,这没有毛病,那接下来的话呢,我们看一下怎么叫唯一呢,比如说啊,我这个呢,改成叫汤姆一了。
24:05
然后这个密码呢,没有改,那这时候呢,大家你觉得他算是这个呃,满足唯一性吗?我们能不能添加成功呢。咱们是把这俩合一起,是不是建立了一个唯一性约束是吧?好,那我们选中了去执行,那大家发现呢,是不是可以啊,哎,是可以成功的,那select。那行,哎from一下啊,我们这叫user,好,那我们这种来选中,哎执行,那你看是能进去的啊,那也就是说呢,咱们呢,是把这两个字段呢合在一起,建了一个唯一性约束,呃,那么当我们在添加数据的时候呢,只要呢,你这两个呢就别完全都一样,那比如你又写了个to姆ABC,那肯定是添加失败的,那只要呢,其中有一个字段呢,它有区别了,那这时候我们就认为它是就有区别的。啊,这个是我们说的这个意思,好,这个大家去体会一下啊,体会一下啊,这个呢是啊可以添加成功的。
25:00
哎,这个一定要注意一下,行,呃,那这个呢,说完之后的话呢,那我们要说一下一个实际的场景,你比如说呢,我们什么时候呢,会考虑把这两个字段呢,合在一起,我们建一个unique的约束呢,那这呢,咱们给大家举一个案例。那案例啊,就是相当于是一个复合的啊唯一性约束。的一个案例。这个案例的话呢,咱们在这个课件中啊,我给大家呢都写了,咱们就直接呢,把这个案例呢,咱们给大家说一下,再说一下来,我把这三个表CTRLC咱们粘过来。哎,转过来好,大家看一下。嗯,这个往前提一下。呦,哎,这样吧。好,大家看。诶大家看我们这个呢,叫student的表,然后呢,有个学号,学生的姓名,学生的电话号码啊,然后呢,还有这个学生的一个身份证号,哎,这个很好理解是吧?好,我们这时候呢,是不是就把这个表呢,就创建成功了呀。诶这个没有问题,好,然后再接着,那么学生的话呢,在学校里边通常是不是叫选课呀,那么选课的话呢,我们专门有个叫课程表,那课程表里边呢,有这个具体的叫课程的编号,还有呢,具体这个课程的名称,那这个呢也没有问题,好我们这块呢也执行一下。
26:14
诶成功了,那么接下来的话呢,我们专门建立一张叫做选课表。这个选课表里边呢,对应的就是具体的某个学生他选的是哪一个课,那这呢,我们叫做选课表,哎,那选课表里边呢,我们也有一个ID,那就是一条一条的记录,嗯,然后呢,还记录了每个学生的啊,叫学生的一个ID啊,就相当于一个学号了,是吧?哎,我们把这个CTRLC一下,就这个呢还是学号,然后这个cid呢,就是我们这个course ID就是课程的一个编号。哎,课程的个编号,然后这个呢,是他这个课程呢,它考多少分啊,然后呢,我们这个有那个K,那这个怎么写的呢?这个呢,就是把这个sidd跟那个cid呢,我们就合在一起,叫一个复合的唯一那相当于呢,就是嗯,比如说张三,呃是这个C表中一条记录,然后这个对应的,比如说呃,MYSQL这个课程,那是这个课程表里边的一门课,然后呢,这个学生当然有很多课了,那针对于张三来讲,他这个MYSQ这门课呢,那他就只能有一个成绩,你不能再出现一个张三,然后还是这门课的。
27:16
能理解吧,啊,因为学号呢,我们说我刚才说的张三,其实这块我们放的是学号,每个人的学号是不一样的,对吧?诶张三呢,可能是有重名的,但是学号肯定是不一样的。那这个时候呢,我们把这个表呢,就创建一下。通过这儿呢,大家应该能体会,他应该是一个唯一的,你不可能出现呢,说这个学校的学生呢,他这个考试考了两次,那就只能考一次。哎,所以表中呢,只能存在这一条记录行,那下边呢,咱们就是添加了一个数据的事儿了,来,我把这个CTRLCL一下。哎,把这个粘过来,我们就直接都运行了啊,走一下,哎,成功了,然后呢,此时呢,我们去那个select,哎,这个星。对,From一下啊,比如我们这个叫still,嗯,这呢时我们查看一下这个学生这个表里边你看有两个人,一个张三,一个李四,对吧?好,接着我们再来查看一下咱们的一个courses课程表。
28:09
哎,选中啊执行,诶一个呢是Java课程,一个呢是这个MYQ这个课程啊,这也没有问题,行,那么接下来的话呢,我们就呃想往这个谁啊,咱们这个叫student course这个表里边呢,去添加这个记录了,来我们走起。那这时候呢,我们添加的话呢,就是呃1234,这是具体的这个ID了。哎,然后呢,针对这个那学生呢,是这个学号是一的,针对学号是二的,那学号是一的呢,他考这两门课,学二的话呢,他也考这两门课啊,真的OK的是吧?好我们执行成功。啊,执行成功以后的话呢,呃,这个时候呢,你要想查看一下也行。啊,Select行from一下我们。那就等他。来我们这时候呢,选中做一个执行没问题是吧?哎,这就是呢,具体这个学号的学生,然后呢,他考的哪门课考了多少分啊,这个是可以的,那在这种场景下的话呢,我们看一看能不能再添加一条这样的记录呢。
29:03
那比如说我们现在呢,Y64,我写一个这个五是吧,第五条记录啊,还是一这个学生或者我们二类学生吧,这个学生的话呢,你看这个课程还没及格是吧。这个我写个二,然后1002,然后这个呢,再来一个这个啊,比如说67。可以吗?哎,显然呢,是不是就不行了呀,来,你看我们走一下,这时候就失败了。错误。啊,错误就是你这个学生呢,他已经是有了这个成绩了,那你就不能够再往里边去添加这个同样这个学学号的,同样这个课程编号的这个成绩了,那这呢,就是我们实际当中的一个应用场景。哎,大家呢,体会一下。那就说到这啊,说到这儿然后的话呢,我们这个再回过来,咱们呢,提到了是不是如何在这个叫什么呃,Create table或者out table的时候呢,去添加约束,然后接着来我们来说下个问题,怎么去删除微信约束,对吧。好,我们来说这个问题。
30:01
嗯,4.4要删除啊,微型约束这个删除微型约束呢,这块这个事儿呢,还挺多的哈,这个事还挺多,我们需要呢,引入一些新的东西,那就涉及到这个索引的问题了,好,那我们这块呢,大家来看一看这个比较严密的几句话。哎,我把这几句话呢,咱们就直接CTRLC我就拿过来了,咱们一条一条的去看啊,非常的严密啊非常严密。啊,这个我们就再加一个短横线得了。这呢是咱们这个另外一种注释方式对吧。好,大家看。呃,我们如何去删除唯性约束呢?这里边儿提到了删除唯性约束的列啊。哎哎,这个这个说错了,添加唯性约束的列上啊,它也会自动的呢,去创建一个索引,那唯一性约束的这个列上对应的索引呢,我们称为呢叫唯一索引。咱们到下篇的时候呢,会说你现在呢先,哎,知道有这么个事儿。啊,你比如说呢,咱们现在啊,我这F5刷新一下。啊在这F5,然后呢,把T2啊这个打开,咱们呢,是不是针对这个T32这个表中的四个这个列,咱们都加了这个微性约束了,是吧,那就意味着四个列上呢,其实都有一个唯一索引,那就是四个唯一索引啊就这个事好下边。
31:16
那我们现在呢,是不是想删除这个违约束。删除违约数呢?只能够通过删除唯一索引的方式去删除。啊,你看这个严密码就是,诶告诉你先在有约束,有唯约束就有唯一索引,想删为约束,我们就得通过删为一索引,那怎么删为一索引啊,你得告诉我唯一索引的名。啊,因为山里唯一索引我们得通过,需要通过名是吧?那删除时呢,我们需要指明唯一索引的名,那唯一索引名这个是多少啊,我们说唯一索引名就和唯一约束的名啊,是一样的哦,是这么回事,咱们这一块啊在这儿看到的话呢,是不是这呢,都是咱们这个唯一约束的这个名啊。啊,那我们要删除唯一索引的话呢,是不是就用这个唯一约束的名就行。
32:04
啊,就这个意思,那下边呢,相当于是就多做了一个解释,那如果我们创建唯一约束的时候,没有指名指定名呢,没有指定名的话呢,如果是单列的,那就跟这个列名一样,那如果你要是这个组合列,就我们说的叫复合列了。啊,复合的这个唯一约束了,就跟这个小括号里边呢,排第一的这个列名呢,是相同的啊,诶当然你也可以自定义唯一性约束名,像我们这呢,都是自定义的,诶刚才说这个多列的呢,其实就好比是我们刚才的这个情况。你看我们这个表里边儿呢,是不是加了一个叫复合的唯一约束,但是这个呢,名我们是不是没有起啊,那我们这时候就要想说,你这个表中的唯一性约束它的名是多少呢?哎,然后来我们这时候呢,是不是可以查看一下。嗯,这个得在上边呢,在哪来在这了是吧,来CTRLC一下啊这块呢方便调,咱们拿到最下边。拿到这这个呢,咱们改成叫student是不是course。对吧,好,那此时呢,来咱们选中了做一个执行,大家看此时的话呢,你会发现呢,我们这时候呢,Cons name呢,是不是叫sid啊,那它是一个unique的叫sid,为啥呢?诶这呢,就刚才提到了,说你要这种组合的去作用的话呢,我们就跟你小块里边呢,诶第一个那这个字段的这个名是一样的,那你是sid,那所以我们这呢就是sid。
33:20
好了,我们现在呢,总结一下,就是咱们现在呢,关于这个约束名呢,是非常确定的,那要想删除约束,我们得通过删索引,删索引的话呢,指定索引名,索引名就是约束名啊,真的就是有点绕这个事儿,下边呢咱们就开始动手了,针对这个T2这个表。我们这样看一下这个表里边儿呢,咱们把这个last name和这个salary上边的这两个unique,咱们给它干掉吧。啊,咱们给它干掉,那下边呢,是不是就涉及到说如何删除这个,哎,唯一性索引的问题了呀,哎,怎么删除呢?来我们看一下叫out table,谁drop index啊,这不就是索引的意思吗?哎,谁谁谁,这就是你这个索引的名啊,就这个意思。
34:03
那就这意思,张正刚提到也可以通过叫show index from那个表去查看一下这个索引都有哪些啊,这个咱们就不看了,看咱就直接在这就删了啊,诶好了,那么咱们就开始了,叫al。A table。啊,这张我们叫T2是吧,然后呢叫drop index行,那咱们这呢,Lastname这块呢,呃,这个名是叫啥呢,这个我们刚才在这块去把它改成这个T字二呢,是可以查看的是吧。嗯,再来一下吧。来选中。哎,执行,嗯,我们把嗯lastname是不是就这个名啊好,那这时候我们就last nameme,这样的话我们就可以给它干掉。哎,这是一个好,我们再把这个呢,CTRLC一下。咱们再来,哎,还有一个。啊,针对于我们这个salary的是吧,哎,是不是叫这个名啊,哎,我们就这样写。UK啊,Test。
35:02
然后呢,这个ICR,哎这样我们选中,哎再来执行。哎,就可以了,好,那这时候我们再去DA一下,我们再看大家你会发现呢,此时呢,是不是这个跟这个你看就没有了啊,或者你通过我们这个指令呢,去查看一下也可以,那是不是就剩两了呀。哎,相当于我们就通过呃,删除唯一性索引的方式呢,哎将唯一性约束呢,就删掉了。哎,就是我们这样的方式。啊就可以了啊行,那至此的话呢,咱们就把这个诶唯一性约束啊,这个内容呢,咱们就讲完了啊,大家呢,需要去体会一下,那么在实际这个开发当中啊,大家可以针对这个表中,你看相应这些字段呢,如果适合加上这个呃,Unique的,那我们就给它添加上啊就OK了。
我来说两句