MySQL学习笔记(三)修改数据表

MySQL学习笔记3:约束以及修改数据表 MySQL主键约束,唯一约束,各种约束以及修改数据表 阅读详情

约束

约束保证数据的完整性和一致性

根据字段的数目,约束分为表级约束(两个或两个以上)和列级约束(单个字段)

约束的类型包括:NOT NULL(非空约束)、PRIMARY KEY(主键约束)、UNIQUE KEY(唯一约束)、DEFAULT(默认约束)、FOREIGN KEY(外键约束)


FOREIGN KEY

外键约束:实现一对一或一对多关系,MySQL为关系型数据库的原因之一


外键约束的要求:

(1)父表(子表参照的表)和子表(有外键列的表)必须使用相同的存储引擎,而且禁止使用临时表

(2)数据表的存储引擎只能为InnoDB

(3)外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同

(4)外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。


编辑数据表的默认存储引擎

MySQL配置文件my.ini中,将default-storage-engine = INNODB

注意:

(1) 当创建表时,也可以采用如下格式修改表的所属引擎:CREATE TABLE user1() ENGINE = InnoDB;

(2) 当创建表之后,也可以修改表的所属引擎

示例:


CREATE TABLE province(id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,pname VARCHAR(30) NOT NULL);//创建一个province表
//查看默认引擎是否为修改后的InnoDB
SHOW CREATE TABLE province;
//创建一个users数据表,其中(外键列)pid为外键,参考province表的(参照列)id字段
/*CREATE TABLE users(id SMALLINT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(20) NOT NULL,
                                   //pid SMALLINT
                                   pid BIGINT,
                                   FOREIGN KEY (pid) REFERENCES province (id)
                                   );*/
//由于外键列(SMALLINT)与参照列(BIGINT)的数据类型不一致或符号位不同,因此上述创建的表将发生报错
//因此需要如下修改:
CREATE TABLE users(id SMALLINT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(20) NOT NULL,
                   pid SMALLINT UNSIGNED,FOREIGN KEY (pid) REFERENCES province (id));
//查看外键列是否创建索引
SHOW INDEXS FROM province;
//纵向查看</span>
SHOW INDEXES FROM province\G;
//查看外键列是否创建索引
SHOW INDEXES FROM users\G;


    外键约束的参照操作

(1)CASCADE:从父表删除或更新且自动删除或更新子表中的匹配行

(2)SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL

(3)RESTRICT:拒绝对父表的删除或更新操作

(4)NO ACTION:标准SQL的关键字,在MySQL中与RESTRICT相同。



示例:说明外键约束为CASCADE的作用

CREATE TABLE user1(id SMALLINT AUTO_INCREMENT PRIMARY KEY,
                     username VARCHAR(30) NOT NULL,
                     pid SMALLINT UNSIGNED,
                     FOREIGN KEY (pid)REFERENCES province(id) ON DELETE CASCADE);//在参照表province创建的基础上,创建外键表user1

//插入信息时,必须先在父表中添加记录,然后在子表中添加记录
INSERT INTO province (pname) VALUES('A');
INSERT INTO province (pname) VALUES('B');
INSERT INTO province (pname) VALUES('C');
//显示province表结构
SELECT* FROM province;
//向表user1中增加记录
INSERT INTO user1 (username,pid) VULUES ('John',1);
INSERT INTO user1 (username,pid) VULUES (Tom',2);
INSERT INTO user1 (username,pid) VULUES ('Rose',3);
//INSERT INTO user1 (username,pid) VULUES ('John',7);       /*将会报错,因为父表的索引最大为3*/
//显示user1的结构
SELECT* FROM user1;#现在删除父表中索引为3的记录DELETE FROM province WHERE id = 3;
//分别显示父表和子表的结构
SELECT* FROM province;
SELECT* FROM user1;




</pre></blockquote><blockquote style="margin:0 0 0 40px; border:none; padding:0px"><p><span style="font-size: 18px; ">可以看到,删除父表索引id为3的记录时,子表中索引为3的记录也随之删除</span></p></blockquote><blockquote style="margin:0 0 0 40px; border:none; padding:0px"><p><span style="font-size:18px">注意:</span></p></blockquote><blockquote style="margin:0 0 0 40px; border:none; padding:0px"><p><span style="font-size:18px">实际开发时,<span style="color:#ff0000;">很少用物理的外键约束,因为只有InnoDB引擎支持,常用逻辑的外键约束(定义两张表结构时,按照存在的某种结构方式去定义,但不去使用FOREIGN KEY关键词来定义)</span></span></p></blockquote><blockquote style="margin:0 0 0 40px; border:none; padding:0px"><p><span style="font-size:18px">列级约束(经常使用)既可以在定义时声明,也可以在列定以后声明;而表级约束(很少使用)只能在列定以后声明。</span></p></blockquote><p><span style="font-size:18px"> </span></p><p></p><blockquote style="margin:0 0 0 40px; border:none; padding:0px"><p><span style="font-size:18px">修改数据表</span></p></blockquote><blockquote style="margin:0 0 0 40px; border:none; padding:0px"><p><span style="font-size:18px">添加单列</span></p></blockquote><blockquote style="margin:0 0 0 40px; border:none; padding:0px"><p><span style="color:#ff00"><span style="font-size:18px"><span style="color:#ff0000;">ALTER TABLE tb_name ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name];</span></span></span></p></blockquote><blockquote style="margin:0 0 0 40px; border:none; padding:0px"><p><span style="font-size:18px">注意:如果未设置[FIRST| AFTER col_name],则新增加的列将位于所有列之后           </span></p></blockquote><p><span style="font-size:18px"> </span></p><blockquote style="margin:0 0 0 40px; border:none; padding:0px"><p><span style="font-size:18px">示例:</span></p><p></p><pre name="code" class="sql" style="background-color: rgb(255, 255, 255); ">//查看user1表中的列
SHOW COLUMNS FROM user1;</span>
//增加一个age列
ALTER TABLE user1 age TINYINT UNSIGNED DEFAULT 10;
//显示增加的列
SHOW COLUMNS FROM user1;
//在username之后添加password列
ALTERTABLE user1 ADD COLUMN password VARCHAR(30) NOT NULL AFTER username;



添加多列

ALTERTABLE tb_name ADD [COLUMN] (col_name column_definition,…);

注意:添加多列时,不能指定位置关系,而且添加的列名需要小括号

 

删除列

ALTERTABLE tb_name DROP [COLUMN] col_name;     //单列

ALTERTABLE tb_name DROP [COLUMN] col_name,DROP [COLUMN] col_name…;/多列/

注意:在删除列的同时,也可以执行其他操作,如增加列。



MySQL数据表的操作 介绍了MySQL数据库中关于表格的基本操作 阅读详情

相关推荐

[V-10]ARMv8/v9-CPU Virtualization-CPU虚拟化架构简介(vCPU/vPE)

本文简要介绍了CPU虚拟化架构的基础知识。

基层架构师的分享 1267

mysql修改关联查询语句_MySQL学习笔记(三)修改操作、查询数据表

操作数据表中的记录插入操作INSERT第一种INSERT [INTO] tb_name [col_name,....] VALUES(...,...)[,(...,...),...] 多行多个相对插入expr--算数表达式or函数表达式;default--创建表结构定义的值;如果表结构中有主建primary key auto_increment,插入时对应值可以用NULL或default;INSE...

weixin_35625676的博客 731

ADAS方案设计-CAN网络管理与休眠唤醒机制

文章摘要:本文介绍了车载控制系统的五种工作模式及其转换条件,包括睡眠模式、准备睡眠模式、就绪睡眠模式、正常工作模式和重复消息状态。系统唤醒条件包括接收到网络管理报文或电源ON档信号,休眠条件则需满足电源OFF档、功能完成等多重要求。针对下挂节点的网络管理报文发送规则,详细说明了不同状态下的报文发送策略,特别是在哨兵模式、OTA模式等特殊场景下的处理方式。系统在满足休眠条件后会立即停止发送下挂节点网络管理报文,确保电源管理的有效性。

xiandang8023的博客 325

MySQL学习笔记(三)----修改数据表

修改表名 MySQL通过alter table语句来实现表名的修改; ALTER TABLE <旧表名> RENAME <新表名> 这里我们在演示之前先介绍一个sql语句DESC用来查看表的结构; 这样就能看到我们这张表所有的信息了; 这里我们要把t的名字改为t1; 我们可以看到的是修改表名并不会改变表的成分; 修改字段的数据类型 ALTER TABLE &lt...

qq_44049351的博客 410

高电压技术的面试内容整理(详细版本:57题)

涵盖了高电压技术的关键领域,包括气体放电的物理过程、液体和固体介质的绝缘特性、高压外绝缘的分类与特性、电气设备绝缘试验的方法与原理、电力系统的防雷保护措施,以及内部过电压的产生、影响与限制方法,为理解和应对高电压环境下的电气问题提供了系统的知识框架。通过深入探讨气体放电理论、介质极化与损耗、绝缘子的电气特性、绝缘试验技术、防雷策略以及内部过电压的管理。

weixin_44808274的博客 775

国科大学习资料--矩阵论(叶世伟)-期末考试题整理3

国科大学习资料–矩阵论-期末考试题整理3 国科大学习资料–矩阵论-期末考试题整理3 国科大学习资料–矩阵论-期末考试题整理3

无名何许人的博客 1403

4、MySQL——向数据表中插入数据,修改数据表中的数据,数据表删除操作

一、数据表插入操作:INSERT 1、 给表中的所有字段插入数据 2、给表中的个别字段插入数据 3、向数据表中批量插入多条数据 二、数据表修改操作:UPDATE 1、修改所有字段的数据 2、修改个别字段的数据 三、数据表删除操作:DELETE 1、删除数据表中的个别记录 2、删除数据表中的所有数据 3、TRUNCATE删除

优快云_Loveletter的博客 1万+

Halcon那些事:Halcon缺陷检测检测印刷数字完整性

创建模板 create_shape_model模板匹配 find_shape_model。

十多年IT经验,专注机器视觉,智能制造半导体行业 764

MYSQL数据表基本操作:创建+查看+修改+删除

本文介绍了如何通过SQL命令创建、查看、修改和删除数据库表。内容涵盖了表的创建、结构查看、字段修改及表删除的常用语法,并强调了操作中的注意事项,以确保数据完整性和防止误操作。旨在帮助读者掌握数据库表管理的基础技能。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 88万+

SCADA|测试KingSCADA4.0信创版采集汇川PLC AC810数据

摘要:雷工分享KingSCADA4.0信创版采集汇川PLC数据的配置过程。由于项目繁忙,笔记更新延迟。信创产业要求采用国产化产品,此次通过ModbusTCP协议连接AC810 PLC。主要步骤包括:新建IOServer应用(需厂家协助从3.8升级至4.0)、安装ModbusTCP驱动、配置设备地址(192.168.1.88:5021)、运行IOServer并通过网页监控变量。尽管信创版操作体验较差,但出于国产化战略需要仍需使用。雷工表示理解产品初期不足,相信未来会逐步优化。2025年4月11日记录于四川绵阳

做有价值的事,积累有价值的笔记! 863

HBase在物流行业的应用:轨迹数据存储

想象一下,每天在全球范围内,数以亿计的物流包裹在各个城市、乡镇间穿梭。每一个包裹从发货人手中出发,经过仓储中心、转运站,最终到达收货人手中,这一路上都留下了它的“足迹”,也就是我们所说的轨迹数据。这些数据就像一个个拼图碎片,完整拼接起来后,能够清晰地呈现出整个物流网络的运行状况。例如,你在网上购买了一件心仪已久的商品,迫不及待地想知道它现在到哪儿了。物流平台实时更新的轨迹信息,让你可以准确了解包裹是在运输途中,还是已经到达附近的站点。

架构师的AI之路,分享AI应用开发架构的学习与实践。 965

【MySQL学习笔记】数据库/数据表的创建、查看、选择与修改

在MySQL数据库的学习中,数据库、数据表和数据的操作,不仅仅是必须掌握的内容,也是学习后续的基础噢~本期主要内容为:数据库的创建、查看、选择与删除数据表的创建、查看、选择与删除以上就是今天的学习内容啦~如果有兴趣的话可以订阅专栏,持续更新呢~咱们下期再见~

颜颜yan_的博客 5548

网络安全与黑客攻防常见设备:前置机、跳板机、堡垒机与肉鸡

前置机、跳板机、堡垒机和肉鸡,这些看似冷僻的技术名词,实则是网络安全与黑客攻防战中的关键角色。它们有的守护着企业的数字Pltform,保卫网络安全;有的则成为黑客的跳板,游走于灰色地带。

网络技术联盟站 962

MySQL修改数据表中的字段名

MySQL修改数据表中的字段名 在一张数据表中只能设置一个唯一名称的字段名。在同一张数据表中,不能出现两个名称完全相同的字段名。 因此,数据库系统可以通过字段名来区分数据表中的不同字段。 在MySQL中,ALTER TABLE语句也可以修改数据表的字段名。基本语法格式如下: ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型; 其中,“旧字段名”指

追梦人的博客 10万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【MySQL】-20 MySQL综合-6(MySQL创建数据表+MySQL修改数据表+MySQL删除数据表)

MySQL创建数据表、MySQL修改数据表、MySQL删除数据表

yinying293的博客 1806

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

MySQL学习笔记(五):数据表

数据表的结构与Excel表格类似,都是按照行和列的格式存储数据。数据表由表名、字段(数据表中的列及其约束,包括字段名(列名)、数据类型(约束列中存储数据的类型)、字段约束(约束列中数据符合一定条件,如约束列中数据是唯一的等)、索引(用于高效查询数据,需要理解B+树的数据结构才能用好索引)等)、数据记录和存储引擎等。其中关于索引的原理、分析和使用在MySQL学习笔记(六)总结。

weixin_52502369的博客 1711

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

MySQL数据表添加和修改

数据库常用操作 查询 查询数据库列表 show databases; 查询数据表列表 -- 查询当前连接的数据库的数据表列表 show tables; -- 如果没有连接 show tables from 数据库名; 查询数据表的字段 desc/describe table 数据库名.表名; show columns from 数据表名 from 数据库名; show columns from...

Super_Robot的博客 4365

MySQL数据表的基本操作和基于 MySQL数据表的基本操作的综合实例项目

本文主要介绍了MySQL中数据表的各种操作创建数据表、添加各类约束、查看数据表表结构,修改数据表和删除数据表。使读者可以很快掌握MySQL数据库中关于创建数据表、添加各类约束、查看数据表表结构,修改数据表和删除数据表的基本使用方法。另外还介绍了分别使用cmd环境和Navicat软件环境中创建数据表表、添加各类约束、查看数据表表结构,修改数据表和删除数据表的使用方法。httpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttps。......

m0_47419053的博客 1239

如何修改mysql数据表主键

本文主要介绍了如何修改mysql数据表主键问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教−。

xinyuerr的博客 2779

MySQL数据表

MySQL数据表是数据库中的核心组件,用于存储和管理结构化数据。每个表由行(记录)和列(字段)组成,类似于电子表格。表定义了数据的结构,包括列名、数据类型和约束(如主键)。理解数据表是高效使用MySQL的基础,下面我将逐步解释其关键概念和操作方法。

2509_93013781的博客 1706

MySQL修改数据表的结构

这里创建了一个名为 test 的数据库。

Victory_bad的博客 2493

MySQL 修改和删除数据表

1. 修改数据表   修改表指的是修改数据库中已经存在的数据表的结构。MySQL使用ALTER TABLE语句修改表、常用的修改表的操作有:修改表名、修改字段数据类型或字段名、增加和删除字段、修改字段的排列位置,更改表的存储引擎,删除表的外键约束等。 MySQL是通过ALTER TABLE语句进行表结构的修改 修改表名 ALTER TABLE&lt;旧表名&gt;RENAME[TO]&...

大白成长记 3816

MySQL数据表操作-修改数据表(ALTER TABLE)

修改数据表的前提是数据库中已经存在该表。修改表指的是修改数据库中已经存在的数据表的结构。例如增加或删减列、更改原有列类型、重新命名列或表等。 语法 ALTER TABLE <表名> [修改选项] [修改选项]的语法格式如下: { ADD COLUMN <列名> <类型> | CHANGE COLUMN <旧列名> <新列名> <新列类型> | ALTER COLUMN <列名> { SET DEFAULT <默认值&

Johnny's Lab 1万+

MySQL (创建、查询、修改、删除)数据表

MySQL 数据表 C(Create):创建 1.语法: create table 表名( 列名1 数据类型1, 列名2 数据类型2, .... 列名n 数据类型n ...

hewenqing 8792

MySQL ALTER TABLE:修改数据表

修改数据表的前提是数据库中已经存在该表。修改表指的是修改数据库中已经存在的数据表的结构。修改数据表的操作也是数据库管理中必不可少的,就像画素描一样,画多了可以用橡皮擦掉,画少了可以用笔加上。不了解如何修改数据表,就相当于是我们只要画错了就要扔掉重画,这样就增加了不必要的成本。在 MySQL 中可以使用语句来改变原有表的结构,例如增加或删减列、更改原有列类型、重新命名列或表等。

m0_37449634的博客 1759

MySQL数据表中的auto_increment自增值属性及修改

环境说明: MySQL 5.7 、MySQL 8.0长期以来,我的博客中连续文章的主键编号一直都不是连续的,让我这个强迫症晚期患看着很不舒服。在忍受了这么长时间以后,趁着给博客换的时机,我把所有的文章编号全部改成了连续的,可算是舒服多了。把改完主键编号的文章数据导入新数据库之后,就产生了一个新问题:现在新数据表的主键自增值还是旧数据表的主键自增值。比如说博客数据库的文章表中有80条数据,下次新创建文章的编号是以旧数据库的自增值202开始递增,生成的新文章编号是203,而不是81。

csdn_life18的博客 9519
上一篇: MySQL学习笔记(二)数据类型及数据表的相关操作
下一篇: Linux学习笔记(一)Linux基础
mengrennwpu
博客等级 码龄15年 262粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mengrennwpu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值