MySQL 创建主键,外键和复合主键的语句

MySQL 是一种关系型数据库管理系统,它提供了创建主键、外键以及复合主键的功能。下面是关于这些功能的完整攻略:

创建主键

主键是一列或一组列,用于唯一标识一条记录。在 MySQL 中,可以使用以下语句创建主键:

ALTER TABLE `table_name` ADD PRIMARY KEY (`column_name`);

其中,table_name 是要创建主键的表名;column_name 是要创建主键的列名。如果要在多个列上创建主键,则可以使用以下语句:

ALTER TABLE `table_name` ADD PRIMARY KEY (`column1_name`, `column2_name`);

示例:

假设我们有一个表叫做 employees,其中有一个名为 id 的列用来唯一标识每个员工。我们可以使用以下语句创建一个主键:

ALTER TABLE `employees` ADD PRIMARY KEY (`id`);

创建外键

在关系型数据库中,外键用来连接两个表。在 MySQL 中,可以使用以下语句创建外键:

ALTER TABLE `table_name`
ADD CONSTRAINT `fk_name`
FOREIGN KEY (`column_name`)
REFERENCES `foreign_table_name` (`foreign_column_name`);

其中,table_name 是要添加外键的表名;column_name 是包含外键的列名;fk_name 是外键的名称;foreign_table_name 是关联表的名称;foreign_column_name 是关联列的名称。

示例:

假设我们有一个表叫做 employees,其中有一个名为 dept_id 的列,它是一个外键,关联到名为 departments 的表的 id 列。我们可以使用以下语句创建外键:

ALTER TABLE `employees`
ADD CONSTRAINT `fk_dept_id`
FOREIGN KEY (`dept_id`)
REFERENCES `departments` (`id`);

创建复合主键

复合主键,顾名思义,是由多个列组成的主键。在 MySQL 中,可以使用以下语句创建复合主键:

ALTER TABLE `table_name` ADD PRIMARY KEY (`column1_name`, `column2_name`);

其中,table_name 是要创建复合主键的表名;column1_namecolumn2_name 是要包含在主键中的列名。

示例:

假设我们有一个表叫做 orders,其中每个订单由两个唯一标识符组成:order_idcustomer_id。我们可以使这两个列共同组成一个复合主键,以确保每个订单唯一:

ALTER TABLE `orders` ADD PRIMARY KEY (`order_id`, `customer_id`);

以上就是 MySQL 创建主键、外键和复合主键的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL 创建主键,外键和复合主键的语句 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • Navicat Premium 15 工具自动被杀毒防护软件删除的两种解决方法

    下面详细讲解“Navicat Premium 15 工具自动被杀毒防护软件删除的两种解决方法”。 问题描述 最近有用户反映,使用 Navicat Premium 15 工具时被杀毒防护软件自动删除了该工具。这可能影响用户的正常使用,因此我们需要解决该问题。 解决方法 方法一:添加信任项 一些杀毒防护软件会将一些软件当作病毒或威胁,因此将其删除。这时我们可以添…

    database 2023年5月18日
    00
  • oracle查询锁表与解锁情况提供解决方案

    Oracle 查询锁表与解锁的情况提供解决方案 什么是锁表 在 Oracle 数据库中,锁是一种用于保护数据完整性和一致性的机制。当多个用户同时访问一个对象时,通过锁来保证对该对象的操作能够顺序执行,以避免产生不一致的结果。 锁分为共享锁和排他锁两种。共享锁允许并发读取,但不能进行写操作;排他锁则是独占模式,其他用户不能对该对象进行读写操作。 如果一个用户正…

    database 2023年5月21日
    00
  • Linux 上 定时备份postgresql 数据库的方法

    Linux 上定时备份 PostgreSQL 数据库的方法有多种,下面我以使用 shell 脚本和 crontab 定时任务的方法为例,为大家提供详细的攻略。 确定备份策略 在备份之前,需要确定备份策略,即备份的时间和频率。一般来说,推荐每天都进行备份,可以在晚上低峰期进行备份,从而避免对业务造成影响。 编写备份脚本 备份脚本可以使用 shell 脚本或者编…

    database 2023年5月22日
    00
  • 点赞功能使用MySQL还是Redis

    为了选择使用MySQL还是Redis来实现点赞功能,需要考虑以下因素: 预计的流量。如果网站预计会有庞大的访问量,建议使用Redis作为缓存,但如果预计的访问量不是很大,使用MySQL也是能够很好地实现功能的。 网站数据的一致性。如果数据的一致性要求比较高,建议使用MySQL,但如果在延迟等待下数据一致性要求不高的话,使用Redis也是可以接受的。 数据量大…

    database 2023年5月22日
    00
  • 非常好用的sql语句(日常整理)

    下面就为大家详细介绍一下“非常好用的SQL语句(日常整理)”的完整攻略。 标题 SQL语句介绍 SQL(Structured Query Language)是结构化查询语言的缩写,是一种用于管理关系数据库管理系统的语言。SQL语言是基于关系代数的关系型数据库系统,使用最广泛的DBMS(数据库管理系统)是MySQL,Oracle和SQL Server。 SQL…

    database 2023年5月21日
    00
  • SQL索引失效的11种情况详析

    我来详细讲解“SQL索引失效的11种情况详析”的完整攻略。 SQL索引失效的11种情况详析 1. 模糊查询(LIKE ‘%…%’) 在SQL语句中使用LIKE ‘%…%’方式进行模糊查询时,由于需要进行全表扫描从而导致索引失效。 示例:假设需要查询姓名中包含“张”的学生信息。 SELECT * FROM students WHERE name LIK…

    database 2023年5月22日
    00
  • 查看 MySQL 已经运行多长时间的方法

    要查看MySQL服务器已经运行多长时间了,有多种方法可以实现,下面我将向你详细讲解这些方法: 方法一:使用系统命令 我们可以使用系统命令“ps -ef | grep mysql”来查找MySQL服务进程,并查看进程运行的时间。具体步骤如下: 打开终端,输入以下命令,查找MySQL服务进程: $ ps -ef | grep mysql 查看MySQL服务进程的…

    database 2023年5月22日
    00
  • Qt入门学习之数据库操作指南

    下面就来详细讲解“Qt入门学习之数据库操作指南”的完整攻略。 一、前置知识 在学习Qt的数据库操作指南之前,需要掌握以下前置知识: Qt的基础知识:信号与槽、Qt对象模型等; C++的基础知识:类、对象、继承、虚函数等; 数据库的基础知识:SQL语句、数据库设计等。 如果你对以上知识都比较熟悉,那么就可以进入本文的正题了。 二、Qt数据库模块 Qt提供了一个…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部