00:00
这一节呢,我们来讲叫约束。约束呢,也是我们讲这个关于数据库对象叫表的最后一节内容,下一节呢,我们就要涉及到视图了,那么约束是什么意思呢?我们如果仅仅从这个字面来理解的话,约束,约束约就是制约束叫束缚吧,就是相当于是我们在创建一个表的时候,或者说你创建完表以后,往里边添加数据的时候,有一些自然的约束。其实这个约束啊,我们说啊无处不在,比如说我们你这里边是不是有这个employees这个表啊,来我们打开一下这个叫的window。我查,我看一下这个dic叫employee是吧,我们这个表里边儿每一个列都对应着一个数据类型,你是不是一定程度上来讲,这个数据类型也算是一种约束啊。
01:00
当你比如往这个表里插入数据的时候,这个片ID,那你就得是number类型的,Name呢,就得是watchar类型的是吧?这也是一种约束。那么我们这里边给大家讲的约束有哪些呢?大家你看这个DC的时候,这是不是有个叫novel啊,那我就是问是否可为空,大家发现我们这里边有些列有Y,有的没有,那说明有的是允许为空,有的呢,要求你往里边引塞的时候,必须得给它赋一个值。那么这个呢,是否可以为空,就是我们一个比较典型的约束。那么除了这个呃,是否可以为空之外,还有哪些约束呢?我们来看这个,我们这节当中一共给大家要讲五个约束,比较常用的有哪些呢?Not now unique unique就叫翻译过来叫唯一,相当于是某一个列,你给它设置成唯一以后,当你往里边再插入数据的时候,只能插一个是吧?比如说这个名字只能是唯一的,你插进一个叫张三的,就不能再插入一个,也叫张三,就这意思。
02:07
Primary key翻译过来叫主键主,主要的主主键foreign key外键吗?然后check check呢又作为一个检查的条件。那么整个这个约束呢,就是属于表级的强制规定,就像你这个数据类型一样,也是一种规定,对吧?这一节呢,我们需要大家你会的啊,首先你要描述约束,然后呢,你需要掌握如何来创建一个表的一些约束,并且呢,维护或者叫这个修改表的一些约束。来,我们就开始来学习,这有一个注意事项,我们看一下,首先告诉大家说,相当于这个约束也是有个名的,如果你要是不显示在指定这个约束名的话啊,Oracle这个服务器它会自动的按照这样一种格式给你附一个约束名。就像我们给这个类起名一样,是吧,Java当中的类都是有名的,我们给这个表这个各个列的时候,列也有个名,相当于这个约束啊,也是有一个约束名的啊,是这个意思,下边那么在什么时候来创建约束啊。
03:18
那么就是在创建表的同时,我来给你创建约束。那么表建好以后,我们说表建好以后,还可以通过al table的形式来修改表,那同样的约束也可以来修改,就是在你创建表以后,我可以也通过这个al的形式来修改,进行约束。比较方便,创建的时候给它加上,然后还可以在创建表以后给他再修改。那么这里边稍微细节就是说约束又给分成两块,一个叫表级,一个叫列级,然后可以通过数据字典来查看你定义的约束是吧,那么我们再看一下这个概念。表举约束,列约束,这就是大家理解一下就行了,也从这个平面当中,你实际上就能够知道什么意思,列举约束,那就是说你定义在一个列上是吧?或者说是我们定义在一个列解或叫作用在一个列上,表基数呢,就是你作用在或定义在这个多个列上。
04:13
或者说理解成我们在这个创建一个表的时候,在表的不是某一列这块来声明啊,就是放到最后来给你声明,那个约束呢,就叫做表级约束。啊,这就列约数,必须跟在列的定义后面表约数不一列为几,而是单独定义的,这个理解一下就可以了。那么下面我们就开始我们这个约束的一个学习,第一个呢叫非空约束,对吧,非空约束这里有一个严格的一个要求,这个呢需要大家记住它啊,说非空的这个约束只能够定义在列上。只能用这个列举约束,其他的这四个都有相应的两种方式都可以实现。那我们就先来看这个闹闹,我们先给大家讲什么呀,如何来在建脑的同时创建元素,一会儿我们再说这个修改,好吧,来,我们创建一个表。
05:07
这呢有一些现成的了,这几个留着它也行,反正我们现在用不着了,这是我们上节内容当中用到的。嗯。我们创建一个表,相应的再给它增加这个叫not now的约束来create table。一对小括号,这呢我就用第一种方式来创建表,给它加上一个idd呢是number类型的,十个长度,再来一个name what类型的,比如20个,再给它加上一个叫嗯,Salary。行,我们这儿呢,就加入了三项,三项里边我怎么来给它加入这个叫非空的约束啊,说了非空约束只能够定义在行上,那么比如说这个内要求你是非空的,我就在你这个逗号前在这加上一个叫,然后那。
06:20
这就是非空的对吧。这是一个非控的,你说我再加上一个,比如说这个ID啊,要求这个ID也是也也得是非控的,那你就还加上一个not now就行,这里边两种方式一样都没有,是不是给这个约束起名啊,那就是默认的,刚才看我们看到的默认有一个起名,那如果你要是显示的给他起一个名的话,怎么写,那就是叫consrate。Constraint后边写上你这个名怎么写啊?我们说起名的时候是不是尽量要借名之义啊,所以我们一般习惯上这样来写,我先大概知道是哪个表的,然后呢,是哪个列呀,ID这一列的什么信息啊,Not not,这我们用这个方式给它定义这个呃,约束的名,当然你不这样写也行是吧,这个不写,不这样写的话,不会说有编译的错误,只是说你这个呃可读性就差一些是吧?
07:20
很多同学又又见到这个单词,又懵了,Concentratet,它翻译过来就是约束。翻译过来就是约束,所以说我们这一节讲这个叫约束,是不是就是叫cons。就是它啊,这个叫约束你这个单词你得给它记住行,这个呢,我们就已经创建好了,然后运行一下这个table created,这就创建了,创建好以后你可以这样来看de。你看这里边儿的ID跟name是不是都显示的是叫C孔啊,没有Y。然后呢,你要是想在这看也行,你看我们打开这个叫my object里边找这个table e PR,然后呢,这里边是不是有一项叫check constraint呀,看看你这些约束双击打开了。
08:13
大家看到什么,第一个是不是就是我们刚才定义的这个约束名啊,你看跟它是不是名一样,而第二个呢,我没有显示的给它起个名,所以它按照默认的一个SYS这种格式给它定义一个约束名。就是这个意思,就是这个意思啊。其实啊,我们在之前的这个一直在用,是不是employees啊,你双击一下employees,我们在这也可以看到它的一些约束,你看像这个说的哎。这个email还是job ID lastname salary,是不是都有这个相应的一些约束啊,是吧,都有一些约束,这个呢,Me一会我们再说它这里边的,前面这几个都是叫非空的因素,尽量起名的时候叫见明之意。好,这是这样一个情况,这叫那闹那闹,你给咱们这个这个附好约束以后,他对你之后什么有影响啊,当我往里边去ins射的数据的时候,你看当你ins射的数据的时候,你说这个ID,我这给你写上一个值,这个name呀,我写个now。
09:23
哎,Salary随便指定一个2000,你看这样能不能插进去,是不是不行,它给你提示就是说无法将null插入,原因就在于这里边这个name。因为这个name有一个约束是吧,而你说我这个name,这给你附上一个值,后边这个salary不负了,写成一个now,这可以吧。这当然可以了,是不是就因为你这个salary没有有这个no no no的一个限制,所以说它是可以的是吧?同样的道理,ID也是一样,你必须得给它赋一个ID值。
10:00
那么关于这个闹闹就是这样子的,不难是吧,然后我们看下一个。然后not约束下一个呢,叫unique unique unique发音啊,Unique,它表示翻译过来叫唯一,那意思就是说当你往这个表当中去插入数据的时候,要求这一列的值得是唯一的,就是不能够有重复的。对吧,不能有重复的,你看我们现在这个表里边就三列,我插入了一个数据,这个数据呢,是不是它呀,然后你说我我要现在就再运行一下,是不是又给插入一条,当你这个时候select from e mp2的时候。你看这俩是不是一样啊。你说比如说这就是这个员工哈,你说这个did呢,你既可以当成员工号,也可以看成是这个员工的身份证号,他怎么可能有重复的。
11:00
那就要求我们是不是在建表的时候应该考虑到这样一个区别呀,我们不能给这个里边这个ID赋一一个同样的值吧。是吧?不能负同样值,那么我们就应该考虑给它加上一个唯一性的约束条件。啊,唯一性的约束条件来。我们这呢,再创建一个表create table3。一个呢,我还是找ID number类型的十个单位长,Name water类型的20个,然后呢,加上一个salary。哎,我再加上一个叫email行,我这里呢,就先写这样几项。
12:10
这样一项,然后呢,我这样加,嗯,那那呢,我们都知道它是表示是否为空的是吧,嗯,我加一个吧,比如说还是这个name,就是你毕竟来公司这个员工,你不可能没有名嘛,是吧,加上一个name,这个name呢,我给他加conscenttrain约束起个名EP3。Name not not,好,这个约束是这样写,它只能够定义在这个劣迹上。那么这个unit的约束啊,说既可以在列级,又可以在行级,哎,又可以在表级,如果它也定义在列级的话,那是不是就应该在这儿给它加一个叫unit呀。那那就意味着现在这个ID这一列它就得是唯一的,你不能写重复的了,是吧,它是唯一的,那这个时候你是不是跟刚才那个那闹一样,它是不是没有名啊,你这样运行一下肯定可以执行成功的啊,只是没有名,默认的起了一个名,那我们不想让它用默认的名,因为默认名可能性太差了,那我就显示的给它起个名呗,Constraint e3id。
13:19
然后叫unique unique就是UK啊,UK然后表示它是一个唯一的,它是唯一的,然后我们看一下还有哪个制成唯一的比较合适。是不是这个email啊,我先不考虑它啊,Email邮箱。那每个人的邮箱肯定是应该不一样的吧,你不能这个有公司员工的这个邮箱是一样的了,是吧,那邮箱是不一样的,不一样的那我得给他加上一个UN的约束,你要在行几这就还写在后面,现在我给他用列级。这个好看几为了有的同学这个容易说你这不一定是列举,那我这样我把它对调一下位置啊,你看现在我相当于这都是声明完这几个列了,如果说你是最后一行不用加逗号,现在呢,我在列举给你增加约束,那你就把这个逗号补上,然后在后边,哎,不是列举表级约束,表级约束定义在你这个表结构写完以后,我写一个约束,这个约束叫还是叫constraint。
14:30
然后呢,起个名三,嗯,Email叫UK,叫unique。哎,你这样写是不是还不行啊,你这样写我是不是都不知道你是想作用在哪个列上吧,你要是列这样命名的话,因为你就在这一列,所以我知道就是操作ID的,那这个就是操作这个name的,那你写在这儿,我不知道你操作谁,所以我们在UN后边加个括号,指明我作用的是这个email这一列。
15:04
那么这个呢,就叫做表接数上边这两个。都是叫列举约数,加上一个列举数表举约数,那就这样写来执行一下。创建好了,创建好以后,我们还是可以在这来看的。My objects tables,你找这个E3有一个叫check count,这个就一个有一个挠挠,对吧,然后这是不是有一个叫unique key啊,叫唯一打开这个里边我们填加了一个叫ID,一个叫从这就能够一目了然的看到这个表里边有哪些约束是吧?像这个primary key啊,For key啊,我们还没有往里边加,所以都没有。好吧,然后呢,我们来看一下,现在我们有这个约束以后往里边插入数据,你们来看这是这个表结构,然后呢,Insert into ep3values往里写吧,ID没有not not的约束,我先先正常的写一个name name有非空的,那你必须得给它附上这个值,Email email也给一个salary salary2000。
16:36
插入成功了对吧,插入成功以后,你看看我现在试图啊,再去给你插入一个一样的,我我我我我我光看前面这个ID哈,这个呢,我给你改成一,跟之前不一样了,我就看这实际上是一样,你不是不改也是要报错的,你看再插入的时候,他说违反唯一约束条件,违反的就是这个ID,因为说的是UK了是吧,那你把这改成一个二,后边这个调回去。
17:07
那违反的是不是就后边这个呀。这就是我们讲这个约束条件,对于你在进行数据插入的时候的一个约束。是这样子的啊,不能够插一样的了,那你看我这样行不行啊。这儿呢,我还我就写成1002吧,1002这个人呢,正常的话我给他叫BB,但是这个人现在啊,我也不知道他这个邮箱用的哪个,这个人呢,或者说来公司的时候让他登记,他说他给忘了,那忘了的话,我给你写的话用,因为是唯一的,我就先给你用个now表示。Now大家你注意是不是我们在定义的时候没有说它得是有非控的限制,所以我写个now,你看看我能不能运行成功,是不是可以啊可以,然后我拉一下,这说明这个UN跟那个,那那它俩就是完全不一样的,你管你,我管我UN当中是可以插入。
18:12
Now值的是可以插入闹值的,我们这边就插进来了是吧。好了,那我再问大家一个,大家你看这个能不能行啊。因为这个ID是有一个unique的,我改成三,这呢,只要不空就行,嗯,我这题目让它有点意义,我改成个CC吧,这个公司呢,嗯,4000。这这个条件满足UN这呢也非空,哎这个呢又没加条件,你说我这时候如果再在这个位置加上一个闹的话,行不行,就有点像什么呀,说现在公司又来了一个员工,这哥们儿他也忘了他的邮箱是多少了。你之前那个人忘了我写着闹,你说这个人又忘了他,这还能写闹吗?因为是不是BB已经是闹了呀?来看一下哇,竟然竟然插入成功了,那意味着什么呀,你看。
19:07
是不是说这两个人的邮箱都可以为空啊?好,我们总结一下,那那就是指明非空,当你插入数据的时候,这一列必须要赋值。那么UN的约束要求这一列附上这个值以后不能够跟它重复,比如说这个ID不能够再有1001的了。然后这个email也是用可以赋空值,同时呢,嗯,空值之间不认为是嗯违反唯一性约束的,所以说你都可以给他填多个空值是可以的,这是关于unique的,嗯,知识点。啊,UN就是这个意思,大家你通过这个UN你再熟悉一下,它插入的时候既可以在列集上,也可以在表集上,表集上的话就这样写,在你整个的表结构完了以后,加上一个constraint。
20:01
它翻译过来就叫约束。嗯,这叫约束,好了,这是我们说的其中的两个约束,那第三个叫主见是吧,叫主见。主见?什么叫主见呀?什么叫主见?这个意思哈,这样我们先看一下这个,我我说一下这个,大家你就清楚什么叫主见了,或者这个主建这个干什么用的,我查询一下employees这个表的表结构。现在呢,我这个表有105条数据。这个数据在这个表当中,应该还在这个表105,还在整个你建的比较多的数据库当中,这还算比较小的一个一个表了,是吧,人呢,也就100来个。那那大家你想这个表如果很庞大的话,如果我想找这其中里边的某一条数据是吧?比如想找这个last name,叫这个名字,结果一查咔嚓出来好几个,那到底想找哪个,是不是部位不确定啊。
21:10
那我用这个这个firstname,同样的道理也有这个问题,那你说要用这个什么,来公司的这个hard,找唯一的来确定一条数据,这更不靠谱了。那工资也是,那么我就想怎么着啊,我想通过你这个表啊,然后在某一列去定位一条数据的时候,就找这一个列的某一个值,这一条数据就一定能够确定下来。相当于是我们实际生活当中,是不是每个人都有一个身份证号吧,这个身份证号是唯一的。同时呢,每个人都有,也是非空的,那么这个身份证号我们说就可以当成你的一堆信息的一个主件。那么我通过你这个身份证号就可以唯一的来定位,你自己就能找到唯一的一个你。
22:06
那你不能说找这个什么,这个叫叫张三的,张三全国可能几十万人,那人太多了是吧?嗯,这个都不靠谱,就通过这个ID去找,那么这个题目当中,我们employee这个表里边,就把这个employee ID给它生明成一个primary key。把它声明成主键,相当于我可以通过主键能够唯一的定位一个数据表当中的一条数据。能够唯一的定义这一条数据。首先说肯定有,然后呢是唯一的,就这意思。好,这个就是我们把这个主见的概念给大家说了一下啊,主见的概念说了一下,那么我们下边来看一下这个主见,我们怎么来给它声明我呢,再创建一个表。
23:00
哎,叫TABLE4。刚才说了,我把这个ID是不是声明成这个主件比较靠谱啊?把它设定成主键的话,来我们就写,那就是conscentrateint,这这这个这个我们现在都保留着它哈,把这个改成四这个表里的行,把它声明成一个主键的话,那就叫主键,也是分列级和表级的,哪个都行啊,我要是写在列级就这样。这个叫primary key叫PKPK啊PK。PK不是说这个打架呢是吧,PK一下,这个是PK的一个简写,现在它就是一个主线,其他的我不变,其他的我不变,OK。哎,那么这个主键就已经定义好了。
24:00
主键定义好以后,大家想主键感觉是挺抽象的是吧,不像那那那一说就飞空UN就是唯一,那主键有哪些特点呀,我们试图往里边去添加一下数据,这是表结构。或者说你从这儿是不是也能看出来,你看主键是不是要求就是飞空的呀。是吧,当你insert into ep4。我想往里边添一个now,你看行不行,其他的我不不违反你的啊,AA这个是有一个非空的,然后email呢。是一个unique的unique是不是可以加空啊,Salary加一个值,大家看他说违反这个不能加now插进来,原因是因为EP4的这个I did我生明成主键了,为什么不能加now啊?那是不是意味着这个primary key它自然的有一个约束,说不能够加空啊。
25:00
是吧?好,那说明primary key里边它自然的就有非空的一个运输。当然,你想一想,如果你要是能够给他填空的话,我是不是也没法定义你这个人呢?就相当于是比如说老百姓有有些人是没有身份证号的,你没有身份证号,你是不是就意味着这个不是中国人呢?我就没法找你这个人是吧?你看公安局一判,这个判案的时候,怎么来定义你这个是谁呀?就是靠身份证号码,你说你都没有身份证号,我怎么找你呀?是吧,你比如说这条数据,他没有身份证号,你怎么去找他通过后边这个不一定能唯一定义的一个人,是吧,所以说一定有一个非空的限制。这是一个,然后呢,我们再看。隐色的因素,它我不加不加闹了,我加上一个1001,这个能进去吧。这显然是可以的是吧,能进去以后我这儿呢,再加入一条数据叫BB这个也,那这个2000这个没事,这个呢,你看我这还叫1001,你看行不行,现在是不是说违反了,叫唯一约束还是ID。
26:10
PK是吧,所以说这个组件还有一个约束条件叫唯一,你要不唯一的话,相当于没法,刚才说了是唯一确定了,你这就没法唯一确定的啊,所以说我们组建有这样的约束。K它是主键了,当你往里加空值的时候不行。当你往里加已经存在的这个50的时候也不行,这就是逐渐的约束。自然呢,它有非空且UN的限制。好吧,这个大家就清楚了,然后呢。我们刚才这个是给它定义在这儿。定义在这了,你要想给它定义在这个叫表级的话,那你就这样写,先先先整过来五五是吧,你就把它给它拿走,CTRLX拿走了,拿走了写在这又多了一个约束逗号往下写。
27:06
Primary key,你得告诉我你想定义在哪一个列上吧,定义在ID这个列上。ID。行,OK,这是不是我也创建好了呀,这就是我们用的这个叫哎,表级约束。你也可以在这里边来看一下你创建的这个约束。E5主件有吧,这个unique有吧,Foreign现在没有,然后这里边的闹闹也有。这就是这样子的。行,这我们说清楚了,这个叫primary叫主键,主键,主键呢就像我们这个表结构里边的,大家看一下。
28:01
这是我们讲查询讲这个。多表连接的时候,带着大家看的一张表,这是我们用到的这几个表,然后呢,你看每一个表里边都有一个红的,这个红的呀,就是相应的这个表的主键,我可以通过你这个这个这个这个叫什么,这个红色的这个值,能够唯一的定义这个表里边儿的一条数据是吧。然后你看看这个表里边儿什么叫外键啊,什么叫外键,比如说employees这个表跟departments这个表。它俩表是有联系的,里边他们有一个是不是相同的一个列,叫department ID。这个底盘ID就跟这个表里边儿的底盘ID做连接了。那么这个depend ID就是我们要讲的外键,同样的道理,你看这两个表里边儿,它有一个叫location ID。这也有一个location ID,那么这个表里边的,因为你这是主件了是吧,相当于这个department表里边通过一个列叫location ID,跟locations表里的它这个组件连接起来,它就是外键。
29:14
那同样的这个manage ID在这也也它也能跟它做一个连接是吧,也可以当成一个外径。哎,那怎么叫外界呢?是不是就有点像这个国家,这一个国家,这个国家的一个外交官是吧,或者叫外交部里边就跟你这个国家的元首这块是做连接的,所以叫外界。嗯,叫外键,它是起到一个连接的一个作用,那么外键我们怎么来声明啊。来,我们来写一写外键怎么来声明,我这里面,呃,这里边叫EP6 ep6我不整那么多,哎,加上也行哈,非空的unique primary k,加上一个外键,外键补一个吧,Department ID是一个number类型的。
30:06
逗号,我如果给它加到表级月数的话,你看怎么写啊,叫constraint,你看emp。就给它都改成六了。嗯,De PT,我简写ID,它是一个FK。F啊F不是不是fuck是吧,嗯。就跟这个有的同学这个来自于那叫什么。有的同学来自于汉口,汉口,然后他不说他来汉口,他就跟这个外国人说说I come from hongkong,我,我从这个HK来的,别人还以为你是从香港来的呢,是吧,嗯,就显得好像挺高端一样,但是这个时候大家注意,你不是所有的地儿的人都适合哈,跟看过这个对应的是不是那个武昌啊武昌的你就千万别别别说自己是WC来的了啊。
31:15
哎,行,大家来轻松一下啊,FK叫foreign key来,这个单词你得会写吧?Foreign key作用在哪个列上呀?Departmentd这个列上,这个列你是不是跟另一个表里边那个department ID那个列给他联系啊。这呢,我们就跟那个departments表示联系啊,那就联系怎么联系啊,Refers。这个单词又需要大家来掌握,References references department这个表里的department ID。
32:01
就是这个呢,稍微长一点哈,哎,这是这个约束的名,约束加约束名加你这个功能就叫foreign key作用在哪?作用在department ID上,它跟你这个department这个表里的department ID做连接。就这个意思。创建好了是吧,创建好了,那现在他们就已经挂钩了啊,挂钩挂钩以后你这个外键有什么作用啊,就讲这个外键干什么呀,你看我这样一写的话,那你这个底盘既然跟它挂钩,它又是一个主线,就是说你这再往里边去隐射的数据的时候,是不是要求你这个你填入的这个department ID这个值都一定得在这里边啊。是吧,一定得在这里边哈,你要不的话,你加一个ID,随便写了一个这里边没有,那不就乱套了吗。我们举个例子,大家你先看一下啊,Select星from departments,你看这个表里边这个ID从十到270。
33:09
然后呢,P6我往里边去隐射的数据,你看啊,In s two。先这样写,ID 1001 name AA email email是unique的,可以加空SALARY2000DEPARTMENT ID,这呢,我先写上一个,对的。是不是插入成功了吧,From,这有。这有啊,然后呢,我现在再插入一条数据,这个时候我插入的时候我写上200。不两千两千两千,你看我这时候能不能进来乱套了,这叫违反唯一的约束条件啊,违反唯一的约束条件,违反唯啊,这个是前我把这个还得改一下是吧。
34:11
这改成二。其他的,其他的不用动,你看违反完整性约束条件,原因就在于这个foreign key department ID,因为没有找到附类的关键字,原因就在于department表里边根本没有这个列。啊,就这个情况,所以说大家你去创建表的时候,如果表跟表之间有关系,那你相应的创建外键,你然后就让他们连接起来,这样你在插入数据的时候,保证你这个数据是安全的是吧,你不能让他乱乱写部门。啊,就像我们Java里边那个类跟类之间也是有关系的,像继承啊,关联关系啊,这不都是关系吗?我实现关系啊是吧,类可以实现接口,这都是内跟内之间的关系。那万这个大千世界就是比较复杂的,都是有关系的是吧,有可能我通过这样,是不是说网站网上这个通过一个概率去统计,我大概通过六个人,我就能够跟奥巴马打上电话。
35:14
那这说明我跟奥巴马之间也是存在一些关系的,是吧?这是我们讲的这个叫。外键啊叫外键。嗯,那我们回顾一下,你看当我们把这个底盘ID跟它联系起来以后,当你试图往里边插入一个60的时候,这有没问题?当然有九的话,由于这里没有九这个部门,所以不允许插入。嗯,然后这个外界完了以后,还有一个这个概念,大家你看一下叫on delete cascat on delete set now,一个叫吉联删除,一个叫吉联制空。什么意思呀,大家看一下啊。当附表中的列被删除的时候,子表中相应的列也被删除。
36:04
附表呢,就是这里的,我们刚才那个departments子表就是EP6,当你附表中的某一个,比如说60号部门被删除的时候,我子表中你看谁是60号部门的这些人也就被删除了。这个叫级联删除,级联值空呢,就是你这个子表中EP6中的那些列,相应的这个值给它制空,就是部门原来是60的,把部60号部门删了,那你这个值就给它挪掉,就变成闹。一定要向实际当中,比如说这个公司要这个经营不善是吧,严重易结算,而且赔钱了,把其中的某些不盈利的部门给他砍掉,就是把这个部门给他删除了,这个部门一删除,如果你这个是这样来声明的啊,那你相应的这些员工是不是就相当于被开除了呀,如果你要是这样声明的,那这些员工还在公司,只是说他现在的这个部门待定写成呢?
37:02
当你哪个部门又要他了,他在是不是通过一个update修改就给他改一下。是吧,哎,这是这两种方式啊,那声明的时候怎么来写。就是在你定义这个外键的时候。哎,我这改成比如EP7。积啊,这个外键我们就写在这个表集这了,它挺长的是吧,习惯上写表级,这当然它也可以定义在列级上,没有问题,References,它然后呢,在最后加上一个on delete,一个叫car head啊,一个叫on delete set now。吉联删除和吉联职空,这个是吉联职空对吧?哎,我们给它创建一下这个表就创建了,这个时候当你在这个department表里边,比如插了一些数据,呃,有一些有一些这个ID,其中有一个60号部门我不要了,那你这个里表里边如果有60号部门的员工,你就把那个员工相当于这个department ID给他改成no。
38:16
就是当你一旦delete的时候,我就给你set not行,这个是我们讲的,哎,如何来创建约束,如何来创建约束,最后还有一个叫check。Check是吧,Check约束,Check约束回来。嗯,这是七,改成个八吧。这八八这个这个有点太。太多了。行,就这样吧,我们写一个相对比较完整的一个约束。
39:02
这里边儿这个比如说salary salary表示工资,工资我们说给它加上一个check约束检查,为什么要加呀,你比如说这个国家是不是都有相应的一些规定,说你这个,呃,每个城市都有一些最低的工资保障吧,就是你最低就是你各个公司你开工资的时候,你不能够低于这个城市的最低生活保障的那个水平,低的话,这个老百姓是不是就没法活了呀,生存都有问题了是吧,那可能就得这个打砸抢了。嗯,我加上一个check的约束,这个工资要求这个salary说呀,必须这个城市最低工资是1500,那你就得要求salary得大于1500。啊,或者你说这个还有一个最高的工资的限制,你也给它加上,就是一一个月啊,最高不能高于3万,这个呢,就叫使用叫check个数来我们运行一下。
40:04
我们这这里是不是落了一个小于符号是吧,小于3万OK,哎,Table创建好了,创建号以后,我们在这就能够看到我们新创建的这个DP8,然后DP8好,这是这个表结构,然后呢,网里边插入数据insert intop8。Values这呢,我们这个创建了好多个表,大家你这个清楚啊,这个讲的也比较细致,一个一个的给他捋一捋,ID1001 name a,嗯,EMAIL126的。然后salary现在涉及到工资了,我先来个正常的3500,然后那个department id30号部门的可以吧,好插入成功了,然后呢,我再插入一个给他来一个Y。
41:06
你看那这个时候这里改一下1002。哎,这个也给改改吧,BB,哎,BB行,其他的不用变,你看看这个salary能不能给它加进去,你看是不是违反这个约束条件,这呢,我们用了一个默认的一个一一个一个名是吧,默认的一个名,你要给它显示的命名的话,你就可以在这给它加上一个叫on train,写上一个EMP8下划线,嗯,这个。Salary是吧,然后check。是这样啊,这就给它显示的起了一个名,呃,表明它这个作用就要求有一些限制啊,一般的话就是这些number类型的值的一个限制。好,这是我们讲的如何来创建表的时候来增加这些约束,后边呢,我们再给大家说,如何在有了表以后来添加一些约束。
42:05
行,我们就先到这儿。
我来说两句