首页 > 其他分享 >主键和外键

主键和外键

时间:2023-12-15 12:00:49浏览次数:22  
标签:customer 外键 id KEY TABLE 主键

主键

主键(Primary Key):

  • 主键是用于唯一标识表中每一行记录的字段或字段组合。
  • 每个表只能有一个主键,且主键的值不能重复且不能为NULL。
  • 主键通常用于加速数据检索,因为数据库系统会为主键创建索引。
  • 在MySQL中,可以在表的创建时或之后通过ALTER TABLE语句添加主键。

在创建表时定义主键:

CREATE TABLE employees (
    employee_id INT PRIMARY KEY,
    first_name VARCHAR(50),
    last_name VARCHAR(50)
);

在已有表上添加主键:

ALTER TABLE employees
ADD PRIMARY KEY (employee_id);

  

 

外键(Foreign Key)

  • 外键是一个或一组字段,用于建立表与表之间的关联关系。
  • 外键用于确保在一个表中引用的值在另一个相关表的主键中存在

在创建表时定义外键:

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    customer_id INT,
    order_date DATE,
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

在已有表上添加外键:

ALTER TABLE orders
ADD FOREIGN KEY (customer_id) REFERENCES customers(customer_id);

  

 

标签:customer,外键,id,KEY,TABLE,主键
From: https://www.cnblogs.com/mxleader/p/17903092.html

相关文章

  • mysql 企业表和员工表,一旦企业下面有员工就不允许删除企业。如何通过外键设置实现呢
    简述mysql企业表和员工表,一旦企业下面有员工就不允许删除企业。如何通过外键设置实现呢前情提示系统:一说部分截图、链接等因过期、更换域名、MD语法等可能不显示,可联系反馈(备注好博文地址),谢谢❤带有#号、删除线、不操作、不执行字样的为提示或者备份bash,实际不执行如果无法下......
  • Mysql count(*)、count(1)、count(主键)、count(普通字段) 性能对比
    count(*):底层会转化为count(0)来处理,默认横向扫描聚集索引树,如果有二级索引就扫描二级索引树(因为二级索引树更小,扫描成本低),扫描到一行记录之后,将该记录返回给Server层,由于参数是0,不为NULL,所以不需要读取记录中的任何字段,直接将 count变量加1count(1):处理......
  • Django 含有外键模型新增数据以及序列化
    Django含有外键模型新增数据以及序列化Django原生实现外键classAppleModel(models.Model):id=models.AutoField(primary_key=True)app_name=models.CharField(max_length=50)classPickleModel(models.Model):pid=models.AutoField(primary_key=True)......
  • 分布式主键
     核心概念::ShardingSpherehttps://shardingsphere.apache.org/document/current/cn/features/sharding/concept/ 分布式主键传统数据库软件开发中,主键自动生成技术是基本需求。而各个数据库对于该需求也提供了相应的支持,比如MySQL的自增键,Oracle的自增序列等。数据......
  • 金蝶云星空使用webapi查询单据附件的主键
    业务需求:查询采购价目表的附件 详细操作 一、查询单据附件查看账套单据附件 查询采购价目表的单据内码和单据体内码SELECTa.FNUMBER,a.FID,b.FENTRYID,b.FSEQFROMt_PUR_PriceListaLEFTJOINt_PUR_PriceListEntrybONa.FID=b.FIDWHEREa.FNUMBER='CGJM......
  • sql-3.1外键
     从表CREATETABLE`student1`(`id`INTNOTNULLAUTO_INCREMENTCOMMENT'id',`greadid`INT(11)NOTNULLCOMMENT'gradeid',`pwd`VARCHAR(23)COMMENT'密码',`name`VARCHAR(32)NOTNULLCOMMENT'名字',`add`VARCHAR......
  • MyBatisPlus主键生成策略
    @[TOC]什么是主键生成策略?在数据库中,每一行数据都需要一个唯一的标识符,这就是主键。主键生成策略决定了如何为新插入的行生成这个唯一标识符。不同的数据库和框架提供了不同的主键生成策略选项。MyBatisPlus中的主键生成策略AUTO:这是默认的策略,根据数据库的不同自动选择合适的主......
  • SQL Server数据库 主键自增标识列设置为默认值重新为1
    关键代码:注意:表格里原存在有的数据自增列不会变更,变更的是重新添加后的自增列......
  • 物理外键与逻辑外键(on_delete方法)
    外键中on_delete的方法:CASCADE:级联删除,只要删除publish,跟publish关联的book,全都被删除SET_DEFAULT:只要删除publish,跟publish关联的book,的publish字段会变成默认值,一定要配合default使用SET_NULL:只要删除publish,跟publish关联的book,的publish字段会变成空,一定要配合null=T......
  • sqlserver设值主键自增
    环境server2019,sqlserver2019,navicat15背景用过mysql,oracle,postgres就是没使用过sqlserver,有需求要把pg库的表转存数据至sqlserver中,由于建表语句有些差别,所以通过工具来转存,但会丢失自增属性,特此记录下方法如果表内无数据,可直接删掉id列,从新建一个自增的id列ALTERTABLE......