MySQL进阶(MySQL学习笔记)

news2024/12/23 9:35:17
接上回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.coloradmin.cn/o/1305705.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构第 6 章 ②】- 用 C 语言实现邻接矩阵

目录 一、邻接矩阵表示法 二、AMGraph.h 三、AMGraph.c 四、Test.c 【数据结构第 6 章 ① 】- 图的定义和基本术语-CSDN博客 由于图的结构比较复杂&#xff0c;任意两个顶点之间都可能存在联系&#xff0c;因此无法以数据元素在存储区中的物理位置来表示元素之间的关系&…

内核上项目【通信】

文章目录 目的操作步骤逆向分析实现代码参考文献 目的 在Win7 64位系统上编写驱动利用ExRegisterAttributeInformationCallback注册回调进行通信 操作步骤 1.利用MmGetSystemRoutineAddress获取ExRegisterAttributeInformationCallback中ExpDisSetAttributeInformation、Exp…

detectron2中save_text_instance_predictions⭐

save_text_instance_predictions demo.py中修改关于路径os.path.join()函数用于路径拼接文件路径&#xff0c;可以传入多个路径os.path.basename(path)就是给定一串路径的最终找到的那个文件python官方文档链接 将 Python 对象序列化为 JSON 字符串with open 打开文件&#xff…

基于.NET Core + Quartz.NET+ Vue + IView开箱即用的定时任务UI

前言 定时任务调度应该是平时业务开发中比较常见的需求&#xff0c;比如说微信文章定时发布、定时更新某一个业务状态、定时删除一些冗余数据等等。今天给大家推荐一个基于.NET Core Quartz.NET Vue IView开箱即用的定时任务UI&#xff08;不依赖数据库,只需在界面做简单配…

java--HashMap、LinkedHashMap、TreeMap底层原理

1.HashMap集合的底层原理 ①HashMap跟HashSet的底层原理是一模一样的&#xff0c;都是基于哈希表实现的。 ②实际上&#xff1a;原来学的Set系列集合的底层原理就是基于Map实现的&#xff0c;只是Set集合中的元素只要键数据&#xff0c;不要值数据而已。 2.哈希表 ①JDK8之前…

如何使用nacos进行配置管理以及代码集成

首先需要在maven的pom文件中引入nacos-config依赖 <!--nacos配置管理依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency> 在项目中添加boo…

好用便签有什么软件?好用的便签是什么

在工作中&#xff0c;我经常需要记录一些重要的信息&#xff0c;以便在需要时能够快速查找。但是&#xff0c;我曾经使用过的便签软件总是让我感到不满意&#xff0c;要么功能不够强大&#xff0c;要么使用起来不够方便。我一直在寻找一款好用的便签软件&#xff0c;能够让我事…

使用Kali Linux端口扫描

端口扫描 【实训目的】 掌握端口扫描的基本概念和端口扫描的原理&#xff0c;掌握各种类型端口扫描的方法及其区别。 【场景描述】 在虚拟机环境下配置4个虚拟系统“Win XP1” “Win XP2” “Kali Linux”和“Metasploitable2”&#xff0c;使得4个系统之间能够相互通信。实…

软件兼容性测试:保障多样化用户体验的重要功能

随着移动设备和操作系统的快速发展&#xff0c;软件兼容性测试变得越发重要。这项测试确保软件在不同平台、设备和环境下都能够正常运行&#xff0c;提供一致而稳定的用户体验。下面是软件兼容性测试中的一些关键功能&#xff1a; 1. 跨平台兼容性测试 在不同操作系统上运行的软…

【PHP编程实战】手把手教你如何下载文件,实例代码详解!

本文将向大家详细介绍PHP文件下载实例代码&#xff0c;具有一定的参考价值。对于一个网站而言&#xff0c;文件下载功能几乎是必备的。因此&#xff0c;了解如何使用PHP实现文件下载是非常必要的。在接下来的内容中&#xff0c;我们将一起探讨PHP文件下载的实现方法。 无控制类…

串口实验(中断)

需求&#xff1a; 通过中断的方法接受串口工具发送的字符串&#xff0c;并将其发送回串口工具。 硬件接线&#xff1a; 同上 串口配置&#xff1a; 前 4 步同上 5. 打开中断 编程实现&#xff1a; 1、这段代码主要实现了在接收到回车符时判断是否接收到换行符&#xff0c…

正态总体的区间估计

目录 一、区间估计 1.区间估计原理 2.区间估计定义 二、三大分布 1.正态分布 2.χ分布 3.t分布 三、 情况分类 1. μ 的区间估计 (1)已知σ (2)未知σ 2. σ的区间估计 四、公式推导 1.标准正态分布 2.t分布 3. χ分布 五、例题 一、区间估计 1.区间估计原理…

前沿重器[39] | 对话式推荐系统——概念和技术点

前沿重器 栏目主要给大家分享各种大厂、顶会的论文和分享&#xff0c;从中抽取关键精华的部分和大家分享&#xff0c;和大家一起把握前沿技术。具体介绍&#xff1a;仓颉专项&#xff1a;飞机大炮我都会&#xff0c;利器心法我还有。&#xff08;算起来&#xff0c;专项启动已经…

P1单片机定时器配置及定时器中断——C51(超详细)

目录 1. 简介 1.1 概念解读 1.2 定时器怎么定时 1.什么是晶振 2.什么是时钟周期 3.什么是机器周期 4.加1经过了多少时间 1.3 定时器编程 1.如何算出10ms定时器的初值(TL0 TH0) 2.关于TCON ,怎么知道爆表 3.怎么开始计时(TR0) 4.定时器使用是有很多种模式的&#xf…

sylar高性能服务器-配置(P10-p11)代码解析+调试分析

文章目录 p9&#xff1a;配置模块搭建一、ConfigvarBase二、ConfigVar三、Config四、小结 p10&#xff1a;YAML的使用一、安装yaml-cpp二、使用yaml-cpp三、代码解析 P11&#xff1a;YAML与日志的整合一、方法函数二、代码调试三、test_config结果四、小结 p9&#xff1a;配置模…

2023年全球软件开发大会(QCon广州站2023)-核心PPT资料下载

一、峰会简介 本次峰会包含&#xff1a;泛娱乐时代的边缘计算与通讯、稳定性即生命线、下一代软件架构、出海的思考、现代数据架构、AGI 与 AIGC 落地、大前端技术探索、编程语言实战、DevOps vs 平台工程、新型数据库、AIGC 浪潮下的企业出海、AIGC 浪潮下的效能智能化、数据…

联邦边缘学习中的知识蒸馏综述

联邦边缘学习中的知识蒸馏综述 移动互联网的快速发展伴随着智能终端海量用户数据的产生。如何在保护数据隐私的前提下,利用它们训练出性能优异的机器学习模型,一直是业界关注的难点。为此,联邦学习应运而生,它允许在终端本地训练并协同边缘服务器进行模型聚合来实现分布式机器…

C++字符串插入函数(insert)

1.在下标为n处插入y #include <iostream> #include <algorithm> #include <string> using namespace std;string x,y; int n;int main() {cin>>x>>y>>n;x.insert(n,y); //在下表为n处插入ycout<<x<<endl;return 0; }2…待续

十几个软件测试实战项目【外卖/医药/银行/电商/金融】

项目一&#xff1a;ShopNC商城 项目概况&#xff1a; ShopNC商城是一个电子商务B2C电商平台系统&#xff0c;功能强大&#xff0c;安全便捷。适合企业及个人快速构建个性化网上商城。 包含PCIOS客户端Adroid客户端微商城&#xff0c;系统PC后台是基于ThinkPHP MVC构架开发的跨…

【TiDB理论知识10】TiDB6.0新特性

新特性 Placement Rules in SQL 小表缓存 内存悲观锁 Top SQL TiDB Enterprise Manager 一 Placement Rules in SQL Placement Rules in SQL 之前会遇到的问题 比如 北京的业务需要访问 T2 和 T3表 &#xff0c;但是T3表的数据在纽约 纽约的业务需要问访T4 T5 T6表…