00:00
好,接下来的这个东西呢,也很厉害,那这个叫做标识列,呃,什么是标识列呢?它其实有点类似于我们前面说过的这个约束哈,那么约束呢,它是可以限制我们某个字段的,那么它其实也可以限制我们某个字段,那么限制它什么呢?就是我们不用去手动插入它了,那么可以让它呢,诶自动增长,那所以说呢,我们的标识列呢,又称为哎,又称叫做自增长列啊,什么意思呢?就是可以不用我们手动的插入值啊,那么系统呢,提供默认的序列值,那这一组序列值呢,它是默认从一开始的。而且呢,每次呢都会在增长一哈,那么接下来呢,我们就看一下它是如何来去呃设置这种默认的这个序列值的哈,那么我们呢,先去来看一下,就是第一创建表识创建表,哎,那么我们就要设置一下标识链,哎,那么我们创建表的时候呢,可以为某个字段去设置成这样的一个标识列哈,我这里边我再建个表吧,行不行啊,那我这呢,就是create table,比方TB啊,专门我用来设置啊identity替啊是不是就是标识的意思啊嗯,好了看一下哈,那么假如说我这个里边有一些字段idt能听懂吧啊那么这个字段的话呢,我想给它呢,设置成了呃主键primary k,我设成了主键,主键我们知道有个特点是不是不能不能这叫做重复对不对,我再。
01:44
设一个内吧,温差20好,那么假如这样写是没有设置标识列的,那如果说我没有设置标志列,我们发现有一个问题,那么我们可以试一下,注意哈,瞪大眼睛看。那么现在呢,我在插入数据的时候,Insert into TVB,呃,Tity,呃,Tity好,然后ONE6,我这个里边的话呢,我不是要这么写吗?对吧?哎,这是插入一条没毛病,我再插入的时候,我是不是必须,你看我要再这么执行,是不是肯定会报错呀,哎,因为你这一样呀,啊所以一般来讲我这是不是都要改一下呀,不是一般是必须是吧,你这样必须要改一下,你这样去写是不是才可以没毛病,你每次这样改是不是还挺麻烦的呀?啊你必须得保证这个不重复,对吧,你标识列就解决了这个问题了,那怎么做呢?来看一下,我先把原表呢删除一下哈,找做table啊,然后叫做TB啊这个东西好,我们再执行,那怎么去添加标识列呢?就是对在对应的这个列,你想添的这个列的后面追加一个这个关键词,Auto in CRA,这么写自动增长。
02:58
啊好,我们现在再去执行是不是成功了,好,成功了之后呢,你看哈,我还要回到最初,因为你这是个新表,它觉得里边没有数据,对吧?啊,那么现在呢,我们去执行是不是一行受影响啊,好,我也不用改数据啊,然后我再去执行啊,我这一弄了个一傻了啊,你这是自增长,你这用插入一吧,不用啊,我这应该用个now,这样我先把那个原原原来的那个东西先删一下哈,Monkey table叫做ta是不是identity啊嗯,好,回到这说哈,再来一遍自增长的话,它的意思是说我们可以不用管,所以说它里边的这个这个值我就什么也不用插入,但是你为了保证跟前面的个数是不是一致啊,所以我这插了一个now啊,那行,现在我再去执行,哎,再去执行,我是不是现在执行了很多遍呀,好,那么现在我去查看里边的数据,哎,这就。
03:58
T,好,我们再去看有没有好,是不是这么快啊,对吧?啊,这样的好处就是说不用我们自己插入值,也不用去关心是否重复的问题,因为它肯定不重复,对吧?啊,你看它默认的这个起始值是几啊一每次增长几啊一哎,这是它默认的这个值,好,那么我们呢,把它里边相关的特点说一下哈,那么首先呢,我们创建这个表识,你如果设置了标识列,那你插入的时候不用管,这个不用管的话是指你要么你的列名加着,你像我这个省略列名,其实就相当于我这个地方是不是加上了它呀,哎,要么就是列宁加着赵一闹,要么就可以怎么写呢?对,都都省了,就跟那个当时插入闹纸似的哈。
04:58
嗯,直接转,或者咱换一个吧,Lucy Lucy对吧?啊这样写也行,好,我又插入了很多行,哎,现在再去执行啊,哎,这个应该是多少了,是不是这些了呀,啊,对吧?啊好,这是关于标识里的创建,有没有疑问,看一眼这是创建啊好,那没有疑问的话呢,咱们来说几个问题,首先有的同学可能会想说,老师我能不能不同一开答,是不是很多同学这样去讲啊,嗯,好,那其实的话呢,我们会发现我们的系统变量里边有一个variable variables like啊,我们的自增长autorement啊,我这个用个打分号哈,包含它的都算,我们现在查看一下,好,这里边呀,有关于自增长的一个值,你看这个有一个叫auto。
05:58
Cocrement increment,这个代表不长,就是每次增长多少,默认的是不是每次增长一样,然后还有一个是偏移量,默认是一,这个意思是说起始值是一。
06:12
那所以说根据这个变量的话,我们知道我们可以通过设置变量,通过设置变量是不是来去设置它的起始值和默认的步长啊,哎,可以设置这个,但是咱们MY搜中不支持你设置它其实值你设置了也没有效果啊,能听懂吧,你设置了也没效果,但是这个步长是有效果的,我们可以设一下步长,能听懂吧,我们可以设置一下不长,好,那就是set这样去设置变量哈,Set我们的圈a auto啊,其实不加圈A也行啊,咱会加了auto in crament in crament等于不长,假如说是三可以吧,然后呢,我们去执行,然后现在呢,我们再去查看啊,查看现在它的不长值是不是就是三呀,好,不长值是三,我们把这个根删除,好,现在是不是再重新插入数据啊,好,然后我们去执行执行执行执行了几。
07:12
几遍,然后现在再去查看我们里面的数据有没有知道意思了吧,不长试这么更改的,但是你这样一更改变量的话,那就代表是你当前,呃,这个连接下的,你是不是所有的表它都这么改了呀,啊都是这样的啊,一般不会改的啊,就是如果你非要改就这样改,那有的说那老师起始值他不支持我用变量的方式设置,难道没有别的方式吗?也有我们可以这样改看到哈,呃,同样我先把这个表跟删除删除啊穿可以的,我选错了,应该是这样删对吧?那现在里面肯定是没东西了,对不对?哎,我们去执行没东西了呢,你看我怎么办哈,整一个取巧的办法,我这儿呢,虽然他说你可以不用插入纸,但是我就想插入其实也行。
08:08
能听懂意思吧,我现在表里面是不是一个数据都没有呀,好,那么现在我插入值的时候,我这只写的是几啊十,我执行一遍是不是一行受影响了,好其他的这个数据呢,我都用now。好啥意思呢,看有人能读不哈,后面的我就不管了,能听懂吗?哎,我就把七日值是不是更改为十了,现在呢,我们再查看知道意思了吧,是不是就变成你所谓的说起始值更改呀,哎,也就是你你想在什么地方更改一下值,你就自己手动的插入一个值是不是就行了呀,其他的呢,你就还是用它个人提供的对不对啊,这样是可以的,说明白了吧?啊,这是关于我们的自增长链,我们如何插入,如何更改补长,以及如何更改起始值啊。
09:02
行,那这个说完了之后,我们再去说一下我们标识列使用时需要注意的几个特点,那问几个问题,第一个问题那就是呃,我的标识列必须和主键搭配吗?啊好,你看我刚才写的时候,我是在组件这加的对不对,那我能不能就是不加主键呀,好那么现在我们试一下这第一个特点,我先呢把这个给删了哈,我把主键是不跟去掉呀,啊好,中间去掉的话呢,我现在再去执行,是不是它这报错了呀,好,好像跟那个说必须加主键似的,但是它那个错误好像还不是那样,他说什么呢?说呀,你这里边必须仅仅只能有一个标识的好,并且呢,它必须是一个K。但是这个K它没有说必须是primary k吧,所以说我加一个别的K也行吧,那你看到哈,我这个地方我要加一个谁呀,Unique unique unique是不是我一键呀,这个是不是也叫一个K啊,那我加他能不行,看一下能不能行可以,所以说不一定是主键能听懂吧,啊,所以我这应该是标识列,必须和主键搭配嘛,然后这个是不一定,但要求是一个K,哎,所谓的K就是主键为一呀,外键呀,这个都叫K。
10:29
啊,或者以后咱们可以自己去定义一个K对不对,但目前咱们学的是不是就这些呀?啊是这个意思,第二点,其实第二点也看出来了,那一个表中可以有多少个标识量啊,这很显然有的同学刚才没有好好的看这个错误哈,好,那么现在我们试一下,假如说我再来一个列,比方说叫做sit所略号,好也是in,我呢也跟去加一个unique,因为unique是不是可以多多呀,啊correct我能不能加两个次增长。
11:09
好,那么现在呢,我们先删了再跟他去创建哈。好,大家看一下,这是报错了,说你再看一遍这个错误,说这里面呀,仅仅只能有一个auto column是不是增长液对吧?所以说一个表可以有几个好,也就是至多一个对不对?哎,至多一个好,第三我们标识列的类型,这个的话有没有限制,刚才我的类型是不是用的in呀。只能是硬盘吗?不知道,那我们现在试一下吧,好,我这是不是就换到re叉上了啊,下面这个先去掉吧,对吧,那我们看一下行不行,报错了吧,说什么呢?无效的列name,也就是你对这个,你对这个name添加标识列可以吗?不可以,其实原因就在于它的类型啊,那V叉是不行的,但是int行,那float double也是竖直行,能不能行呢?其实是行的行的,那我们试啊。
12:28
好,你比方说我这就换成float,好,然后再去执行,大家看一下能不能成功,能不能成功,是不是能成功啊好,所以说标识列的类型的话,注意哈,只能是数值型,这个数值型就是in float double这些是不是都行啊,都行,不一定非是in啊,只不过一般是什么in,一般是in。好,这是第三个特点,然后再结合着刚才我们说到的那个案例呢,咱把这个第四个特点也补充上,那就是标识列呢,可以通过,叫做哪个语句嘞,哎,这个语句是不是设置它的不长呀,啊通过这个设置不长不不长不长怎么写这样对不对,那么也可以通过啊,我们就是手动插入值啊,是不是设置我们起始值啊,哎,起始。
13:30
好,我们接下来看一下我们这个修改表的时候,能不能设置标识链,我们看第二点哈,修改表识,修改表示设置标识列,那其实呢,也类似于我们是不是去修改约束啊啊,因为呢,它也可以在我们去修改我们列的约束或者类型的时候,直接把这个标识列给设置上了哈,那所以它遵循我们修改表的语法,Out table后面加上我们的表明tab,哎,Identity,然后怎么写修改约束或者修改类型,我们都是使用的是modify,然后column,哎,比方说加上我们的哎,是D吧。
14:11
看一眼哈,哎,然后呢,再去加它的类型,这是必须的int,哎,然后加上比方说primary k哈,主键,然后我们再跟他去加上一个约我们的这个标识链,那就是auto in crament啊好了,那么现在我们试一下,呃,在试之前呢,我们先把这个我们前面的这个表啊弄得比较干净了,哎,比方说还是这么三个字段,哎,好了,我们去执行哈。好,成功了哈,然后现在呢,我们再去添加这个标识列去,诶执行一下是不是没问题啊,哎,然后我们去刷新。然后看一下我们的ta identity哎,我们看一眼,哎,在这个地方的话,是不是自增已经可以了呀,哎,这是关于我们的这个修改表示设置,那如果说删除它怎么办呢?第三点修改表时,哎,那删除它是不是也叫做修改表啊对吧?那所以说我们就来一个修改表示删除标识列对吧?哎,直接怎么办就可以了呢?哎,对了,我们就直接可以把这个auto increment是不是去掉就行了呀?哎,那好,我们比方说执行哈。
15:22
哎,当然它这个里边因为已经有了主见啊,已经有了主见,那这个primary key的话呢,我们就没必要有了,那么直接我们这样去执行好,然后现在呢,我们再去刷新刷新,然后我们看一下我们的这个表,看可不可以哈,哎,这个紫色是不是就已然已然没有了,对吧?这说明就已经去掉了哈,哎,大家注意了,这个就是关于我们标识列的设置,还有删除啊,那么这个就都给大家去说完了。
我来说两句