![](https://img-blog.csdnimg.cn/20190927151043371.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Mysql
mysql知识&实践记录
一稻道人
当世俗人,偶有不俗之志。
展开
-
mysql 事务的隔离级别
采用哪种隔离级别要根据系统需求权衡决定,其中,可重复读是 MySQL(INNODB) 的默认级别。2)可重复读:在一个事务内,最开始读到的数据和事务结束前任意时刻读到的同一批数据都是一致的。1)脏读:读到了其它事务未提交的数据即脏读,未提交意味着数据有可能会被回滚,也就是最终有可能不会存储到数据库中,此时事务B插入了与事务A更改前的记录相同的记录行,并且在事务A提交之前先提交了。此时,事务A的查询,会发现刚刚的更改不起作用,但其实是刚刚事务B插进来的。3)幻读:事务A对某些行的内容做了更改,但还未提交。原创 2024-03-03 17:25:38 · 338 阅读 · 0 评论 -
mysql查询条件字符串赋给数值类型时的查询逻辑
实际查询时:age=7。# 实际查询时:age=0。# mysql 查询语句 将字符串赋给数字类型的字段时,查询的逻辑。原创 2024-03-03 17:23:13 · 135 阅读 · 0 评论 -
mysql 性能调优&参数&配置文件
--###########################-- Bin-Log设置 开始 --#############################################--###########################-- Bin-Log设置 结束 --############################################ 本配置参考 https://imysql.com/my-cnf-wizard.html #原创 2024-03-03 17:14:41 · 543 阅读 · 0 评论 -
mysql 正则-字符匹配模式
原创 2024-03-03 17:03:53 · 89 阅读 · 0 评论 -
mysql字符串精度对于性能影响
结论:字符串类型字段的定义,不要过长,一般比实际长度大10%即可。图省事如所有都定义成255长度或者text,在数据量较大或进行较为复杂的查询计算时,会降低查询的效率。mysql中对于字符串精度 如 varchar(20)和varchar(255)对性能的影响分析。原创 2024-03-03 16:56:38 · 265 阅读 · 0 评论 -
mysql创建用户&赋予权限
【代码】mysql创建用户&赋予权限。原创 2024-03-03 16:43:15 · 93 阅读 · 0 评论 -
mysql 日期操作
【代码】mysql 日期操作。原创 2024-03-03 16:33:20 · 94 阅读 · 0 评论 -
mysql之 case when
可嵌套多层,类似于 if …原创 2024-03-03 16:23:09 · 277 阅读 · 0 评论 -
mysql之union和 union all
union all 将子查询的结果全部合并。union 会对结果进行去重。原创 2024-03-03 15:33:21 · 382 阅读 · 0 评论 -
mysql innodb 之 buffer pool
当执行读写操作的时候硬盘中的数据页会加载到buffer pool的数据页中,当buffer pool中的数据页持久化到硬盘中时,这些数据页又会被释放出来。那么如何识别buffer pool中哪些数据页是空闲的,比较笨的方法是遍历所有的数据页,会造成性能问题。而free链表则是用来记录buffer pool中所有的空闲数据页,free链表是一个双向链表,由每个数据页的控制块组成,每个控制块有两个指针,free_pre:指向上一个空闲数据页,free_nexe:指向下一个空闲数据页。原创 2024-02-01 21:33:28 · 870 阅读 · 0 评论 -
教程--ubuntu安装 mysql
https://www.cnblogs.com/hufulinblog/p/10124001.htmlhttps://www.cnblogs.com/cxxjohnson/p/7487010.html原创 2020-07-04 08:19:20 · 113 阅读 · 0 评论 -
.net core 数据库从sqlserver迁移到mysql
先抛个链接https://blog.csdn.net/sD7O95O/article/details/78941648按照以上博客中的操作,发现add-migration可以成功,但是update-database的时候报错,具体报错信息不记得了,大概的意思就是当前mysql的语法不匹配,想到更换mysql的版本,于是就开始了跳坑的过程。本来我的机器(win10)mysql装的是:5....原创 2018-12-06 15:37:53 · 892 阅读 · 0 评论 -
26-mysql--分支结果之循环结构
分类while 、loop、repeat循环控制:iterate 类似于continue,继续,结束本次循环,继续下一次leave类似于 break,跳出,结束当前所在的循环语法while:【标签:】 while 循环条件 do 循环体;end while 【标签】;loop:【标签:】loop 循环体;end loop 【标签】;repeat:【标签:】 repeat 循环体until 结束循环的条件end repeat 【标签】;案例批量插入,根据次数输入到原创 2020-06-22 22:41:12 · 96 阅读 · 0 评论 -
25-mysql--流程控制结构
分类顺序结构:程序从上往下依次执行分支结构:程序从两条或多条路径中选择一条去执行循环结构:程序在满足一定条件的基础上,重复执行一段代码分支结构1 if 函数功能:实现简单的双分支语法:if(表达式1,表达式2,表达式3)执行顺序:如果1成立,则返回2的值,否则返回3的值2 if 结构:只能放在begin end结构中功能:实现多重分支语法:if 条件1 then 语句1;else if 条件2 then 语句2;...[else 语句n;]end if;案例:根据传入原创 2020-06-22 22:25:56 · 89 阅读 · 0 评论 -
25-mysql--函数
含义一组预先编译好的sql语句的集合,理解成批处理语句1、提高代码的重用性2、简化操作3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率函数和存储过程的区别存储过程:可以有0个返回,也可以有多个返回值,适合做批量插入、批量更新函数:有且仅有必须有1个返回,适合做处理数据后返回一个结果创建语法CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型BEGIN 函数体END注意:1 参数列表 包含两部分:参数名,参数类型2 函数体:肯定会有ret原创 2020-06-22 22:00:33 · 123 阅读 · 0 评论 -
mysql case-when-end 条件语句
UPDATE USER SET Gender=CASE WHEN @age=10 THEN 'nan' WHEN @age=25 THEN 'nu' WHEN @age=20 THEN '222' ELSE gender END, NAME= CASE WHEN @age=10 THEN 'name4' WHEN @age=25 THEN 'name3' ELSE NAME END W...原创 2020-06-22 15:43:33 · 154 阅读 · 0 评论 -
24-mysql --存储过程
存储过程含义:一组预先编译好的sql语句的集合,理解成批处理语句1 提高代码的重用性2 简化操作3 减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率1 创建语法CREATE PROCEDURE 存储过程名(参数列表)BEGIN 存储过程体(合法的slq语句)END注意:1 参数列表包含三部分:参数模式、参数名、参数类型举例:IN stuname VARCHAR(20)参数模式:IN:该参数可以作为输入,该参数需要调用方传入值OUT:该参数可以作为输出,该参数原创 2020-06-22 08:06:13 · 102 阅读 · 0 评论 -
23-mysql --变量
分类系统变量: 全局变量 会话变量自定义变量: 用户变量 局部变量系统变量变量由系统提供,不是用户定义的,属于服务器层面的注:如果是全局级别用global,如果是会话级别用session;如果不写,则默认session使用语法:1 查看所有的系统变量SHOW GLOBAL|SESSION VARIABLES;2 查看所有满嘴条件的部分系统变量SHOW GLOBAL | SESSION VARIABLES LIKE %CHAR%;3 查看指定的某个系统变量的值SE原创 2020-06-22 07:39:39 · 90 阅读 · 0 评论 -
22-mysql -- 使用视图注意事项
具备以下特点的视图不允许更新1 包含以下关键字的sql语句:分组函数,distinct,group,by ,having,union,union al2 select 中字句查询3 join from 一个不能更新的视图4 where子句的子查询引用了from字句中的表创建视图 vs 创建表创建语法的关键字是否实际占用物理空间使用视图create view只是的保存了slq逻辑增删改查,我们一般不能用增删改表create table只保存了数据增删改查原创 2020-06-21 23:22:54 · 289 阅读 · 0 评论 -
21-mysql -- 视图
含义视图是一张虚拟表,和普通表一样使用,mysql 5.1版本出现的新特性,是通过表动态生成的数据。只保存了slq 逻辑,不保存查询结果应用场景:1 多个地方用到同样的查询结果2 该查询结果使用的slq语句较复杂优点:1 重用sql2 简化复杂sql操作,不必知道它的查询细节,保护数据,提高安全性创建视图语法:Create or replace view 视图名as 查询语句;# 查询姓名中包含a字符的员工名、部门名、工种信息1 创建视图CREATE VIEW infoA原创 2020-06-21 23:15:54 · 76 阅读 · 0 评论 -
20-mysql --事务2--隔离级别
并发事务的问题对于同时运行的多个事务,当这些事务访问数据库中相同的数据时,如果没有采取便要的隔离机制,就会导致各种并发问题:脏读:对于两个事务T1,T2,T1读取了T2已经更新但还没有提交的字段之后,如果T2回滚,那么T1读取的数据就是临时且无效的不可重复读:两个事物A和B,A读取了一个字段,然后B更新了该字段,之后A再次读取同一个字段,值就不同了幻读:对于两个事物A和B,A从一个表中读取了一些字段,然后B在该表中插入了一些新的行。之后,若A再次读取同一个表,会多出几行数据。数据库事物的隔离级原创 2020-06-21 19:11:49 · 85 阅读 · 0 评论 -
19-mysql --事务1
什么是事务事务是由单独单元的一个或多个sql语句组成,在这个单元中,每个mysql语句是相互依赖的。而整个单独单元作为一个不可分割的整体,如果单元中某条sql语句一旦执行失败或产生错误,整个单元就会回滚。所有受到影响的数据将返回到事务开始以前的状态;如果单元中的所有sql语句执行成功,则事务被顺利执行。事务的acid属性1 原子性(Atomicity)原子性是指事务是一个不可分割的工作单元,事务中的操作要么都发生,要么都不发生2 一致性(Consistency)事务必须使数据库从一个一致性状态原创 2020-06-21 18:13:21 · 79 阅读 · 0 评论 -
18-mysql -- 自增长列(标识列)
标识列又称自增长列:可以不用手动的插入值,系统提供默认的序列值特点:1 标识列必须和主键搭配么? 不一定,但要求有一个key,例如 unique2 一个表可以有几个标识列? 至多有一个3 标识列的类型只能是数值型4 标识列可以通过 set auto_increment_invrement=3;设置步长关键字:auto_incrementCREATE TABLE test( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20));SH原创 2020-06-21 12:45:53 · 118 阅读 · 0 评论 -
17-mysql --外键创建和删除
创建外键*创建外键的三种方式*方式一:ALTER TABLE Person ADD FOREIGN KEY(job_id) REFERENCES jobs(id);方式二:ALTER TABLE Person ADD CONSTRAINT FOREIGN KEY(job_id) REFERENCES jobs(id);方式三:ALTER TABLE Person ADD CONSTRAINT person_job_FK FOREIGN KEY(job_id) REFERENCES jobs(i原创 2020-06-21 11:51:38 · 416 阅读 · 1 评论 -
16-mysql -- 添加约束
原始表:CREATE TABLE stuinfo( id INT, stuname VARCHAR(20), gender CHAR(1), seat INT, age INT, majorid INT)修改表时添加约束1 添加非空约束ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NOT NULL;2 添加默认约束ALTER TABLE stuinfo MODIFY COLUMN age INT DEFAULT 19;原创 2020-06-20 08:47:22 · 106 阅读 · 0 评论 -
15-mysql --约束 分类
约束分类六大约束:1 not null:非空,用于保证字段值不为空2 default:默认,保证字段有默认值3 primary key:主键,保证字段值具有唯一性,且非空4 unique :唯一键,用于保证该字段的值具有唯一性,可以为空5 check:检查约束(mysql中不支持)6 foreign key:外键,用于限制两个表的关系,用于保证该字段的值必须来自主表的关联列的值添加约束的时机:1 创建表时2 修改表时约束的添加分类:1 列级约束:六大约束语法上都支持,但外键约束没有效原创 2020-06-17 00:05:58 · 117 阅读 · 0 评论 -
14-mysql -- 常见数据类型
常见数据类型总览1 数值型: 整型 小数:定点数,浮点数2 字符型: 较短的文本:char、varchar 较长的文本:text、blob(较长的二进制数据)3 日期型整型分类: tinyint 、smallint、mediumint、int/integer、bigint 1 2 3 4 8 字节数如何设置无符号和有符号CREATE TABLE tab_int( t1 INT, t2 INT UNSIGNED #无符号原创 2020-06-15 23:54:48 · 102 阅读 · 0 评论 -
13-mysql DDL--数据定义语言
库和表的管理库的管理:创建create,修改alter,删除drop1 库的创建 语法: create database [if not exists] 库名;CREATE DATABASE IF NOT EXISTS books;2 库的修改#更改库的字符集ALTER DATABASE books CHARACTER SET gbk;3 库的删除语法:drop database [if exists] 库名DROP DATABASE IF EXISTS books;表的管理:原创 2020-06-15 22:07:51 · 141 阅读 · 0 评论 -
12-mysql DML---数据操作
DML 数据操作语言插入:insert修改:modify删除:delete一、 插入方式一:insert into 表名(列名,...) values(值1,...);特点:1 插入字符、字符串或日期要加单引号,插入数值不需要加引号2 插入的值的类型要与列类型一致或兼容3 列的顺序可以调换4 可以省略列名,此时默认所有列,而且列的书序和表中列的顺序一致INSERT INTO beauty (id,NAME,sex,borndate,phone,photo,boyfriend_id原创 2020-06-14 23:19:10 · 232 阅读 · 1 评论 -
11-mysql DQL--联合查询
联合查询union 联合 合并:将多条查询语句的结果合并成一个结果语法:查询语句1:union查询语句2…特点:1 要求多条查询语句的查询列数是一致的2 要求多条查询语句的查询的每一列的类型和顺序最好一致3 union关键字默认去重,如果使用union all可以包含重复项SELECT id,cname FROM t_ca WHERE csex='男'UNION ALLSELECT t_id,tname FROM t_ua WHERE tGender='mail';..原创 2020-06-14 11:32:57 · 178 阅读 · 0 评论 -
10-mysql DQL--查询练习
#1 查询工资最低的员工信息SELECT * FROM employees WHERE salary=(SELECT MIN(salary) FROM employees);#2 查询平均工资最低的部门信息#实现一(写复杂了):SELECT AVG(salary) AS avgsalary,department_id FROM employees GROUP BY department_id ORDER BY avgsalary ASC LIMIT 1;SELECT * FROM de...原创 2020-06-14 09:26:42 · 245 阅读 · 0 评论 -
9--mysql DQL--分页查询
分页查询应用场景:当腰显示的数据,一页显示不全,需要分页提交sql请求语法:select 查询列表from 表【type join 表2on 连接条件gourp by 分组条件having 分组后的筛选order by 排序的字段】limit offset,size;offset:要显示条目 的起始索引size:要显示的条目个数特点:limit语句放在查询语句的最后2 公式:要显示的页数page,每页的条目数size从起始索引开始的情况,offset可以省略#查原创 2020-06-13 23:29:26 · 215 阅读 · 0 评论 -
8--mysql DQL--子查询
含义出现在其他语句中的select语句,称为子查询或内查询,外部的查询语句,称为主查询或外查询。分类:1 按子查询出现的位置:select 后面:仅仅支持标量子查询from后面:支持表子查询 创建临时表where 或 having后面:支持 标量子查询,列子查询,行子查询exists后面(相关子查询)2 按结果集的行列数不同:标量子查询(结果集只有一行一列)列子查询(结果集只有一列多行)行自查询(结果集只有一行多列)表子查询(结果集一般为多行多列)特点:子查询放在小括号内子查原创 2020-06-13 23:17:36 · 185 阅读 · 0 评论 -
7--mysql DQL--连接查询说明
left join:以左表为基准,根据on条件过滤连接生成临时表,on后面的过滤条件对左表无效right join:以右表为基准,根据on条件过滤连接生成临时表,on后面的过滤条件对右表无效full join:以左表为基准,根据on条件过滤连接生成临时表,on后面的过滤条件对左右表无效inner join:等值连接,根据过滤条件生成临时表。用inner join 后面的条件 可以用 where实现#以左连接为例:#查询部门名为 SAL或 IT的员工信息#此时该以哪张表作为主表?# 1 以员工原创 2020-06-13 09:19:29 · 837 阅读 · 0 评论 -
6--mysql DQL--连接查询02
sql 99标准语法:原创 2020-06-13 00:26:16 · 90 阅读 · 0 评论 -
5--mysql DQL--连接查询01
笛卡尔乘积现象表1有m行,表2有n行,结果=m*n行】发生原因:没有有效的连接条件如何避免:添加有效的连接条件连接查询(又称多表查询)按年代分类:①sql 92标准:仅支持内连接②sql 99标准配【推荐】:支持内连接+外连接(左外+右外)+交叉连接按功能分类:①内连接:等值连接,非等值连接,自连接②外连接:左外连接,右外连接,全外连接③交叉连接sql 92 标准1 等值连接#查询员工名和对应的部门名SELECT `last_name`,`department_name`原创 2020-06-11 08:11:19 · 93 阅读 · 0 评论 -
4--mysql DQL--分组查询
语法select 分组函数,列 (出现在gourp by的后面)from 表[where 筛选条件]group by 分组列表[order by 子句]注意:查询列表必须特殊,要求是分组函数和gourp by后出现的字段#查询邮箱中包含a字符的,每个部门的平均工资SELECT AVG(salary),department_idFROM employeesWHERE email LIKE('%a%')GROUP BY department_id;#查询有奖金的每个领导手下员原创 2020-06-10 08:13:44 · 100 阅读 · 0 评论 -
3--mysql DQL--常见函数
字符函数1.length 获取参数值的字节个数 SELECT LENGTH('join');#3 #一个汉字在utf8字符集中占3个字节 SELECT LENGTH('张三丰');#9 #查看当前数据库字符集 SHOW VARIABLES LIKE '%char%';2.concat 拼接字符串 SELECT CONCAT(last_name,'_',first_name) AS fullName FROM employees;3.upper,lowerSELECT原创 2020-06-09 08:13:14 · 153 阅读 · 0 评论 -
2--mysql DQL--基础查询
语法select 查询列表 from 表名;特点:1 查询列表可以是:表中字段,常量值,表达式,函数2 查询结果是一个虚拟的表格模拟查询准备,现有以下四张表:departments,employees,jobs,locations:查询表中字段SELECT last_name FROM employees;#查询单个字段SELECT last_name,salary,email FROM employees;#查询多个字段SELECT * FROMemployees;查询表原创 2020-06-08 00:36:14 · 116 阅读 · 0 评论 -
1--mysql--初识
相关概念DB:数据库(database),数据存储的仓库DBMS:数据库管理系统(Database Management System),数据库是通过DBMS创建和操作的容器SQL:结构化查询语言(Structure Query Language),与数据库通信的语言mysql数据库mysql简介1.隶属于mySqlAB公司,后被oracle公司收购。2.优点:成本低,开放源代码;执行快;容易安装和试用;3.版本:社区版(免费),企业版(收费)4.mysql数据库的安装与卸载这里不再说明,原创 2020-06-07 22:39:37 · 125 阅读 · 0 评论