00:00
那咱们接着再往下看啊。再往下呢,就是关于主见约束了。主键约束首先怎么给一张表添加主键约束?我们先给它加上行吧,然后我再解释。主业约束是什么?咱们采用一种倒叙的一种方式给大家讲啊,我们先把这张表的主见约束,我们先给它加上,看语句怎么写drop吧,Table,如果这张表要是存在的话,删除。Create primary key。
01:07
啊,有name完唱二五。Password password email email。来insert into t下划填什么user,其中的ID username和email我们加上去,一这边呢,我们叫张三123,把这个复制一下接过来啊,然后呢,李四。李四邮箱啊,邮箱张三一二三点com。来,把这个拿过来,李四王五王五。李四二三,Select from t user,把这个我们拿过来,拿过来之后呢,我们直接粘过来执行没问题吧,数据是没问题的,就这个数据啊也查出来了,就是说我们接下来呢,去执行的语句啊,是这样一条语句,大家注意看了啊。
02:22
我这边我。改一下啊,我还写个一行不行。ID现在是主键。以前有个一了,现在还能不能再有个一,出问题了?是吧?不行啊,对吧,好,那么接下来这块呢,我把这个ID删了不要了,我把ID删掉,直接插后边两个字段行不行。
03:10
这个错误你见过的。说ID现在没有木纸。就证明ID不能没空。对吧?通过以上的测试,我们得出一个什么结论,当给一个表的某个字段添加主键约束之后,这个字段不能为空,也不能。重复。对吧,啊,就是说根据以上的测试得出。ID是主键。啊,因为什么呀,添加了主键约束嘛。是不是,哎。主键字段中的数据不能为,那也不能重复。
04:03
不能为闹,也不能重复,这是主见的特点。不能为,那也不能重复啊,具有唯一性,那接下来呢,就是说我们怎么给一张表加逐渐约束大家。会了吧,就在字段后面加就行了。可以一会儿再说啊,一会儿再说。在主键后面,呃,在在字段后面加。这当然是一种什么约束啊,劣迹约束,约束。啊,逐渐。你先把这个内容先记住啊。课堂就能记住叫primary。Pri。
05:16
这是怎么加,就这样加,那么再往下呢,就是主键这块有这么几个术语啊,需要大家先理解一下主键相关的术语有哪些呢?主键约束,主键字段和主键值。那根据以上的这个例子来说。这个就是什么主键约束ID就是什么主键字段一就是什么呀,主键值。再说一遍啊,主键约束是什么这个。
06:03
带有主键约束的这个字段叫做什么主键字段?主键字段当中插入的这个值我们叫主键值。啊,就很简单,就跟废话一样,对,但是这个事呢,我可能在讲课的过程当中,或者某个老师在讲课过程当中,可能一会说诶主见值怎么着,主见字段怎么着啊,一会儿说有主见约束怎么着,你要知道说的是谁,主见值束的就是您主见字段上的每一个什么值,主见约束就是它了,添加有这个约束的叫主见主见字段呗。ID就是主键字段。对吧?主键约束是谁?Primary key主键字段是ID字段,添加什么primary key之后,ID叫做什么主键字段啊,对吧?ID字段中的某每一个值。都是主键值啊了解吧,哎,这个你先知道。
07:01
那主键有什么作用呢?终于讲到点上了吧?就会怎么加,你也会了,你也理解知道了啊是吧,相关的约束你也听说过主键约束,主键字段主键值,那主键有什么用呢。主见有什么用?搜Q。或者叫表的啊。设计三范式。最后回血我先打开啊。好,大家看这里是不是数据库设计三范式范式啊,表的设计三范式中有要求第一范式。就要求什么?任何一张表都应该有主见,那主见的作用是什么?
08:13
就人家办事中有有有这个要求,说这个任何一张表都应该有主见啊,那主见的作用是啥呀?包括你看这个NAV cat,他在这个打开表的时候啊。这个是有主见的。你看。如果一张表没有主键的时候啊,他打开表的时候,他这个会弹一个警告,警告看见了吗?说提一下student没有什么主见。对吧,那主键的作用是什么呢?我觉得这个可以给大家聊一聊主键到底有什么用。就这是一张表。这张表里呢,存了数据。
09:02
啊,就大概看一看啊。这里有个字段,ID。上面添加了一个约束,叫primary key。啊,说的是谁呢?说的是他。对。他这个主键啊,有一个特点,刚刚我们已经讲过了,这个特点是什么呢?是主键。它当中的这个值不能。唯空也不能从。对吧,那么现在想告诉大家的是这个主键是个什么呢?这个主键呀,实际上是这行记录的唯一标识。整这么一个唯一标识干啥呀?嗯。
10:02
就是这行记录和这行记录,只要是主键值不一样,我们就认为是两条完全不同的记录。不管您后边的这个记录是否相等,或者说不相等,您这条记录的代表就是前边的这个主键值。只要您主见值不一样,我就认为您是两条完全不同的记录。比如说在公民的这个,比如说公安局的这个系统啊,呃,登记咱们这个公民的信息,那你的名字叫张三啊,对吧,生日是哪年哪月哪日,比如198010杠幺幺对吧,然后呢,是出生地是在哪哪哪对吧?哎,然后接下来呢,这还有一个张三明白吧,哎他呢怎么着啊,哎也是1980杠什么呀,幺零杠幺幺,他的出生地呢,跟你的出生地一样。
11:14
一样,都是哪个省哪哪哪个哪个哪个县,或者是哪个区哪个哪个哪个地方的。对,他就是一样,他信息就一样,完全一样,但对不起,他前面会有一个身份证号,只要这两个身份证号是不一样的,我们就认为这是两个不同的人。听懂了吗?也就是说,主见在一张表当中起到的作用非常非常的关键,主键字段上的每一个值是你这一行记录的唯一标识。就是代表我不管你这个数据到底跟这张表这个数据到底一样不一样,您就是完全一样,一字不差那行,只要您前面主见值不一样,我就认为您是两条不同的经。
12:05
所以其实主见的作用是什么呢?主见只是。这行记录在这张表当中的什么唯一标识,就像一个人的身份证号一样。就像一个人的身份证号码一样。身份证号有没有重的?有没有没见过?都没见过吧?这个主见它的作用呢,我再强调,主见值是这行记录在这张表当中的唯一标识,各位,嗯,这个是很重要的啊,那这块的主见约束大家会加了吗?
13:09
会加了是吧,就是加到字段的后面。但这属于劣迹约束啊。能记住不主键,它不能为空,也不能重复。不能为空啊,不能为空,也不能重,也不能重啊,主见值,主键字段和主键约束几个概念要知道啊,有什么用,你要知道主见值就是这行记录身份证号就行了,那再往下呢,就是主键的分类。根据什么呢?根据主键字段的字段什么数量来划分,有多种划分方式啊,分为什么单一主件和什么复合主键,专业术语啊,这是专业的啊,这不是杜老师在这随便说一个词啊,那单一主件和复合主键。
14:03
根据什么呢?主见的性质来划分自然主见和业务组件。先把这个先有个印象。根据主键字段的字段数量来划分。分为单一主键和复合。复合主键,其实说白了就是说多个字段联合添加一个主主键约束啊,多个字段联合起来添加一个什么组件约束。哦,对了,还有件事我得先给你,让你先把这个死记硬背记住啊,就是一张表主键只能有一个啊,一张表的主键约束啊,只能有只能有一个。
15:00
必须记住。一张表的主键约束只能有一个。你不能说你既给这个字段添加主线,又给这个字段添加主键,不行啊,没有这个语法。但是您能不能给这两个字段联合起来添加一个组件,联合起来添加一个组件,那是几个组件啊一个。明白吗?啊,那叫那叫什么组件复合组件件多个字段联合起来,添加几个,一个组件约束。复合组件啊,单一组件来。单一主件是推荐的,常用的复合主件不建议用啊,别看今天讲,别看今天我提这个概念,复合主件不建议用,复合主键不建议使用,因为复合主键违背谁违背三范式。
16:10
三范式后面会讲的啊,咱们在最后会讲数据库设计三范式,它会违背三范式的复合组件。它会产生部分依赖。对。才会产生,导致会产生部分依赖。对,所以说复合组件呢,我们很少用的,还我还演示吗。不建议用啊,他违背了违背三范式的啊,单一主键是常用的。单一组件我已经演示完了,就是在字段后面加加就行了。这就可以了。还有复合主件,单一主件,自然主见跟业务主见呢,各位。就是主见值跟业务挂钩,主见值和什么和系统的业务挂钩,比如拿着什么银行卡的卡号做什么主件,拿着什么身份证号码作为什么主见,这都是什么业务主件?
17:24
就是讲了半天这种方式啊,我先说一下是不推荐用啊。业务主件为什么不不推荐主键值起的一个作用是什么?就是能代表的了,您这行记录就行,我这个数值最好跟您这个业务没有任何关联,没有任何关系,很单纯,就是一个非常独立的值,一或者是二或者是一个值,跟这个业务不要挂钩。
18:00
如果您这个主建这个字段用的是银行卡的卡号做主线的话,好,你比如说。我举个例子啊,这个卡号里边四比较多。我不喜欢。卡号里面带四。迷信呢,是不是或者不是什么迷信啊,就是图个吉祥,是不是就这样吧,你看摇号的话希望摇到888888,是不是你喜欢摇这个呀,对。那我问你,这个时候这张卡我就很有可能注销掉不用了。是吧,能注销掉不用了,或者说我希望什么,我希望银行啊,你能把这个卡号给我改了,但是他改不了。对吧,就假如说因为四太多,我说你能给给我改,改妥了改不了,然后银行业务员只能说这个是在底层数据库里边,是当做主见的,主见值是不能改的,一改有可能跟别的重复了。
19:00
就是您这个值很单纯,最好就是一个很普通的数值啊,这个数值跟任何业务都不挂钩的,我我觉得是这样。最好你不要在这儿干什么。拿业务当主件。有的人说,老师,那万一。我有一个身份证号,那这个身份证号我想做主建,不能做主建,那个表怎么设计啊。啊,我跟大家说一下啊,一般我都这样,我们在开发中这样设计的,在这会有一个ID,这个ID就是一个什么PK组件,明白吧,在这会有个普通字段叫什么。ID card。这是什么身份证号加什么约束?用那个约束。就是说你的身份证号还是给你怎么着啊,存到我们的数据库表当中,只不过我们不会拿身份证号做什么,不会拿身份证号做主件,我们会单独做一个,有一个主键这个ID,这个ID呢,就是1234,就是很单纯的这个自然数,我们叫自然主件嘛。
20:12
啊,他这种方式。记住啊,我们是比较忌讳在拿着这张表的一个业务,有业务含义的这个字段作为主线。最好不要拿着和业务挂钩的字段作为什么组件。因为什么,各位,因为以后的业务一旦什么发生。改变的时候。主键。应该怎么说,各位?这块。就最好不要拿着和。业务挂钩的字段作为主线,因为以后的业务一旦发生改变的时候,主键值需要干什么,主键值可能也需要随着什么。
21:10
发生变化吧。是不是啊,但有的时候没有办法变化。听懂了吧?因为变化有可能会导致主键值重复啊。而主见又怎么着?不能重复啊,所以尴尬了吗?主键值还能改吗?不能改,但是你业务变了吗?变了,你业务变了,主键值得改吗?那主键值不能改啊,一改为啥重了?懂什么意思吧?就是说你这个字段最好很单纯,就是一个自然数,就主见值最好就是一个和业务没有任何关系的自然数,最好是这样的。
22:06
你别别别,你别整一个跟那个业务挂钩的,业务一变,你这个数据一变,你这个数据有可能就会发生变化,因为业务改了,业务改变变,变了的话,就有可能重复,你重复的主见值就不能重复主见值能重句记论,你不能改,你不能改就尴尬了,这个这个很很尴尬,所以这个呢,你不要业务主见,但是这些概念我该给你讲,还给你讲,我讲细一些啊,就是主键这种东西,根据字段数量划分,叫单一和复合,但是我说了复合主键违背什么呀,我们的一个三分式我在这里就不再讲了,单一主键呢,还还是经常用的啊,根据主件的性质划分业务主见和自然主见啊,就是自然主见是推荐的,各位啊,这种方式是推荐的。推荐的。对业务主见不推荐啊,另外一张表的主见约束也只能有一个,这个主见约束这块咱们没有说完,各位啊,休息一下。
我来说两句