00:00
今天呢,咱们重点来介绍的是这些内容,呃,咱们需要去介绍DDL语言,剩下的这一部分是不是叫做常见约束呀啊,那么我们因为在创建表的时候,那么有一个要素呢,就是需要去添加约束,那所以呢,咱们就看一下我们班circle里边的常见约束有哪些,呃,等会我们呢重点讲它,那么接下来呢,我们还会去介绍到TCL语言,也就是事物控制语言,事物和事物处理稍微有那么一丢丢难度啊,稍微有一丢丢难度这个地方好,然后呢,我们还会介绍一个新内容,叫做视图,视图的讲解啊,这个倒不是特别难啊,那么我们存种过大关于约束啊关于约束好,我们写这儿了哈,常见约束那么首先呢,咱们先去说一下,呃,我们这个约束什么时候见到过呢?也就是在我们创建表的时候见到过,对吧,我们可以去联想一下,那么。
01:00
昨天呀,我们介绍创建表的语法的时候,Create table加表明小括号,然后这个地方呀,我们在设计某一个字段的时候,字段名,字段类型,然后这个地方我们就可以对它是不是加一约束啊,哎,那么是在这加的,其实这个约束它的意思是什么呢?我们写到这个地方哈,哎,约束含义,那么它的意思呢,就是代表的是限制啊,那就是一种限制,那么专门用于去限制谁的呢?用于限制我们表装啊行或者列的数据的,那么假如说你把约束加在这个地方,是不是就是用于限制该字段的数据啊,呃,它这个意思啊,用于限制它,那为为什么要限制它呢?为了去保障我们最终添加到我们该表中的数据是准确可靠的,那也就是为了最终保障我们表中的数据的。
02:00
啊,准确和可靠性,或者说也有一种说法呢,就是保证数据的一致性啊,一致性啊,其实也就是指追究和可靠性,比方说我举一个例子哈,举一个例子啊,那么假如说呢,我们这个,呃,这个约束我们没有加,我们没有加,那就有可能我们建了一个表,叫做学员信息表,学员信息表里边有一个字段呢,叫做学号,能听懂意思吧,叫做学号,那么我可能呢,插入的时候就是一号,张三什么什么什么,然后呢,又插了一个李四,然后李四的学号也是几号呀,一号,这是不是有可能呀,有可能吧,那因为我们没有对它进行任何的限制,就有可能插入重复的学号,是不是这样的呀,那其实我们自己清楚,学号一般来讲是不可以啊重复的,那你这样插入完之后回头,假如说有个需求,我们需要去查询。
03:00
学号为一号的,然后把他的比方说成绩,或者说把他的什么邮箱更改,那这个时候你会发现,诶,你查询得到一号的学员是不是好多呀,是不是达不到你想要的一个效果了呀,这样的话,意思是说这个表里面的数据它就不是准确可靠的了,不靠谱是不是这种感觉啊,给你的感觉不靠谱对吧?啊,那所以说呢,没有约束,那就会达到这样的一个效果啊,就会变成这样一个效果啊,那么所以说我们应该去适当的去加以约束,对它进行限制了,那好吧,再继续,那么我们班思中的约束有哪些呢?我们在这跟大家去分一下类啊,就说明一下,一共呢有六大约束,六大约束那这六大约束呢,我先跟大家去写一下,分别是啊,写成这个大写的哈,Not not,哎,这个是最简单的,我们称为叫做非空约束,哎,简单跟大家去解释一下非空约束的意思哈。
04:00
啊,那非空约束是指假如说我这个地方写了个非空约束not not,那它的意思是说该字段的值不能为空,也就是必须填,必须填啊,那所以说它是用于保证我们该字段的值保证啊你为哪个字段填的约束,那就是保证哪个字段啊,用于保证该字段的值不能为空,比如像什么样的字段就可以去添加这种非空约束呢?姓名对吧,姓名一般不能空了吧?啊,学号是不是这样一个意思啊等啊,那么像这种字段就应该添加非公约束不能空着啊,这个就跟平时咱们去这个,呃,这个浏览一些外国网站哈,那么需要你去添加一些用户信息,是不是它会有什么挂星星的,是必填箱啊,是不是有这种的,就跟那个必填项一样啊,必须填,因为它后。
05:00
是不是用得着啊,就这个意思啊,好,这是第一个not not,然后第二个约束的话,我们叫做default,哎,这个翻译过来什么意思啊,对默认约束,那默认约束它的意思是说用于保证我们该字段的值,该字段的值有默认值,该字段有默认值啊这样去写好,假如说呢,我这个字段加了一个默认约束,那么假如说我不插入该字段的值也没事。因为它会自动的显示默认值,比如说像什么情况下或者什么字段呢,我们就可以去添加这种默认约束嘞,对,像那个类似于像性别啊,你比如说也是啊,拿咱们班的学员,我们建一个学员信息表,因为比如说咱们班学员大部分为男生,那么其中一个字段性别这一列的话呢,我们就可以加一个默认值,是不是难呀,那回头的话,我们不用去添加这个男,它实际上是不是也是显示为难呀?哎,它这个意思是不是省事啊,这个默认约束其实主要是为省事啊,它没有限制什么啊,好,再往下还有一个约束呢,我们叫做主见约束primary k啊,那么这个是主见啊,那主见约束的话,它是用于保证我们该字段的值啊,具有唯一性,就是我最初举的那个例子,比如说学号。
06:31
对不对,那么学号的这个值在整个表中是不是不能重复啊,哎,具备唯一性,像它就可以设置成谁呀,主见啊,而且它不光是具有维系性,它还得是飞空的啊,然后我这儿写上啊,并且飞空,那比如说像学号呀,或者说前面咱们介绍的什么员工编号呀等,是不是像这种的,我们一般设置成什么主件,其实相当于用这种主键字段来去代表我整个的这个,呃,这一行的信息的,对不对啊,记住我们整行的这样的一个信息啊,用于标识性的啊,标识它的好,这个是主键,那么还有一个和它非常像的呢,叫做unique,对这个约束呢,我们叫做唯一约束,那么它跟我们主键类似,也是用于保证该字段的值具有唯一性,但是啊。
07:31
可以为空,可以空着,也就是说他没有他严谨,可以这样说吧,啊没有他严谨啊,那么像什么样子的,我们就可以设置成唯一键呢?学号对学号也可以,学号也可以,但一般学号是不是设成主间呀,为什么呢?因为序号的话是不是也不能为空,也就是对将那种就是既不能重复又不能为空的,我们是不是设置成主间呀,哎,将那种就是可以为空,但是呢,呃,它不能对不能重复的,我们设置成唯一,比如说举个例子,座位号可以吧,我座位号其实不不是太重要,对不对,呃你你你你不写也没事,但是你要写的话就不要重复,要么你就别写,是不是这样的一个感觉啊啊好比如座位号对吧?啊,这是关于唯一,好再来一个,再来一个约束呢,我们叫做check check这个可能见的较少。
08:31
检查约束啊,那这个约束呢,首先要告诉大家的是,咱MYQL中不支持,不支持就不可以用,就是不支持,意思是说语法它不报错,但是呢,没效果啊,你加上这个约束和不加这个约束都没有起限制的作用啊,那为什么说它语法还支持呢?我认为这就是人家MY狗它的这个宽容性非常好哈啊,或者说兼容性比较好,怎么说呢?因为像搜sor啊,Oracle啊这些关系型数据库,比较主流的关系型数据库,人家都支持,也都有效果,假如说你是在呃搜sor里边或者Oracle里边写好了检查约束,你要移植到我们my circle里边来啊,那么假如给你报错了,你是不是不高兴啊啊,人家没给你报错对不对啊啊,没给你报错啊,这是为了一个相当于啊,相当于一个兼容性啊,为了一个兼容性的一个考量,没给你报错,大不了就是没效果呗,是不是。
09:31
那他是什么意思呢?我给你,我给你举个例子,你就明白了哈,比如说那个我有一个字段叫做性别,性别的话,我知道我要跟他定义成类型,是差类型的话,男和女的都能够去添加,对不对?但是中还有妖是不是也可以添加上呀,只要是这个类型的范围之内的是不是都可以添加上啊,三个字符是不是都可以添加上对不对?假如我写的是差一啊,那我们知道呀,性别只能是男或者女,那怎么去限制他呢?我就可以用检查约束啊,比方说三等于男或者三等于女,只有满足这个条件的才能添加,能听懂吧?哎,它是用于加条件的啊。再比如说我有个字段是age age是不是年龄啊,年龄的话我们一般定义成整形,比方说int可以吧啊,有的说老师我可以定义成int s,哎,那更好了,是不是就是大于零的整形啊。
10:31
啊,对吧,啊,但是你大于零的整形,那是实际上是不是就有可能是100,呃,1000多是不是有可能啊啊甚至1万,当然要看你的in特的范围了,对不对,我假如说想保证我的这个年龄呢,就是大于18岁的,并且小于60岁的能听懂吧,啊我我这个用户要求必须是这个年龄范围之内的啊啊那么这个时候你就可以用什么来限制他呀,哎,Check约束。
11:01
啊,知道意思了哈,嗯,行了,这是关于他,呃,那我这儿给你举了个例子,比如说年龄啊,性别呀,其实都可以用检查约束去限制啊,当然还有很多了啊,最后一个,最后一个也是最麻烦的叫做foreign k,那么这个的意思叫做外键约束,这个外键你听它的名字是不是跟外边的表有关系啊,所以说它是用于限制我们两个表的关系的啊哎,它是存,它是来限制两个表的这样的一个东西啊,那么用于保证什么呢?用于保证我们该表中的字段值,或者说就该字段值吧,你在哪个表设置的是不是就是哪个表啊,哪个表的这个字段啊的值必须来自于哎你主表的关联列的值,这样说是不是有有一丢丢绕呀啊啊有的说傻傻没。
12:02
听明白对不对哈,那我给你解释一下,假如说我有两个表,一个表呢,我们叫做啊学员信息表,能听懂吧,学员信息表里边我们有呢,呃,一号学生,二号学生,三号学生,四号学生,其中呢,有一个专业编号,专业编号知道啥意思吧啊major ID啊,那么这个major ID的话呢,那肯定是不是已有的专业才行啊,所以说它绝对会有一个专业表叫做major表,那这个major表里边,假如说目前就有俩专业,一号专业和二号专业,一号呢,比方说是JAVA1可以吧,那么二号专业的话,假如说是H5,知道意思吧?啊,那么我们假如说没有设置外键约束。那么我这个学员信息表SQ1号这个表里边,我这个专业编号我给他设置成整形了,你随便写,我写个100号专业行不行,200号行不行?行,只要满足你这个in特的范围是不是就行啊,但是这很显然这个数据不准确,假如说你妈来了,你的家长来了,说我想看一下我家孩子她是学哪个专业的,对不对啊,然后一查200号专业,他也不知道,说诶200号专业是啥专业呀,然后那个教务说了,没事,我给你看看哈,200号专业是什么专业,有吗?没有,是不是傻眼了对不对,这肯定不行啊,这样说明我们的数据是有误的啊,所以说我们必须要保证我这个专业编号是不是来自于我major表里边的这一个字段呀,啊,怎么着保证它不是我们说说就行的,你需要去添加一个约束,这个约束就叫做外界约束,能听懂吧?
13:52
只要你添加上了就可以保证啊,就可以保证,当然这个约束的添加是在你哪个表添加的呢?因为你这不是设置俩表的关系了,你看你看你以我刚才说的为例,一个是SQ音号是不是一个是major表啊,你觉得对于刚才我说的这俩表,我这个外点约束应该在SQ inport添加,还是在major专业表添加呢?对SQ inport表添加啊,你应该是在这个表添加,代表是这个表的某字段引用另外一个表能听懂吧,换句话说是在从表添加外减约束引用主表的某字段的值啊,那我先跟大家去写上啊,这个当然一会还有别的特点啊,那意思是说再我们的从表添加外键约束啊,用于啊,用于限制啊,用于限制或者说。
14:52
与引用吧,引用是不是主表中某列的值啊,那你注意了,我们主表中的这个某列,这个某列的话,它很显然和你从表中添加外面约束的列的类型啊,这些是不是也必须一致啊,这个是肯定的啊,等会咱们都试一下好吧,那么比如说像哪些列我就可以添加外键呢?像刚才说到的专业编号是不是啊,学生表的专业编号,或者说我们前面一直介绍的员工表的,呃,部门编号,什么员工表的工种编号,还记得吧的工种编号,这些我们都可以去添加,是不是外线约束啊,都可以去添加啊,好吧,这是六大约束给大家去介绍了哈,介绍完了之后呢,那我们怎么着去添加它呢?其实添加的时候一般的就是在你设计表的时候添加,我说的对吧?
15:52
啊,你不能说哎老师我表已经设计完了,我数据也填好了,我回头我再去添加约束,据我们很少这样做,说明你这个表当时设计的就不不合适,对不对,就应该在设计的时候添加,所以我们这个我写到这儿哈,添加约束的时机我们可以总结一下啊,无外乎就是这么两种,第一种呢,就是我们创建表示,我说的对吧,你就顺道添加了,添加上了啊,那么怎么添加,那其实是不是就在这些地方啊啊那第二类呢,就是你修改表示啊,你这个表假如说你第一次设计的时候不太合适,但是数据还没写呢啊,那这个时候你想改一下表,这个时候也可以,对不对,等会咱们就分别讲这两个啊,但是绝对是在你的数据添加之前,我说的对吧,你数据都添加上了,你还加约束干啥啊。好,再往。
16:52
下说不管你创建表时还是修改表时,我们添加约束的话,这个约束其实都有一个约束的这样的一个,呃,添加的分类啊,我这样去跟大家去写啊,我们可以把它称为列举约束,还有一种叫做表级约束,这个列举约束是指我创建表的时候,把约束写在这个地方,直接很显然就能看出来它是用于限制,是不是这个字段呀,我们称为列级约束,那表级约束是写在哪呢?睁大眼睛看啊,那么有可能呢,我这个字段呢,写了很多了,已经写完了逗号,那么我在这个地方我添加一个约束,对我们把它称为叫做表记约束,也就这个表级约束的话,它是相当于脱离我这这些字段的,你光这么单蹦的写,是不是你也搞不清楚它是对它限制还是。
17:52
对,差限制啊,所以我们称为什么约束标记约束啊,它这个意思,所以我们分为两类啊,那么我们这个六大约束谁可以充当列级约束呢?并不是谁都可以充当啊,那表级约束谁可以充当呢?咱们是不是应该说一下呀?啊好,那我们先说列举约束,呃,列举约束的话,其实从语法上来讲谁都可以写,但是效果上来讲有一个不支持。
18:22
啊,那我这样跟你说,六大约束都可以写,也就是语法上都支持法,呃,语法上语法上都支持,哎,你写另句约束都行,但外键约束没有效果,意思是说你外键约束你放在这个地方当成列句约束去创建的话,你会发现你写也白写,能听懂吧?啊好,那表级约束呢,谁可以在这个表级约束的位置上写呢?注意除了非空还有一个叫做默认,其他的都支持啊,都支持能看明白了吧?啊,他这样一个意思啊,那好吧,那么所以说我接下来要跟大家去讲的时候,我先讲创建表时怎么去添加列积约束,那么我重点是不是就介绍的是那五个了呀,外键就不说了,因为你写也。
19:22
没什么效果,说明白了吧,洗也没什么效果啊,好,我先停一下。
我来说两句