精华内容
下载资源
问答
  • sql-创建复合主键

    2021-05-20 08:10:31
    2、所谓的一张表多个主键,我们称之为复合主键(联合主键)。 注:联合主键:就是用多个字段一起作为一张表的主键。 二、创建复合主键(联合主键)有两种方法: 法1:创建表是 创建复合主键 Create Table ...

     

    一、说明:

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

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

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

     

    二、创建复合主键(联合主键)有两种方法:

    法1:创建表是 创建复合主键

    Create Table 表名 (字段名1 字段类型 【Not Null】,
                       字段名2 字段类型 【Not Null】,
                       Primary Key (字段名1, 字段名2),
                       字段名3…………
                       字段名N………… )
    
    CREATE TABLE 多个主键
    (
    NAME VARCHAR(20),
    TYPE VARCHAR(20),
    PRIMARY KEY (NAME,TYPE),#要保证这两个字段非空
    price INT
    );

     法2 :修改表示增加主键

    CREATE TABLE 多个主键
    (
    NAME VARCHAR(20),
    TYPE VARCHAR(20),
    price INT
    );
    
    ALTER TABLE 多个主键 ADD  PRIMARY KEY (NAME,TYPE) ;

     三、删除主键 --注意,复合主键要删一起删,不能只删一个

    alter table 表名 drop primary key;

     例:

    ALTER TABLE 多个主键 DROP PRIMARY KEY;

     结果

    #但是如果想只删除一个主键,那这样写是不行的
    ALTER TABLE 多个主键 MODIFY COLUMN NAME  VARCHAR(20) ;
    show index from 多个主键;

     

    展开全文
  • 使用复合主键作为外键

    千次阅读 2021-02-01 21:26:41
    小编典典该行:FOREIGN KEY (pk_studentID ) REFERENCES ...要将复合主键用作外键,您必须向子表中添加相同数量(组成PK)的相同数据类型的列,然后在FOREIGNKEY定义中使用这些列的组合:CREATE TABLE files(files_nam...

    小编典典

    该行:

    FOREIGN KEY (pk_studentID ) REFERENCES student(pk_studentID ),

    是错的。您不能那样使用pk_studentID,这只是父表中PK约束的名称。要将复合主键用作外键,您必须向子表中添加相同数量(组成PK)的相同数据类型的列,然后在FOREIGN

    KEY定义中使用这些列的组合:

    CREATE TABLE files

    (

    files_name varchar(50) NOT NULL,

    batch_id varchar(4) NOT NULL, --- added, these 3 should not

    dept_id varchar(6) NOT NULL, --- necessarily be NOT NULL

    student_id varchar (25) NOT NULL, ---

    files_path varchar(50),

    files_data varchar(max), --- varchar(max) ??

    files_bookmarks xml, --- xml ??

    --- your question is tagged MySQL,

    --- and not SQL-Server

    CONSTRAINT pk_filesName

    PRIMARY KEY (files_name),

    CONSTRAINT fk_student_files --- constraint name (optional)

    FOREIGN KEY (batch_id, dept_id, student_id)

    REFERENCES student (batch_id, dept_id, student_id)

    ) ENGINE = InnoDB ;

    2020-05-17

    展开全文
  • 如何将复合主键用作外键?看起来我的尝试不起作用.create table student(student_id varchar (25) not null ,student_name varchar (50) not null ,student_pone int ,student_CNIC varchar (50),students_Email ...

    如何将复合主键用作外键?看起来我的尝试不起作用.

    create table student

    (

    student_id varchar (25) not null ,

    student_name varchar (50) not null ,

    student_pone int ,

    student_CNIC varchar (50),

    students_Email varchar (50),

    srudents_address varchar(250),

    dept_id varchar(6),

    batch_id varchar(4),

    FOREIGN KEY (dept_id) REFERENCES department(dept_id),

    FOREIGN KEY (batch_id) REFERENCES batch(batch_id),

    CONSTRAINT pk_studentID PRIMARY KEY (batch_id,dept_id,student_id) )

    create table files

    (

    files_name varchar(50) not null ,

    files_path varchar(50),

    files_data varchar(max),

    files_bookmarks xml ,

    FOREIGN KEY (pk_studentID ) REFERENCES student(pk_studentID ),

    CONSTRAINT pk_filesName PRIMARY KEY (files_name) )

    解决方法:

    这条线:

    FOREIGN KEY (pk_studentID ) REFERENCES student(pk_studentID ),

    是错的.你不能像这样使用pk_studentID,这只是父表中PK约束的名称.要将复合主键用作外键,您必须将具有相同数据类型的相同数量的列(组成PK)添加到子表,然后在FOREIGN KEY定义中使用这些列的组合:

    CREATE TABLE files

    (

    files_name varchar(50) NOT NULL,

    batch_id varchar(4) NOT NULL, --- added, these 3 should not

    dept_id varchar(6) NOT NULL, --- necessarily be NOT NULL

    student_id varchar (25) NOT NULL, ---

    files_path varchar(50),

    files_data varchar(max), --- varchar(max) ??

    files_bookmarks xml, --- xml ??

    --- your question is tagged MySQL,

    --- and not SQL-Server

    CONSTRAINT pk_filesName

    PRIMARY KEY (files_name),

    CONSTRAINT fk_student_files --- constraint name (optional)

    FOREIGN KEY (batch_id, dept_id, student_id)

    REFERENCES student (batch_id, dept_id, student_id)

    ) ENGINE = InnoDB ;

    标签:sql,mysql,oracle,constraints

    来源: https://codeday.me/bug/20190923/1813714.html

    展开全文
  • MySQL中什么是数据表的复合主键发布时间:2020-11-23 14:03:11来源:亿速云阅读:108作者:小新这篇文章主要介绍MySQL中什么是数据表的复合主键,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看...

    MySQL中什么是数据表的复合主键

    发布时间:2020-11-23 14:03:11

    来源:亿速云

    阅读:108

    作者:小新

    这篇文章主要介绍MySQL中什么是数据表的复合主键,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

    MySQL多字段主键又可以成为复合主键。复合主键也是主键的一种与主键具有相同的功能和定义。

    什么是数据表的复合主键 ?

    所谓的复合主键,就是指你表的主键含有一个以上的字段组成 。

    例如:create table test

    (

    name varchar(19),

    id number,

    value varchar(10),

    primary key (name,id)

    )

    上面的name和id字段组合起来就是你test表的复合主键

    它的出现是因为你的name字段可能会出现重名,所以要加上ID字段这样就可以保证你记录的唯一性

    一般情况下,主键的字段长度和字段数目要越少越好

    什么时候使用复合主键?

    在一个主键不能唯一标识这个表中的记录的时候才使用复合主键

    比如这种时候商品品牌商品型号

    诺基亚920

    三星NOTE2

    诺基亚8088

    比如这样商品品牌可能有重复,都是诺基亚,但是诺基亚厂商生产的商品型号是不会重复的

    也比如,可能好多品牌都有920这个型号,但是一个品牌只有一个920的型号

    所以就靠这样的联合主键来确定这条记录的唯一性

    以上是“MySQL中什么是数据表的复合主键”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

    展开全文
  • 什么是数据表的复合主键所谓的复合主键 就是指你表的主键含有一个以上的字段组成比如create table test(name varchar(19),id number,value varchar(10),primary key (name,id))上面的name和id字段组合起来就是你test...
  • 我有一个名为Shop with this 3 tables的数据库:create table usr(id_usr varchar(20) not null,primary key(id_usr));create table product(id_product varchar(20) not null,id_size varchar(20) not null,price ...
  • We have a table with a composite Primary key consisting of three fields (and it is in MySQL 5.1). There are near 200 inserts and 200 selects per second on this table, and the size of the table is arou...
  • 文章目录 前言 一、主键、联合主键和复合主键 (一)主键 (二)联合主键 (三)复合主键 二、外键、设置种子数目和增量 (一)外键的概念 (二)添加外键 (三)设置种子数目和增量 结语 前言 这篇文章,我们将通过...
  • 如果返回的值大于1,则表示该表具有复合主键。让我们首先创建一个表-createtableDemoTable1324->(->StudentIdint,->StudentNamevarchar(20),->StudentAgeint,->StudentCountryNamevarchar(20)->);...
  • 数据库创建表时,每个表只能有一个主键,但是如果想让多个列都成为主键时,就要用到复合主键。一、主键唯一约束我们知道当某列为主键时,Oracle会自动将此列创建唯一约束。也就是说不允许有相同的值出现。如:...
  • 最近学习一点数据库的基本知识,被一个问题困惑了许久:主键是唯一的索引,那么为何一个表可以创建多个主键呢?其实“主键是唯一的索引”这话有点歧义的。举个例子,我们在表中创建了一个ID字段,自动增长,并设为...
  • 题记:写这篇博客要主是加深自己对语句复合主键的认识和总结实现算法时的一些验经和训教,如果有错误请指出,万分感谢。MySQL建表语句是最基本的SQL语句之一,上面就为您分析最常用的三种MySQL建表语句,如果您对...
  • 所谓的复合主键 就是指你表的主键含有一个以上的字段组成,不使用无业务含义的自增id作为主键。比如上面的name和id字段组合起来就是你test表的复合主键 ,它的出现是因为你的name字段可能会出现重名,所以要加上ID字段...
  • 联合主键和复合主键有什么区别发布时间:2020-07-11 09:52:20来源:亿速云阅读:171作者:Leah这期内容当中小编将会给大家带来有关联合主键和复合主键有什么区别,文章内容丰富且以专业的角度为大家分析和叙述,阅读...
  • mysql添加复合主键的方法

    千次阅读 2021-01-20 19:06:57
    mysql添加复合主键的方法发布时间:2020-09-25 10:12:21来源:亿速云阅读:90作者:小新mysql添加复合主键的方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家...
  • Oracle数据库联合主键

    2021-05-04 05:55:02
    1、定义:主键:在Oracle中,主键指能唯一标识一条记录的单个数据表列或联合的数据表列(联合主键|复合主键)。主键用到的数据 表列数据不能包含空值。而且,一张表只能包含一个主键。2、作用:数据表的联合主键组合不...
  • 然而,要删除现有的主键还有另一个,如果主键被另一个表用作外键,则在尝试删除它时会出现错误。 在某些版本的mysql中,错误消息出现错误(如5.5.17,此错误消息仍然存在),alter table parent drop column id;ERROR ...
  • 复合PRIMARY KEY的SELECT性能取决于许多因素。如果您的表是InnoDB,那么该表隐式地聚集在PRIMARY KEY值上。这意味着如果两个值都包含键,那么对这两个值的搜索将更快;不需要额外的键查找。假设你的查询是这样的:...
  • MyBatis定义复合主键

    2021-02-01 10:46:03
    前为别名后为主查询getXXX语句中字段 SELECTcolid,colname FROM table1SELECT * FROM table2 WHERE id = #{id} AND name = #{name} 复合主键@IdClass有时一个实体的主键可能同时为多个,例如同样是之前...
  • oracle 复合主键

    2021-05-01 03:07:26
    为表创建复合主键:用:alter table 表名add constraint [主键名称]primary key(column_name[,column_name])2。创建表时创建联合主键create table paper (paper_name varchar(50) not null,author_id char(10) not.....
  • 所谓的复合主键 就是指你表的主键含有一个以上的字段组成,不使用无业务含义的自增id作为主键。比如create table test(name varchar(19),id number,value varchar(10),primary key (name,id))上面的name和id字段组合...
  • JPA复合主键

    2021-03-08 14:33:54
    4、复合主键 一般我们设计主键都是使用没有业务含义的一个字段如id,自增作为主键;而有时候业务需要2-n个字段同时作为主键,经典案例就是航空项目里面起飞城市和目的城市,如果要确定唯一的航线就可以用起飞城市和...
  • 数据库主键代码pk

    2021-01-21 15:43:28
    文章 jeffcky 2016-11-26 999浏览量 基于按annotation的hibernate主键生成策略 这里讨论代理主键,业务主键(比如说复合键等)这里不讨论。 一、JPA通用策略生成器 通过annotation来映射hibernate实体的,基于...
  • 在采用数据库自增主键的方案里,如果JDBC驱动不能绑定新增记录对应的主键,就需要手工执行查询语句以获取对应的主键值,对于高并发的系统,这很容易返回错误的主键。通过带缓存的DataFieldMaxValueIncrementer,可以...
  • 一、复合主键所谓的复合主键 就是指你表的主键含有一个以上的字段组成,不使用无业务含义的自增id作为主键。比如create table test(name varchar(19),id number,value varchar(10),primary key (name,id))上面的name...
  • 后来因为查询方式变更,要求将UID和Time两个字段做联合主键,此时表结构如下: 但是问题来了:一但Time字段被更新,即使是相同的UID,也被数据库认为是不同的主键,因此不会产生主键冲突,上面的语句就失效了,...
  • 但是,删除现有主键还有另一个警告 . 如果该主键被另一个表用作外键,则在尝试删除它时会出错 . 在某些版本的mysql中,错误消息格式错误(从5.5.17开始,此错误消息仍然存在alter table parent drop column id;ERROR...
  • 前言这次大创有个需求,在数据库建表时发现,user表与project表的关系表 user_project的主键为复合主键:CREATE TABLE user_project(user_id INT(20),project_id INT(20),timestamp VARCHAR (50),donate_money ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 51,715
精华内容 20,686
关键字:

数据库复合主键