精华内容
下载资源
问答
  • 两张emp和sales ``` CREATE TABLE emp ( ID NUMBER NOT NULL CONSTRAINT pk_emp_id PRIMARY KEY, NAME VARCHAR2(64) NOT NULL, dept VARCHAR2(64) NOT NULL ); CREATE TABLE sales ( eID NUMBER NOT...
  • 2.一张表只能有一个主键吗?√ 3.一个主键只能是一列吗?×---支持多列合起来做主键,即复合主键,只要保证唯一性即可 图中1表示用第一列nid做主键,2表示用nid和pid两列合起来做主键,即复合外键(不常用) ...

    1.什么时候用主键?主键的用处?保证数据的唯一性

    2.一张表只能有一个主键吗?√

    3.一个主键只能是一列吗?×---支持多列合起来做主键,即复合主键,只要保证唯一性即可

    图中1表示用第一列nid做主键,2表示用nid和pid两列合起来做主键,即复合外键(不常用)

     

     

    4.在进行外键关联的时候,如果关联的表的主键是由多列组合而成的,那么在进行外键约束的时候由括号中的两部分一起

    另外,需要注意外键名不能重复,故在进行外键命名时,比如t2和t1进行外键关联,则命名为fk_t2_t1,若t3和t1进行外键关联,则命名为fk_t3_t1,从而保证外键名的唯一性

    展开全文
  • mySQL(8)-主键与外键

    2020-05-09 17:04:37
    一个表只能有一个主键吗? 对 一个主键只能有一列吗?错。主键可以由两列合起来。2.外键: 干什么的?某列数据来自于另一张表的一列,且只来自于另一张的一列。 好处: 1.节约空间:比如department,由中文字变...

    1.主键:
        干什么的?保证数据的唯一性。
                          一个表只能有一个主键吗? 对
                          一个主键只能有一列吗?错。主键可以由两列合起来。
    2.外键:
        干什么的?某列数据来自于另一张表的一列,且只来自于另一张的一列。
        好处:
    1.节约空间:比如department,由中文字变数字。比如“中共中央。。。”->1

    2.对department做约束,两表数据一致。

     不会出现如图所示的情况

    3.查询表1的department字段,改第2个表就可以了。   


    1.主键两种写法 关键字  primary key
     

     
    -- 主键两种写法 gu
       -- A) 写在字段后面 加关键字primary key
          create table t1(
              nid int(11) not null auto_increment primary key,
              pid int(11) default not null,
              num int(11)default null
    )begine=innoDB default charset=utf8;
    
       -- B) 写在最后一句 primary key(nid,pid)
           create table t1(
            nid int(11) not null auto_increment ,
            pid int(11) default not null,            -- 主键不为空
            num int(11)default null,
            primary key(nid,pid)
    )begine=innoDB default charset=utf8;

    2.外键语法

    constraint fk_user_depar foreign key("department_id",) reference department('id)

                                                                 本表字段                                   另一张表  表名 字段
     

     

    展开全文
  • sql主键和外键的区别

    千次阅读 2015-10-13 23:56:20
    当创建或者更改表时可以通过定义PRIMARY KEY约束来创建主键,一个表只能有一个主键约束,而且主键约束中的列不能是空值,由于主键约束确保唯一数据,所一经常来定义标识列。 每一个表都必须定义一个主键吗? 我个人...

    什么是主键:

        数据库主键是指表中一个列或者列的组合,其值能够唯一的标识表中的每一个行。这样的一列或者多列成为表的主键,通过它可以强制表的实体完整性。当创建或者更改表时可以通过定义PRIMARY KEY约束来创建主键,一个表只能有一个主键约束,而且主键约束中的列不能是空值,由于主键约束确保唯一数据,所一经常来定义标识列。
    

    每一个表都必须定义一个主键吗?

        我个人认为这个问题要看我们的表的功能,利用来存储大量数据,并需要经常查询的,建立主键可以加快查询效率,从而降低服务器的负担,但是如果没有这样的需求,建立主键反而消耗资源,所以这种情况下就没有必要建立主键了。
        有些人认为:虽然在有些数据库中,主键不是必须的,但是最好为每个表都设置一个主键,不管是但主键还是复合主键,它存在代表着表结构的完整性,表的记录必须得有唯一区分的字段,主键主要是用于其他表的外键关联,以及本记录的修改与删除。
    

    主键的作用:

    1、 从上面的定义可以看出,主键是用于唯一标识数据库表中一行数据的。
    2、 作为一个可以被外键有效引用的对象。

    主键的设计原则:

    1、 主键应当是对用户没有意义的,比如说用户登陆一个系统的时候的登录id;而这种情况就不可能了:“学生表”需要支持这样的需求“学生注销后,可以重新激活自己的信息,而且还要保持自己的号码跟原来的一直”,这样的话主键就不能满足要求了。
    2、 唯一性,这个原则就不用多说了。
    3、 非空性:主键的值是不可重复的,也不可以为空。

    什么是外键:

        外键是建立于表与表之间的联系,方便程序的编写。
    

    外键的特点:

    1、 外键保证了数据的完整性
    2、 使用外键,简单直观,可以直接在数据模型中体现,无论是设计、维护等等。
    3、 外键在调试程序的时候可能会带来一些麻烦。

    展开全文
  • 当创建或者更改表时可以通过定义PRIMARY KEY约束来创建主键,一个表只能有一个主键约束,而且主键约束中的列不能是空值,由于主键约束确保唯一数据,所一经常来定义标识列。 每一个表都必须定义一个主键吗? 我...

    什么是主键:

    数据库主键是指表中一个列或者列的组合,其值能够唯一的标识表中的每一个行。这样的一列或者多列成为表的主键,通过它可以强制表的实体完整性。当创建或者更改表时可以通过定义PRIMARY KEY约束来创建主键,一个表只能有一个主键约束,而且主键约束中的列不能是空值,由于主键约束确保唯一数据,所一经常来定义标识列。

    每一个表都必须定义一个主键吗?

    我个人认为这个问题要看我们的表的功能,利用来存储大量数据,并需要经常查询的,建立主键可以加快查询效率,从而降低服务器的负担,但是如果没有这样的需求,建立主键反而消耗资源,所以这种情况下就没有必要建立主键了。

    有些人认为:虽然在有些数据库中,主键不是必须的,但是最好为每个表都设置一个主键,不管是但主键还是复合主键,它存在代表着表结构的完整性,表的记录必须得有唯一区分的字段,主键主要是用于其他表的外键关联,以及本记录的修改与删除。

    主键的作用:

    1、 从上面的定义可以看出,主键是用于唯一标识数据库表中一行数据的。

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

    主键的设计原则:

    1、 主键应当是对用户没有意义的,比如说用户登陆一个系统的时候的登录id;而这种情况就不可能了:“学生表”需要支持这样的需求“学生注销后,可以重新激活自己的信息,而且还要保持自己的号码跟原来的一直”,这样的话主键就不能满足要求了。

    2、 唯一性,这个原则就不用多说了。

    3、 非空性:主键的值是不可重复的,也不可以为空。

    什么是外键:

    外键是建立于表与表之间的联系,方便程序的编写。

    外键的特点:

    1、 外键保证了数据的完整性

    2、 使用外键,简单直观,可以直接在数据模型中体现,无论是设计、维护等等。

    3、 外键在调试程序的时候可能会带来一些麻烦。

    如何插入外键:


    如上图所示,数据库中有三个表,下面我们给news和category表设置关系


    如图所示,邮件单击“数据库关系图”,选择“新建数据库关系图”


    出现上面的“添加表”

    选择要添加的表的名称,将这三个表全部添加到里面去(如下图所示)


    我们将news的categoryId设置为category的Id的外键




    单击添加按钮



    选择上边的“表和列规范”左边的三个小点号的按钮,点开后如下图所示



    展开全文
  • 这时候就存在着一个问题:主还没有新增,那么子新增时就会存在着外键约束的问题。以前我们采取的方式是在进入新增页面时先个简单的向导页面,产生一条主的记录,其中大部分字段的值为null,但是这种方式要求...
  • 1. 类别被三个业务作为外键,而这三个业务对象实际使用时只是其中的一个对象被实例化。 2. 类别的映射文件通过设置3个 set one-to-many 分别关联至三个不同业务对象。 3. 类别对象定义了3个HashSet...
  • Mysql foreignkey 相关

    2018-07-02 08:30:00
    外键是表中与另一个表的另一个字段匹配的字段。外键对相关表中的数据施加限制,这使MySQL能够保持参照完整性。  操作:   能看懂图吗? 下面直接看代码:   我们两个表:customers和orders.每个客户都...
  • 有一个表有两个字段,ID1,ID2,将其设为联合主键,之后我想将另外一个表的一个字段的外键设为ID1,但会提示“与现存的主键或UNIQUE约束不匹配”。没有解决的办法,还是SQL Server不允许这样?谢谢! 不能...
  • 标识列 /* 又称为自增长列 含义:可以不用手动的插入...2、一个表可以几个标识列?至多一个! 3、标识列的类型只能是数值型 4、标识列可以通过 SET auto_increment_increment=3;设置步长 5、可以通过 手动...
  • MySQL----标识列

    2020-09-04 10:53:22
    2.一个表多少个标识列?1个 3.标识列类型只能是数值型。 4.标识列,可以通过SET auto_increment_increment=3;设置步长 也可以通过手动插入值,设置起始值。 */ #一、创建表时设置标识列 DROP TABLE IF EXISTS ...
  • MySQL标识列(自增长列)

    2020-12-02 13:21:24
    MySQL标识列(自增长列) /* 又称为自增长列 含义:可以不用手动的插入值,系统提供...2、一个表可以几个标识列?至多一个! 3、标识列的类型只能是数值型(INT,FLOAT等) 4、标识列可以通过 SET auto_increment_incre
  • mysql之标识列20

    2021-02-24 19:16:51
    2、一个表可以几个标识列?至多一个! 3、标识列的类型只能是数值型。例如int,float这些。 4、标识列可以通过 SET auto_increment_increment=3;设置步长。可以通过 手动插入值,设置起始值。 */
  • 7.一个表可以几个标识列?8.标识列的类型只能是数值类型9.标识列可以通过set auto_increment_increment=3;设置步长,可以通过手动插入值,设置起始值10.修改表时设置标志列11.TCL的全称是什么?12.什么是事务?为...
  • hibernate关联的问题?

    2009-05-05 13:15:35
    我在数据库里面没有设置外键,要关联两个表,一定要设置外键吗? [b]问题补充:[/b] 不知道为什么,不能回贴,只能在这里补充问题了。 to jbin: 我就是只把tb_dept表的id字段作为唯一标记,仅仅是一个唯一的标记...
  • 1.2.1 现有一批邮件需要发送给订阅顾客,且有一个集群(集群的节点数不定,会动态扩容缩容)来负责具体的邮件发送任务,如何让系统尽快地完成发送? 1.2.2 有一批气象观测站,现需要获取这些站点的观测数据,并...
  • 使用SQL语言向每个表中插入至少3条记录 三、模拟常规业务 1)修改客户密码 2)办理银行卡挂失 3)统计银行资金流通余额和盈利结算 银行资金流通余额=总存入金额-总支取金额 盈利结算=总支取金额 * 0.008 – 总存入金额 ...
  • 我是一个DBA,我现在手头有一个数据库,我该从哪里进行性能优化呢?  2. 这是我的数据库的一个Statspack,我该如何优化?  通常对于第一个问题,我是很少回答的,并不是不屑于回答,实在是没有办法回答,如果我...
  • 本书第1章强调不要把数据库当成一个黑盒,讨论了开发人员必须了解的数据库的基本特性和功能。第2章提供了一个创建Oracle数据库的绝好例子,从中你将深入地了解数据库和实例的概念。第3章介绍了各种类型的文件,特别...
  • 11.4.2 一个简单的基于函数的索引例子 414 11.4.3 只对部分行建立索引 422 11.4.4 实现选择的唯一性 424 11.4.5 关于ORA-01743的警告 424 11.4.6 基于函数的索引小结 425 11.5 应用域索引 -1 11.6 关于索引...
  • 应该是一个很简单的问题,下面的代码,无法实现user的删除,在日志输出中,只能看到findById()对应的Select SQL,delete函数对应的SQL看不到,应该是此句没有执行。 另外,如果直接用一个Session去做这些事的话,是...
  • c++ 面试题 总结

    2009-09-16 08:44:40
    段式管理:把主存分为一段一段的,每一段的空间又要比一页一页的空间小很多,这种方法在空间利用率上又比页式管理高很多,但是也另外一个缺点。一个程序片断可能会被分为几十段,这样很多时间就会被浪费在计算每一...
  • Oracle事例

    2007-08-26 10:35:53
    当指定时,如果父中的记录被删除,则依赖于父的记录也被删除 REFERENCE 表名() on delete cascade; 7、删除带约束的 Drop table 表名 cascade constraints; 8:索引管理 <1>.creating function-based...

空空如也

空空如也

1 2
收藏数 26
精华内容 10
关键字:

一个表只能有一个外键吗