-
2021-09-15 22:20:55
关系型数据库中,用户在建表时,只能有一个主键,不可能有多个主键的,但有时候我们碰到关系S和我们的关系C存在多对多的联系,在关系数据库中,多对多联系必须建立一个关系模式,而该模式的码是联系两端实体的码加上联系的属性构成的,这时候就会出现一张表中有多个主键,我们称之为联合主键,多个字段放在一起作为作为一张表的主键,主键的主键的作用是保证数据的唯一性和完整性,同时通过主键检索表能够增加检索速度。
Create TABLE SC( Sno char(6) , Pno char(6) , Status char(8), Qty NUMERIC(9), primary key(Sno,Pno), foreign key(Sno) REFERENCES S(Sno), foreign key(Pno) REFERENCES P(Pno) )engine=INNODB charset=utf8;
更多相关内容 -
一张表可以有多少个主键
2021-01-19 05:33:29转自:http://blog.csdn.net/for12/article/details/49300843今天在共工作,做老项目维护的时候无意中发现一张表居然有三个主键。吓死宝宝了,然后尝试着建表建主键,但是都不能成功。难道是我写的有问题,最后通过查...转自:http://blog.csdn.net/for12/article/details/49300843
今天在共工作,做老项目维护的时候无意中发现一张表居然有三个主键。吓死宝宝了,然后尝试着建表建主键,但是都不能成功。
难道是我写的有问题,最后通过查资料总终于解决了。
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]
)
通过以上两种方式就解决了联合主键的问题。
-
一个表中两个外键对应另一张表中一个主键
2020-04-17 21:38:07SELECT 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...
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_ID = TF_SCHOOL_DORMITORY_INFO.STAFF_ID left join ts_staff_info ON TF_SCHOOL_DORMITORY_INFO.RESIDENT_ASSISTANT = ts_staff_info.STAFF_ID
-
一张表多个字段是另一张表的主键,求关联查询语句
2021-01-21 07:08:35更正一下数据库结构: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;
结果:
-
sql 中一个表设置两个主键是 将两个字段联合起来设置为主键 一个表只能有一个主键
2018-10-22 12:02:15CREATE TABLE orderitems ( order_num int(11) NOT NULL, order_item int(11) NOT NULL, prod_id char(10) NOT NULL, quantity int(11) NOT NULL, item_price decimal(8,2) NOT NULL, PRIMARY KEY (order_num,orde..... -
一张表多个主键 联合(组合)主键 复合主键
2019-12-17 14:43:19但是事情往往没有我们想象的那么简单,一张表其实也是可以有多个主键。 如上图所示,其实说多个主键也不对,可以说是复合主键。意思为 这2个字段都不是唯一的,2个字段可以分别重复 复合主键指将两张表关联起来,两... -
Mysql外键关联【一张表两个字段分别与另一张表主键关联】
2019-12-05 16:00:19例如用户表 user_id user_name 1 zhangsan ... 另一张money表,表示了借钱的关系 id from to how 1 1 2 100 2 3 4 100 关联查询 select m.id,u1.use... -
数据库表中有多个“主键
2021-12-09 15:30:09数据库表中的多个主键称为联合...sql 中一个表设置两个主键是 将两个字段联合起来设置为主键 一个表只能有一个主键 1.只有id为主键时 2.id和name这2个列一起构成为联合主键时 甚至可以全部字段设置为主键 ... -
数据库中一张表可以有多少个主键?
2018-09-27 22:01:02今天在工作,做老项目维护的时候无意中发现一张表居然有三个主键。吓死宝宝了,然后尝试着建表建主键,但是都不能成功。 难道是我写的有问题,最后通过查资料总终于解决了。 1、数据库的每张表只能有一个主键,不... -
将一张表的主键作为外键关联到另一张表中
2020-04-27 16:35:06就是讲两个表的数据产生关联,就比如个人信息表和部门表之间,部门表的部门id就可以作为一个外键存放于个人信息表中,除此之外设定外键在父子表中的维护关系,可以达到一个类似于级联的操作,就是当父级表(主键作为... -
如何在sql server中设置两个主键
2020-12-30 21:21:51建立主键有两种方法:一种是在数据库提供的GUI环境中建立,另一种是通过SQL语句执行建立,下面分别介绍。1、在数据库提供的GUI环境中建立。输入表信息后按Ctrl键同时选中多行,然后点上面的主键按钮就行了。2、通过... -
谈所谓的一张表多个主键,我们称之为联合主键
2017-10-25 18:32:591、数据库的每张表只能有一个主键,不可能有多个主键。 2、所谓的一张表多个主键,我们称之为联合主键。 注:联合主键:就是用多个字段一起作为一张表的主键。 3、主键的主键的作用是保证数据的... -
SQL--当一张表的两个外键指向同一主键
2017-11-26 18:54:54最近遇到了这样一个问题,当一张表中有两个外键同时执行了另外一种表的主键,如何建立一张视图,让这两个外键都找到相应的信息。来实例吧:第一张表,归还记录:第二张表,用户表:问题就是,归还记录表里有两个字段,... -
如何在sql server中设置两个主键?
2020-12-21 20:37:04建立主键有两种方法:一种是在数据库提供的GUI环境中建立,另一种是通过SQL语句执行建立,下面分别介绍。1、在数据库提供的GUI环境中建立。输入表信息后按Ctrl键同时选中多行,然后点上面的主键按钮... -
oracle中查看一张表是否有主键,主键在哪个字段上
2022-01-10 17:03:501. 利用Oracle中系统自带的两个视图可以实现查看表中主键信息, 语句如下: select a.constraint_name, a.column_name from user_cons_columns a, user_constraints b where a.constraint_name = b.constraint_... -
【数据库】给表添加多个主键
2021-03-25 10:40:18如果已有主键需要先删除再同时添加。 错误示范: -
将两个表中的主键不同数据查找出来并添加到一张新表中的sql示例
2017-10-13 15:55:32//将两个表中的主键不同数据查找出来并添加到一张新表中 INSERT INTO t_user SELECT usera.userid, usera.name, usera.department, usera.position, usera.mobile, usera.gender, usera.email, usera.weixinid, ... -
mysql建表时怎么设置主键?
2021-03-04 02:44:07设置方法:在“CREATE TABLE”语句中,通过“PRIMARY KEY”关键字来指定主键,语法格式“字段名 数据类型 PRIMARY KEY [默认值]”或“...一般情况下,为了便于 DBMS 更快的查找到表中的记录,都会在表中设置一个... -
一张表两个主键 在另外一张表中怎么用外键引用它?
2014-05-30 08:04:50一张表两个主键 在另外一张表中怎么用外键引用它? 麻烦帮忙解决一下。 非常感谢。 -
数据库中一个表中如何设置两个主键
2014-12-20 21:22:16如何设置多个主键 -
Oracle报错:ORA-02260——表只能有一个主键
2021-12-07 10:38:41Oracle报错:表只能有一个主键。总结及解决方案。 -
两张表主键相同,根据主键一张表主键更新另一张表数据的方法
2015-03-10 22:14:29update DSP_DATAMAN_RES_REGISTER_COL set dicttypefiltersql = (select dicttypefiltersql from DICT_TEMP where DSP_DATAMAN_RES_REGISTER_COL.unid=DICT_TEMP.unid) where exists (select 1 from DICT_TEMP wher -
MySQL-将主键从一个表插入到另一个表(外键)
2021-01-19 01:39:55尽管有人问过这个问题,但由于我不断收到错误,它并没有真正适应我希望它对我的工作方式。我有一个表:Customer_orders,将值插入到其中:insert into customer_order (order_date,delivered ,shipping_date,... -
oracle 从一张表查询的数据批量插入另一张表,其中另一张表主键使用序列
2022-01-06 09:23:22oracle -
mysql表怎么设置一个表的外键是另一张表的主键 怎么设置外键?
2018-11-23 14:17:05表与表之间有一对多、多对多的关系,只要涉及到表与表之间的关联们就会涉及到外键和主键 知识点: 那么怎么设置外键呢? demo: 现在有两张表,user表(编号、姓名、职务、工种、部门)、kinds表 (工种、... -
数据库建表时一个表最多可以有几个主键,几个外键
2021-01-19 12:54:31展开全部主键只有一个,但是可以设置...数据库的每张表只能有一个主键,不可能有多个主键。所谓的一张表多个主键,我们称之为联合主键。联合主键就是用多个字段一起作为一张表的主键。主键的主键的作用是保证数据的...