精华内容
下载资源
问答
  • 一张表的主键个数为
    千次阅读
    2021-01-19 05:33:29

    转自:http://blog.csdn.net/for12/article/details/49300843

    今天在共工作,做老项目维护的时候无意中发现一张表居然有三个主键。吓死宝宝了,然后尝试着建表建主键,但是都不能成功。

    doubt.gif

    难道是我写的有问题,最后通过查资料总终于解决了。

    1、数据库的每张表只能有一个主键,不可能有多个主键。

    2、所谓的一张表多个主键,我们称之为联合主键。

    注:联合主键:就是用多个字段一起作为一张表的主键。

    3、主键的主键的作用是保证数据的唯一性和完整性,同时通过主键检索表能够增加检索速度。

    下面聊聊怎么创建联合主键:

    1、GUI中同时选中多列,点击设置为主键。

    2、sql语句将多列设置为主键:

    一种是在建表时就写出,语句如下:

    Create Table 表名 (字段名1 Int Not Null,

    字段名2 nvarchar(13) Not Null Primary Key (字段名1, 字段名2),

    字段名3…………

    字段名N………… )

    另一种是在建表后更改,语句如下:

    ALTER TABLE 表名 WITH NOCHECK ADD

    CONSTRAINT [PK_表名] PRIMARY KEY  NONCLUSTERED

    (

    [字段名1],

    [字段名2]

    )

    通过以上两种方式就解决了联合主键的问题。

    更多相关内容
  • 更正一下数据库结构:A:id、name、one、two、threeB:id、name、parentid(B自关联)现在项目中的需求是,把全部的数据列表,每一条A记录占一行,A记录中onetwothree的位置显示B中对应的name。请各位高手...

    引用:

    和期望的结果有差距,无法进一步操作。

    准确的说,想要的效果是查询结果是一条记录……能实现吗?

    更正一下数据库结构:

    A表:id、name、one、two、three

    B表:id、name、parentid(B表自关联)

    现在项目中的需求是,把全部的数据列表,每一条A记录占一行,A记录中one two three的位置显示为B表中对应的name。

    请各位高手帮忙解答一下,谢谢!

    语句:

    --测试数据

    ;WITH A(id,name,one,two,three)AS(

    select 1,"A",1,2,3 UNION ALL

    select 2,"B",3,4,5

    ),B(id,name)AS

    (

    SELECT 1,"id1" UNION ALL

    SELECT 2,"id2" UNION ALL

    SELECT 2,"id2" UNION ALL

    SELECT 3,"id3" UNION ALL

    SELECT 4,"id4" UNION ALL

    SELECT 5,"id5"

    )

    --测试数据结束

    SELECT  id ,

    A.name ,

    ( SELECT TOP 1

    name

    FROM      B

    WHERE     A.one = B.id

    ) AS one ,

    ( SELECT TOP 1

    name

    FROM      B

    WHERE     A.two = B.id

    ) AS two ,

    ( SELECT TOP 1

    name

    FROM      B

    WHERE     A.three = B.id

    ) AS three

    FROM    A;

    结果:

    793137670bacf2d86834c1dd63402334.png

    展开全文
  • 数据库的单个数据中只能有一个主键。数据库主键,指的是一列或多列的组合,其值能唯一地标识中的每一行,通过它可强制的实体完整性;主键主要是用与其他的外键关联,以及本记录的修改与删除。数据库的单个...

    数据库的单个数据表中只能有一个主键。数据库主键,指的是一个列或多列的组合,其值能唯一地标识表中的每一行,通过它可强制表的实体完整性;主键主要是用与其他表的外键关联,以及本记录的修改与删除。

    4de34d12abcfac82c43c135eac5ca543.png

    数据库的单个数据表中只能有一个主键。

    数据库主键,指的是一个列或多列的组合,其值能唯一地标识表中的每一行,通过它可强制表的实体完整性。主键主要是用与其他表的外键关联,以及本记录的修改与删除。

    1、数据库的每张表只能有一个主键,不可能有多个主键。

    2、所谓的一张表多个主键,我们称之为联合主键。

    注:联合主键:就是用多个字段一起作为一张表的主键。

    3、主键的主键的作用是保证数据的唯一性和完整性,同时通过主键检索表能够增加检索速度。

    下面聊聊怎么创建联合主键:

    1、GUI中同时选中多列,点击设置为主键。

    2、sql语句将多列设置为主键:

    一种是在建表时就写出,语句如下:Create Table 表名 (字段名1 Int Not Null,

    字段名2 nvarchar(13) Not Null Primary Key (字段名1, 字段名2),

    字段名3…………

    字段名N………… )

    另一种是在建表后更改,语句如下:ALTER TABLE 表名 WITH NOCHECK ADD

    CONSTRAINT [PK_表名] PRIMARY KEY NONCLUSTERED

    (

    [字段名1],

    [字段名2]

    )

    推荐教程:《sql视频教程》

    展开全文
  • 一张表主键作为外键关联到另一张表中1、外键的介绍2、使用Navicat创建外键3、外键的维护关系设定 1、外键的介绍 设置外键的作用很明显,就是讲两个表的数据产生关联,就比如个人信息和部门之间,部门的...


    1、外键的介绍

    设置外键的作用很明显,就是讲两个表的数据产生关联,就比如个人信息表和部门表之间,部门表的部门id就可以作为一个外键存放于个人信息表中,除此之外设定外键在父子表中的维护关系,可以达到一个类似于级联的操作,就是当父级表(主键作为外键的表)数据变化时,子表(拿着别的表的主键作为自己的外键的表)就会有相应的数据变化;


    2、使用Navicat创建外键

    其实只要找到外键设定的地方就可以了,很简单~,如下图:
    在这里插入图片描述
    只要按照那一列的名字选择好对应的外键表、外键列等信息即可,其中有一个比较重要的就是外键维护关系的选择,就是最后两栏~


    3、外键的维护关系设定及其选择

    外键的维护关系不论是外键的更新还是删除都分为四级,下面是对四级的介绍;

    • CASCADE:父表delete、update的时候,子表会delete、update掉关联记录;
    • SET NULL:父表delete、update的时候,子表会将关联记录的外键字段所在列设为null,所以注意在设计子表时外键不能设为not null;
    • RESTRICT:如果想要删除父表的记录时,而在子表中有关联该父表的记录,则不允许删除父表中的记录;
    • NO ACTION:同 RESTRICT,也是首先先检查外键;

    关于这四种维护关系的选择需要根据情况而定,比如:

    • 订单表和人员表,当用户注户后,该用户的订单信息需要被清空(至少在当前正在使用的数据库中需要被移出),那么订单表中的外键-人员id,他的维护关系就需要定为"CASCADE"级别的;

    其他的情况就不一一介绍了;


    《END》

    展开全文
  • 关于数据库一张表有几个主键

    千次阅读 2021-09-15 22:20:55
    这时候就会出现一张表中有多个主键,我们称之联合主键,多字段放在一起作为作为一张表主键主键主键的作用是保证数据的唯一性和完整性,同时通过主键检索能够增加检索速度。 Create TABLE SC( Sno char...
  • 什么数据库只有一个主键

    千次阅读 2021-02-03 09:41:01
    (关系)"超级键"是每组在中具有唯一子行的列集。 (请注意,超级密钥的每超集也是一超级密钥。)(简单的SQL KEY声明了什么,以及那些超集。)不包含较小超级密钥的超级密钥是"候选密钥&...
  • oracle
  • Oracle查询表主键、外键

    千次阅读 2021-05-07 13:45:05
    Oracle查询表主键、外键1. 查找的所有索引(包括索引名,类型,构成列)select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name and t.table_name = i.table_name and ...
  • 例如用户 user_id user_name 1 zhangsan ... 另一张money,表示了借钱的关系 id from to how 1 1 2 100 2 3 4 100 关联查询 select m.id,u1.use...
  • 在我们开发的过程中,总感觉一张表就一个主键。但是事情往往没有我们想象的那么简单,一张表其实也是可以有多个主键。 如上图所示,其实说多个主键也不对,可以说是复合主键。意思 这2字段都不是唯一的,2...
  • 许多时候实现目标功能都会遇到一张表里两外键指向同一个表主键,即用一个表1关联另一个表2,1里却使用了两相同的外键去关联2的主键,但是指向2的事物是不同的,若不懂,直接看下列例子。
  • 尽管有人问过这问题,但...我有一个表:Customer_orders,将值插入到其中:insert into customer_order (order_date,delivered ,shipping_date,customer_number )values ( SUBDATE(NOW(), INTERVAL 17 DAY), 1, SU...
  • 2、所谓的一张表个主键,我们称之联合主键。  注:联合主键:就是用多字段一起作为一张表主键。 3、主键主键的作用是保证数据的唯一性和完整性,同时通过主键检索能够增加检索速度。
  • 2、所谓的一张表个主键,我们称之联合主键。 注:联合主键:就是用多字段一起作为一张表主键。 3、主键主键的作用是保证数据的唯一性和完整性,同时通过主键检索能够增加检索速度。 ...
  • 表格1:tid(主键)//这里没有外键2:sid(主键)//这里也没有外键3:TidSidiid(primary key)foreign key(Tid,Sid) references table1(tid).table2(sid)In table3 i want to make a composite foreign key or ...
  • 1、复制库把db1的所有东西,复制到db2中...mysqldump db1 -uroot -p123456 --add-drop-table | mysql db2 -u root -p123456如果2mysql不是同一台服务器,可用 -h 参数mysqldump db1 -uroot -p123456 --add-drop-t...
  • SELECT TF_SCHOOL_DORMITORY_INFO.*, tsi.STAFF_NAME “ceoName”, ts_staff_info.STAFF_NAME AS “houseMasterName” FROM ( SELECT * FROM ts_staff_info ) tsi right join TF_SCHOOL_DORMITORY_INFO ON tsi.STAFF...
  • 我想要有两个表,所以我可以将旧记录移动到第二个表,所以我保持主小,但仍然希望能够链接到两个表使用一int首要的关键。 (我已经简化了这例子,从我真正的表格...SQL,两个表,一共享主键Sessions---------...
  • I want to reference 2 of my columns in one table to a primary key from another table. Here is how it looks like in the db structure:Usersuid (INT) name (VARCHAR)1 John Doe2 Jane Doe...
  • 1. 利用Oracle中系统自带的两视图可以实现查看主键信息, 语句如下: select a.constraint_name, a.column_name from user_cons_columns a, user_constraints b where a.constraint_name = b.constraint_...
  • 之间有一对多、多对多的关系,只要涉及到之间的关联们就会涉及到外键和主键 知识点:   那么怎么设置外键呢? demo: 现在有两张,user(编号、姓名、职务、工种、部门)、kinds (工种、...
  • 怎么看MYSQL主键

    千次阅读 2021-01-27 02:22:11
    怎么看MYSQL主键关注:147答案:3mip版解决时间 2021-01-19 21:58已解决2021-01-19 05:29在可视化界面最佳...选择设计,在字段后面有黄色的钥匙,那个字段就是主键。尽管客户端不同,但查看应该都是在设计...
  • 请问数据库里的一列字段是以这种形式的 ["1","6","7","8","9","10","11","24"] 储存别的主键 有什么方法可以把另外一张表的name属性取出来放到jsp里吗
  • 现有A1、B1两张,表字段相同,都有id字段的自增主键,需要将B1中的部分数据导入到A1中,SQL如下: INSERT INTO DB.A1 (a,b,c) select a,b,c from DB.B1 where date>='2018-11-01' and date<='2018-12-24...
  • SQL中的每一张表都必须设有主键

    千次阅读 2021-01-28 06:59:10
    如果用户看到了一表示多对多关系的连接中的数据,并抱怨它没有什么用处,那就证明它的主键设计地很好。2)永远也不要更新主键。实际上,因为主键除了唯一地标识一行之外,再没有其他的用途了,所以也就没有理由去...
  • 如何查找一个表主键列名.

    千次阅读 2020-12-24 19:38:18
    本帖最后由 yulihua49 于 2011-9-21 16:07 编辑在这表里:desc all_cons_columnsName Null? Type----------------------------------------- -------- ----------------------------OWN...
  • 如何给一数据库添加主键

    万次阅读 2020-12-03 09:46:06
    一张表有且只能有一个主键主键具有唯一性。) CREATE TABLE tb ( id INT IDENTITY(1,1) PRIMARY KEY, name VARCHAR(20) ) 2.在创建的时候在所有字段后面使用primary key(主键字段列表)来创建主键(如果有多...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 131,756
精华内容 52,702
热门标签
关键字:

一张表的主键个数为