MYSQL外键约束&用户管理

Oracle学习笔记(八)。数据库约束。非空约束(NOT NULL),唯一性约束(UNIQUE),主键约束(PRIMARY KEY),外键约束(FOREIGN KEY),自定义约束(CHECK) 文章目录定义约束1 定义约束原则2 定义NOT NULL约束2.1 创建表时定义NOT NULL约束2.2 修改表时定义NOT NULL约束3 定义UNIQUE约束3.1 创建表时创建unique约束3.2 修改表时创建unique约束4 定义PRIMARY KEY约束4.1 在创建表时定义PRIMARY KEY约束4.2 在修改表时定义PRIMARY KEY约束4.3 创建联合主键5 定义FOREIGN KEY约束5.1 创建表时定义FOREIGN KEY约束5.2 修改表时定义FOREIGN KEY约束 阅读详情

目录

一、mysql中常见的的约束/规则

1.1 先克隆表,再克隆数据

 1.2 克隆表的数据并创建表

 2.3 drop、truncate、delete区别

1.2 使用密文创建数据库

一、mysql中常见的的约束/规则

① 主键约束(primary key)

② 外键约束(foreign key): 如果同一个属性字段在表一中为主键,而在表二中不是主键,则字段称为表二的外键。 

③ 非空约束(not null)

④ 唯一性约束(unique key): 唯一,可为空,但空值 值允许出现一次。

⑤ 默认值约束(defaulst): 当为空时,默认值

⑥ 自增长约束(auto_increment): 随着记录增加,基于最新的记录的id,进行自加1的增长。

二、主键和外键的关系

创建外键约束作用(误删、修改),保证数据的完整性和一致性。

主键表和外键表的理解:

以公共关键字作为主键的表为主键表(父表、主表)

以公共关键字作为外键的表为外键表(从表、外表)

注意:以外键关联的主表的字段必须设置主键,要求从表不能是临时表,主表外键字段和从表的字段具备相同的数据类型,字符长度和约束(不包括主键约束)。

创建主表test01

创建从表test02

为主表test01添加一个主键约束,主键名建议以"PK_"开头。foreign key外键约束 primary key主键约束

为从表test02表添加外键,并将test02表的hobid字段和test01表的hobid字段建立外键关联。

alter table test02 add constraint FK_hobid foreign key(hobid) references test01(hobid);
references:引用

 

可以使用查询表语句结构命令查看外键关联

show create table test02;

 

插入新的数据记录时,要先主表再从表,否则会报错

insert into test01 values(1,‘runing’);
insert into test02 values(1,‘zhangsan’,20,1);

 

删除数据记录时,要先从表再主表,也就是说删除主键表时必须先删除其他与之关联的表。

delete from test02;

 

查看和删除外键约束

show create table test02;

 

alter table (表名) drop foreign key (约束值)
alter table test02 drop foreign key FK_hobid;
desc test02;

 

show create table test02;

 

三、数据表操作

1、克隆表

在创建数据表的时候,我们有的时候需要使用另外一个表的结构或数据,如果一个个添加,过于繁琐,这时我们可以使用克隆。

1.1 先克隆表,再克隆数据

create table lcdb2 like lcdb;
#通过like方法,复制lcdb的表结构,生成lcdb2表
insert into lcdb2 select * from lcdb;
#将lcdb表的数据,备份到lcdb2表中

1.2 克隆表的数据并创建表

create table zyy3 (select * from zyyy);
#复制lcdb表的数据,到lcdb3中
show create table zyy3\G
#获取数据表的结构、索引等信息
select * from zyy3;

 

2、清空表

2.1 delete清空表

delete from lcdb;
#清空表后,返回的结果内有删除的记录条目
#delete是一行一行进行删除记录数据的
#delete清空表后,自增长字段会按之前最大的记录自增

2.2 truncate清空表

 

truncate table lcdb;
#truncate 清空表后,没有返回被删除的条目
#其工作时是将表结构按原样重新建立
#因此其清空速度比delete快
#truncate清空后,自增长字段会重新开始

2.3 drop、truncate、delete区别

  • 当不在需要一张表时,用drop
  • 想删除部分数据行时,用delete,并带上where
  • 删除数据保留表时用truncate ​​​​​​​

drop table表名

属于DDL类型,不可进行回滚,无法恢复,不可带where,删除表内容和结构,删除速度最快

truncate table表名

属于DDL类型,不可进行回滚,不可带where,表内将删除,删除速度快

delete from表名

属于DML类型,可回滚,可带where,表结构在,表内容要看where执行情况

3、临时表

临时表创建成功之后,使用SHOW TABLES命令是看不到创建的临时表的,临时表会在连接退出后被销毁。 如果在退出连接之前,也可以可执行增删改查等操作,比如使用 DROP TABLE 语句手动直接删除临时表。

 

##添加临时表test
create temporary table test (
id int(4) zerofill primary key auto_increment,
name varchar(10) not null,
cardid int(18) not null unique key,
hobby varchar(50));

## 查看当前库中所有表
show tables;	
##在临时表中添加数据
insert into test03 values(1,'zhangsan',123456789,'watch a film');	
##查看当前表中所有数据
select * from test;
##退出数据库
quit					

##重新登录后进行查看		
mysql -u root -p
##查看之前创建的临时表中所有数据,发现已经被自动销毁
select * from test;

三、用户管理

1、新建用户

 

CREATE USER '用户名'@'来源地址' [IDENTIFIED BY [PASSWORD] '密码'];
#‘用户名’:指定将创建的用户名
#‘来源地址’:指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机名的形式,本地用户可用localhost,允许任意主机登录可用通配符%
#‘密码’:若使用明文密码,直接输入’密码’,插入到数据库时由Mysql自动加密;
#######若使用加密密码,需要先使用SELECT PASSWORD(‘密码’); 获取密文,再在语句中添加 PASSWORD ‘密文’;
#若省略“IDENTIFIED BY”部分,则用户的密码将为空(不建议使用)

1.2 使用密文创建数据库

select password('123456');
create user 'zyy'@'localhost' identified by password '*6BB4837EB74329105EE4568DDA7DC67
ED2CA2AD9';

 

2、查看用户信息

创建后的用户保存在 mysql 数据库的 user 表里

use mysql;   #使用mysql库 
select User from user;

3、重命名用户

rename user 'zyy'@'localhost' to 'zhou'@'localhost';
#将用户zyy改名为zhou

 

 

4、删除用户

drop user 'zhou'@'localhost';
#删除用户zhou

 

四、密码管理

1、修改当前用户密码

set password = password('654321');

 

2、修改其他用户密码

set password for 'zzz'@'localhost' = password('123123');

 

3、root密码遗忘

修改配置文件,添加配置,免密登录MySQL

vim /etc/my.cnf
#添加此行
skip-grant-tables

 

再次修改my.conf配置文件,注释掉之前添加的配置命令,并再次重启服务
使用新密码登录

五、数据库授权

GRANT语句:专门用来设置数据库用户的访问权限。当指定的用户名不存在时,GRANT语句将会创建新的用户;当指定的用户名存在时,GRANT 语句用于修改用户信息。

1、授权

GRANT 权限列表 ON 数据库名/表名 TO '用户名'@'来源地址' [IDENTIFIED BY '密码'];

权限列表:用于列出授权使用的各种数据库操作,以逗号进行分隔,如“select,insert,update”。使用“all”表示所有权限,可授权执行任何操作。

数据库名.表名:用于指定授权操作的数据库和表的名称,其中可以使用通配符。

用户名@来源地址’:用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。来源地址可以是域名、IP地址,还可以使用“%”通配符,表示某个区域或网段内的所有地址,如“%.accp.com”、“192.168.48.%”等。

IDENTIFIED BY:用于设置用户连接数据库时所使用的密码字符串。在新建用户时,若省略“IDENTIFIED BY”部分,则用户的密码将为空。

1.1 数据库授权

show grants for zzz@localhost;
#查看用户权限

 指定用户可以查看哪个数据库/表,别的数据库无权访问

grant select on school.* to zzz@localhost;
#用户zzz只有school库下所有表的查询权限

六、总结

本文主要讲了数据表和用户管理的基本操作:

当不在需要一张表时,用drop;想删除部分数据行时,用delete,并带上where;删除数据保留表时用truncate

因克隆表时无法克隆索引等信息,所以克隆表只能用于临时备份数据,在实际生产中也仅用于备份数据,防止误删除数据,造成不必要的损失

在遗忘MySQL的root密码时,更改配置文件并更改密码后,记得要将配置文件还原,否则其它用户可以直接免密登录


​​​​​​​

 

 

MySQL 外键约束详解 外键是表中的一个字段(或字段集合),它引用另一个表的主键或唯一键。外键约束用于确保引用完整性,保证数据的一致性和有效性。CREATE TABLE 子表名称 (列1 数据类型,列2 数据类型,...FOREIGN KEY (外键列) REFERENCES 父表名称(主键列)[ON DELETE 引用动作][ON UPDATE 引用动作] 阅读详情

相关推荐

【MySQL从小白到高手】第四篇:外键约束详解和表的设计思路

目录前言 MySQL的约束~表的设计FOREIGN KEY~简述~:foreign key : 外键约束 (针对两张表,进行了关联~~)语法格式~: 案例背景~:假设有两张表~每个学生都得属于一个具体的班级,这个班级得存在!!!如果学生表这里出现了一个记录,班级classid是10000,此时这样的数据就是非法的~~这种情况下就可以使用外键约束来描述这种关系.学生表依赖了班级表.就把学生表称为"子表",班级表称为"父表".操作案例~:创建外键约束一个基本写法~ 外键约束写在创建表的末尾,描述的是两张表的

m0_64397675的博客 1436

MySQL数据库用户管理操作(二)

在创建数据表的时候,我们有的时候需要使用另外一个表的结构或数据,如果一个个添加,过于繁琐,这时我们可以使用克隆。 查看数据表结构、索引信息 小结:克隆数据表只能用来备份数据,无法完全代替其功能 临时表创建成功之后,使用SHOW TABLES命令是看不到创建的临时表的,临时表会在连接退出后被销毁。 如果在退出连接之前,也可以可执行增删改查等操作,比如使用 DROP TABLE 语句手动直接删除临时表。 1.1 使用明文创建用户 创建后的用户保存在 mysql 数据库的 user 表里

qq_45088125的博客 816

数字IC后端设计实战:从floorplan到powerplan的优化策略

本文深入探讨了数字IC后端设计中从Floorplan到Powerplan的核心优化策略。文章强调了Floorplan作为布局基础的重要性,并详细解析了Powerplan规划,特别是针对低功耗设计中MTCMOS的应用与IR Drop分析。通过实战经验分享,提供了从模块摆放到电源网络构建、再到IR Drop问题层层递进的解决方案,旨在帮助后端工程师构建稳健高效的芯片物理设计。

weixin_28338005的博客 353

数据库的基本操作--添加/修改约束以及表结构的修改&序列

1.约束 表的约束 往表中插入数据的时候,可能出现一些问题,比如:重复插入数据,内容不对(性别) -------如何保证数据库表中数据的完整性和一致性呢?约束 常见的约束: 主键(primary key),外键(foreign key),唯一(unique),非空(not null),默认(default),用户自定义(check) 2. 约束分类 -----常见的约束有: 主键约束(prima...

子非鱼的博客 6947

Windows 下安装 ros2 的超详细教程

Windows11 ROS安装

2401_83363439的博客 3323

从零开始:kohya_ss环境部署与LoRA/SDXL模型训练实战指南

本文提供了一份详细的kohya_ss环境部署与模型训练实战指南。从零开始,手把手教你使用Conda创建虚拟环境、安装依赖并启动Web GUI界面。核心内容涵盖高质量数据集的准备方法,并重点解析了如何使用kohya_ss工具进行LoRA模型和SDXL模型的微调训练,包括关键参数配置与常见报错解决方案,帮助初学者快速上手AI绘画模型定制。

weixin_29162439的博客 538

开始MySQL之路——外键关联和多表联合查询详细概述

MySQL外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用。对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。外键用来建立主表与从表的关联关系,为两个表的数据简历连接,约束两个表中数据的一致性和完整性。比如,一个水果摊,只有苹果,桃子,李子,西瓜等4种水果,那么,你来到水果摊要买水果只能选择苹果,桃子,李子和西瓜,其它的水果都是不能购买的。

weixin_62458944的博客 4911

PMBus协议解析:基于I2C的电源管理实战与TMS320F28003x驱动开发

在嵌入式系统与服务器电源设计中,数字电源管理总线是实现高效、可靠电源监控与控制的关键技术。PMBus协议基于广泛应用的I2C总线物理层,通过定义标准化的命令集、数据格式与时序规范,为多路电源的电压电流监控、动态调整及故障处理提供了高效解决方案。其技术价值在于通过硬件自动处理协议解析、时钟拉伸与中断,显著降低软件复杂度,使开发者能聚焦于电源环路设计等核心逻辑。该协议广泛应用于服务器、通信基站及高性能计算板卡等场景,通过引入数据包错误检查、专用告警线等机制,确保了电源管理的可靠性。本文以TI TMS320F28

weixin_29189377的博客 374

SQL约束

数据完整性 添加数据完整性=添加表约束 分类:实体完整性,域完整性,引用完整性     1.实体完整性:对数据行的约束,比如:主键约束,唯一约束     2. 域完整性: 对数据列的约束,比如:该列的数据类型, 默认约束,非空约束     3. 引用完整性:外键约束(多表的关系) 主键约束     PRIMARY KEY 约束唯一标识数据库表中的每条记录,每条记录中被主键约束 约束的字段不能相同。...

weixin_42094659的博客 321

Langchain分割方式

【代码】Langchain分割方式。

2897

【云原生进阶之容器】第六章容器网络6.6.2--Cilium部署

部署Cilium非常简单,可以通过单独的yaml文件部署全部组件(目前我使用了这个方式部署了1.7.1版本),也可以通过Helm Chart一键完成。重要的是部署环境和时机:官方建议所有部署节点都使用Linux最新稳定内核版本,这样所有的功能都能启用。作为一个Kubernetes网络组件,它应该在部署Kubernetes其他基础组件之后,才进行部署。

junbaozi的专栏 795

MySQL外键约束详解

今天继续给大家介绍MySQL相关知识,本文主要内容是MySQL外键约束详解。 一、MySQL外键约束作用 二、外键约束创建 (一)创建外键约束的条件 (二)在创建数据表时创建外键约束 (三)在创建数据表后添加外键约束 三、外键约束功能演示

永远是少年 2万+

【专栏必读】王道考研408计算机组成原理万字笔记使用说明及章节导航

本文是为准备408王道计算机组成原理考试的学生精心整理的万字笔记,涵盖了从计算机系统概述、数据表示和运算到存储系统、指令系统等多个章节的重点内容。本文强调了学习笔记的重要性,并分享了学习建议,如按视频课逻辑记录,建立学科框架。笔记详细记录了每章的关键知识点,包括存储器、CPU、I/O系统的工作原理,还附带了习题和思维导图,旨在帮助考生高效复习。

快乐江湖的博客 9万+

MySQL中的外键约束

在主表中添加的数据中,主键 deprno的值包含10、20、30、40和50,由于员工表cmp的外键引用部门表的主键deplto,因此在往员工表emp中添加数据时,其deptno字段的值只能是10、20、30、40和50,不能使用其他的值,具体语句如下。因为从表emp的外键列只能插入所引用的列(部门表的deptmo字段)中存在的值,所以如果要为两个数据表添加数据,就需要先为主表dept添加数据,插入数据的SQL语句如下。在多对一的表关系中,应该将外键添加在“多”的一方,否则会造成数据的冗余。

ZY_CREATE的博客 3552

基于OpenClaw的自动化文件管理与文档分类系统设计与实现

本文介绍了一种基于OpenClaw的自动化文件管理与文档分类系统。系统采用三层架构设计,包含数据层、逻辑层和应用层,核心组件涵盖文件扫描、处理、分类、移动等功能。技术选型上使用Python/FastAPI作为后端,结合PostgreSQL/Elasticsearch/MinIO存储方案,并整合scikit-learn/PyTorch等AI技术实现智能分类。系统实现了文件递归扫描、增量扫描、元数据提取等功能,通过文件哈希和修改时间检测变化。该方案能有效提升文件管理效率,实现文档的自动化分类与智能管理。

一键难忘的博客 757

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

mysql 添加外键约束

mysql添加常用约束

qq_61604164的博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

MySQL外键(详解)

MySQL外键(详解) 什么是外键:    外键是指引用另外一个表中的一列或多列数据,被引用的列应该具有主键约束或者唯一性约束(简单来说外键是另一个表的主键或者唯一约束)。外键可以有重复的, 可以是空值,用来建立和加强两个表数据之间的连接 一、主外键关系 在上图上涉及的两个表中,学生信息表 (stuInfo)为主表,学生 成绩表(score)为从表;那么主从表之间有什么关系呢? 1、当主表中没有对应的记录时,不能将记录添加到子表   --------学生成绩表中不能出现学生信息表中没有的学号 2、不能更

大佬云集技术答疑交流群:743262921(进群暗号:222) 2万+

WINCC7.3破解文件

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

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

MySQL删除外键、增加外键及删除主键、增加主键

MySQL删除外键、增加外键及删除主键、增加主键示例

m0_61961937的博客 2万+

Mysql05——外键约束

mysql外键约束

tonyshi1989的博客 3073

MySQL 外键约束

此外,如果已经存在数据,那么在添加外键约束之前,请确保orders表中的customer_id值与customers表中的id列的值是匹配的,以避免违反外键约束。执行这个 ALTER TABLE 命令后,数据库会将外键约束应用于相应的列,确保只有在 “customers” 表中存在对应的 “id” 值时,才能插入到包含 “customer_id” 列的表中。以上命令将向你指定的表中的 “customer_id” 列添加外键约束,该列将引用 “customers” 表中的 “id” 列。id列被指定为主键。

喝醉酒的小白 2003

Mysql外键约束

外键约束(Foreign Key Constraint)是关系型数据库中一种重要的数据完整性约束机制,用于建立和加强两个表之间的关联,确保数据的一致性和引用完整性。下面从多个方面详细解释外键约束。

2401_83708850的博客 1678

MySQL数据库外键约束打开与关闭 ️

作为一名技术博主,我们时常需要处理数据库的外键约束。本文将详细介绍如何使用 SQL 命令临时关闭 MySQL 数据库的外键约束检查,并提供了重新开启外键约束检查的方法。我们将探讨关闭外键约束检查的风险,并提供最佳实践建议,以确保数据的完整性和一致性。操作SQL 命令关闭外键约束开启外键约束本文详细介绍了如何临时关闭 MySQL 数据库的外键约束检查,以及关闭外键约束检查可能带来的风险和最佳实践建议。在实际应用中,我们应当谨慎操作,始终保证数据的完整性和一致性。

沉淀所学,分享所思,让热爱与成长同行。商务记录AI实战经验,助力开发者快速成长。 热爱AI,希望做出有影响力的技术成果。 技术点亮生活,分享连接价值与机会。 专注AI落地实战,陪你走好技术每一步。 2034

1203、字段约束、主键、外键、mysql索引、mysql用户管理

1、PRIMARY KEY:主键,用于保证该字段的值具有唯一性并且非空。2、NOT NULL :非空,用于保证该字段的值不能为空。3、DEFAULT:默认值,用于保证该字段有默认值。4、UNIQUE:唯一索引,用于保证该字段的值具有唯一性,可以为空。5、 FOREIGN KEY:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值,在从表添加外键约束,用于引用主表中某些的值。**大白话:**给表头加了索引标签之后,会对表头下的数据生成排队信息保存在表对应的文件里(表名.ibd)

weixin_56619848的博客 2219

MySQL — 外键关联操作

目录 文章目录目录MySQL 的外键约束创建表时定义外键(References,参照)修改原有表的外键约束删除外键约束on delete/update 的联动操作类型CASCADE(级联)约束方式SET NULL(设空)约束方式以 NO ACTION(不采取行动)或 RESTRICT(禁止)方式参考文档 MySQL 的外键约束 注:MySQL 的 InnoDB 表引擎才支持外键关联,MyISAM 不支持。 创建表时定义外键(References,参照) 在 CREATE TABLE 语句中,通过 FOREI

烟云的计算 1万+
上一篇: 程序员如果都懂SpringWebFlux框架的话,也不用天天CRUD了
下一篇: 5分钟,带你看完24岁60W年薪架构师的简历,上面竟然写着精通JVM
java_lujj
博客等级 码龄4年 18粉丝 152原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值