![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库MySql
文章平均质量分 54
鸭鸭老板
偏执只会左右你的思考
展开
-
Java --- MySQL8之索引优化与查询优化
索引是高效找到行的一个方法,但是一般数据库也能使用索引找到一个列的数据,因此它 不必读取整个行。毕竟索引叶子节点存储了它们索引的数据;当能通过读取索引就可以得到想要的数 据,那就不需要读取行了。一个索引包含了满足查询结果的数据就叫做覆盖索引。非聚簇复合索引的一种形式,它包括在查询里的SELECT、JOIN和WHERE子句用到的所有列 (即建索引的字段正好是覆盖查询条件中所涉及的字段)。简单说就是,索引列+主键 包含 SELECT 到 FROM之间查询的列。#创建索引= 20;= 20;示例2。原创 2023-09-25 23:22:49 · 383 阅读 · 0 评论 -
Java --- MySQL8数据库优化性能查看工具
1. 主机相关:以host_summary开头,主要汇总了IO延迟的信息。以innodb开头,汇总了innodb buffer信息和事务等待innodb锁的信息。以io开头,汇总了等待I/O、I/O使用量情况。以memory开头,从主机、线程、事件等角度展示内存的使用情况processlist和session相关视图,总结了会话相关信息。以schema_table开头的视图,展示了表的统计信息。统计了索引的使用情况,包含冗余索引和未使用的索引情况。原创 2023-09-21 17:13:14 · 268 阅读 · 0 评论 -
Java --- MySQL8之索引的创建与设计原则
目录一、索引的分类1.1、普通索引1.2、唯一索引 1.3、主键索引1.4、单列索引1.5、多列(联合)索引1.6、全文索引二、创建索引2.1、使用 CREATE TABLE创建2.1.1、创建普通索引 2.1.2、创建唯一索引 2.1.3、创建主键索引2.1.4、创建单列索引2.1.5、创建联合索引 2.1.6、创建全文索引2.2、给已存在的表创建索引 三、查看索引 四、删除索引五、MySQL8索引新特性5.1、支持降序索引 5.2、隐藏索引5.2.1、创建隐藏索引5.2.2、修改索引的可见性 六、创建索原创 2023-09-13 09:02:48 · 116 阅读 · 0 评论 -
MySQL --- 存储过程与存储函数
存储过程的英文是 Stored Procedure。它的思想很简单,就是一组经过 预先编译 的 SQL 语句 的封装。执行过程:存储过程预先存储在 MySQL 服务器上,需要执行的时候,客户端只需要向服务器端发出调用 存储过程的命令,服务器端就可以把预先存储好的这一系列 SQL 语句全部执行。原创 2023-03-15 01:40:37 · 177 阅读 · 0 评论 -
Java --- MySQL视图
将经常使用的查询操作定义为视图,可以使开发人员不需要关心视图对应的数据表的结构、表与表之间的关联关系,也不需要关心数据表之间的业务逻辑和查询条件,而只需要简单地操作视图即可,极大简化了开发人员对数据库的操作。原创 2023-03-13 11:19:41 · 1619 阅读 · 0 评论 -
java学习 --- MySQL的约束
目录一、为什么要约束二、约束是什么三、约束的分类四、查看表中的约束五、非空约束六、唯一约束七、主键约束八、自增列九、外键约束(不建议使用)十、检查约束十一、默认约束一、为什么要约束数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。为了保证数据的完整性,SQL规范以约束的方式对表数据进行额外的原创 2022-05-07 22:20:28 · 696 阅读 · 0 评论 -
Java学习 --- MySQL的数据类型
一、所有的数据类型二、整数类型CREATE TABLE test_intl ( n1 TINYINT, n2 SMALLINT, n3 MEDIUMINT, n4 INTEGER, n5 BIGINT);DESC test_intl;2.1MM : 表示显示宽度,M的取值范围是(0, 255)。例如,int(5):当数据宽度小于5位的时候在数字前面需要用字符填满宽度。该项功能需要配合“ ZEROFILL ”使用,表示用“0”填满宽度,否则指定显示宽度无效..原创 2022-04-14 22:33:51 · 573 阅读 · 0 评论 -
Java学习 --- MySQL的COMMIT和ROLLBACK
目录一、COMMIT和ROLLBACK二、TRUNCATE TABLE 和 DELETE FROM2.1DELETE FROM演示流程2.2 TRUNCATE TABLE演示流程三、DDL与DML一、COMMIT和ROLLBACKCOMMIT:提交数据,一旦执行COMMIT,数据就会被永久的保存到数据库中,数据不可以进行回滚。ROLLBACK:回滚数据,执行ROLLBACK可以回滚数据,回滚到最近一次COMMIT之后二、TRUNCATE TABLE 和 DELETE原创 2022-04-11 23:35:49 · 1543 阅读 · 0 评论 -
Java学习 --- MySQL的运算符
目录一、算术运算符二、比较运算符 2.1 等号运算符2.2安全等于三、非符号类型的运算符3.1空运算符3.2非空运算符3.3最小与最大值运算符 3.4BETWEEN AND运算符 3.5IN运算符3.6NOT IN3.7LIKE运算符四、逻辑运算符五、位运算符六、运算符练习一、算术运算符SELECT 100, 100 + 0, 100 ...原创 2022-04-09 13:38:39 · 357 阅读 · 0 评论 -
Java学习 --- MySQL的查看数据库和字符编码
目录一、登录MySQL:mysql -u用户名-p端口号 -p二、查看MySQL中的数据库指令:show databases;三、创建数据库指令:create database 数据库名;四、打开数据库指令:use 表名;五、创建数据库表六、查看创建的表七、插入数据八、查询数据九、查看当前数据库的编码指令:show variables like 'character_%';指令:show variable like 'collat...原创 2022-04-07 20:30:37 · 2245 阅读 · 0 评论 -
Java学习 --- MySQL5.7版本安装
一、打开安装包二、选择安装目录三、确认安装位置下面就是一直下一步配置环境变量原创 2022-02-27 17:17:46 · 503 阅读 · 0 评论 -
Java学习 --- MySQL8.0版本安装
一、下载mysql安装包原创 2022-02-27 16:51:33 · 521 阅读 · 0 评论 -
mysql外连接
一、外连接1.左外连接(左侧的表完全显示就是左外连接)select..from表1 left join 表2 on 条件2.右外连接(右侧的表完全显示就是右外连接)原创 2021-05-15 00:14:44 · 5911 阅读 · 0 评论 -
mysql合并查询
一、合并查询在实际开发中,合并多个select语句结果,可以使用集合操作符 union,union all。1.union all用于取得两个结果集的并集,使用该操作符,不会取消重复行-- 合并查询SELECT ename,sal,job FROM emp WHERE sal>5000SELECT ename,sal,job FROM emp WHERE job='宣传'-- union all SELECT ename,sal,job FROM emp WHERE sal&原创 2021-05-13 22:32:07 · 307 阅读 · 0 评论 -
mysql表的复制和去重
一、自我复制数据(蠕虫复制)在对某个sql语句进行效率测试,需要大量的数据时,可以用这种方法为表创建大量的数据。CREATE TABLE db28( id INT, `name` VARCHAR(32), sal DOUBLE, job VARCHAR(32), deptno INT);SELECT*FROM db28-- 把emp表的数据复制到db28INSERT INTO db28(id,`name`,sal,job,deptno) SELECT empno,e原创 2021-05-13 22:07:45 · 311 阅读 · 0 评论 -
Java学习 --- MySQL的子查询
一、子查询嵌入在其它sql语句中的select语句,又叫嵌套查询二、单行子查询只返回一行数据的子查询语句。-- 子查询-- 查询与小王同一部门的员工-- 先查询小王所属部门编号-- 把SELECT deptno FROM emp WHERE ename = '小王'当作一个子查询使用SELECT deptno FROM emp WHERE ename = '小王'SELECT*FROM emp WHERE deptno= (SELECT deptno FROM emp WHERE原创 2021-05-13 21:18:02 · 262 阅读 · 0 评论 -
Java学习--- MySQL多表查询与自连接
一、多表查询基于两个和两个以上的表查询,在实际应用中,单表查询不能满足需求。当在多表查询的条件不能少于表的个数-1,不然会出现笛卡尔集二、笛卡尔集-- 多表查询-- 查询员工名,员工工资和所在部门名字[笛卡尔集]-- 当需要指定显示某个表的列是:表.列表SELECT ename,sal,dname,emp.deptno FROM emp,dept WHERE emp.deptno = dept.deptno-- 查询部门号为3的部门名,员工名和工资SELECT原创 2021-05-12 21:35:00 · 733 阅读 · 0 评论 -
mysql主键与唯一约束
一、约束确保数据库数据满足特定的商业规则。在mysql中,约束主要包括:not null, unique, primary key ,foreign,check,共五种。1.primary key(主键)字段名 字段类型 primary key 用于唯一的标示表行的数据,当定义主键约束后,该列不能重复。-- 主键CREATE TABLE db23( id INT PRIMARY KEY, -- 主键 `name`VARCHAR(32), email VARCHAR(32));..原创 2021-05-11 22:06:07 · 801 阅读 · 0 评论 -
mysql外键约束
一、foreign key(外键)定义主表和从表之间的关系:外键约束要定义在从表上,主表必须具有主键约束或unique约束,当定义外键约束后,要求外键列数据必须在主表的主键列存在或为nullforeign key(本表字段名)references 主表名(主键名或unique字段名)-- 主键-- 创建主表my_classCREATE TABLE my_class( id INT PRIMARY KEY, `name` VARCHAR(32) NOT NULL DEFAULT'原创 2021-05-10 22:44:37 · 1451 阅读 · 0 评论 -
mysql权限
一、mysql权限二、用户授权语法:grant 权限列表 on 库对象名 to ' 用户名'@'登录位置' 【identified by '密码'】1. 权限列表,多个权限用逗号分开grant select on......grant select, delete, create on.....grant all [privileges] on...... //赋予该用户在该对象上的所有权利2.*.*:表示本系统中所有数据库的所有对象(表,视图,存储过程)库.*:某...原创 2021-05-09 21:37:59 · 207 阅读 · 0 评论 -
mysql用户管理
一、mysql用户mysql中的用户,都是存储在系统数据库mysql中的user表中。1.host:允许登录的位置,localhost表示该用户只允许在本机登录,也可以指定ip地址,如:199.123.1.1002.user:用户名3.authentication_string,密码,是经过password()函数加密之后的密码。二、创建和删除用户create user '用户名'@ '允许登录位置' identfied by '密码'...原创 2021-05-09 20:40:27 · 136 阅读 · 0 评论 -
mysql存储引擎
一、存储引擎1.mysql的表类型是由存储引擎决定,主要包括myisam,innoDB,Memory等。2.mysql数据表主要支持六种类型:CSV,Memory,ARCHIVE,MRG_MYISAM,MYISAM,InnoDB。3.六种类型分为两大类:“事务安全型”如:innoDB;剩下的都是第二类:“非事务安全型”如:Memory,myisam等。二、主要存储引擎/表类型特点...原创 2021-05-07 13:40:15 · 71 阅读 · 0 评论 -
mysql事务隔离
一、事务隔离1.多个连接开启自身的事务操作数据库数据时,数据库系统要负责隔离操作,保证每个连接在获取数据时的准确性。2.如果没有隔离性,可能会发生以下情况1.脏读 :当一个事务读取另一个事务尚未提交的修改时产生的。2.不可重复读:同一查询在同一事务中多次进行,由于其它提交的事务所做的修改和删除,每次返回不同的结果集。这时可能发生不可重复读3.幻读:同一查询在同一事务中多次进行,由于其他提交事务所做的插入操作,每次返回不同的结果集。可能发生幻读。二、事务隔离级别mysql隔离级别.原创 2021-05-06 23:28:34 · 88 阅读 · 0 评论 -
mysql事务和注意事项
一、事务用于保证数据的一致性,由一组相关的dml语句组成,这组dml语句要么全部成功,要么全部失败。二、事务和锁当执行事务操作时(dml语句),mysql会在表上加锁,防止其它用户改表的数据,对用户来说十分重要。mysql数据库控制台事务的重要操作1.start transaction -- 开始一个事务2.savepoint 保存点名 -- 设置保存点3.rollback to保存点名-- 回退事务4.rollback -- 回退全部事务5.commit -- 提.原创 2021-05-06 21:37:45 · 366 阅读 · 0 评论 -
mysql索引
一、索引提高数据库性能,不用加内存,不用改程序,不用调sql,查询速度就可能提升千百倍。-- 使用emp表-- 没有创建索引时,查询一条记录SELECT*FROM emp WHERE empno = 10-- 创建索引-- empno_index 索引名称-- ON emp (empno) :在emp表的empno 列创建索引-- 索引本身会占用空间CREATE INDEX empno_index ON emp (empno)-- 创建索引后SELECT*FROM emp WHE原创 2021-05-06 16:09:07 · 80 阅读 · 0 评论 -
mysql自增长
一、自增长在某张表中,存在一个id列(整数),在添加记录的时候,该列从1开始,自动增长。字段名 整型 primary key auto_increment添加自增长的字段样式如下:1. insert into xxx(字段1,字段2...)values(null,'值'....);2. insert into xxx(字段2...)values('值1','值2'....);3. insert into xxx values(null,'值1',....);#自增长#创建表原创 2021-05-06 13:48:25 · 4502 阅读 · 0 评论 -
Java学习 --- MySQL的排序与分页查询
一、查询增强#查询增强#日期类直接比较SELECT*FROM emp WHERE hiredate>'2020-01-01'#like操作符(模糊查询)SELECT ename,sal FROM emp WHERE ename LIKE '小%'#显示第二个字符为’王‘得所有员工和工资SELECT ename,sal FROM emp WHERE ename LIKE '_王%'#显示没有上级的员工情况SELECT*FROM emp WHERE mgr IS NULL#查询表的原创 2021-05-04 17:29:30 · 327 阅读 · 0 评论 -
Java学习 --- MySQL流程控制函数
一、流程控制函数#流程控制函数#if(expr1,expr2,expr3)如果expr1为真,返回expr2否则返回expr3SELECT IF(TRUE,'小李','小王')FROM DUAL#ifunll(expr1,expr2) 如果expr1不为空,返回expr1,否则返回expr2SELECT IFNULL(NULL,'老黄牛精神')FROM DUAL#SELECT CASE WHEN TRUE THEN expr1 WHEN FALSE THEN expr2 ELSE expr3原创 2021-05-04 16:41:17 · 166 阅读 · 0 评论 -
Java学习 ---MySQL 加密函数与其他函数
一、加密函数和系统函数#加密函数和系统函数#查询用户,可以看到登录到mysql的有那些用户,以及登录得ipSELECT USER()FROM DUAL;#查询当前使用数据库名称SELECT DATABASE();#md5 常用于密码加密,加密为32位得字符串SELECT MD5('123456')FROM DUALSELECT LENGTH(MD5('123456'))FROM DUAL#创建表CREATE TABLE jun2( id INT, `name` VARCHA原创 2021-05-04 16:00:08 · 372 阅读 · 0 评论 -
MySql日期函数
一、日期函数的使用#日期函数#当前日期SELECT CURRENT_DATE()FROM DUAL#当前时间SELECT CURRENT_TIME()FROM DUAL#当前时间戳SELECT CURRENT_TIMESTAMP() FROM DUAL#创建信息表CREATE TABLE mes( id INT, content VARCHAR(32), send_time DATETIME);#添加数据INSERT INTO mes VALUES(1,'爱奇艺',CUR原创 2021-05-04 15:02:51 · 135 阅读 · 0 评论 -
Java学习 --- MySQL的数值函数
一、数学函数的使用#数学函数的使用#绝对值SELECT ABS(-10) FROM DUAL;#十进制转二进制SELECT BIN(10) FROM DUAL;#向上取整,得到比num2大的最小整数SELECT CEILING(-2.2) FROM DUAL;#进制转换SELECT CONV(8,10,2) FROM DUAL;#向下取整,得到比num2小的最大整数SELECT FLOOR(-2.3) FROM DUAL#保留小数位数SELECT FORMAT(88.12345原创 2021-05-03 23:05:45 · 69 阅读 · 0 评论 -
Java学习 --- MySQL字符串函数
一、字符串函数#字符串相关函数的使用,使用emp表#返回字串字符集SELECT CHARSET(ename) FROM emp#连接字串,将多个列拼接成一列SELECT CONCAT(ename,' 工作是 ',job) FROM emp#返回substring在string中出现的位置,没有返回0#dual 业务表,系统表SELECT INSTR('小王','王')FROM DUAL#转成大写SELECT UCASE(ename) FROM emp#转成小写SELECT LCA原创 2021-05-03 22:06:31 · 148 阅读 · 0 评论 -
Java学习 --- MySQL的group by与having
一、group by与having过滤#group by与having过滤#创建表CREATE TABLE dept( -- 部门表 deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0, dname VARCHAR(32) NOT NULL DEFAULT "", loc VARCHAR(32) NOT NULL DEFAULT "");-- 添加数据INSERT INTO dept VALUES(1,'人事部','管理人员'),(2,'财务原创 2021-05-03 19:00:35 · 696 阅读 · 0 评论 -
Java学习 --- MySQL统计函数
一、统计函数的使用#count统计函数的使用#统计一个班级共有多少学生SELECT COUNT(*)FROM student;#统计语文成绩大于60的学生SELECT COUNT(*) FROM student WHERE chinese>60#统计总分大于200分的SELECT COUNT(*) FROM student WHERE (chinese+english+math)>200#count(*)与count(列)区别#count(*)返回满足条件记录的行数#c原创 2021-05-03 14:01:04 · 254 阅读 · 0 评论 -
Java学习---MySQL的select的使用
一、select的使用#创建学生表CREATE TABLE student( id INT NOT NULL DEFAULT 1, `name` VARCHAR(32) NOT NULL DEFAULT'', chinese FLOAT NOT NULL DEFAULT 0.0, english FLOAT NOT NULL DEFAULT 0.0, math FLOAT NOT NULL DEFAULT 0.0);#添加数据INSERT INTO student(id,`原创 2021-05-03 12:59:35 · 1747 阅读 · 0 评论 -
update和delete的使用
一、update的使用#update的使用#修改所有员工的薪水UPDATE jun SET salary = 6000;#将某个员工的薪水改为7000UPDATE jun SET salary = 7000 WHERE user_name ='程序员'#将某个员工的薪水在原有的基础上增加200UPDATE jun SET salary = salary+200,job='修改数据库' WHERE user_name ='程序员'SELECT*FROM jun...原创 2021-05-02 21:55:36 · 712 阅读 · 0 评论 -
Java学习 --- MySQL的insert的使用和注意事项
一、insert的使用#insert的使用CREATE TABLE goods( id INT, goods_name VARCHAR(32), price DOUBLE);INSERT INTO goods(id,goods_name,price)VALUES(1,'花花公子',120)INSERT INTO goods(id,goods_name,price)VALUES(2,'addes',300)SELECT*FROM goods二、insert注意事项#原创 2021-05-02 20:59:32 · 1939 阅读 · 0 评论 -
Java学习 --- MySQL表的创建与修改
一、创建表#创建表的练习CREATE TABLE emp( id INT, `name` VARCHAR(32), sex CHAR(1), brithday DATE, entry_date DATETIME, job VARCHAR(32), salary DOUBLE, `resume` TEXT) CHARSET utf8 COLLATE utf8_bin ENGINE INNODB; -- 添加数据 INSERT INTO原创 2021-05-02 14:26:29 · 460 阅读 · 0 评论 -
MySql列类型(常用)
MySql列类型(常用)一、数值类型1.整形使用规范:在满足需求的情况下,尽量选用占用空间小的类型tinyint[1个字节], samllint[2个字节],mediumint[3个字节],int[4个字节],bigint[8个字节]#整型的使用# 没有指定 unsigned ,默认就是有符号的CREATE TABLE db2( id TINYINT);CREATE TABLE db3( id TINYINT UNSIGNED); INSERT INTO db原创 2021-05-02 13:52:26 · 112 阅读 · 0 评论 -
创建数据库和表
一、创建数据库#创建数据库CREATE DATABASE jun_db01;#删除数据库DROP DATABASE jun_db02#创建一个指定utf8字符集的数据库CREATE DATABASE jun_db02 CHARACTER SET utf8#创建一个指定utf8字符集的数据库,指定校对规则 utf8_binCREATE DATABASE jun_db03 CHARACTER SET utf8 COLLATE utf8_bin#查询的sql语句 *表示所有字段SELEC原创 2021-04-30 17:28:34 · 571 阅读 · 1 评论