首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何制作一个表的主键,同一个表的外键

在关系型数据库中,主键和外键是用来建立表与表之间关系的重要概念。

  1. 主键(Primary Key)是用来唯一标识表中每一行数据的字段或字段组合。主键具有以下特点:
    • 主键的值在表中必须是唯一的,不能重复。
    • 主键的值不能为空,即不能为空值(NULL)。
    • 一个表只能有一个主键。
    • 主键的作用:
    • 唯一标识表中的每一行数据,确保数据的唯一性。
    • 提高数据的查询效率,数据库会为主键创建索引,加快数据检索速度。
    • 在表与表之间建立关系时,主键用作外键的参照。
    • 在创建表时,可以通过以下方式制作一个主键:
    • 在字段定义时,使用关键字PRIMARY KEY来指定该字段为主键。例如:
    • 在字段定义时,使用关键字PRIMARY KEY来指定该字段为主键。例如:
    • 如果需要多个字段组合作为主键,可以在字段定义时使用关键字PRIMARY KEY,并将多个字段用括号括起来。例如:
    • 如果需要多个字段组合作为主键,可以在字段定义时使用关键字PRIMARY KEY,并将多个字段用括号括起来。例如:
  • 外键(Foreign Key)用于建立表与表之间的关联关系。外键是一个表中的字段,它引用了另一个表中的主键。外键具有以下特点:
    • 外键的值必须在被引用表的主键中存在,或者为空(NULL)。
    • 一个表可以有多个外键。
    • 外键的作用:
    • 建立表与表之间的关联关系,实现数据的一致性和完整性。
    • 通过外键,可以在多个表之间进行查询和连接操作。
    • 在创建表时,可以通过以下方式制作一个外键:
    • 在字段定义时,使用关键字FOREIGN KEY来指定该字段为外键,并指定引用的表和字段。例如:
    • 在字段定义时,使用关键字FOREIGN KEY来指定该字段为外键,并指定引用的表和字段。例如:
    • 注意:在使用外键时,需要确保被引用的表中的主键已经存在。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云数据库 MySQL:https://cloud.tencent.com/product/cdb_mysql
  • 腾讯云数据库 PostgreSQL:https://cloud.tencent.com/product/cdb_postgresql
  • 腾讯云数据库 SQL Server:https://cloud.tencent.com/product/cdb_sqlserver
  • 腾讯云数据库 MariaDB:https://cloud.tencent.com/product/cdb_mariadb
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

oracle建、建主键基本语法

主键:唯一标识,不能为空,加快查询速度,自动创建索引 :约束内数据更新,从定义时可以发现 是和主键联系,数据类型要统一,长度(存储大小)要统一。...这样在更新数据时候会保持一致性 -创建表格语法: create table 名( 字段名1 字段类型(长度) 是否为空, 字段名2 字段类型 是否为空...); -增加主键 alter table 名 add constraint 主键名 primary key (字段名1); -增加: alter table 名...add constraint 键名 foreign key (字段名1) references 关联 (字段名2); 在建立表格时就指定主键 create table...varchar2(8) not null, constraint PK_T_STU primary key (STU_ID) ); 主键一起建立

3.1K50
  • InnoDB存储引擎主键

    在InnoDB存储引擎中,是按照主键顺序组织存放。...在InnoDB存储引擎中,每张都有主键(primary key),如果在创建时没有显式地定义主键,则InnoDB存储引擎会按如下方式选择或创建索引: 首先判断中是否有非空唯一索引(unique...not null),如果有,则该列即为主键; 如果不符合条件1,InnoDB存储引擎自动创建一个6字节大小指针(rowid列)。...当中有多个非空唯一索引时,InnoDB存储引擎选择建时第一个定义非空索引为主键。..._rowid from t_sample t; _rowid可以显示主键,从上图可以看出,虽然b和c都是唯一索引,但是c是先定义,故InnoDB存储引擎将其视为主键

    80310

    揪出那个无主键

    一张 InnoDB 必须有一个聚簇索引,当有主键时,会以主键作为聚簇索引;如果没有显式定义主键,InnoDB 会选择一个唯一非空索引代替。...如果没有这样索引,则 MySQL 自动为 InnoDB 生成一个隐含字段作为主键。 也就是说,最好我们可以显式定义主键,那么无主键可能会产生哪些危害呢?...后续可以为该增加主键,然后再手动同步下并解除忽略即可。 2.找到无主键 言归正传,当我们数据库实例中有好多好多张时,又应该如何查找是否有无主键呢?...下面 SQL 可以查找出无主键: # 查找某个库中无主键(有唯一主键也会被查出) SELECT t1.table_schema, t1.table_name FROM information_schema.TABLES...TABLE_SCHEMA NOT IN ( 'information_schema', 'performance_schema', 'mysql', 'sys' ) ; 总结: 本篇文章主要介绍了无主键可能会产生危害及如何查找是否存在无主键

    1.3K20

    django模型中有关系删除相关设置

    0904自我总结 django模型中有关系删除相关设置 一.一对一 例如有Author、AuthorDetail两 author = models.OneToOneField(to='Author...:作者删除详情删除,详情删除作者保留 2)作者找详情用 related_name(detail),详情找作者用 字段(author) 3)db_constraint断开关联,on_delete...(多一方):出版社删除书不动,书删除没有任何影响 2)出版社找书用 related_name(books),书找出版社 字段(publish) 3)db_constraint断开关联...,关联相关内容不会删除 models.CASCAD关联内容删了,关联相关内容会删除 db_constraint关系断开后,但是不影响联查询 四.多对多关系 例如Book、Author两 authors...2)正向找 字段,反向找 字段related_name 3)db_constraint断开关联,on_delete不存在(不设置,本质在第三张中设置,且一定是级联)

    3K20

    MySQL数据库——约束(非空约束、唯一约束、主键约束、约束)

    目录 1 约束 约束,是对表中数据进行限定,保证数据正确性、有效性和完整性,约束分为以下几类: 主键约束:primary key 非空约束:not null 唯一约束:unique 约束:foreign...主键约束:primary key 1)注意: 若某一列添加了该约束,则代表了非空,且唯一; 一张只能有一个字段为主键主键就是中记录唯一标识; 2)创建时添加主键约束 CREATE TABLE...以上仍然存在一个问题,当在员工中输入不存部门时,数据依然可以添加,不符合实际,因此,这里就可以通过使用约束来解决。 【概念】什么是约束?...,就是从中与主表主键对应那一列,如:员工dep_id,其中,主表是一方,用来约束别人,从可以是多方,被别人约束。 注意:可以为NULL,但是不能是不存在键值。 ?...,在员工中添加一个不在部门范围内内容,则无法保存: ?

    13.9K21

    sqlserver语句创建表格_创建sql语句

    今天介绍一下如何使用SQL Server语句创建并添加数据 首先先了解一下模式,在数据库中根据模式进行分组避免名称冲突 在SQL Server 2014中直接新建是默认前缀dbo 而命名其他模式需要使用...SQL Server语句进行创建 下面将一步一步进行演示,首先是创建一个数据库 然后创建模式在后面使用 根据创建模式或者使用默认模式名,进行创建,语句如下图 下面解释一下句子意思 看一下新建好...后面介绍如何在新表里面添加数据 根据列数和对应数据类型在括号中一一对应添加数据并使用逗号隔开 注意,以上添加数据方法需要同时添加全部字段 如果需要添加单个字段或者较多且不是全部字段则方法如下...当添加不是全部字段时注意不能为空字段必须写入数据 最后看一下添加好数据 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/183704.html原文链接:https

    2.2K10

    2018-11-26 oracle查询信息(索引,,列等)1、查询出所有的用户2、查询出用户所有索引3、查询用户索引(非聚集索引):4、查询用户主键(聚集索引):5、查询索引6

    oracle中查询信息,包括名,字段名,字段类型,主键唯一性约束信息,索引信息查询SQL如下,希望对大家有所帮助: 1、查询出所有的用户 select * from user_tables...cl where cl.constraint_name = 引用键名 9、查询所有列及其属性 方法一: select * from user_tab_columns where table_name...=upper('名'); 方法二: select cname,coltype,width from col where tname=upper('名');; 10.查询一个用户中存在过程和函数..., a.table_name 主键, b.column_name 主键列, c.owner 拥有者, c.table_name..., d.column_name 列 FROM user_constraints a LEFT JOIN user_cons_columns b ON a.constraint_name

    3K20

    MGR环境下主键缺失小记

    // MGR环境下主键缺失小记 // 今天在写脚本时候,遇到一个线上小问题,记录下来。...具体场景是这样: 1、MGR环境多主模式 2、MySQL版本5.7 写脚本往一个表里面插入数据时候,报错表示写不进去数据,报错信息如下: mgrm > insert into xxxxx values...创建了一个test2,不给主键,重新插入,发现问题可以复现,那么证明这个问题可能就是没有主键导致。...This is not compatible with Group Replication' 一般情况下,线上环境不会发生这种问题,因为建时候必须要求业务方创建带主键,如果没有主键的话,审核阶段就会拒绝创建...上述例子中情况可能发生在某个单实例创建了一个没有主键之后,后续做了架构调整,导致写入报错了。

    1.6K30

    数据库作用,以及和主键区别

    例如有两个      A(a,b)   :a为主键,b为(来自于B.b)      B(b,c,d)   :b为主键       如果我把字段b属性去掉,对编程没什么影响。  ...身份证号是唯一能确定你这个人,其他都可能有重复,所以,身份证号是主键用于与另一张关联。是能确定另一张表记录字段,用于保持数据一致性。...比如,A一个字段,是B主键,那他就可以是A。...二、主键和索引区别 定义: 主键--唯一标识一条记录,不能有重复,不允许为空 --是另一主键可以有重复, 可以是空值 索引--该字段没有重复值,但可以有一个空值...作用: 主键--用来保证数据完整性 --用来和其他建立联系用 索引--是提高查询排序速度 个数: 主键--主键只能有一个 --一个可以有多个 索引--一个可以有多个唯一索引

    5.9K21
    领券