精华内容
下载资源
问答
  • sql新建数据库表,及添加多个主键

    千次阅读 2021-01-19 08:50:09
    create table tb_Modules(module_Id int identity(1,1) primary key, (自增)model_Name varchar(50) not null,page_Id int foreign key(page_Id) references tb_Page(page_Id)(设置外键))go此创建表(当然有的时候...

    create table tb_Modules

    (

    module_Id int identity(1,1) primary key,  (自增)

    model_Name varchar(50) not null,

    page_Id int foreign key(page_Id) references tb_Page(page_Id)(设置外键)

    )

    go

    此为创建表

    (当然有的时候根据实际有求也会这样建表)

    create table tb_Modules

    (

    module_id int,

    model_Name varchar(50),

    page_id int(外键)

    )

    drop table tb_Modules  删除表

    ----------------------------------------------(sql语句添加多个主键)

    create table tb_ModelColumn

    (

    brand_Id int ,

    sort_Id int,

    series_Id int ,

    PRIMARY KEY(brand_Id,sort_Id,series_Id),

    modelColumn_Property varchar(1000)

    )

    展开全文
  • 数据库多个主键(联合主键)

    千次阅读 2017-09-04 10:47:51
    创建某表,需要两个主键(INST_ID,INST_RESP_CODE) CREATE TABLE CODE_CONVERTER_20170806 ( INST_ID CHARACTER(4) NOT NULL, INST_RESP_CODE VARCHAR(32) NOT NULL, TRANS_CODE VARCHAR(8) NOT NULL, INST_...

    创建某表,需要两个主键(INST_ID,INST_RESP_CODE)

    CREATE TABLE CODE_CONVERTER_20170806 (
    	INST_ID CHARACTER(4) NOT NULL,
    	INST_RESP_CODE VARCHAR(32) NOT NULL,
    	TRANS_CODE VARCHAR(8) NOT NULL,
    	INST_RESP_MSG VARCHAR(128),	
    	RESV1 VARCHAR(32),
    	RESV2 VARCHAR(64),
    	PRIMARY KEY (INST_ID, INST_RESP_CODE)
    ) 
    COMMENT ON TABLE CODE_CONVERTER IS '响应码转换表';
    COMMENT ON COLUMN CODE_CONVERTER.INST_ID IS '机构编号';
    COMMENT ON COLUMN CODE_CONVERTER.INST_RESP_CODE IS '机构的返回码';
    COMMENT ON COLUMN CODE_CONVERTER.TRANS_CODE IS '交易码';
    COMMENT ON COLUMN CODE_CONVERTER.INST_RESP_MSG IS '机构的返回消息';
    COMMENT ON COLUMN CODE_CONVERTER.RESV1 IS '保留域1';
    COMMENT ON COLUMN CODE_CONVERTER.RESV2 IS '保留域2';
    


    展开全文
  • 最近学习一点数据库的基本知识,被一个问题困惑了许久:主键是唯一的索引,那么为何一个表可以创建多个主键呢? 其实“主键是唯一的索引”这话有点歧义的。举个例子,我们在表中创建了一个ID字段,自动增长,并设...

    最近学习一点数据库的基本知识,被一个问题困惑了许久:主键是唯一的索引,那么为何一个表可以创建多个主键呢?
    其实“主键是唯一的索引”这话有点歧义的。举个例子,我们在表中创建了一个ID字段,自动增长,并设为主键,这个是没有问题的,因为“主键是唯一的索引”,ID自动增长保证了唯一性,所以可以。
    此时,我们再创建一个字段name,类型为varchar,也设置为主键,你会发现,在表的多行中你是可以填写相同的name值的,这岂不是有违“主键是唯一的索引”这句话么?
    所以我才说“主键是唯一的索引”是有歧义的。应该是“当表中只有一个主键时,它是唯一的索引;当表中有多个主键时,称为复合主键,复合主键联合保证唯一索引”。
    为什么自增长ID已经可以作为唯一标识的主键,为啥还需要复合主键呢。因为,并不是所有的表都要有ID这个字段啊哈哈,比如,我们建一个学生表,没有唯一能标识学生的ID,怎么办呢,学生的名字、年龄、班级都可能重复,无法使用单个字段来唯一标识,这时,我们可以将多个字段设置为主键,形成复合主键,这多个字段联合标识唯一性,其中,某几个主键字段值出现重复是没有问题的,只要不是有多条记录的所有主键值完全一样,就不算重复。

    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]
    )
    展开全文
  • 主键是非常不幸的符号,因为“初级”的内涵和与逻辑模型有关的潜意识联想。 因此我避免使用它。 相反,我指的是物理模型的代理键和逻辑模型的自然键。重要的是,每实体的逻辑模型至少具有一组“业务属性”,其包括...

    主键是非常不幸的符号,因为“初级”的内涵和与逻辑模型有关的潜意识联想。 因此我避免使用它。 相反,我指的是物理模型的代理键和逻辑模型的自然键。

    重要的是,每个实体的逻辑模型至少具有一组“业务属性”,其包括实体的密钥。 Boyce,Codd,Date等在关系模型中将这些称为候选键。 然后,当我们为这些实体构建表时,它们的候选键在这些表中成为自然键。 只有通过那些自然键,用户才能唯一地识别表中的行; 因为代理键应始终对用户隐藏。 这是因为代理键没有商业意义。

    然而,在没有代理键的情况下,我们的表的物理模型在许多情况下效率低下。 回想一下,非聚集索引的非覆盖列只能通过密钥查找(通常)找到聚簇索引(忽略作为堆积实现的表)。 当我们的可用自然密钥很宽时,这(1)扩大了我们的非聚簇叶节点的宽度,增加了存储要求,并且对非聚集索引的搜索和扫描进行了读取访问; (2)减少聚集索引的扇出,增加索引高度和索引大小,再次增加聚簇索引的读取和存储要求; (3)增加了我们的聚簇索引的缓存要求。 从缓存中追逐其他索引和数据。

    这是一个小的代理键,被指定为RDBMS作为“主键”证明是有益的。 当设置为聚类键时,为了用于从非聚集索引和相关表中的外键查找中查找聚簇索引的键,所有这些缺点都消失了。 我们的聚簇索引扇出再次增加以减少聚簇索引的高度和大小,减少聚簇索引的缓存负载,减少通过任何机制访问数据时的读取(无论是索引扫描,索引搜索,非聚簇键查找还是外键查找) 并降低表的聚簇索引和非聚簇索引的存储要求。

    请注意,仅当代理键很小且聚类键时才会发生这些好处。 如果GUID用作聚类键,则情况通常比使用最小可用自然键时更糟。 如果表被组织为堆,则8字节(堆)RowID将用于键查找,这比16字节GU

    展开全文
  • 数据库主键指的是一个列或多个列组合,其值能唯一标注表中的每一行,通过他可以强制表的实体完整性。主键可以用来表示一个精确定位的特定行,如果没有主键,无法精准定位一条记录是否就是你的相关行记录,这样就...
  • 数据库什么主键

    千次阅读 2020-05-27 21:48:13
    数据库主键 主键:表中经常有一个列或列的组合,其值能唯一地标识表中的每一行。...通俗叫:一个表中只能有一个主键,不接受空值,能唯一的表示表中的每一行。 例如:银行卡的卡号就是主键,不存在重复的情况。 ...
  • MySQL数据库中指定的两个主键

    千次阅读 2021-01-27 07:07:41
    我正在尝试创建一测试数据库,它是预先存在的数据库的副本....在模型中,表中的一表有两列标识为主键.column1 = models.IntegerField(primary_key = True)column2 = models.IntegerField(prima...
  • 多个设置成主键时提示:无法将多个 PRIMARY KEY 约束添加到表 ‘表名’。 其实MS SQL是不能这样设置2个主键create table hello(id int primary key,name varchar(40) primary key); 应该是create table hello(id...
  •  每了解数据库设计的人都知道,主键对于一张表来说是一很重要,甚至必需的部分。这确实是事实,主键是好的数据库设计的一部分。主键数据库确保数据行在整张表唯一性的保障。它是定位到一条记录并且确保不会...
  • 为什么数据库尽量不用UUID作为主键

    千次阅读 2020-07-26 22:53:25
    注:本文数据库主要以Mysql InnoDB存储引擎为基础进行讨论。 我们都知道在选择主键的类型的时候,尽量避免随机的(不连续且值得分布范围非常大)值作为数据库主键,特别是对于I/O密集型得应用。那么为什么
  • 1、数据库的每张表只能有一个主键,不可能有多个主键。 2、所谓的一张表多个主键,我们称之联合主键。  注:联合主键:就是用多个字段一起作为一张表的主键。 3、主键的主键的作用是保证数据的唯一性和完整性...
  • 数据库的单个数据表中只能有一个主键数据库主键,指的是一个列或列的组合,其值能唯一地标识表中的每一行,通过它可强制表的实体完整性;主键主要是用与其他表的外键关联,以及本记录的修改与删除。数据库的单个...
  • 如何设置多个主键
  • 浅谈关系型数据库主键设置策略

    万次阅读 2021-03-14 21:21:12
    几乎大多数的应用都会使用关系型数据库进行数据存储,而主键一定是标配。那么,在您的应用中,通常使用什么方案来满足业务扩张呢?下面简单介绍普遍做法以及改进之道。 第一层:业务布局之初。众所周知,企业业务刚...
  • 如何给一个数据库表添加主键

    千次阅读 2020-12-03 09:46:06
    想给数据库表格增加主键,当然这分为两种情况。 1你还没建立表格。这时候在create语句中添加即可。 1.创建表的时候直接在表字段后,跟primary key关键字。(一张表有且只能有一个主键,主键具有唯一性。) CREATE ...
  • 数据库主键、联合主键

    千次阅读 2019-09-18 22:41:43
    数据库联合主键:可以将多个列作为主键。(当多个列一起作为主键时,这里面的列均不能空,但列值可以重复(不能所有的列值均一样,至少有一个不同)) 当创建或更改表时可通过定义 PRIMARY KEY约束来创建主键。一...
  • 为什么数据库要主键

    千次阅读 2015-01-25 17:28:13
    主键可以由一个字段,也可以由多个字段组成,分别成为单字段主键或多字段主键。 作用 1)保证实体的完整性; 2)加快数据库的操作速度 3) 在表中添加新记录时,ACCESS会自动检查新记录的主键值,不允许该值与...
  • UUID.randomUUID().toString()是javaJDK提供的一自动生成主键的方法。UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的,是由一十六...
  • 达梦数据库表字段涉及到表的主键问题,需要设置主键、非空等特性。 总结: 1、修改数据表字段类型和长度 --设置字段类型和长度 alter table "SYSDBA"."MY_TABLE" modify "ID" VARCHAR2(50); 2、增加和去除唯一...
  • 数据库MySQL之主键约束、唯一约束是什么? 文章目录1. 主键约束2. 唯一约束2.1 UNIQUE KEY 1. 主键约束 主键可以写PRIMARY KEY,也可以写成KEY 每张数据表只能存在一个主键 主键保证记录的唯一性 主键自动NOT ...
  • 关于业务主键和逻辑主键的思考 这几天对逻辑主键、业务主键和复合主键进行了一些思考,也在网上搜索了一下相关的讨论,相关讨论可以看最下面的参考链接。下面是自己基于 SQL Server 做的一些总结,其他数据库...
  • PostgreSQL数据库设置主键的自增ID

    千次阅读 2021-01-21 11:56:07
    平常使用最多的数据库是mysql,但是使用navicate连接 mysql设置主键id自增是很简单的,就不描述了。 下面描述一下使用navicate连接postgreSql数据库如何进行主键id自增。 postgreSql数据库没有自增字段这一说法,...
  • mysql-为什么主键要用自增整型

    千次阅读 2020-05-16 12:09:22
    前段时间做了一次数据库主键uuid改为自增int降低插入数据iops的小小实践,当然影响插入iops的不...亿级别,分多个表,每个表的数据量在百万级别。主键为varchar类型uuid,其他字段的索引2个。具体的数据结构因为涉及...
  • 谈谈企业信息系统数据库设计是使用id主键还是uuid逻辑主键或业务主键
  • 数据库设计中主键字段类型的选择

    千次阅读 2021-01-18 18:44:21
    从最后一次发表的文章到现在已经是两个多月的时间了,一直都想写点什么,可一直没有时间(其实都是借口),随笔内容无疑就是工作学习中的总结,经验的分享,也是自己成长的一面镜子,好了,言规正传,这次谈谈在数据库...
  • 表一t_class: CREATE TABLE `t_class` (  `id` int(20) NOT NULL, ...主键,外键问题一直都搞不懂 ,有时候添加外键后就会出如图警告,也不知道怎么回事,真心求教啊!!!!!!
  • 多个表与表有外键关联,建表设置外键后发现,单表主键不能设置自增,翻过来也不行 解决方法: 先不自增,创建表和外键 然后 set foreign_key_checks = 0; ALTER TABLE ‘abc’ MODIFY COLUMN id int(11) NOT NULL ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 380,630
精华内容 152,252
关键字:

数据库为什么要设置多个主键