精华内容
下载资源
问答
  • MySQL外键

    2017-09-19 19:28:00
    关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 外键 是关联两个表之间的键 外键的作用,主要有两个:一个是让数据库自己通过外键来保证...

    一什么是主键和外键

     

    关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键

    外键   是关联两个表之间的键

    外键的作用,主要有两个:

    一个是让数据库自己通过外键来保证数据的完整性和一致性

    一个就是能够增加ER图的可读性

    外键的配置

    1)先创建一个主表,代码如下:

    #创建表student,并添加各种约束

    create table student

    (

        id int primary key ,  #主键约束

        name varchar(20)  ,  #唯一约束

        age int NOT NULL, #非空约束

        sex varchar(2) ,

        address varchar(20) default '重庆'  #默认约束

    ) ;

    再通过一个外键,创建一个分数表,这样的话,就可以方便查询。代码如下:

    #创建分数表

    create table score

    (

        id int primary key ,

        sid int ,

        china int ,

        history int,

        english int,

        constraint FK_sid foreign key(sid) references student(id)  #通过外键创建链接

    ) ;

     

    创建外键的方法有很多,其中最常见创建外键的格式是:constraint FK_*** foreign key(**) references 链接的外表

    删除外键:

    alter table drop foreign key '外键名'.

    注意:

    只有在定义外键时,用constraint 外键名 foreign key .... 方便进行外键的删除




    主键是唯一标示这一行的,就好像你的身份证号一样,每个人只有一个,也是唯一能证明你是你的东西。外键是别人执行你的东西。也就是说如果一个人想和你有点关系怎么办,那就要关联起来,怎么关联起来,就通过外键啊


    定义主键和外键主要是为了维护关系数据库的完整性,总结一下:

    一、主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。

    外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。

    二、  主键、外键和索引的区别

    主键、外键和索引的区别?
        
    主键                                                                  外键                                     索引

    定义:唯一标识一条记录,不能有重复的,不允许为空          表的外键是另一表的主键, 外键可以有重复的, 可以是空值    该字段没有重复值,但可以有一个空值

    作用:用来保证数据完整性                    用来和其他表建立联系用的              是提高查询排序的速度

    个数:主键只能有一个                      一个表可以有多个外键                一个表可以有多个惟一索引


    聚集索引和非聚集索引的区别?

    聚集索引一定是唯一索引。但唯一索引不一定是聚集索引。  

    聚集索引,在索引页里直接存放数据,而非聚集索引在索引页里存放的是索引,这些索引指向专门的数据页的数据。


    三、数据库中主键和外键的设计原则

    主键和外键是把多个表组织为一个有效的关系数据库的粘合剂。主键和外键的设计对物理数据库的性能和可用性都有着决定性的影响。

    必须将数据库模式从理论上的逻辑设计转换为实际的物理设计。而主键和外键的结构是这个设计过程的症结所在。一旦将所设计的数据库用于了生产环境,就很难对这些键进行修改,所以在开发阶段就设计好主键和外键就是非常必要和值得的。

    主键:

      关系数据库依赖于主键---它是数据库物理模式的基石。

      主键在物理层面上只有两个用途:

            1. 惟一地标识一行。

            2. 作为一个可以被外键有效引用的对象。

      基于以上这两个用途,下面给出了我在设计物理层面的主键时所遵循的一些原则:

            1. 主键应当是对用户没有意义的。如果用户看到了一个表示多对多关系的连接表中的数据,并抱怨它没有什么用处,那就证明它的主键设计地很好。

            2. 主键应该是单列的,以便提高连接和筛选操作的效率。

            注:使用复合键的人通常有两个理由为自己开脱,而这两个理由都是错误的。其一是主键应当具有实际意义,然而,让主键具有意义只不过是给人为地破坏数据库提供了方便。其二是利用这种方法可以在描述多对多关系的连接表中使用两个外部键来作为主键,我也反对这种做法,理由是:复合主键常常导致不良的外键,即当连接表成为另一个从表的主表,而依据上面的第二种方法成为这个表主键的一部分,然,这个表又有可能再成为其它从表的主表,其主键又有可能成了其它从表主键的一部分,如此传递下去,越靠后的从表,其主键将会包含越多的列了。

            3. 永远也不要更新主键。实际上,因为主键除了惟一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主键需要更新,则说明主键应对用户无意义的原则被违反了。

           注:这项原则对于那些经常需要在数据转换或多数据库合并时进行数据整理的数据并不适用。

            4. 主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。

            5. 主键应当有计算机自动生成。如果由人来对主键的创建进行干预,就会使它带有除了惟一标识一行以外的意义。一旦越过这个界限,就可能产生认为修改主键的动机,这样,这种系统用来链接记录行、管理记录行的关键手段就会落入不了解数据库设计的人的手中。

    四、数据库主键选取策略

    我们在建立数据库的时候,需要为每张表指定一个主键,所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。当然,其它字段可以辅助我们在执行这些操作时消除共享冲突,不过就不在这里讨论了。主键除了上述作用外,常常与外键构成参照完整性约束,防止出现数据不一致。所以数据库在设计时,主键起到了很重要的作用。

    常见的数据库主键选取方式有:

    · 自动增长字段

    · 手动增长字段

    · UniqueIdentifier

    · “COMB(Combine)”类型

    1自动增长型字段

    很多数据库设计者喜欢使用自动增长型字段,因为它使用简单。自动增长型字段允许我们在向数据库添加数据时,不考虑主键的取值,记录插入后,数据库系统会自动为其分配一个值,确保绝对不会出现重复。如果使用SQL Server数据库的话,我们还可以在记录插入后使用@@IDENTITY全局变量获取系统分配的主键键值。

    尽管自动增长型字段会省掉我们很多繁琐的工作,但使用它也存在潜在的问题,那就是在数据缓冲模式下,很难预先填写主键与外键的值。假设有两张表:

    Order(OrderID, OrderDate)
    OrderDetial(OrderID, LineNum, ProductID, Price)

    Order表中的OrderID是自动增长型的字段。现在需要我们录入一张订单,包括在Order表中插入一条记录以及在OrderDetail表中插入若干条记录。因为Order表中的OrderID是自动增长型的字段,那么我们在记录正式插入到数据库之前无法事先得知它的取值,只有在更新后才能知道数据库为它分配的是什么值。这会造成以下矛盾发生:

    首先,为了能在OrderDetail的OrderID字段中添入正确的值,必须先更新Order表以获取到系统为其分配的OrderID值,然后再用这个OrderID填充OrderDetail表。最后更新OderDetail表。但是,为了确保数据的一致性,Order与OrderDetail在更新时必须在事务保护下同时进行,即确保两表同时更行成功。显然它们是相互矛盾的。

    除此之外,当我们需要在多个数据库间进行数据的复制时(SQL Server的数据分发、订阅机制允许我们进行库间的数据复制操作),自动增长型字段可能造成数据合并时的主键冲突。设想一个数据库中的Order表向另一个库中的Order表复制数据库时,OrderID到底该不该自动增长呢?

    ADO.NET允许我们在DataSet中将某一个字段设置为自动增长型字段,但千万记住,这个自动增长字段仅仅是个占位符而已,当数据库进行更新时,数据库生成的值会自动取代ADO.Net分配的值。所以为了防止用户产生误解,建议大家将ADO.NET中的自动增长初始值以及增量都设置成-1。此外,在ADO.NET中,我们可以为两张表建立DataRelation,这样存在级联关系的两张表更新时,一张表更新后另外一张表对应键的值也会自动发生变化,这会大大减少了我们对存在级联关系的两表间更新时自动增长型字段带来的麻烦。

    2手动增长型字段

    既然自动增长型字段会带来如此的麻烦,我们不妨考虑使用手动增长型的字段,也就是说主键的值需要自己维护,通常情况下需要建立一张单独的表存储当前主键键值。还用上面的例子来说,这次我们新建一张表叫IntKey,包含两个字段,KeyName以及KeyValue。就像一个HashTable,给一个KeyName,就可以知道目前的KeyValue是什么,然后手工实现键值数据递增。在SQL Server中可以编写这样一个存储过程,让取键值的过程自动进行。

     

    转载于:https://www.cnblogs.com/houzhanzhan/p/7553609.html

    展开全文
  • 有了主键,也就能够唯一标识一条记录了。然后,我们就能建立不同数据表的记录之间的关联了。先生成两个有主键的表用来做实验,简单起见用整数做主键,但被故意打乱了次序。A2是个部门表,每条记录对应一个部门,did...

    有了主键,也就能够唯一标识一条记录了。然后,我们就能建立不同数据表的记录之间的关联了。

    先生成两个有主键的表用来做实验,简单起见用整数做主键,但被故意打乱了次序。

    573c72bff75381bc9c658232f0502ffc.png

    A2是个部门表,每条记录对应一个部门,did字段是部门的编号,用作主键,name字段是部门名称;A3是员工表,每条记录对应一名员工,eid字段是员工编号,用作主键,nation是员工国籍。员工表通常还会有姓名字段,但这里没什么用,我们就不生成了。

    重点是A3的dept字段和A2的manage字段。dept存储的是一个整数,它代表这个员工所属的部门。员工表中记录e对应的员工的所属部门,就是部门表中以e.dept为主键的记录d对应的部门。我们这时也会说记录e和记录d关联

    A2的manager字段表示部门的经理,经理也是个员工,也会出现在员工表中。部门表中记录d对应的部门的经理,就是员工表中以d.manager为主键的记录e对应的员工。我们也说这两条记录d和e关联。

    了解一这个关系,A4的作用就清楚了,因为随机生成的数据不能保证经理的所属部门就是本部门,要在A4再调整一下,这样这份数据就可以用了。

    现在我们想列出所有R&D部门的人员。

    这是个简单的选出问题,应该用select函数。但是,员工表中没有部门名称,只有部门的编号,去部门表中去用编号查出部门名称才能做选出。

    dbd366df975579e90554840b02fe927f.png

    类似地,我们还可以列出所有经理是美国人的部门:

    73f7bddcc2900670c1e1e7707c18c37a.png

    这样我们就把员工表和部门表关联起来了,可以联合使用两个表的信息来做运算。其中员工表中的dept字段,它的取值总是部门表中某条记录的主键,而且也用来代表部门表中的这条记录。我们称这种字段为外键,更完整的说法是员工表中指向部门表的外键。通过外键,可以在针对某个表的运算中引用指向表的关联记录的某些字段,这两个表也就有了外键关联。

    同样,部门表中的manager字段也是指向员工表的外键。

    主键可能有多个字段构成,对应的外键也可能有多个字段,但相对不太常见,我们这里不再举例了。

    当两个表之间有外键的关系时,比如A表的某个字段是指向B表的外键。我们还要知道两个术语:称B表是A表的维表,而A表称为事实表。维表和事实表的关系是相对的,关注员工表的外键dept时,部门表是员工表的维表,而在关注部门表的外键manager时,员工表又是部门表的维表。

    维表和事实表在讨论数据库业务时经常会被程序员使用。日常数据处理中不大使用这种太学术化的词汇,但还是知道一下更好一点。

    数据库的术语中,还会说外键关联是多对一的关联,也就是可能多条事实表记录与同一条维表记录关联。

    外键也不是个陌生的概念。维表就是我们常常使用的代码表,把一些经常要被引用的事物的属性列到一个代码表中,并给一个编码(也就是主键)来标识,在引用时就只用这个编码(也就是外键),更详细的信息则用这个编码到代码表中去查询。

    比如电话号码上会挂着机主姓名、地址、…等信息,而通话记录中就只有电话号码了。电话号码是通讯录的主键,通话记录中的电话号码就是指向通讯录的外键。通讯录是通话记录的维表,通话记录是事实表。在针对通话记录的运算中经常可能使用到电话号码相关的信息,比如查询北京地区打出的电话有多少等,这就用外键去寻找关联记录的字段。

    其它像银行帐户与银行交易记录、商品信息与买卖记录、…都是这种情况。

    针对事实表的运算中使用到维表信息是很常见的事情,为什么我们不把要用到维表字段直接抄录到事实表中呢?

    有过这种代码表处理经验的读者都会知道答案。维表的信息内容很多,如果都抄到事实表中,事实表会被搞得很大,占用很多存储空间,导致性能低下;而且,维表很可能会变,比如部门名称、机主地址等,如果都抄到事实表中,一旦发生改变,事实表都要更新,而事实表通常巨大得多,这就会非常麻烦和低效。如果是独立的维表,那只要修改维表,事实表运算时临时来取维表字段,总能得到最新信息。

    理解了概念,我们继续。现在把员工编号(没生成姓名字段,就用编号代替了)和所属的部门名称列到成一个表:

    957dbf871fcb9f5aa2bc7d182eda63d3.png

    这个很像Excel里的VLookup函数,代码表就是这么用的。

    但是,总是使用find来写显然非常麻烦,而且每次都计算的效率也很差,比如再一步,想把员工所属部门的经理的编号也列上,就得把这个find写两遍。

    d0d2007f2cca75c2d246ab5d08e691cd.png

    这就更像VLookup了,Excel要引用关联表格的两个列就得写两遍VLookup。

    SPL显然不会没考虑到这个问题,这种对于结构化数据来讲属于家常便饭的操作不能搞得这么麻烦。SPL提供了switch函数来实现外键的关联运算:

    34444e50bbf60751fb7d26d776393d74.png

    switch函数将把外键字段转换成对应的维表记录,A5的代码相当于执行了一句:

    >A3.run(dept=A2.find(dept))

    执行A5前看A3的值(可以使用调试功能),是下面这样,dept字段是整数:

    4c8b988bc339262cb43aaa41ff4c87cc.png

    执行之后再看A3,dept字段看起来仍然是整数,但变了颜色也显示到左边了:

    b462d77eb0c8d87ba863cd9c2f9eb918.png

    双击某个dept的值,值显示区域可能出现这样的结果:

    fc34778e223d825e55613d2e6060a588.png

    dept字段的取值已经变成记录,双击它后将显示这条记录的详细信息。刚才显示的变了颜色的数值实际上是这条记录的主键。

    即然是记录,那么当然就可以引用它的字段了,A6中的dept.name和dept.manager就都能正常计算了。

    之所以用switch这个函数名,是因为它还可以把取值为记录的字段转换回来:

    0dd2fa905659a9295bfa77952baf661e.png

    A5将外键转换成维表的记录,A6就可以使用它引用维表记录的字段了,到A7又将现在取值为记录的字段再转回来,A7相当于执行了

    >A3.run(dept=dept.key())

    不过,转换回来的情况很少见。

    被switch处理过后,这两个表的记录感觉真地连到了一起,这个表的字段取值是另一个表的记录,可以通过这个字段去引用另一个表的字段了。这比VLookup方便了许多。

    相应地,部门表中的manager字段也是外键,也可以转换成人员表中的记录。

    比如,我们想统计有多少男员工的经理是女性:

    bc7cbb053a86586faad2905062c0e9ff.png

    外键关系可能有多层,这时候如果还使用find方法,就会很难描述(有兴趣的读者也可以尝试想想Excel中如何用VLookup实现这种多层关联)。被switch转换之后的外键,点操作符可以形象地理解成“的”,A6中的dept.manager.nation可以解读为当前员工的部门的经理的国籍,很多层次也不会觉得困难,这样的语法即书写简单也容易理解。

    通常,外键字段的取值一定会在维表的主键取值范围内,但有时候也会出现超出的情况。比如新员工在尚未确定所属部门前,dept字段都被填成了0,部门表中没有对应的记录。

    0c729a30a8370b6809f4f3099a596ff0.png

    我们在生成数据的代码B4中故意找了一些员工的dept填成0,然后可以观察这三种A5分别会计算出什么结果。注意要分别执行,不能顺序执行,因为执行完之后A3将会被改变,再继续执行另一种A5就没有意义了。

    switch找不到外键对应的维表记录时会将外键填成null,之后再引用其字段时并不会报错,只是会返回null,相应的B5将不会为0。@i选项将删除找不到外键对应记录的事实表记录,保证switch之后的事实表记录的外键都正确转换成维表记录了,相应的B5将返回0。而@d则将只保留找不到外键对应记录的事实表记录,并且无法再做外键转换,相应的B5就会报出错误。

    使用外键关联两个数据表,经常是为了将维表的某些字段临时拼到事实表上(也就是VLookup干的事),大多数情况并不打算改变事实表的字段。switch函数用来进行关联运算虽然方便,但它却会改变原事实表的外键字段值,如果只是想追加维表字段的话,使用switch后还要再多做一步转换将已经变成记录的外键再转换回来,这就比较麻烦了。而且,如果再碰到刚才说的有对应不上的情况,外键将被填成null,信息已经丢失,无法转换回来了。

    SPL提供了join函数来实现这种目标:

    64ad205d81958665c6be8bf7d7d7f9ee.png

    A5将在序表A3的基础上增加deptname和manager字段,分别填入员工的部门名称和经理编号,dept字段将保持原样,找不到对应的维表记录时,会导致新加入的字段填成null。

    join函数会产生一个新序表,原来A3并不会改变。

    join函数还可以支持多字段的主键和外键,因为不常见,这里不再举例了,需要使用时可以查阅SPL的相关文档,也能再体会层次参数的必要性。

    switch函数不支持多字段主键的维表,它只能转换单字段外键。

    使用外键到维表中查找对应记录,以引用关联记录的某些字段,这是很常见的情况。不过,业务是复杂的,有时关联记录并不能简单用外键来确定,而需要一个与区间有关的条件。

    回到前面章节中常用到的人员表,并造一个BMI对照表:

    7242c1b8f6080ee3484490b59ddfdd29.png

    现在我们想在有BMI信息的人员表A2上加个字段,列出每个人的体重类型。

    如果把BMI对照料表A3作为维表(有要被引用的字段),它有low和high字段来表示某个体重类型的BMI区间,但并没有什么适合作主键的字段(虽然low和high都有唯一性)。人员表A2中看起来也没有字段可以充当外键。但是,显然A2和A4会存在一种关联,A2的每条记录都会和A4的某条记录对应。

    区间关联也是一种常见的关联,那么它该怎么实现?

    简单地使用select函数当然可以,类似本节开始使用find一样。

    3e2e4b18227fab7eb017810697a96d77.png

    这里要判断high是空的情况(表示最后一段),low不用判断,因为SPL规则null是最小的,null<=bmi总会得到true。

    其实,区间关联也能被理解为外键关联。如果我们把BMI对照表做一些改造,再在人员表增加用pseg函数计算出来的BMI区段序号,就可以看出外键关系了。

    f7a2edba4adf8e24189307c0efb30fae.png

    经过改造的BMI对照表A3有了主键,可以作为维表。A5增加出来的bmitype字段则是指向A3的外键,也可以用switch建立关联。

    区间关联本质上也是外键关联。

    为人员表单造一个外键实在有点麻烦,其实我们写成上面这样主要是为了帮助读者理解外键概念可以延伸到这种情况。实际上会直接用pseg拼出目标字段。

    b18dd5d4267f921df47d89b452716d20.png

    区间关联过程一般都不会专门生成外键,但仍然可以延用维表和事实表的概念。

    如果情况像这个例子这样只有type字段需要被引用,我们甚至都不会生成那个对照表了,而是直接用序列和pseg来计算并引用。

    a51696edccf0fd57a5653d98bba4d9ff.png

    和所有外键关联一样,区间关联也是多对一的关联。即使没有生成维表,这个关联关系仍然在逻辑上存在。

    展开全文
  • 什么是主键和外键

    2020-07-19 16:01:31
    成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以学号和课程号的属性组是一个主键 成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中...

    主键:能够唯一标识一段记录的属性或者属性组

    外键:用于与另一张表产生关联

    比如:

    学生表(学号,姓名,性别,班级) 
        其中每个学生的学号是唯一的,学号就是一个主键 
    课程表(课程编号,课程名,学分) 
        其中课程编号是唯一的,课程编号就是一个主键 
    成绩表(学号,课程号,成绩) 
        成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以 学号和课程号的属性组是一个主键 
      
    成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键 
      
    同理 成绩表中的课程号是课程表的外键 

     

    主键,外键,索引的区别:


      

    展开全文
  • 理解数据库中主键、外键以及索引是什么发布时间:2020-...数据库中的主键指的是能够唯一标识一条记录的属性或属性组,外键指的是另一张表中的主键起到与其他表建立联系的作用,索引是用来快速查找具有特定值的记录数...

    理解数据库中主键、外键以及索引是什么

    发布时间:2020-08-26 14:36:52

    来源:亿速云

    阅读:168

    作者:小新

    这篇文章给大家分享的是有关理解数据库中主键、外键以及索引是什么的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

    数据库中的主键指的是能够唯一标识一条记录的属性或属性组,外键指的是另一张表中的主键起到与其他表建立联系的作用,索引是用来快速查找具有特定值的记录

    9f019cf061d53f723382cb5e1ff995a9.png

    数据库中的主键

    数据库中的主键指的是在一个属性组中能够唯一标识一条记录的属性或属性组。在一个表中只能有一个主键而且不能够重复,也不能为空值。主键常常与外键构成参照完整性约束,目的就是防止出现数据的不一致。在数据库管理系统中对主键自动生成唯一索引,因此主键是一个特殊的索引

    例:学生表(学号,姓名,班级)

    由于每个学生的学号是唯一的因此学号就是一个主键课程表(课程ID,课程名)

    由于课程ID是唯一的,因此它就是一个主键成绩表(学号,课程ID,成绩)

    在成绩表中单一一个属性是无法标识一条记录的,需要学号和课程ID组合起来才可以起到标识记录的作用,因此它俩组合一起是一个主键

    数据库中的外键

    外键是用于建立与另一张表的关联,是确定另一张表中记录的字段。外键是另外一张表的主键,可以有多个且重复,也可以是空值。外键的目的在于使表中的数据保持一致性

    例:

    如上述的案例中,学号不是成绩表中的主键但是它是学生表中的主键因此我们就可以称成绩表中的学号是学生表的外键

    数据库中的索引

    索引指的是用来快速地寻找具有特定值的记录。目的是为了检索方便加快访问速度, 按照一定规则创建,起到排序的作用

    主键、外键和索引的区别

    这三者的区别如下所示主键外键索引

    定义唯一标识一条记录,不能有重复和空值是另一个表的主键,可以重复和空值没有重复值但可以有空值

    作用用来保证数据完整性建立与其他表的联系提高访问速度

    个数主键只能有一个可以有多个可以有多个唯一索引

    感谢各位的阅读!关于理解数据库中主键、外键以及索引是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!

    展开全文
  • 若一个属性组中能够唯一标识一条记录,该属性组就可以成为一个主键 如有一个学生表(学号,姓名,性别,班级) 里面每一个学号是唯一的,那么学号就一个主键 在课程表中(课程编号,课程号,学分) 里课程编号...
  • 主键,是表中一列或者多列的组合,主键约束(Primary Key Constraint)要求主键列的数据唯一,并且不允许为空,主键能够唯一标识表中的每一条记录,可以结合外键来定义与不同数据表之间的关系。 怎么理解主键呢?...
  • 主键能够唯一标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询的速度。主键和记录之间的关系如同身份证和人间的关系,他们之间是一一对应的,主键分为两种类型:单字段主键和...
  • 数据库:管理数据的仓库,其...图1 数据表字段包括主键、联合主键、外键、其他字段主键:能够唯一标识记录的字段。只要能够唯一标识记录的字段都可以作主键,所以主键存在个选择问题。我们要选择不可更改的能够...
  • 超键:能够唯一标识一条记录的字段或字段集(字段也可以称之为属性)。 候选键:能够唯一标识一条记录的最小字段集 主键:某个能够唯一标识一条记录的最小字段集 1. 超键 只要你能唯一标识一条记录,那么你就一个超...
  • 主键:数据表中能够唯一标识一条记录的字段或者字段的组合就称为主键。一张数据表的每一条记录的主键都是唯一不重复的。主键可以唯一标识一条记录只是主键的一个作用,主键的另一个作用是和其他记录和存放数据的表...
  • MySQL基础MySQL数据库开源免费,能够跨平台,支持分布式,性能也不错,可以和 PHP... 某一个关键字能够唯一标识一条记录候选关键字: 除了主键之外的其他关键字外键: 值为其他表的主键值,可以为空但不能重复(一对...
  • 键 主键:主键是能够确定一条记录的唯一标识,其为一个属性或者一个属性...主键是唯一标识一条记录,不能够有重复,不允许为空,其用来保证数据的完整性,主键只能有一个 外键是另外一个表的主键,在本表中外键是可...
  • MySQL基础及sql语句

    2020-07-28 18:44:23
    关键字: 某字段或者多个字段能够唯一标识一条记录 主关键字: 某一个关键字能够唯一标识一条记录 候选关键字: 除了主键之外的其他关键字 外键: 值为其他表的主键值,可以为空但不能重复(一对一关系不能重复,一...
  • MySQL数据管理

    2019-05-25 11:17:25
    关系型数据库中的一条记录有若干个字段(列/属性),若其中某个字段/字段组能够唯一标识一条记录,该字段组就可以成为一个主键,一般情况下主键不具备任何含义,只是用于标识当前记录。 除了在创建表时指定主键外,...
  • 表的基本概念

    2018-03-30 10:49:00
    1.主键是能确定一条记录唯一标识比如一条记录包括身份正号姓名年龄。 身份证号是唯一能确定你这个人的其他都可能有重复所以身份证号是主键。 2.外键用于与另一张表的关联。是能确定另一...
  • 3、主键约束(primary key):主键是能够唯一标识一条记录的键 允许为空,主键不允许又重复的值 4、唯一约束(unique):不允许有重复的值,但可以是空值 5、检查约束(check)检查字段约束是否符合规定的规则 6...
  • 主键必须能够唯一标识一条记录,即主键字段中的值必须是唯一的,而且不能包含NULL 值。虽然一张表中可以有多个UNIQUE 约束和非空约束,但每个表中只能有一个主键约束。 在CREATE TABLE语句中定义主键约束:在字段...
  • 主键必须能够唯一标识一条记录,也就是主键字段中的值必须是唯一的,而且不能包含NULL 值。从这种意义上来说,主键约束是UNIQUE 约束和非空约束的组合。虽然一张表中可以有多个UNIQUE 约束和非空约束,但是每个表中...
  • 02day表的相关操作

    2019-10-14 10:43:35
    能够唯一标识表中的一条记录 特点:1—>不能重复、2—>主键不能为空,不允许为null 外键 能够把事务和事务产生联系 2、选择什么样的列作为主键 1、不允许为空的列 2、没有重复的列 3、与实际业务没有...
  • 主键约束

    2018-10-21 01:36:00
    主键必须能够唯一标识一条记录,也就是主键字段中的值必须是唯一的,而且不能包含NULL 值。从这种意义上来说,主键约束是UNIQUE 约束和非空约束的组合。虽然一张表中可以有多个UNIQUE 约束和非空约束,但是每个表中...
  • 在现在的关系型数据库中...超键可能包含用于唯一标识记录所不必要的额外的列,我们通常只对仅包含能够唯一标识记录的最小数量的列感兴趣。 其实乍看很难懂,其实是说法不太容易懂 我们来弄一张表来说明一下 stu...
  • oracle百问6

    2013-12-16 21:07:38
    51.delete、drop和truncate的区别 Delete:删除数据,表结构还在,可以恢复(savepoint),缺点是删除速度慢 Drop:删除数据和表结构,可以闪回...能够唯一标识一条记录的属性列(组)就是该表的主键。主键是唯一的,
  • 3、主键约束(primary key):主键是能够唯一标识一条记录的键 允许为空,主键不允许又重复的值 4、唯一约束(unique):不允许有重复的值,但可以是空值 5、检查约束(check)检查字段约束是否符合规定的规则 6...
  • Oracle百问百答(六)

    2013-11-14 08:52:00
    Oracle百问百答之进阶提高(六) 51.delete、drop和truncate的区别 Delete:删除数据,表结构还在,可以恢复(savepoint),缺点是删除速度慢 Drop:删除数据和表结构,可以闪回...能够唯一标识一条记录的属...
  • oracle 学习笔记1

    2018-06-07 21:47:23
    主键foreigh key:外键check:检查unique:唯一not null:非空default:默认2、概念主键:表中能够用于唯一标识某行数据的某一列或多列的组合,通过主键在表中能找到唯一的一条记录,主键默认具有唯一非空的特性。...
  • My SQL的 几个概念

    2016-10-22 09:21:30
    1.主键主键是能够标识唯一记录的属性或属性组,比如,一条记录包括身份证号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。 一个表只能有一个主键,但可以有多个候选索引...
  • Mysql Day01

    2019-02-26 17:36:46
    数据库基础知识 定义:数据库简单的说,数据库就是保存有组织的数据的容器(通常是个文件或组文件)。 列: 列(数据元素) 包含了相同的...其值能够唯一标识表中每行。 外键外键用于关联两个表。 关系...
  • 主键的约束

    2020-11-02 13:41:50
    主键,又称主码 ,是表中一列或多列的组合。主键约束要求主键列的数据唯一,并且不允许为空。主键能够唯一标识表中的一条记录,可以结合外键来定义不同数据表之间是关系1,并且加快数据库查询的速度。 ...

空空如也

空空如也

1 2 3
收藏数 59
精华内容 23
关键字:

外键能够唯一标识一条记录