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数据库中关于表格的基本操作 阅读详情

相关推荐

Zabbix故障排查10051端口无法启动:zabbix-server.service: main process exited, code=exited, status=1/FAILURE

zabbix-server.service: main process exited, code=exited, status=1/FAILURE报错说与数据库失去连接。

" DevOps菜鸟(Xu JieHao)" 的博客 2255

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

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

weixin_35625676的博客 731

深入浅出:.sh文件在Linux系统中的实战应用与技巧

本文深入浅出地介绍了.sh文件在Linux系统中的实战应用与技巧。从基础概念入手,详细讲解了Bash脚本的运行方法、权限管理,并通过编写自动化备份脚本等实例,展示了如何利用Shell脚本提升工作效率。文章还涵盖了脚本调试、错误处理以及函数、参数解析等进阶技巧,帮助读者从入门到精通,掌握这一强大的自动化工具。

weixin_29243279的博客 348

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

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

qq_44049351的博客 410

程序设计二(面向对象)_实训10_复杂类的实现_ArrayList类的实现

第1关:构造函数与析构函数的实现

2401_83406306的博客 820

FPGA调试利器:VIO与ILA在Vivado中的实战应用指南

本文详细介绍了Vivado中FPGA调试工具VIO与ILA的实战应用技巧。VIO作为虚拟输入/输出工具,可实时调整参数;ILA作为集成逻辑分析仪,能高效捕获内部信号。文章通过具体案例展示了如何配置ILA采样深度、触发条件,以及VIO的动态参数调整功能,帮助开发者提升上板调试效率,解决常见通信失败、数据不同步等问题。

weixin_42553471的博客 424

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

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

优快云_Loveletter的博客 1万+

AquaCrop-OSPy学习笔记02:模型输入设置

AquaCrop-OSPy的输入设置

EWBA_GIS_RS_ER的博客 3693

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

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

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

5G中的RedCap

5G中的redcap

大家好,我是码农老gou,一名专注于编程技术的程序员。在这个博客中,我将与大家分享我在工作和学习中的经验、见解以及一些实用的技术干货。 2527

《QMT量化实战系列》支持自定义筛选与排序的多因子策略,实测年化收益超100%

【QMT量化实战系列】推出《支持自定义筛选与排序的多因子策略》,通过Tushare获取38个核心因子数据,实现股票多维筛选(剔除ST股、次新股及特定板块)。策略创新性地采用多因子加权排名机制,通过(股票数-排名+1)/股票数*100的算法计算各因子得分,支持自定义权重组合。该策略提供完整代码及详细注释,涵盖数据获取、因子筛选、权重排序等核心环节,帮助用户构建个性化量化模型。系列内容每月更新1-2期,由浅入深讲解QMT平台实战应用。

qq_46262068的博客 1255

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

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

颜颜yan_的博客 5548

【DaVinci Developer专题】-8-创建一个枚举Enum ADT(Application Data Type)

目录 1 创建一个枚举Value ADT(Application Data Type) 1.1 命名application data type 1.2 创建一个computation method计算方法属性 1.3 创建一个Contraint约束条件属性 2 创建了一个新的Type Mapping Sets 3 创建了一个S/R Port Interface 4 SWC引用Type Mapping set 5 导入CFG生成代码的总结 6 结尾 <--返回「实战篇」博文-总目录-

「汽车电子助手」的博客 2291

MySQL修改数据表中的字段名

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

追梦人的博客 10万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

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

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

yinying293的博客 1806

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

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

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

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

weixin_52502369的博客 1711

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

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、付费专栏及课程。

余额充值