目录
一、数据分析基本流程
二、获取数据后的代码操作
(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
FROM
  jobs;(3)建新表(查询+建表+插值 三合一)
注意:原始数据一定要保留,创建一个新的表
①从一个表中复制部分数据到一个新表进行操作
#从一个表中复制部分数据到一个新表进行操作
CREATE TABLE jobs1 AS 
SELECT
	 positionId AS id,
	 positionName AS `naem`,   --也可以同时重命名列名
	 companyFullName,
	 companySize,
	 industryField,
	 financeStage,
	 createTime,
	 city,
	 salary,
	 workYear,
	 jobNature,
	 education
FROM
   jobs;②从多个表中复制部分数据 汇总到一个新表进行操作
假设你有三个表 table1、table2 和 table3,每个表都有相同的结构(即相同的列)。你想将这些表中的某些列的数据汇总到一个新表 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)
FROM
   jobs1;
	 
-- 判断是否为空的方法(2)
-- 数据库默认 NULL '' None 是这三种是空数据。
SELECT
   count(*)
FROM
   jobs1
WHERE 
   city IS NULL  /*第1种IS NULL*/
-- 数据情况不是用肉眼来看的,是要通过程序来看的;
SELECT
  count(*)
FROM
   jobs1
WHERE 
   city = 'None'  /*第2种None*/
SELECT
  count(*)
FROM
   jobs1
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 长度,
  (
   CASE
	  WHEN 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 脱敏后
FROM
 jobs111此处使用了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)去除重复值
SELECT
 DISTINCT *
FROM
jobs111
--只通过id判断并去除重复值
SELECT 
 *
FROM
jobs1
WHERE
 positionId IN (SELECT
 DISTINCT positionId
FROM
  jobs1);四、设置权限

五、其他操作
字符串类——截取,大小写转换,拼接,替换
数字计算——加减乘除,ABS,...
日期时间——转化时间戳,获取当前时间,日期时间格式化,截取
逻辑判断——and not or
流程控制——if case when



















