`
liushilang
  • 浏览: 89301 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

设置MySQL数据表主键

 
阅读更多

 

设置MySQL数据表主键:

    使用“primary key”关键字创建主键数据列。被设置为主键列不允许出现重复的值,很多情况下与“auto_increment”递增数字相结合。如下SQL语句所示:

<pre>

  1. Mysql>create table books(bookid int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,bookname varchar(50)); 
  2. Mysql>insert into books(bookname) values(“book1”),(“book2”),(“book3”); 
  3. Mysql>select * from books; 

</pre>


    若要修改列主键或类型,请参考 ALTER TABLE 语句。
设置MySQL数据表外键

    外键是设置当前表中的某一列与别一数据表中的主键列关联。主要目的是控制与外键表中的数据,保持数据一致性,完整性,也就是说:当前表中这一列的数据必须是关联外键列中的某一数据,而且相关联的两个数据列的类型必须相同;当关联外键列某一数据修改或删除时,将触当前表的某一项相应操作。可解发以下事件以及参数:
触发事件:on delete和on update
可设参数:cascade(跟随外键改动);
restrict(限制外表中的外键改动);
set Null(设空值);
set Default(设默认值);
no action [默认]

    设置关联的语句由[指定主键关键字:foreign key(列名)]和[引用外键关键字: references <外键表名>(外键列名)]组成。例如创建一个关于books的购物车数据表“gbooks”,其中“gbookid”与books表中的“bookid”创建外键关联。

<pre>

  1. Mysql>create table gbooks(gid int(11) not null auto_increment primary key,gbookid int(11),goodsum int(4),foreign key(gbookid) references books(bookid) on delete cascade on update cascade); 

</pre>


    删除外键:

    首先,使用SHOW CREATE TABLE语句查看创建表描述。其中“CONSTRAINT”关键字后面有一个引号括起来的名称,它就是这个表外键的代表,是在创建外键时自动生成的名称,当然在创建的过程中可以直接用“CONSTRAINT”关键字自定义名称。其查看的完整语句如下:

<pre>

  1. Mysql>show create table gbooks; 

</pre>

    这里代表外键的名称是“gbooks_ibfk_1”,目标找到了,再使用ALTER语句进行删除。

<pre>

  1. Mysql>ALTER TABLE gbooks DROP FOREIGN KEY gbooks_ibfk_1; 

</pre>


主键和外键的设置意义:

    主键和外键是把多个表组织为一个有效的关系数据库的粘合剂。主键和外键的设计对物理数据库的性能和可用性都有着决定性的影响。

    必须将数据库模式从理论上的逻辑设计转换为实际的物理设计。而主键和外键的结构是这个设计过程的症结所在。一旦将所设计的数据库用于了生产环境,就很难对这些键进行修改,所以在开发阶段就设计好主键和外键就是非常必要和值得的。

主键:

关系数据库依赖于主键—它是数据库物理模式的基石。主键在物理层面上只有两个用途:
1. 惟一地标识一行。
2. 作为一个可以被外键有效引用的对象。

基于以上这两个用途,下面给出了我在设计物理层面的主键时所遵循的一些原则:

1. 主键应当是对用户没有意义的。如果用户看到了一个表示多对多关系的连接表中的数据,并抱怨它没有什么用处,那就证明它的主键设计地很好。

2. 主键应该是单列的,以便提高连接和筛选操作的效率。

3. 永远也不要更新主键。实际上,因为主键除了惟一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。
注:这项原则对于那些经常需要在数据转换或多数据库合并时进行数据整理的数据并不适用。

4. 主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。

5. 主键应当有计算机自动生成。如果由人来对主键的创建进行干预,就会使它带有除了惟一标识一行以外的意义。一旦越过这个界限,就可能产生认为修改主键的动机,这样,这种系统用来链接记录行、管理记录行的关键手段就会落入不了解数据库设计的人的手中。

外键是用来和其他表建立联系用的:这个表中的一列和另外一个表中的一列相同,为了让这两个表联系起来,就把其中一个表中的列设成外键,把另外一个表列设成主键,就实现了这两个表的关联。一个表可以有多个外键。但主键只能有一个。

分享到:
评论

相关推荐

    MySQL数据库主键重复原因分析及处理.pdf

    MySQL数据库主键是数据库管理系统中的一种重要概念,它是指在关系型数据库中,每个表的唯一标识符,用于唯一地标识表中的每一条记录。主键是数据库设计的核心概念,关系型数据库的设计都需要定义主键来唯一标识每一...

    mysql下创建字段并设置主键的php代码

    复制代码 代码如下: mysql_select_db(“hills_database_test”,$dbcon); $alterpkadd=”alter table hills_testcreatetable ... 您可能感兴趣的文章:深入探寻mysql自增列导致主键重复问题的原因mysql把主键定义为自动

    Python3 操作 MySQL 插入一条数据并返回主键 id的实例

    在Python3中操作MySQL数据库并插入一条数据,然后获取并返回这条数据的主键id是数据库编程中常见的需求。这一过程可以分为几个关键步骤:数据库连接、执行插入操作、获取主键id以及事务提交。下面详细说明每个步骤...

    mysql数据表直接生成word文档数据字典

    MySQL数据表直接生成Word文档数据字典是一种便捷的方法,它帮助数据库管理员和开发人员快速整理并记录数据库结构信息。在数据库设计和维护过程中,数据字典是至关重要的,它提供了关于数据库模式、字段、类型、约束...

    mySQL数据表调用客户端

    MySQL数据表调用客户端是一种非常实用的工具,主要用于管理和操作MySQL数据库中的数据表。这个工具提供了用户友好的界面,使得数据库的建立、查看以及管理变得简单易行,无需消耗额外的系统资源。在本篇文章中,我们...

    mysql数据库实验报告 数据表的操作

    2. 外键约束:如`TMS_sc`和`TMS_tc`表中的`sn`和`cn`字段,它们引用了其他表的主键,需设置为外键,确保数据的完整性和一致性。 3. 非空约束:例如`TMS_student`表中的`sname`、`ssex`等字段,不允许为空。 4. 枚举...

    45-MySQL单表2000万数据查询慢解决方案1

    MySQL单表2000万数据查询慢解决方案1 本文主要讨论了如何解决MySQL单表2000万数据查询慢的问题,通过将表分区和使用时间触发器来实现数据的优化。 分区设计 在解决方案中,我们使用的是按照8周将单表分为8个区,...

    mysql-oracle数据同步

    描述中提到的"同时修改mysql数据表标识"可能是指自增主键。在MySQL中,我们通常使用`AUTO_INCREMENT`属性来定义自增主键,而在Oracle中,可使用`SEQUENCE`对象来生成序列号。在数据同步过程中,如果需要保持两个...

    省市区数据表mysql

    总的来说,"省市区数据表mysql"涉及的核心知识点包括:MySQL数据库设计、关系型数据库的表结构设计、主键和外键的概念、数据导入导出、索引的创建与优化、以及SQL查询语句的编写和使用。理解和掌握这些知识点对于...

    MySQL8自增主键变化.doc

    然后向自增主键表中添加了 4 条记录,表中的四条添加的记录的 id 字段值就分别为: 1、2、3、4。接下来,将表中的 id 为 4 的字段删除,然后,继续在表中添加一条记录,执行之后我们可以发现,此时自增主键的 ID 结果...

    mysql数据表结构说明模板.pdf

    在“mysql数据表结构说明模板.pdf”中,我们关注的是如何设计和利用数据表来存储与在线监测系统相关的数据,特别是针对电力行业的输电监控。在这个系统中,数据访问是通过南瑞界面进行的,它依赖于MySQL数据库提供的...

    mysql实现char类型主键自增长

    在传统的数据库设计中,我们通常使用整型数据类型作为自增ID,通过设置AUTO_INCREMENT属性来自动递增主键值。但对于某些特定场景,例如需要主键包含日期信息或具有固定长度和格式时,CHAR类型则显得更为适用。为了...

    mysql酒店管理系统数据表设计

    MySQL 数据库在酒店管理系统中的应用主要体现在数据表的设计上,对于初学者来说,理解并创建合适的表结构是学习的关键。本文以一个简单的酒店预订系统为例,介绍了六张核心数据表的构建,包括管理员信息表、用户信息...

    C#操作Mysql创建数据库,数据表,增、删、改数据

    创建数据表后,我们可以定义表结构,如字段名、数据类型、主键等。例如,创建一个名为`users`的表: ```csharp string createTableQuery = "CREATE TABLE users (" + "id INT AUTO_INCREMENT PRIMARY KEY," + ...

    MySQL数据表添加字段

    在MySQL数据库管理中,添加字段是一项常见的操作,用于在已有的数据表中增加新的列来扩展数据表的结构。这通常发生在数据需求发生变化或者需要记录更多相关信息时。本篇文章将详细探讨如何在MySQL中添加字段,以及...

    2020年最新省市区mysql数据表.zip

    标题中的“2020年最新省市区mysql数据表”指的是一个MySQL数据库表格,这个表格包含了2020年中国所有省份、城市以及区县的最新行政数据。在数据库设计中,这样的数据通常用于地理定位、统计分析或者为用户提供基于...

    mysql 测试数据集,单表200万条数据

    - 约束:设置NOT NULL、UNIQUE、FOREIGN KEY等约束,保证数据的有效性。 - 主键:每张表应有一个主键,用于唯一标识每条记录,如自动增长的整数ID。 3. 性能优化: - 索引:为常用查询字段创建索引,提高查询...

    mysql日历数据表1900-2100(公历表和农历表).rar

    MySQL日历数据表是数据库设计中的一个重要组成部分,尤其在处理日期和时间相关的应用时,如日历应用、事件管理、中国传统节日提醒等。这个压缩包文件"mysql日历数据表1900-2100(公历表和农历表).rar"包含了从1900年...

    goldengate同步无主键无唯一索引表的问题以及解决方案.docx

    在 GoldenGate 中,如果源表和目标表都没有主键或唯一索引,那么在同步数据时, GoldenGate 将无法正确地识别和处理数据的变化,从而导致数据同步出现问题。 二、环境描述 本文使用的环境是 GoldenGate 版本 11.2....

    Mysql面试题主键自增

    在MySQL数据库系统中,主键自增是一种常见的数据表设计策略,它对于数据管理与高效检索至关重要。主键是表中的一个或一组字段,用于唯一标识每条记录,并且不允许有重复值。自增(AUTO_INCREMENT)属性则使得每次...

Global site tag (gtag.js) - Google Analytics