mysql
mysql的使用
永不落后于人
永远相信美好的事情即将发生
展开
-
大数据场景下使用SQL求UV和PV的问题
表数据现有user_age表如下:user_app表如下:需求求:0-10岁的用户、11-20岁的用户、21-30岁的用户、30岁以上的用户使用app的人数(uv)和次数(pv)。分析需求乍一看不难,但是如何实现同时求出uv和pv?有的同学可能最先想到的就是uv = count(distinct uid),pv = count(*)。在MySQL中这样写固然可以得到结果,但是在大数据场景中呢?如果是Hive中这样写发生数据倾斜了怎么处理?所以我们需要换一种思路。首先可以在user_app原创 2021-07-08 10:07:35 · 3735 阅读 · 1 评论 -
case when的使用
条件范围判断casewhen 字段 判断范围 then 表达式1when 字段 判断范围 then 表达式2…else 默认值endselect ename,sal,case when sal>=5000 then 'a' when sal>=3000 then 'b' when sal>=2000 then 'c' else 'd'endfrom emp;等值判断case 字段when 值1 then 表达式1when 值2 then 表达式2…原创 2021-02-20 13:58:05 · 159 阅读 · 0 评论 -
MySQL之sql优化
关联查询left join优化规则:在匹配表建立关联字段的索引(左侧为驱动表,右侧有匹配表)。-- 匹配表不创建索引时,两张表都是全盘扫描EXPLAIN SELECT * FROM class LEFT JOIN book ON class.card = book.card;-- 匹配表关联字段创建索引,匹配表只扫描关联字段ALTER TABLE `book` ADD INDEX idx_card(`card`);EXPLAIN SELECT * FROM class LEFT JO原创 2021-02-10 09:43:31 · 102 阅读 · 0 评论 -
利用EXPLAIN对分析SQL语句的性能
使用EXPLAIN关键字可以模拟优化器执行sql语句,从而看到sql的执行过程,分析sql的查询或者表结构的性能瓶颈。EXPLAIN如何使用?格式:EXPLAIN SQL语句EXPLAIN SELECT * FROM t1;执行结果:EXPLAIN字段含义:id:select查询的序列号,表示查询或者子查询操作表的顺序。id越大越优先执行。EXPLAIN SELECT t1.id FROM t1 WHERE t1.id IN (SELECT t2.id FROM t2 WHE原创 2021-02-09 22:38:00 · 197 阅读 · 0 评论 -
MySQL索引结构二三事
什么是索引?MySQL底层除了在存储数据之外,还维护着特定查找算法的数据结构(B+树)。这些数据结构以特定的方式指向数据,所以我们就可以快速的查找数据。一般来说,索引本身也很大,不能全部存储到内存中,也会以文件的形式落地到磁盘。索引的优势和劣势优势:提高数据的检索效率,降低数据库的IO成本。通过索引对数据进行排序,降低CPU的消耗,提高排序效率。劣势:虽然大大提高了查询效率,但是也降低了增删改的效率。因为每次更新数据后,数据库不仅要更新数据,还要更新索引中存储的索引字段。实际上索引也原创 2021-02-09 11:18:20 · 73 阅读 · 0 评论 -
mysql的书写顺序及执行顺序
书写顺序:SELECT DISTINCT 字段名称FROM 表1 连接方式(left/rigth)JOIN 表2ON 连接条件WHERE 过滤条件GROUP BY 分组字段HAVING 筛选条件ORDER BY 排序字段LIMIT 限制数量执行顺序:FROM --> ON --> JOIN -> WHERE -> GROUP BY -> HAVING -> SELECT -> DISTINCT -> ORDER BY -> LIM原创 2021-02-08 15:04:05 · 127 阅读 · 0 评论 -
如何保证一个线程内只有一个mysql的连接?
可以使用ThreadLocal。将Connection对象存储到ThreadLocal中。具体实现:/** * */package cn.aura.web.login.utils;import java.sql.Connection;import java.sql.DriverManager;import java.util.Properties;/** * @author panghu * @description 连接mysql工具类 * @date 2021年1月3原创 2021-01-31 17:46:26 · 266 阅读 · 0 评论 -
Druid批处理
1.将数据库连接驱动、druid的jar包、dbutils包添加到项目库中。2.创建druid.properties#key=valuedriverClassName=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/student?rewriteBatchedStatements=trueusername=rootpassword=rootinitialSize=10minIdle=5maxActive=20maxWait=500原创 2021-01-30 13:14:24 · 628 阅读 · 0 评论 -
Druid事务操作
1.首先我们创建bank表用于测试CREATE TABLE bank(id INT PRIMARY KEY,username VARCHAR(255),balance DOUBLE);INSERT INTO bank VALUES(1001,'郭靖',5000),(1002,'黄蓉',8000),(1003,'杨过',6000),(1004,'小龙女',9000);2.将数据库连接驱动、druid的jar包、dbutils包添加到项目库中。3.创建druid的utils类。pack原创 2021-01-30 13:09:45 · 2250 阅读 · 2 评论 -
Druid连接mysql
1.首先把druid的jar包和dbutils的jar包添加到工程库中。2.src下新建druid.properties文件。#key=valuedriverClassName=com.mysql.jdbc.Driver# 指定数据库,rewriteBatchedStatements=true代表支持批处理url=jdbc:mysql://localhost:3306/student?rewriteBatchedStatements=trueusername=rootpassword=root原创 2021-01-30 12:09:51 · 1134 阅读 · 0 评论 -
JDBC连接MySQL
1.首先需要把mysql的连接驱动添加到工程中。2.src目录下创建jdbc.properties文件。driver=com.mysql.jdbc.Driverusername=rootpassword=root# 指定mysql连接地址和数据库url=jdbc:mysql://localhost:3306/student3.创建JDBC工具类用于连接和关闭数据库。package cn.aura.jdbc.utils;import java.io.File;import java.i原创 2021-01-30 10:53:54 · 79 阅读 · 0 评论 -
MySQL事务的理解及实现
事务的使用场景:事务用于处理复杂度较高的数据。比如:我们注销一个不使用的微信号,我们首先要删除账号信息、个人资料,此外还要删除其朋友圈、好友列表等。这些操作语句就构成一个整体。要么全部执行,账号注销成功。要么全部不执行,账号注销失败。比如:去银行进行转账,李华要给韩梅梅转500块钱。李华的账户余额要从原有的基础上减500,韩梅梅的账户余额要从原有的基础上加500。这一组sql语句就是一个整体,要么全部执行,转账成功,要么全部不执行,转账失败。事务必须满足四个条件(ACID):原子性(Atom原创 2021-01-28 16:11:26 · 81 阅读 · 0 评论 -
MySQL的数据操作(增删改查)
1. 新增数据 INSERT# 格式INSERT INTO 表名(字段1,字段2,...) VALUES(值1,值2,...)或者INSERT INTO 表名 VALUES(值1,值2,...)2. 删除数据 DELETE# 格式DELETE FROM 表名 where 条件3. 修改数据 UPDATE# 格式UPDATE 表名 SET 列名1=值,列名2=值,... WHERE 条件4. 查询数据 SELECT# 格式SELECT 列名1,列名2,... FROM 表名 (原创 2021-01-28 14:25:02 · 80 阅读 · 0 评论 -
MySQL表结构相关操作
1. 创建表# 格式CREATE TABLE 表名( 字段名1 类型(长度) [约束类型], 字段名2 类型(长度) [约束类型], ...)# 示例CREATE TABLE stu( id int, sname varchar(255), birthday date)CREATE TABLE IF NOT EXISTS stuinfo( id INT PRIMARY KEY AUTO_INCREMENT,#主键,自增列,列值不需要手动插入,默认从1开始每次增长1。不要手动插入主原创 2021-01-28 12:02:34 · 151 阅读 · 0 评论 -
MySQL常用函数
1.字符串相关函数全部转大写 UPPER()SELECT UPPER('abc');SELECT UPPER(列名) FROM 表名;全部转小写 LOWER()SELECT LOWER('ABC');SELECT LOWER(列名) FROM 表名;拼接字符串 CONCAT()SELECT CONCAT('abc','def','ghi');SELECT CONCAT(列名1,'-',列名2);截取字符串 SUBSTR(源字符串,索引位置,截取长度)mysql中索引原创 2021-01-26 18:54:46 · 114 阅读 · 0 评论 -
windows版本Mysql免安装版下载及安装步骤
1.登录mysql官网下载页:https://dev.mysql.com/downloads/mysql/2.点击Archives选择历史版本,并选择适mysql版本3.下载完毕后解压,解压路径不要带有中文。4.在mysql的根目录新建my.ini文件,并写入如下内容:特别需要注意的是,安装路径、数据路径和WinMySQLAdmin中的mysql路径要写成你自己的安装路径。[client]原创 2021-01-26 10:12:43 · 231 阅读 · 0 评论