精华内容
下载资源
问答
  • 转自:http://blog.csdn.net/for12/article/details/49300843今天在共工作...1、数据库的每张只能个主键,不可能个主键。2、所谓的一张表个主键,我们称之为联合主键。注:联合主键:就是用多个字段一起...

    转自: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]

    )

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

    展开全文
  • 展开全部主键只有一个,但是可以设置...数据库的每张只能个主键,不可能个主键。所谓的一张表个主键,我们称之为联合主键。联合主键就是用多个字段一起作为一张表的主键。主键的主键的作用是保证数据的...

    展开全部

    主键只有一个,但是可以设置为多个字段为主键,也即联合主键。62616964757a686964616fe58685e5aeb931333366306538外键就是自己设置了也即可以有多个,可以设置除主键以外的其他字段全部是外键的。

    数据库的每张表只能有一个主键,不可能有多个主键。所谓的一张表多个主键,我们称之为联合主键。联合主键就是用多个字段一起作为一张表的主键。主键的主键的作用是保证数据的唯一性和完整性,同时通过主键检索表能够增加检索速度。

    3e65f64102d0b52d97558a99a4bb43d9.png

    扩展资料:

    一、数据库模型:

    1、对象模型

    2、层次模型(轻量级数据访问协议)

    3、网状模型(大型数据储存)

    4、关系模型

    5、面向对象模型

    6、半结构化模型

    7、平面模型(表格模型,一般在形式上是一个二维数组。如表格模型数据Excel)

    二、数据库的架构:

    数据库的架构可以大致区分为三个概括层次:内层、概念层和外层。

    1、内层:最接近实际存储体,亦即有关数据的实际存储方式。

    2、外层:最接近用户,即有关个别用户观看数据的方式。

    3、概念层:介于两者之间的间接层。

    三、数据库索引:

    索引跟字段有着相应的关系,索引即是由字段而来,其中字段有所谓的关键字段(Key Field),该字段具有唯一性,即其值不可重复,且不可为“空值(null)"。例如:在合并数据时,索引便是扮演欲附加字段数据之指向性用途的角色。故此索引为不可重复性且不可为空。

    展开全文
  • 数据库中的约束,顾名思义即是对插入数据库中的数据进行限定,这么做的目的是为了...外键约束下面分别为大家介绍这种约束:一、主键约束:primary key特点:主键修饰的字段,非空且唯一,一张表中只能个主键...
    6a7d1900a74639c70557c3aecd9d7860.png

    数据库中的约束,顾名思义即是对插入数据库中的数据进行限定,这么做的目的是为了保证数据的有效性和完整性。这样就大幅度地提高了数据库中数据的质量,节省了数据库的空间和调用数据的时间。

    数据库常见六大约束如下:

    1.主键约束

    2.非空约束、

    3.自增长约束

    4.非负约束

    5.唯一约束

    6.外键约束

    下面分别为大家介绍这几种约束:

    一、主键约束:primary key

    特点:主键修饰的字段,非空且唯一,一张表中只能有一个主键

    添加主键的语法:

    方式1:

    CREATE TABLE student{

    NAME VARCHAR(10) PRIMARY KEY,

    age INT

    };

    方式2:

    CREATE TABLE student{

    NAME VARCHAR(10),

    age INT,

    PRIMARY KEY(NAME)

    };

    方式3:后期添加主键:ALTER TABLE student ADD PRIMARY KEY(NAME);

    联合主键:把多个字段看成一个整体添加主键

    例如:CREATE TABLE student{

    NAME VARCHAR(10),

    age INT,

    PRIMARY KEY(NAME,age)

    };

    删除主键:

    删除唯一:ALTER TABLE student DROP PRIMARY KEY;

    删除非空:ALTER TABLE student CHANGE NAME NAME VARCHAR(20) NULL;

    若有其他约束,要先删除其他约束再来删除主键约束

    二、非空约束:not null,使用方法跟主键一样,用not null约束的字段不能为null值,必须给定具体的数据。

    三、自增长约束:auto_increment,使用方法跟主键一样。如果是整数型字段,添加自增长约束后,还需要配合主键约束一起使用。

    CREATE TABLE student(

    sid INT AUTO_INCREMENT PRIMARY KEY,

    NAME VARCHAR(20),

    )

    后面在建表时常给字段这种联合约束,方便查询。

    四、非负约束:unsigned,使用方法跟主键一样

    添加非负约束后,取值范围将发生变化,例如int范围是-128~127,添加非负约束后将变成0-255

    五、唯一约束:unique,不允许重复,使用方法跟主键一样,限定不了空值,要想限定,还要添加非空约束

    CREATE TABLE student(

    NAME VARCHAR(20) UNIQUE NOT NULL,

    age INT UNIQUE NOT NULL

    )

    六、外键约束:alter table 多表名称 add foreign key(外键名称) references 一表名称(主键);

    其中,多表指关系中的多方,一表指关系中的一方,外键名称自定义,一般为一表名称_id,主要用于多表之间联系。添加外键约束后,主表不能删除从表中已引用的数据,从表不能添加主表中不存在的数据。

    添加外键约束后,如何删除主表中的数据:

    方式1:级联删除:ALTER TABLE orders ADD FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE;

    另外,还有个级联更新:ALTER TABLE orders ADD FOREIGN KEY(user_id) REFERENCES users(id) ON UPDATE CASCADE;

    之后,就可以删除或者更新主表中的数据了,这两步也可以同时进行,用逗号隔开即可,也可以在建表时加上

    方式2:先删除多表中的数据,再删除主表中的数据

    看完了数据库常见六大约束,相信大家在以后用到数据库的时候一定可以更加规范地使用这些约束。由物及人,我们在学习java的过程中也要约束好自己,学如逆水行舟,不进则退。

    展开全文
  • 一对多:把A的主键充当B的外键(一个父亲有几个孩子,一个孩子只有一个父亲) 多对多:必须通过单独的一张表来实现(一个老师多个学生,一个学生多个老师)班级一张表,老师一张表,班级和老师的关系一张表 主键:...

    SQL server的基础学习3

    一、什么是关系

    定义:表与表之间的联系
    实现方法:通过设置不同形式的外键来体现表和表的不同关系

    一对一

    既可以把表A的主键充当表B的外键,也可以把表B的主键充当表A的外键(一个人只有一把钥匙,一把钥匙只给一个人)

    一对多

    一对多:把表A的主键充当表B的外键(一个部门有多个员工,一个员工只能在一个部门)
    在多的一方添加外键(在员工表中添加外键即:员工表为外键表,部门表是主键表)
    在这里插入图片描述
    在这里插入图片描述

    多对多

    多对多:必须通过单独的一张表来实现(一个老师多个学生,一个学生多个老师)班级一张表,老师一张表,班级和老师的关系一张表
    在这里插入图片描述
    在这里插入图片描述 在这里插入图片描述

    二、主键和外键

    主键

    定义:能够唯一标示一个事物的一个字段或者多个字段的组合
    附注:
    1、含有主键的叫做主键表,主键通常都是整数,不建议用字符串当主键(如果主键是用于集群式服务,才可以考虑用字符串当主键)
    2、主键的值通常都不允许修改,除非本记录被删除
    3、主键不要定义成id,而要定义成表面_id
    4、要用代理主键,不要用业务主键(任何一张表都不建议使用有业务含义的字段充当主键,我们通常都是在表中单独添加一个整型的编号充当主键字段)

    外键

    定义:如果一个表中的若干个字段是来自另外若干个表的主键或唯一键,则这若干个字段就是外键
    附注:
    1、外键通常都是来自另外表的主键而不是唯一键,因为唯一键可能为null
    2、外键不一定是来自另外的表,也可能来自表的主键(员工表中上层管理人员也是员工中的数据)
    3、含有外键的表叫外键表,外键字段来自的呢一张表叫做主键表
    问题:先删除主键表还是外键表?
    答:先删除外键表
    如果先删除主键表会报错,因为这会导致外键表中的数据引用失败

    展开全文
  • 数据库自增主键可能的问题

    千次阅读 2019-06-30 15:26:19
    的情况下数据库自增id并没有什么问题,在一张表分布到多个数据库的情况下,使用自增将会出现id重复的问题。 解决的办法方向,一是在应用层做处理,一数据库上去做处理。 目前生成主键方法主要...
  • 今天再学习数据库面试题的时候发现了这么一问题,所以就试验了一下,并得出以下结论: 1. 如果的引擎类型是MyISAM,那么这条记录的 ID 就是 4。因为MyISAM会把自增主键的最大ID记录到数据文件里面,重启 ...
  • Oracle数据库之创建结构

    千次阅读 2015-06-10 13:24:15
    外键:关系型数据库表中的一列或者某几列的组合,它的值与另外一张表的某一列或者某几列相匹配,且为另一张表的主键(即这张表的某一列或某几列是另外一张表的主键,称这一列或列为另外一张表的外键)。...
  • 1、主键、外键必须索引; 2、数据量超过300的应该索引; 3、经常与其他进行连接的,在连接字段上应该建立索引; 4、经常出现在Where子句中的字段,特别是大的字段,应该建立索引; 5、索引应该...
  • 数据库优化

    2020-10-24 15:50:51
    数据库优化 关于数据库优化分可以以下几个方面来讲 先说几个小的注意点 当表中无主键时,首先判断表中是否有...一张表有且只有一个聚集索引就是主键 最左匹配原则 离散型、选择性最好的列放在最左边 mysql索引底层实现
  • 数据库中的约束,顾名思义即是对插入数据库中的数据进行限定,这么做的目的是为了...外键约束下面分别为大家介绍这种约束:一、主键约束:primary key特点:主键修饰的字段,非空且唯一,一张表中只能个主键...
  • Oracle数据库常用命令

    2019-08-08 13:33:33
    外键:关系型数据库表中的一列或者某几列的组合,它的值与另外一张表的某一列或者某几列相匹配,且为另一张表的主键(即这张表的某一列或某几列是另外一张表的主键,称这一列或列为另外一张表的外键...
  • 数据库面试

    2019-07-16 18:02:51
    一,数据库三大范式 ...二,一张自增里面总共 7 条数据,删除了最后 2 条数据,重启 mysql 数据库,又插入了一条数据,此时 id 是? 经实践,id=8 三,如何获取当前数据库版本? 四,说一下 ACID 是什...
  • SqlServer数据库索引

    千次阅读 2019-03-15 11:42:00
    一张表只能聚集索引,通常主键默认是聚集索引,也可以设置非主键列为聚集索引,设置聚集索引后,数据存储将按照索引列规则的排列。 非聚集索引(NONCLUSTERED): 一张表中各行的物理顺序与键值...
  • 前言前面篇 blog,主要简单介绍了在 MySQL 数据库中如何查看某张表,以及对表做一些增删改查的操作,本篇 blog 主要介绍一张表中如何设置唯一标识,以及两张之间如何关联,即我们日常听说的主键和外键主键含义:...
  • 数据库的索引

    千次阅读 2017-08-10 21:53:50
    主键索引:数据记录里面不能null,数据内容不能重复,在一张表里面不能个主键索引。 普通索引:使用字段关键字建立的索引,主要是提高查询速度 唯一索引:字段数据是唯一的,数据内容里面能否为null,在...
  • 第三范式:(确保每列都和主键列直接相关,而不是间接相关)一张数据表有且只有一个主键 2.SQL分为哪几个大类 数据操纵语言(DML),数据定义语言(DDL),数据控制语言(DCL) DML 数据操控:如select,insert,update...
  • 数据库中的约束,顾名思义即是对插入数据库中的数据进行限定,这么做的目的是为了...外键约束下面分别为大家介绍这种约束:一、主键约束:primary key特点:主键修饰的字段,非空且唯一,一张表中只能个主键...
  • 数据库唯一序列号生成方案

    千次阅读 2017-12-22 14:49:23
    首先,我们得知道为什么需要制定数据库唯一序列号生成方案,难道MySQL的主键自增长不好用吗?当然不是。由于现在的业务数据量越来越大,时候将数据放在一张表里,压力非常大,...几个模块如下: 1. 先定义一张表
  • 好久没用 oracle 了,今天用 oracle 批量更新一个270万的数据表 a,该表有个主键 id,需要新增加几个字段,新增加的几个字段的值要从另外一张160多万条记录的表 b 中关联补全,表a 和 表 b 不是同一数据库,表a ...
  • 在MySQL中,通常种约束: DROP DATABASE mysql_shiyan;删除数据库 ...唯一约束 (UNIQUE) 比较简单,它规定一张表中指定的一列的值必须不能重复值,即这一列每值都是唯一的。 外键 (...
  • 数据库案例分析

    千次阅读 2017-09-27 11:46:25
    一张mysql大数据表有几千万数据,但有一自增id字段,且为主键,要遍历此表的所有数据,写出有效的方法和sql(禁止使用limit n,m)。 案例分析:数据表 collect ( id, title ,info ,vtype) 就这4字段,其中 ...
  • 的每一字段都必须依赖主键,不能任何一列与主键没有关系或只依赖于部分主键一张表之描述一实体,如果实体存在属性可以确定一实体则可直接作为主键,如果存在多属性才能确定一实体,则可...
  • 引言: 前天学习项目的时候发现了关于SQL里的一点基础见解。...逻辑主键就是本来一条数据没有这字段,但是我们担心会出现重复数据,我们自己生成一让此条数据成为唯一的重要字段,在一张表...
  • 当我们创建数据的时候,我们需要对它的字段进行...一张数据的主键最多只能一个 (推荐每张都设置一个主键)。主键可以是一个字段,也可以由多个字段符合组成。 1.一个字段 # 1. primary key # 单个字段 create
  • 1、约束(constraint) 约束就是如果你填写了违反了某种法则的数据时(比如人的年龄不能超过200岁等等。)就会拒绝写入,而这种限定就叫做约束。对于关系型数据库来讲,约束通常...对于一张表来讲,主键只能...
  • 1、主键和外键主键:关系型数据库中的一条记录中若干属性,若其中的某一属性组(注意是组,可以是一,也可以是多)能唯一标识一条记录,那么该属性组就是主键外键:关系型数据库表中的一列或者某几列的...
  • 1) 聚簇索引或聚集索引:在索引中既索引字段的数据也存储非索引字段的数据为聚簇索引,针对数据,只有主键索引属于聚簇索引,即一张表只有一聚簇索引也就是主键索引(innodb存储引擎是这种机制,在Myisam存储...
  • 1. 实验目的 熟悉MySQL的种约束 2. 实验内容 ...主键 (PRIMARY KEY)是用于约束中的一行,作为这一行的唯一标识符,在一张表中通过主键就能准确定位到一行,因此主键十分重要,主键不能重复记录...

空空如也

空空如也

1 2 3 4
收藏数 73
精华内容 29
关键字:

一张数据库表有几个主键