精华内容
下载资源
问答
  • CREATE 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.....

    在这里插入图片描述

    在这里插入图片描述

    CREATE 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,order_item),
    KEY FK_OrderItems_Products (prod_id),
    CONSTRAINT FK_OrderItems_Orders FOREIGN KEY (order_num) REFERENCES orders (order_num),
    CONSTRAINT FK_OrderItems_Products FOREIGN KEY (prod_id) REFERENCES products (prod_id)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    在这里插入图片描述

    展开全文
  • 如何设置多个主键
    其实做法很简单。
    在规定中数据库的唯一性中, 一张表中最多一个主键。
    如果想设置两个主键,那么只有在联合的表中或者是讲两个字段联合起来,
    例如
    	表student(sno, sname, age)
    	表course(cno, sname, grade)
    主键具有唯一性,一张表最多一个主键,
    	但是可以将2个字段联合起来设置为主键。
    
    1、选中表—
    2、设计表—
    3、选中字段(多个按住ctr)
    4、右键设置为主键。
    5、哦了,再去刷新一下。如果之前输入的数据会报错(很正常),是因为主键已经变了。只需要把数据重新输入就好了。
    展开全文
  • 因为主键起始从实现角度来看是一个 唯一 非空 聚类索引, 聚类索引在一个表中只有一个,所以主键只有一个。至于为什么聚类索引在一个表中只有一个是因为聚类索引的数据物理顺序和索引排序方式一致,而物理存储...

    主键:保证数据完整唯一性。

    外键:是关联另外一个表主键的一个键,保证两个表之间的关联性

    索引:加快搜索效率

     

    为什么主键只有一个?

    因为主键起始从实现角度来看是一个   唯一 非空 聚类索引, 聚类索引在一个表中只有一个,所以主键只有一个。至于为什么聚类索引在一个表中只有一个是因为聚类索引表的数据物理顺序和索引排序方式一致,而物理存储方式只有一种,所以聚类索引在一个表中只有一种,详细情况请查看聚类索引。

     

    主键与索引的关系是什么?

    首先主键和索引从目的上来讲不是一个概念,主键是为了保证数据唯一性,索引是为了加快检索速度。但是,从实现方式上主键主键却达到了唯一 非空聚类索引的效果。所以

    1. 从实现目的来看(约束)

       主键约束=唯一非空 约束

    2. 从实现效果来看

       主键 = 唯一

     

    主键外键的关系?

     

       外键(Foreign Key)

      如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字。

      外键的作用:

      保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值!

      例如:

      a b 两个表

      a表中存有客户号,客户名称

      b表中存有每个客户的订单

      有了外键后

      你只能在确信b 表中没有客户x的订单后,才可以在a表中删除客户x

      建立外键的前提: 本表的列必须与外键类型相同(外键必须是外表主键)。

      指定主键关键字: foreign key(列名)

      引用外键关键字: references <外键表名>(外键列名)

      事件触发限制: on delete和on update , 可设参数cascade(跟随外键改动), restrict(限制外表中的外键改动),set Null(设空值),set Default(设默认值),[默认]no action

      例如:

      outTable表 主键 id 类型 int

      创建含有外键的表:

      create table temp(

      id int,

      name char(20),

      foreign key(id) references outTable(id) on delete cascade on update cascade);

      说明:把id列 设为外键 参照外表outTable的id列 当外键的值删除 本表中对应的列筛除 当外键的值改变 本表中对应的列值改变。

      建键几个原则:

      1、 为关联字段创建外键。

      2、 所有的键都必须唯一。

      3、避免使用复合键。

      4、外键总是关联唯一的键字段。

    展开全文
  • 一张可以多少个主键

    万次阅读 多人点赞 2015-10-21 10:20:28
    今天在共工作,做老项目维护的时候无意发现一张居然个主键。吓死宝宝了,然后尝试着建表建主键,但是都不能成功。 难道是我写的问题,最后通过查资料总终于解决了。 1、数据库的每张只能有一个主键,...

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

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

    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]
    )
    
    
    通过以上两种方式就解决了联合主键的问题。



    展开全文
  • 现在2个表部分学校和学校 其中部分学校在A库、学校在B库 SCH_ID为关联主键 部分学校 AUTO_ID USER_ID COTY_NO SCH_ID SCH_NO SCH_NAME 1 17 123 341289001 1 职业学院 学校 SCH_ID SCH_NO SCH_...
  • Computer System Add comments 2010年5月6日更新: 只有真正懂得了这道理的人, 才算真正理解了...在数据库设计, 每一个表都应该有一个字段作为主键. 这字段一般是自增整数字段, 或者某些数据库支持的自动
  • 什么是一个表的外键 他和主键有什么区别吗/?主键:唯一标识表中的所有行的一个列或组列。主键不允许空值。不能存在具有相同的主键值的两行,因此主键值总是唯一标识单个行。表中可以不止一个键唯一标识...
  • 一个表的外键关联到主主键约束或者unique约束都可以,不一定非要主键约束追问:也就是意思是只要能唯一标识一张表中数据,就可以做外键?追答:嗯,但是不能是数据上控制的,必须要约束之才行
  • 外键必须是另一个表主键

    万次阅读 多人点赞 2015-12-30 16:16:46
    不一定是主键,但必须是唯一性索引。 主键约束和唯一性约束都是唯一...外键 (FK) 是用于建立和加强两个表数据之间的链接的列或多列。当创建或修改时可通过定义 FOREIGN KEY 约束来创建外键。 在外键引用
  • 表一t_class: CREATE TABLE `t_class` (  `id` int(20) NOT NULL,  `ClassName` varchar(20) DEFAULT NULL,  `GradeID` int(11) DEFAULT NULL,  `ClassDesc` varchar(20) DEFAULT NULL,  PRIMARY KEY (`...
  • sql 关于一表个主键唯一性的约束

    万次阅读 2019-02-27 17:28:15
    1.对于一般的,我们只需设一个主键,防止重复,但是我们如果设置多个主键,是每个主键唯一性吗?还是多个主键组合起来具有唯一性 2.答案肯定是多个主键合起来具有唯一性,话说太多,现在上例子 3.例如,我建...
  • MySQL必须有主键吗?

    千次阅读 2020-11-04 19:06:27
    因为聚集索引决定了表中数据的物理存储顺序,那么一个表有且只有一个聚集索引。一个聚集索引可以包含多列。好比一个电话本是基于名字,姓氏同时排序。 I nnodb选择一个聚集索引的过程 对于Innodb,主键
  • 分区表主键

    千次阅读 2017-03-31 16:43:48
    如题,现有分区,除主键索引外其余索引均为分区索引,疑问如下: 1、现在dba指出修改计划将表主键的全局索引修改为分区索引,不知道修改后能不能够起到优化的作用?? 2、分区索引对主键中的数据一致性...
  • 情况:如果中间仅仅是做关联用的,它里面仅2外键做联合主键,则使用ManyToMany(不用写中间的Model,只需要写出两张主的model即可) 学生 @Entity @Table(name = "T_STUDENT") @Sequence...
  • 使用sqlalchemy获取到的结果只包含...以及如何获取某张表的主键呢? from sqlalchemy.ext.automap import automap_base from sqlalchemy.orm import sessionmaker from sqlalchemy import MetaData, inspect, creat...
  • MySQL数据表中有自增长主键时如何插入数据

    万次阅读 多人点赞 2015-08-13 10:36:26
    MySQL数据库表中有自增主键ID,当用SQL插入语句中插入语句带有ID列值记录的时候; 如果指定了该列的值,则新插入的值不能和已有的值重复,而且必须大于其中最大的一个值; 也可以不指定该列的值,只将其他列的值插入...
  • 数据库中表主键设计原则

    千次阅读 2007-04-20 14:17:00
    或许大家都设计过数据库,也为定义过主键,今天我想阐述的是,应该如何正确的设计一个主键,在以往的一些资料,都没有提及到主键设计的原则.我为此总结了一下:1.是否要采用GUID作为主键用GUID作主键有它的优势与不足....
  • sqoop增量导入且表主键

    千次阅读 2016-10-18 20:14:48
    之前写过一个sqoop增量导入的文章http://blog.csdn.net/qq_20641565/article/details/52763663,自己控制增量导入,但是那个架构需要有主键值,但是一般在实际中有却没有主键只有增量字段而且数据量特别大,...
  • FAS_BILL_INFO主键为BILL_CODE,新生成一个new_bill_code,把old_bill_code对应的全部复制到新生成new_bill_code的记录; declare  old_bill_code varchar2(44); --旧借据号 旧主键  new_bill_code varchar...
  • 在创建主键的同时会生成对应的唯一索引,主键在保证数据唯一性的...联合主键只是让记录联合的那几字段总体上是唯一的,比如id1 id2 id3三列作为联合主键,那么在这个表中可以id 为1的,但肯定只有一个1 0 0。
  • mysql的多主键

    万次阅读 2019-07-05 17:40:28
    google一个结果得到说 主键 就是unique 和 not null的结合,但经过试验之后发现,在细节上,二者是差异的。 假设这样一个情况: 一个用户,用户ID和用户名都是唯一的。 也就是说,一个ID只能出现次,...
  • sqlserver设置两及两以上主键

    万次阅读 2018-10-14 17:34:13
    首先要明确主键只有一个,但是我们可以设置主键组来设置主键。这样两列就都是主键了。设置方法: 利用图形界面操作 选中方法。按住shift,再点击你要选中的列就ok了。 利用SQL语句 alter table tablename ...
  • 在数据合并等操作中有不可替代的优势但是由于普通的GUID的分散性使得如果主键加上聚集索引(Clustered Index)会导致在插入记录时效率大大降低SQL SERVER 2005中新增了一个NEWSEQUENTIALID的函数,MSDN的解释是:在...
  • SQL SERVER判断表中字段及主键数据是否存在 1.判断A是否存在于数据库 IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id('A') AND OBJECTPROPERTY(id, 'IsUserTable') = 1) PRINT '存在' ELSE ...
  • Oracle 去掉联合主键中

    千次阅读 2017-12-13 11:07:30
    Oracle 去掉联合主键中
  • PostgreSQL数据库测试环境中有多张表没有添加主键约束,只有一个serial的自增字段。现在需要把那些没有主键都加上,serial类型的字段为id 。 首先是怎么找到PostgreSQL数据库中哪些没有主键?我们看下pg_...
  • SQL多个主键,插入数据重复时,会提示违反主键约束不能插入的错误。那么,如何找到插入数据的重复值?解决方法:使用group by假设有个表#a,saleid,vendorid,comid,price,saleprice,quantity等字段。主键是...
  • 查询mysql没有主键

    千次阅读 2019-03-05 15:53:55
    转载来自wc城,感谢 1.查询语句 select concat('alter table ',table_schema,'.',table_name,' add column pkid bigint not null auto_increment primary key;') from information_schema.tables where (table_...
  • 主键关联的重点是关联的两个表共享一个主键值。本例采用,一个单位在网上的一个系统注册会员。 1,会员数据保存在会员company,每会员的登录账号保存在login; 2,一个会员只有一个登录账号,一个...
  • MySQL许多主键生成策略,其中很常见的种是自动生成。一般情况下,主键类型是BIGINT UNSIGNED,自动生成主键的关键词是AUTO_INCREMENT。主键的生成策略是生成器,这种策略不常见,一般用于遗留数据库使用JPA。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 191,514
精华内容 76,605
关键字:

一个表中有且只有一个主键