![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
mysql
文章平均质量分 72
mysql总结
炎升
这个作者很懒,什么都没留下…
展开
-
Mysql里的锁(一):悲观锁、乐观锁
顾名思义,悲观锁是基于一种悲观的态度类来防止一切数据冲突,它是以一种预防的姿态在修改数据之前把数据锁住,然后再对数据进行读写,在它释放锁之前任何人都不能对其数据进行操作,直到前面一个人把锁释放后,下一个人才可对数据进行加锁,然后才可以对数据进行操作,一般。乐观锁是对于数据冲突保持一种乐观态度,操作数据时不会对操作的数据进行加锁(这使得多个任务可以并行的对数据进行操作),只有到数据提交的时候才通过一种机制来验证数据是否存在冲突(一般实现方式是。数据库本身锁的机制都是基于悲观锁的机制实现的;转载 2023-02-26 16:03:14 · 747 阅读 · 0 评论 -
数据库视图
视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。分布式查询也可用于定义使用多个异类源数据的视图。如果有几台不同的服务器分别存储组织中不同地区的数据,而您需要将这些服务器上相似结构的数据组合起来,这种方式就很有用。原创 2023-01-10 14:10:19 · 568 阅读 · 0 评论 -
sql更新字段值等于另一张表的值
sql1:按用户编号排序,只修改前10条数据。sql2:多字段修改,可全表或指定数据修改。原创 2022-04-29 10:01:45 · 1931 阅读 · 0 评论 -
full join关联表
FULL OUTER JOIN 关键字返回左表(left_table)和右表(right_table)中所有的行。如果 "left_table" 表中的行在 "right_table" 中没有匹配或者 "right_table" 表中的行在"left_table" 表中没有匹配,也会列出这些行。a1表a2表sql:结果: 说明:总结: FULL OUTER JOIN 关键字返回左表(left_table)和右表(right_table)中所有的行。如果 a1表中的行在 a2 中没有匹配或者原创 2022-06-13 15:55:49 · 22727 阅读 · 0 评论 -
mysql 之date 相关函数
表:time_is_presupposed字段:id、time1、time21、date() 函数语法:date(date)说明:date()函数提取日期或日期/时间表达式的日期部分。SELECT id,date(time1) FROM `time_is_presupposed`;2、DATE_SUB() 函数语法:DATE_SUB(date,INTERVAL expr unit)说明:DATE_SUB() 函数从日期减去指定的时间间隔。date 参数是合法的日原创 2022-05-25 16:11:45 · 19047 阅读 · 0 评论 -
mysql值locate()、position()、instr() 函数
语法:locate(substr, str) : 返回字符串substr在 字符串身str 中第一次出现的位置。locate(substr, str,pos) :返回字符串substr在str中第一次出现的位置,从第pos位置开始。说明:返回0,代表字符串substr没有出现在字符串str中 。此函数执行不区分大小写。示例说明:返回结果,以第一次出现的字符顺序为准。(从1开始)SELECT LOCATE('bar', 'foobar...原创 2022-04-09 11:54:53 · 2640 阅读 · 0 评论 -
concat、concat_ws()、group_concat()
concat() 与 concat_ws() 函数用于连接两个或多个串,但它们之间的基本区别是:1、CONCAT_WS()函数可以执行级联与串之间的分离器沿,而在CONCAT()方法没有隔板的概念。2、它们之间的另一个重要区别是,CONCAT()如果任何参数为NULL,则函数返回NULL;而CONCAT_WS()函数 分隔符为NULL时,函数将返回才NULL。1、concat()函数功能:将多个字符串连接成一个字符串。语法:concat(str1,str2,...)MySQL的con原创 2022-04-09 10:43:21 · 5320 阅读 · 0 评论 -
select 中的if用法
if表达式IF( expr1 , expr2 , expr3 )expr1 的值为 TRUE,则返回值为 expr2expr1 的值为FALSE,则返回值为 expr3例:SELECT IF(TRUE,1+1,1+2);-> 2SELECT IF(FALSE,1+1,1+2);-> 3SELECT IF(STRCMP("111","222"),"不相等","相等");-> 不相等-- 查找出售价为 50 的书,如果是 java 书的话,就要标...原创 2021-12-09 15:57:49 · 4128 阅读 · 0 评论 -
JDBC 之ResultSetMetaData获取列名字
利用jdbc连接数据库查询时,通常返回的结果就是每行数据的键值对集合。这时我们需要知道查询出来的数据有哪些字段。根据ResultSet结果集得到的ResultSetMetaData就可以获取到每个字段的名称。其中主要用getColumnLabel(intcolumn)和getColumnName(intcolumn)两种方法来获取。ResultSetMetaData:用于获取关于ResultSet对象中列的类型和属性信息的对象; ResultSetMetaData...原创 2021-12-06 15:44:23 · 4824 阅读 · 0 评论 -
mysql创建表、添加字段时,可重复执行sql 说明
1、创建表1.1、表存在,原表数据作废: 如果表存在,删除表结构,添加新数据,sql如下:-- 如果表存在,则删除DROP TABLE IF EXISTS person;-- 创建表CREATE TABLE `person` ( `USER_ID` varchar(60) NOT NULL, `USER_NAME` varchar(60) DEFAULT NULL, `GENDER` char(1) DEFAULT NULL, `BIRTH_DATE` datetime.原创 2021-11-24 14:51:21 · 2219 阅读 · 0 评论 -
mysql存储过程、存储函数(四):存储函数
什么是存储函数?存储函数: 是封装一段sql代码,完成一种特定的功能,有且只有一个返回结果。存储函数的语法:delimiter $$create function 函数([函数参数[,….]]) returns 返回类型 begin if return (返回的数据) else return (返回的数据) end if;end;$$delimiter ;例如: create function count_ne...原创 2021-11-24 14:47:07 · 292 阅读 · 0 评论 -
mysql用户权限配置
1、先使用能登录mysql的账号登录mysql2、创建用户语法:CREATE USER 'username'@'host' IDENTIFIED BY 'password';参数说明:username: 用户名;host:指定在哪个主机上可以登录,本机可用localhost,%通配符, 所有远程主机;'192.168.0.%' :该网段下的所有主机。password:用户登录密码;3、修改用户--修改当前用户 可远程登录的主机update mysql.use...原创 2021-11-24 14:42:03 · 806 阅读 · 0 评论 -
mysql优化:exists、 in、not exists、not in
1、exists与in,not exists与not in的区-- in SELECTA.*FROMAWHEREA.idIN(SELECT B.id FROM B WHERE B.id = A.id)-- existsSELECTA.*FROMAWHEREexists(SELECT B.id FROM B WHERE B.id = A.id)①in 与 exists区别当A表数据大于B表数据时,选择in比exists执行效率要高。相...原创 2021-11-24 14:41:25 · 1493 阅读 · 0 评论 -
mysql 中show status
show status like '%变量名%';变量名如下:Aborted_clients 由于客户没有正确关闭连接已经死掉,已经放弃的连接数量。Aborted_connects 尝试已经失败的MySQL服务器的连接的次数。Connections 试图连接MySQL服务器的次数。Created_tmp_tables 当执行语句时,已经被创造了的隐含临时表的数量。Delayed_insert_threads 正在使用的延迟插入处理器线程的数量。Delayed_writes 用INSERT D原创 2021-11-24 14:39:44 · 802 阅读 · 0 评论 -
mysql之 find_in_set()、INSTR()、in
1、find_in_set()函数 :查询字段(str)在(strlist)中的位置。1.2、FIND_IN_SET(str,strlist)str :要查询的字符串。strlist :字段名, 参数以”,”分隔。 如 (1,2,6,8,10,22)。注:字符串str在 (由N个子链 组成的字符串列表strlist) 中,则返回值的范围在 1 到 N 之间。如果str不在strlist中 或 strlist 为空字符串,则返回值为 0。如任意一个参数为NULL,...原创 2021-11-09 16:04:00 · 2481 阅读 · 0 评论 -
sql优化
1、查询语句中不要使用*尽量避免使用select *,返回无用的字段会降低查询效率。如下:SELECT * FROM t优化方式:使用具体的字段代替*,只返回使用到的字段。2、尽量减少子查询尽量减少子查询,使用关联查询(left join, right join, inner join)代替;3、减少使用IN或者NOT IN减少使用IN或者NOT IN,使用exists,not exists或者关联查询语句代替;IN肯定会走索引,但是当IN的取值范围较大时会导致索引失效,走.原创 2021-07-16 11:17:46 · 314 阅读 · 0 评论 -
exists 和 in 的执行原理及使用场景
1、exists的执行原理:对外表做loop循环,每次loop循环再对内表(子查询)进行查询,那么因为对内表的查询使用的索引(内表效率高,故可用大表),而外表有多大都需要遍历,不可避免(尽量用小表),故内表大的使用exists,可加快效率;2、in的执行原理是把外表和内表做hash连接,先查询内表,再把内表结果与外表匹配,对外表使用索引(外表效率高,可用大表),而内表多大都需要查询,不可避免,故外表大的使用in,可加快效率。如果用not in ,则是内外表都全表扫描,无索引,效率低,可考虑.原创 2021-07-16 10:52:05 · 1235 阅读 · 0 评论 -
sql 中date、String 转换函数
1、当前日期:CURRENT_DATE格式为:’2019-06-18’当前时间:CURRENT_TINE格式为:‘23:54:43’当前日期和时间:CURRENT_TIMESTAMP、current_timestamp()、now() 、sysdate()格式为:‘2019-06-18 23:56:00’sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。如:select now(), ...原创 2021-06-09 10:04:35 · 6031 阅读 · 2 评论 -
mysql group_concat 函数
SELECT u.org_id 机构号, u.user_id 用户号, GROUP_CONCAT( r.role_ID ) 角色编号, GROUP_CONCAT( r.role_NAME ) 角色名称 FROM user AS u LEFT JOIN user_role_rel AS urr on u.user_id = urr.user_id LEFT JOIN role AS r on urr.role_id = r.role_idGROUP BY u.org_id, u.us.原创 2021-05-28 15:04:18 · 704 阅读 · 0 评论 -
mysql 常用函数总结
一、常用函数说明:1、COALESCE ( expression,value1,value2……,valuen)主流数据库系统都支持COALESCE()函数,这个函数主要用来进行空值处理:返回其参数中第一个非空参数。COALESCE()函数可以用来完成几乎所有的空值处理,不过在很多数据库系统中都提供了它的简化版,这些简化版中只接受两个变量,其参数格式如下:MYSQL:IFNULL(expression,value)MSSQLServer:ISNULL(expression,v...原创 2020-10-12 10:33:02 · 335 阅读 · 0 评论 -
不常用sql总结
1、某个属性值多个都满足的用户列表sql。在数据库表中有一个字段,这个字段可以有多个值,关系为“或”的关系并且以多条记录存在于表中。在查询这样的记录时如果是简单的查询会出现多条查询结果,而业务上需要只显示为一条记录。这是一个难题,不过在也sql中也是可以解决的。示例:user_id为要查的字段,以attr_type_id 、attr_value_id为条件,attr_value_id存在多个值,要使得查询结果显示为一条记录。sql语句如下。-- 查询属性类型为type1 并且属性值 '1', '.原创 2021-05-17 09:38:07 · 144 阅读 · 0 评论 -
mysql中information_schema数据库
目录1、information_schema说明2、information_schema下的表2.1schemata表2.2tables表2.3 columns表2.4statistics表2.5、user_privileges表(用户权限表)2.7 table_privileges表(表权限表)2.8column_privileges表(列权限表) 2.9character_sets 字符集表2.10collations表2.11 ...转载 2021-05-11 10:21:51 · 2670 阅读 · 0 评论 -
mysql 问题排查: show processlist
1、查询线程及相关信息show processlist 是显示用户正在运行的线程,需要注意的是,除了 root 用户能看到所有正在运行的线程外,其他用户都只能看到自己正在运行的线程,看不到其它用户正在运行的线程。除非单独个这个用户赋予了PROCESS 权限。单独给activiti用户授PROCESS权限,(授权后需要退出重新登录)show processlist 显示的信息都是来自MySQL系统库 information_schema 中的 processlist 表。所以使用下面的查询语句原创 2021-05-10 17:39:10 · 1555 阅读 · 0 评论 -
mysql优化(连接数、最大并发数)
目录1、max_connections最大连接数1.1、查询数据库当前设置的最大连接数1.2、调整max_connections参数的值1.2.1、方式一:实时(临时)修改此参数的值1.2.2、方式二:在配置文件my.ini中设置max_connections的值2、max_used_connections查看最大连接数3、max_user_connections 每个MySQL用户的最大连接数3.1、查看全局每个用户最大连接数max_user_connections..原创 2021-05-10 16:05:02 · 16236 阅读 · 0 评论 -
sql执行计划(mysql)
使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈。explain执行计划包含的信息explain select * from person where user_id='123'其中最重要的字段为:id、type、key、rows、Extra各字段详解:1、id :select查询的序列号select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序三种情况..原创 2021-04-13 23:57:33 · 6095 阅读 · 0 评论 -
mysql存储引擎
数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。简而言之,存储引擎就是指表的类型。数据库的存储引擎决定了表在计算机中的存储方式。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。现在许多数据库管理系统都支持多种不同的存储引擎。MySQL的核心就是存储引擎。MySQL 提供了多个不同的存储引擎,包括处理事务安全表的引擎和处理非事务安全表的引擎。在 MySQL 中,不需要在整个服务器中使用同一种存储引擎,针.原创 2021-04-13 16:10:39 · 95 阅读 · 0 评论 -
mysql对用户的操作
目录1、修改用户名(用户重命名)2、删除用户2.1、使用 DROP USER 语句删除普通用户2.2、使用DELETE语句删除普通用户3、用户权限3.1、查看用户权限3.2、刷新权限3.3、删除撤销权限3.4、用户添加授权GRANT语法格式:1、修改用户名(用户重命名)在MySQL中,我们可以使用RENAME USER语句修改一个或多个已经存在的用户账号。语法:RENAME USER <旧用户> TO <新用户>其中...原创 2021-04-09 11:09:13 · 614 阅读 · 0 评论 -
mysql 有哪些权限
MySQL包含共29个权限:1、授予数据库权限时,可以指定的<权限类型>授予数据库权限时,可以指定的<权限类型> select 表示授予用户可以使用select语句访问特定数据库中所有表和视图的权限。 insert 表示授予用户可以使用insert语句向特定数据库中所有表添加数据行的权限。 delete 表示授予用户可以使用delete语句删除特定数据库中所有表的数据行的权限。 update 表示授予用户可以...原创 2021-04-09 10:19:50 · 3409 阅读 · 0 评论 -
mysql创建用户的三种方式
MySQL 在安装时,会默认创建一个名为 root 的用户,该用户拥有超级权限,可以控制整个 MySQL 服务器。在对 MySQL 的日常管理和操作中,为了避免有人恶意使用 root 用户控制数据库,我们通常创建一些具有适当权限的用户,尽可能地不用或少用 root 用户登录系统,以此来确保数据的安全访问。MySQL 提供了以下 3 种方法创建用户。 使用 CREATE USER 语句创建用户 在 mysql.user 表中添加用户 使用 GRANT 语句创建用户 1、使用原创 2021-04-08 23:33:30 · 2621 阅读 · 0 评论 -
mysql 自带数据库“mysql“ 下的表说明
MySQL是一个多用户管理的数据库,可以为不同用户分配不同的权限,分为root用户和普通用户,root用户为超级管理员,拥有所有权限,而普通用户拥有指定的权限。在 MySQL 数据库中,权限表除了 user 表外,还有 db 表、tables_priv 表、columns_priv 表和 procs_priv 表。1、user表通常用户信息、修改用户的密码、删除用户及分配权限等就是在mysql数据库的user表中。用户列(用户连接MySQL数据库需要输入的信息)Host:主机名,双主键...原创 2021-04-07 20:43:18 · 1192 阅读 · 0 评论 -
centos7安装mysql5.7
1、检查系统是否安装过mysql#检查系统中有无安装过mysqlrpm -qa|grep mysql#查询所有mysql 对应的文件夹,全部删除whereis mysqlfind / -name mysql2、卸载CentOS7系统自带mariadb# 查看系统自带的Mariadb[root@bogon ~]# rpm -qa|grep mariadbmariadb-libs-5.5.64-1.el7.x86_64# 卸载系统自带的Mariadb[root@bogo..原创 2021-04-07 19:02:41 · 118 阅读 · 0 评论 -
数据库表字段、索引 调整
1、表字段 注:【】中内容非必输,1.1、添加列:-- 添加一个字段Alter table 表名 add【column】列名 列类型 列属性 COMMENT '字段描述' 【first| after 列名】;-- 添加多个字段 -- 方法1:无法指定列顺序Alter table 表名 add 【column】 ( 列名1 列类型 列属性 COMMENT '字段描述' , 列名2 列类型 列属性 COMMENT '字段描述' ); -- 方法2:可以指...原创 2020-08-02 14:25:56 · 982 阅读 · 0 评论 -
事物的传播机制
目录1、事务的传播机制2、测试2.1、准备测试方法2.2、事务传播机制的测试事务传播机制:就是事务在多个方法的调用中是如何传递的,是重新创建事务还是使用父方法的事务?父方法的回滚对子方法的事务是否有影响?这些都是可以通过事务传播机制来决定的。以spring的事务传播机制为例子:Spring事务机制:主要包括声明式事务和编程式事务,此处侧重讲解声明式事务,编程式事务在实际开发中得不到广泛使用,仅供学习参考。Spring声明式事务让我们从复杂的事务处理中得到解脱。使得我们再也无需原创 2021-01-13 23:40:18 · 11449 阅读 · 1 评论 -
mysql游标简单使用说明
1、游标的概念:一条sql 取出对应n条结果资源的接口/句柄,就是游标,沿着游标可以一次取出一行。通俗说法:我们写一条select查询语句,按理上会一下查询出所有的结果。但我们想对查询结果数据进行一条条获取并筛选,这时相当于对查询结果集进行筛选,这个过程就是游标。2、使用游标的步骤declare游标名cursorforselect_statement#使用declare进行声明open游标名 #打开游标fetch...原创 2021-01-07 18:02:52 · 326 阅读 · 0 评论 -
mysql查询树形结构上、下级
1、存储函数find_in_set(str,strlist) : 查询字符串str是否在strlist存在,返回存在字符串str的个数。str 要查询的字符串 strlist 字段名 参数以”,”分隔 如 (1,2,6,8) 查询字段(strlist)中包含(str)的结果,返回结果为null或记录假如字符串str在由N个子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。 一个字符串列表就是一个由一些被 ‘,’ 符号分开的子链组成的字符串。如果第一个参数是一个.原创 2021-01-07 14:19:51 · 3538 阅读 · 4 评论 -
mysql创建临时表
mysql 利用 temporary 关键字就可以创建出一个临时表。创建的这张表会在与服务器的会话终止时自动消失。语法:create temporary table表名...;规则:每个会话只能看到自己创建的临时表,不同的会话可以创建相同表名称的临时表。临时表的表名可以和永久表的名字相同。好处:可以利用临时表保存一些临时数据,断开会话自动清除数据坏处:1.与服务器意外断开会话,临时表将被删除。 2.临时表只对创建会话可见,所以和线程池连接技术不能...原创 2021-01-06 17:08:54 · 817 阅读 · 0 评论 -
mysql存储过程、存储函数(三):存储过程
什么是mysql存储例程?存储例程:是存储在数据库服务器中的一组sql语句,通过在查询中调用一个指定的名称来执行这些sql语句命令.存储过程(stored procedure)、存储例程(store routine)、存储函数区别?Mysql存储例程 :包含了存储过程和存储函数,它们被统称为存储例程。存储过程:主要完成在获取记录或插入记录或更新记录或删除记录,即完成select insert delete update等的工作。存储函数:只完成查询的工作,可接收输入参数并返回一个结果。..原创 2021-01-06 14:52:58 · 160 阅读 · 0 评论 -
mysql存储过程、存储函数(二):流程控制语句
MySQL流程控制语句是用来控制语句的执行,构造控制流程的语句有:IF语句、CASE语句、LOOP语句、LEAVE语句、ITERATE语句、REPEAT语句和WHILE语句,本文主要说明流程控制语句中的 循环语句。mysql常见的三种循环方式:while、repeat、loop循环。还有一种goto,不推荐使用。1、WHILE循环(先判断再执行)1.1、语句结构:[WHILE标注] : WHILE 条件表达式 DO 执行语句UNTIL 条件表达式END REPEA...原创 2021-01-06 11:06:33 · 411 阅读 · 0 评论 -
mysql存储过程、存储函数(一):变量
在mysql文档中,mysql变量可分为两大类,即系统变量和用户变量。但根据实际应用又被细化为四种类型,即局部变量、用户变量、会话变量、全局变量。1、局部变量mysql局部变量,只能用在begin/end语句块中,比如存储过程中的begin/end语句块。其作用域: 仅限于该语句块。-- declare语句专门用于定义局部变量,可以使用default来说明默认值declare age int default 0;-- 局部变量的赋值方式一set age=18;-- .原创 2021-01-06 09:35:41 · 310 阅读 · 0 评论 -
sql查询:行转列和 列转行
一、行转列将原本同一列下多行的不同内容作为多个字段,输出对应内容。表及数据sql:CREATE TABLE `tb_score` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userid` varchar(20) NOT NULL COMMENT '用户id', `subjectName` varchar(20) DEFAULT NULL COMMENT '科目', `score` double DEFAULT NULL COM...原创 2020-10-31 21:32:34 · 15027 阅读 · 3 评论