MySQL进阶(MySQL学习笔记)

接上回MySQL基础篇

数据完整性约束

定义完整性约束

实体完整性

主键约束

(1)作为列的完整性约束

(2)作为表的完整性约束

2.候选键约束

将id字段和user字段设置为候选键

参照完整性

将classid字段设置为外键

用户定义完整性

非空约束

将name字段添加非空约束

CHECK约束

列约束,限制age字段的值

表约束,限制classid字段

命名完整约束

添加命名外键完整约束

更新完整性约束

删除完整性约束

删除fk-classid

修改完整性约束

更新fk-classid的外键约束为级联删除和级联更新

存储过程与存储函数

创建存储过程和存储函数

创建存储过程

创建一个存储过程

创建存储函数

创建存储函数

变量的应用

局部变量

全局变量

为变量赋值

declare var_name[...] type [default value]

set var_name=expr[,var_name=expr]..

光标应用

声明光标

declare cursor_name cursor for select_statement

打开光标

open info_of_student

使用光标

fetch info_of_student into tmp_name,temp_tel;

关闭光标

close info_of_student

调用存储过程和存储函数

调用从存储过程

调用存储函数

查看存储过程和存储函数

SHOW STATUS语句

显示所有db_database14的存储过程

show procedure status where db='db_database14';

SHOW CREATE语句

修改存储过程和存储函数

删除存储过程和存储函数

触发器

MySQL触发器

创建MySQL触发器

创建具有多条执行语句的触发器

模拟一个删除日志数据表和一个删除时间表

查看触发器

SHOW TRIGGERS语句

查看triggers表中触发器信息

select * from information_schema.triggers;

使用触发器

触发器的执行顺序

使用触发器维护冗余数据

使用触发器维护库存数量

删除触发器

事务

事务机制

事务的概念

原子性,一致性,隔离性,持久性

事务机制的必要性

实现从借记卡账户A向B转账700元,成功后再从A向B转账500元

关闭MySQL自动提交

事务回滚

实现A向B转账500,出错时进行事务回滚

事务提交

显示提交

commit

隐式提交

set autocommit=1

MySQL中的事务

在存储过程中创建事务

回退点

创建一个事务,当出现错误时,回滚到提前定义的回退点

锁机制

锁机制的基本知识

1.锁的类型

读锁(共享锁)

写锁(排他锁)

2.锁粒度
3.锁策略

(1)表级锁

(2)行级锁

4.锁的生命周期

MySAM表的表级锁

以读方式锁定数据表

以读方式锁定数据库中用户的数据表

以写方式锁定数据表

在新的窗口查询则显示失败,关闭后则显示成功

InnoDB表的行级锁

窗口二

事件

事件概述

查看事件是否开启

开启事件

1.设置全局参数

set clobal event_scheduler=ON;

更改配置文件

event_scheduler=on

创建事件

创建一个事件,用于每隔5秒向数据表tb_eventtest中插入一条数据

修改事件

修改事件,让其每隔30秒向数据表插入数据

删除事件

备份与恢复

数据备份

使用mysqldump命令备份

备份一个数据库

mysqldump -u root -p test student >E:\ student.sql

备份多个数据库

mysqldump -u root -p --database test mysql  >E:\backup.sql

备份所有数据库

mysqldump -u root -p --all -database  >E:\all.sql

直接复制整个数据库目录

show variables like '%datadir%';

数据恢复

使用mysql命令还原

mysql -u root -p <E:\all.sql

数据库迁移

mysqldump -h name1 -u root -password=password1 --all-databases |

mysql -h host2 -u root -password=password2

表的导出和导入

用select...into outfile 语句导出文本文件

实现导出信息表记录

select*from tb_bookinfo into outfile 'D:/bookinfo.txt'
    -> fields terminated by  '\,' optionally enclosed by '\"'
    -> lines starting by '\>' terminated by '\r\n';

用mysqldump命令导出文本文件

mysqldump -u root -p -T "D:\" db_database18 tb_library "--lines-terminated-by=\r\n"

"--fields_terminated_by=," "--fields_optionally_enclosed-by="";

用mysql命令导出文本文件

mysql -u root -p --html  -e "select*from tb_bookinfo" db_database18>E:\bookinfo.html

用load data infile命令将文本文件导入数据表

将文本文件中的数据导入表中

load data infile 'E:\bookinfo.txt' into table tb_bookinfo

fields terminated by '\t'

lines terminated by '\r\n'

ignore 1 lines;

用mysqlimport命令导入文本文件

mysqlimport -u root -p  db_database18 "E:\tb_bookinfo.txt"

"--lines-terminated-by=\r\n" "--fields-terminated-by=\t" "--fields-optionally-enclosed-by=\"

MySQL性能优化

分析MySQL数据库的性能

connections:服务器连接次数

uptime:服务器上线时间

slow_queries:慢查询次数

com_select:查询操作次数

con_insert:插入操作的次数

com_delete:删除操作次数

查看服务器的连接和查询次数

通过profile工具分析语句消耗性能

优化查询

分析查询语句

索引对查询速度的影响

使用索引查询

应用关键字like优化索引查询

查询语句中使用多列索引

 create index index_book_info on tb_bookinfo(bookname,price);

查询语句中使用关键字or

select*from tb_bookinfo where bookname='MySQL从入门到精通' or price=89;

优化数据库结构

将字段很多的表分解成多个表

 desc tb_student_extra;

增加中间表

 insert into temp_student select s.id,s.name,c.name
    -> from tb__student s,tb_class1 c where s.classid=c.id;

优化插入记录的速度

禁用索引

alter table 表名 disable keys;

禁用唯一性检查

set unique_checks=0;

set unique_checks=1;

优化insert语句

insert into tn_food values

(null,'果冻','CC果冻',1.8,'2011','北京'),

...;

分析表、检查表和优化表

分析表

检查表

check table 表名1[,表名2...];

优化表

optimize table 表名1[,表名2...];

优化多表查询

优化学生姓名和班级名称

SELECT s.name FROM tb_student s,tb_classes c WHERE s.classid=c.id AND c.name='一年三班';

SELECT name FROM tb_student WHERE class_id=(SELECT id FROM tb_classes c WHERE name='一年三班');

权限管理及安全控制

用户和权限管理

使用CREATE USER命令创建用户

使用DROP USER命令删除用户

drop user mrsoft

使用RENAME USER命令重命名用户

使用GRANT和REVOKE命令管理访问权限

查看用户权限

设置用户权限

grant all on *.* to 'super'@'localhost'with grant option

注:本章源代码来自《MySQL从入门到精通》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/215921.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenVINS学习2——VIRAL数据集eee01.bag运行

前言 周末休息了两天&#xff0c;接着做上周五那个VIRAL数据集没有运行成功的工作。现在的最新OpenVINS需要重新写配置文件&#xff0c;不像之前那样都写在launch里&#xff0c;因此需要根据数据集情况配置好estimator_config.yaml还有两个标定参数文件。 VIRAL数据集 VIRAL…

网格中的最小路径代价

说在前面 &#x1f388;不知道大家对于算法的学习是一个怎样的心态呢&#xff1f;为了面试还是因为兴趣&#xff1f;不管是出于什么原因&#xff0c;算法学习需要持续保持。 问题描述 给你一个下标从 0 开始的整数矩阵 grid &#xff0c;矩阵大小为 m x n &#xff0c;由从 0 …

【WebRTC】【Unity】Unity Web RTC1-Unity中简单实现远程画面

【项目资源下载】 本篇配套直接打开可用的项目包地址&#xff0c;欢迎下载&#xff1a; https://download.csdn.net/download/weixin_41697242/88612084 【背景】 想要在Unity中实现实时远程桌面&#xff0c;找到了Render Streaming这个手段&#xff0c;本篇介绍相应的使用方…

XSS漏洞 深度解析 XSS_labs靶场

XSS漏洞 深度解析 XSS_labs靶场 0x01 简介 XSS原名为Cross-site Sciprting(跨站脚本攻击)&#xff0c;因简写与层叠样式表(Cascading style sheets)重名&#xff0c;为了区分所以取名为XSS。 这个漏洞主要存在于HTML页面中进行动态渲染输出的参数中&#xff0c;利用了脚本语…

【项目小结】优点分析

一、 个人博客系统 一&#xff09;限制强制登录 问题&#xff1a;限制用户登录后才能进行相关操作解决&#xff1a; 1&#xff09;前端&#xff1a; ① 写一个函数用于判断登录状态&#xff0c;如果返回的状态码是200就不进行任何操作&#xff0c;否则Ajax实现页面的跳转操作…

2023/12/12作业

思维导图 作业&#xff1a; 成果图 代码 #include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { speechernew QTextToSpeech(this); ui->setupUi(this); //一直获取当前时间 idst…

如何通过上下滑动实现亮度和音量调节(ArkUI)

场景说明 在音视频应用中通常可以通过上下滑动来调节屏幕亮度和音量大小&#xff0c;本例即为大家介绍如何实现上述UI效果。 说明&#xff1a; 由于当前亮度和音量调节功能仅对系统应用开发&#xff0c;所以本例仅讲解UI效果的实现。 效果呈现 本例效果如下&#xff1a; 当在…

k8s-service 7

由控制器来完成集群的工作负载&#xff0c;service&#xff08;微服务&#xff09;是将工作负载的应用暴露出去&#xff0c;从而解决访问问题 作用&#xff1a;无论是在集群内还是集群外&#xff0c;都可以访问pod上的应用&#xff0c;其实现对集群内的应用pod自动发现和负载均…

关于核心转储和GDB调试的理解

Linux应用程序发生Segmentation fault段错误时&#xff0c;如何利用core dump文件定位错误呢&#xff1f; 在 Linux 系统中&#xff0c;常将“主内存”称为核心(core)&#xff0c;而核心映像(core image) 就是 “进程”(process)执行当时的内存内容。当进程发生错误或收到“信…

论文怎么改才能降低重复率

一、引言&#xff1a;智能工具助力&#xff0c;轻松降低论文重复率 论文的重复率是学术写作中的重要问题&#xff0c;如何有效降低重复率成为了许多研究者的关注焦点。如今&#xff0c;智能工具的发展为我们提供了更多选择。本文将介绍几种实用的智能工具&#xff0c;包括快码…

JAVA:深入了解Java中的Synchronized关键字

1、简述 在Java中&#xff0c;多线程编程是一项常见的任务&#xff0c;然而&#xff0c;它也伴随着一系列潜在的问题&#xff0c;比如竞态条件&#xff08;Race Condition&#xff09;和数据不一致性。为了解决这些问题&#xff0c;Java提供了一种同步机制&#xff0c;即synch…

【华为数据之道学习笔记】3-2 基础数据治理

基础数据用于对其他数据进行分类&#xff0c;在业界也称作参考数据。基础数据通常是静态的&#xff08;如国家、币种&#xff09;&#xff0c;一般在业务事件发生之前就已经预先定义。它的可选值数量有限&#xff0c;可以用作业务或IT的开关和判断条件。当基础数据的取值发生变…

5G下行链路中的MIMO

5G MIMO 影响5G MIMO配置的主要因素是天线的数量和层数UE和gNB有一些预定义的表来定义天线端口和层的数量&#xff0c;选择了特定的表&#xff0c;UE如何确定表中的哪一行用于gNB的每次传输DCI 1-1中该规定了Antenna port 和 层数DMRS 端口数表示正在使用的天线数量&#xff0…

波奇学Linux:Linux进程状态,进程优先级

编写一个程序模拟进程 查看进程状态 修改代码后发现进程状态为由S变成R R为运行态&#xff0c;S为阻塞态 第一次为S是因为调用了外设&#xff08;printf调用屏幕外设&#xff09;&#xff0c;实际上应该为R&#xff0c;S状态轮换&#xff0c;但是R太快了&#xff0c;所以每次…

中国区县人工智能企业数量,shp/excel格式,数据全,覆盖2010-2023年

基本信息. 数据名称: 中国区县人工智能企业数量 数据格式: Shpexcel 数据时间: 2010-2023年 数据几何类型: 面 数据坐标系: WGS84 数据来源&#xff1a;网络公开数据 数据字段&#xff1a;见【吧唧数据】www.bajidata.com 1a2023人工智能企业数量&#xff08;个&…

模块二——滑动窗口:3.无重复字符的最长子串

文章目录 题目描述算法原理解法⼀&#xff1a;暴⼒求解&#xff08;不会超时&#xff0c;可以通过&#xff09;解法二&#xff1a;滑动窗口 代码实现解法⼀&#xff1a;暴⼒求解(时间复杂度为O(N^2^)&#xff0c;空间复杂度为O(1))解法二&#xff1a;滑动窗口(时间复杂度为O(N)…

LeetCode-合并有序链表问题

合并两个有序链表 题目描述&#xff1a; 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 思路&#xff1a; 首先建立一个头节点方便后续操作&#xff0c;然后开始循环将两个链表的节点值进行比较&#xff0c;如果list1节…

hbuiler中使用npm安装datav

注&#xff1a;datav边框样式目前使用时&#xff1a;适用于网页&#xff0c;不适用于app 1、先安装node 安装、配置Node路径 2、为Node配置环境变量 3、在hbuilder的设置中填写node的路径 配置 4、打开cmd输入npm install jiaminghi/data-view 安装dataV&#xff0c;&…

MicroSD 卡 使用读卡器 读取速度测试

设备 - - 电脑为m.2固态硬盘 usb口为USB3.2 gen2接口(即支持1GB/s的接口) cpu: amd3600 测试方案1 直接MicroSD卡放入读卡器测试 38MB/s 从sd卡复制到本地C盘 测试方案2 MicroSD卡使用闪迪的SD卡套套上之后一起插入读卡器 76MB/s 从sd卡复制到本地C盘

uni-app应用设置 可以根据手机屏幕旋转进行 (横/竖) 屏切换

首先 我们打开项目的 manifest.json 在左侧导航栏中找到 源码视图 然后找到 app-plus 配置 在下面加上 "orientation": [//竖屏正方向"portrait-primary",//竖屏反方向"portrait-secondary",//横屏正方向"landscape-primary",//横屏…