当前位置: 首页 > news >正文

【MySQL】2.MySQL实际操作

目录

一、数据分析基本流程

注:Navicat快捷键

二、获取数据后的代码操作

(1)探索数据,查看定义

(2)筛选有用的字段

(3)建新表(查询+建表+插值 三合一)

   注意:原始数据一定要保留,创建一个新的表

①从一个表中复制部分数据到一个新表进行操作

 ②从多个表中复制部分数据 汇总到一个新表进行操作

(4)排序(order by)

(5)聚合函数

(6)判断是否为空

三、字符串处理

(1)在SQL中,select = print

(2)数据脱敏

(3)模糊查找

(4)去除重复值

四、设置权限

五、其他操作


一、数据分析基本流程

1,明确目的; 
2,获取数据;
     -- python 爬取     
3,数据预处理;3值1转换  (真正工作时有问题就是删)
     - 缺失值
     - 异常值
     - 重复值
     - 转换     
4,数据分析
     - 定维度(分析方向)
     - 定指标(比、率)
5,可视化 
6,撰写报告

注:Navicat快捷键

ctrl+/ 注释sql语句        #暂不适用
ctrl+shift +/ 解除注释
ctrl+r 运行查询窗口的sql语句
ctrl+shift+r 只运行选中的sql语句

二、获取数据后的代码操作

(1)探索数据,查看定义

DESC jobs;
SELECT * FROM jobs LIMIT 10;

(2)筛选有用的字段

--例如筛选出学历,工作经验,工资,城市,公司名称
SELECT positionId,positionName,companyFullName,companySize,industryField,financeStage,createTime,city,salary,workYear,jobNature,education
FROMjobs;

(3)建新表(查询+建表+插值 三合一)

注意:原始数据一定要保留,创建一个新的表

①从一个表中复制部分数据到一个新表进行操作
#从一个表中复制部分数据到一个新表进行操作
CREATE TABLE jobs1 AS 
SELECTpositionId AS id,positionName AS `naem`,   --也可以同时重命名列名companyFullName,companySize,industryField,financeStage,createTime,city,salary,workYear,jobNature,education
FROMjobs;
 ②从多个表中复制部分数据 汇总到一个新表进行操作

假设你有三个表 table1table2table3,每个表都有相同的结构(即相同的列)。你想将这些表中的某些列的数据汇总到一个新表 new_table 中。

第一步:创建新表

首先,创建一个新的表来存储汇总的数据:

CREATE TABLE new_table (id INT,name VARCHAR(255),value DECIMAL(10,2)-- 其他列根据需要添加
);

第二步:从多个表中选择数据并插入到新表中

使用 INSERT INTO ... SELECT ... 语句从每个表中选择你需要的列并插入到新表中。

INSERT INTO new_table (id, name, value)
SELECT id, name, value FROM table1
UNION ALL
SELECT id, name, value FROM table2
UNION ALL
SELECT id, name, value FROM table3;

(4)排序(order by)

SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;
/*ASC增序;DESC降序;还可以按多个列排序*/SELECT name, height, (height * 2) AS double_height
FROM stu
ORDER BY double_height DESC;
/*还可以按表达式排序*/

(5)聚合函数

5个聚合函数
(1)count 数个数
(2)max 最大
(3)min 最小
(4)avg 平均值
(5)sum 求和

-- 聚合函数的2个特点,竖着计算,自动跳空;
-- 判断是否为空的方法(1) 【用count函数将每一个字段都数一遍】
-- 数据库默认 NULL '' None 是空数据。

(6)判断是否为空

处理数据时,每个字段都要进行非空判断

另外,根据数据业务进行判断,例如positionId 只能是数字,positionId 不是数字的都是垃圾数据

-- 判断是否为空的方法(1)
SELECT COUNT(*),COUNT(positionid),COUNT(positionName),COUNT(companyFullName),COUNT(salary)
FROMjobs1;-- 判断是否为空的方法(2)
-- 数据库默认 NULL '' None 是这三种是空数据。
SELECTcount(*)
FROMjobs1
WHERE city IS NULL  /*第1种IS NULL*/
-- 数据情况不是用肉眼来看的,是要通过程序来看的;SELECTcount(*)
FROMjobs1
WHERE city = 'None'  /*第2种None*/SELECTcount(*)
FROMjobs1
WHERE city = ''    /*第3种空串*/--总结起来就是:
SELECT count(*) FROM jobs1 WHERE city IS NULL OR city = 'None' OR city = '';

三、字符串处理

主要字符串操作:

字符串长度:select Length('abc');#存储长度;  char_length()字符长度

左取:left

右取:right

截取子串:substr(str FROM pos FOR len)

SUBSTR('abcdefg' FROM 2 FOR 3)  #从第2个截取3个

替换:replace

拼接:CONCAT(str1,str2,...)

按分隔符索引截取:substring_index(字符串,分隔符,count)

去除左右空格:Trim

大小写转换:Upper、lower

(1)在SQL中,select = print

SELECT 'Hello,world' AS HI;
SELECT 1+1 AS result;SELECT VERSION();
SELECT CURRENT_DATE;

(2)数据脱敏

例如:如果名字少于两个字,不用管;如果两个字,后一个字变*;如果三个字,中间一个字变*;如果超过字,除开头结尾,中间变*

SELECT`positionName` AS 脱敏前,CHAR_LENGTH(`positionName`) AS 长度,(CASEWHEN CHAR_LENGTH(`positionName`) = 2 THEN CONCAT(LEFT(`positionName`,1),'*')WHEN CHAR_LENGTH(`positionName`) = 3 THEN CONCAT(LEFT(`positionName`,1),'*',RIGHT(`positionName`,1))WHEN CHAR_LENGTH(`positionName`) > 3 THEN CONCAT(LEFT(`positionName`,1),REPEAT('*',CHAR_LENGTH(`positionName`)-2),RIGHT(`positionName`,1))ELSE`positionName`END
) AS 脱敏后
FROMjobs111

此处使用了case...when...结构

①简单搜索(基于字段值)

语法格式:

CASE column_name
WHEN value1 THEN result1
WHEN value2 THEN result2
...
[ELSE default_value]
END

 ②搜索函数(基于表达式)

语法格式:

SELECT id, name,CASE WHEN age > 18 THEN '成年人'WHEN age BETWEEN 6 AND 18 THEN '未成年人'ELSE '婴幼儿'END AS 'age_group'
FROM people;

(3)模糊查找

SELECT*
FROM
jobs111
WHERE positionName LIKE '%分析_';--通配符%匹配任意个
--通配符_匹配一个

(4)去除重复值

SELECTDISTINCT *
FROM
jobs111--只通过id判断并去除重复值
SELECT *
FROM
jobs1
WHEREpositionId IN (SELECTDISTINCT positionId
FROMjobs1);

四、设置权限

五、其他操作

字符串类——截取,大小写转换,拼接,替换

数字计算——加减乘除,ABS,...

日期时间——转化时间戳,获取当前时间,日期时间格式化,截取

逻辑判断——and not or

流程控制——if case when

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • [C#数据加密]——MD5、SHA、AES、RSA
  • Chainlit快速实现AI对话应用将聊天数据的持久化到Mongo非关系数据库中
  • CI/CD——CI持续集成实验
  • 解决No module named ‘tensorflow‘
  • linux共有云主机ssh升级(以openEuler22.03为例)
  • 高级java每日一道面试题-2024年8月12日-设计模式篇-请列举出在JDK中几个常用的设计模式?
  • Web Vitals:提升用户体验的关键指标
  • VR虚拟展厅与传统实体展厅相比,有哪些优势?
  • PostgreSQL 练习 ---- psql 新增连接参数
  • SpringBoot中整合Mybatis
  • 自定义实现一个 Redis 客户端
  • coze 卡片使用
  • 基于k8s集群的redis-cluster集群
  • 计算机,人工智能选题
  • 自动驾驶大模型算法助力端到端顺利落地
  • [iOS]Core Data浅析一 -- 启用Core Data
  • es6要点
  • Java到底能干嘛?
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • Python_OOP
  • ReactNativeweexDeviceOne对比
  • 闭包,sync使用细节
  • 二维平面内的碰撞检测【一】
  • 关于 Cirru Editor 存储格式
  • 基于 Babel 的 npm 包最小化设置
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 每天10道Java面试题,跟我走,offer有!
  • 前端性能优化——回流与重绘
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 通过git安装npm私有模块
  • 微信小程序实战练习(仿五洲到家微信版)
  • 想写好前端,先练好内功
  • 新书推荐|Windows黑客编程技术详解
  • 在Unity中实现一个简单的消息管理器
  • 在weex里面使用chart图表
  • 转载:[译] 内容加速黑科技趣谈
  • 数据可视化之下发图实践
  • ​​​【收录 Hello 算法】9.4 小结
  • #laravel 通过手动安装依赖PHPExcel#
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #QT项目实战(天气预报)
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (5)STL算法之复制
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (四)库存超卖案例实战——优化redis分布式锁
  • (一) springboot详细介绍
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转载)hibernate缓存
  • ****三次握手和四次挥手
  • .gitignore文件---让git自动忽略指定文件
  • .NET DataGridView数据绑定说明