2021-11-15 迈向程序猿的第二十八步

目录

一.Mysql安装与配置

二.Mysql的概述

2.1 数据存储的问题

2.2 数据库分类

2.3 sql语言概述

三.数据查询

3.1基本查询

3.2 条件查询

3.3 系统函数查询

3.4 聚合&分组&过滤&限制查询


一.Mysql安装与配置

①常规步骤杀到官网揪一只小海豚出来

②病友先删除自己的mysql然后去和注册表相爱相杀,最后抓一只小海豚出来

③可视化工具Navicat和Sqlyog自己选一个下载,操作简单,不会找度娘

二.Mysql的概述

2.1 数据存储的问题

变量,数组,对象,集合
弊端:临时存储,存储数据的量级太小
IO流
弊端:存储的数据没有类型区分,没有安全措施,没有备份与恢复

2.2 数据库分类

1.关系型数据库:
Oracle、DB2、MySQL(重点)、SQL Server,特点:表与表建立关联关系  
2. 非关系型数据库:
ElastecSearch、MongoDB、Redis,一般使用哈希表,通过键值对存数据

2.3 sql语言概述

结构化的查询语言,简单的说增删改查都是SQL范畴--CRUD

三.数据查询

3.1基本查询

查询语法:SELECT  列名 FROM 表名  查询单个字段
select first_name from t_employees;

查询多个字段
select first_name,salary from t_employees;

查询所有字段
select * from t_employees;

查询的字段可以进行运算
SELECT employee_id,first_name,salary*12 from t_employees;

查询的字段设置别名:   as
SELECT employee_id as '员工编号',first_name as '姓',salary*12 as '年薪' from t_employees;


字段内容去重:distinct
select DISTINCT manager_id from t_employees;


排序查询: SELECT 列名 FROM 表名 [ORDER BY 排序列 [排序规则]]() 
查询员工的编号,名字,薪资。按照工资高低进行降序排序。
select employee_id,first_name,salary from t_employees ORDER BY salary desc;


多列排序:
查询员工的编号,名字,薪资。按照工资高低进行升序排序(薪资相同时,按照编号进行升序排序)。
select employee_id,first_name,salary from t_employees ORDER BY salary asc,employee_id asc;

3.2 条件查询

语法:SELECT 列名 FROM 表名 WHERE 条件
等值判断(=)
查询薪资是11000的员工信息(编号、名字、薪资)
select employee_id,first_name,salary from t_employees where salary=11000;


逻辑条件(and,or,not)
查询薪资是11000并且提成是0.30的员工信息(编号、名字、薪资)
select employee_id,first_name,salary from t_employees where salary=11000 and commission_pct=0.3;


不等值判断(> 、< 、>= 、<= 、!= 、<>)
查询员工的薪资在6000~10000之间的员工信息(编号,名字,薪资)
select employee_id,first_name,salary from t_employees where salary>=6000 and salary<=10000;

区间判断(between and)
查询员工的薪资在6000~10000之间的员工信息(编号,名字,薪资)
select employee_id,first_name,salary from t_employees where salary BETWEEN 6000 and 10000;

null值判断
查询没有提成的员工信息(编号,名字,薪资 , 提成)
select employee_id,first_name,salary,commission_pct from t_employees where commission_pct is NULL;


where in 枚举查询
查询部门编号为70、80、90的员工信息(编号,名字,薪资 , 部门编号)
select employee_id,first_name,salary,department_id from t_employees where department_id in (70,80,90);


模糊查询: like % _
查询名字以"L"开头的员工信息(编号,名字,薪资 , 部门编号)
select employee_id,first_name,salary,department_id from t_employees where first_name like 'L%'

查询名字以"L"开头并且长度为4的员工信息(编号,名字,薪资 , 部门编号)
select employee_id,first_name,salary,department_id from t_employees where first_name like 'L___';

分支结构查询
查询员工信息编号,名字,薪资 , 薪资级别 对应条件表达式生成
select employee_id,first_name,salary,
 (case
    WHEN salary>=10000 THEN 'A'
    WHEN salary>=8000 and salary<10000 THEN 'B'
    when salary>=6000 and salary<8000  then 'C'
    WHEN salary>=4000 and salary<6000 THEN  'D'
    else 'E' 
 END) as '薪资级别'
from t_employees;

3.3 系统函数查询

时间查询: 语法:SELECT 时间函数
select SYSDATE();    查询当前系统日期与时间
SELECT NOW();        查询现在的日期与时间
SELECT CURDATE();    查询日期
select CURTIME();    查询时间

select YEAR(NOW());    查询年份
SELECT DATEDIFF('2021-08-09','2021-08-01');   两个时间天数之差

SELECT ADDDATE('2021-08-09',10);   在指定时间上,加天数


字符串查询:
select CONCAT(CURDATE(),' ',CURTIME());   字符串拼接
SELECT INSERT('helloworld',2,3,"xx");  hxxoworld  将原字符串指定位置添加子串   
                                       数据库的下标往往从1开始

3.4 聚合&分组&过滤&限制查询

聚合函数
语法:SELECT [聚合函数(列名)]() FROM 表名;
统计所有员工每月的工资总和
select sum(salary) from t_employees;

求总条数--COUNT(字段):不包括null值的条数
SELECT count(commission_pct) from t_employees;

求总条数,包含null值的记录(常用)
select count(*) from t_employees;


分组查询:
语法:SELECT 列名 FROM 表名 WHERE 条件  GROUP BY 分组依据(列)
案例: 查询各部门的总人数
思路:
1.按照部门编号进行分组(分组依据是 department_id)
2.再针对各部门的人数进行统计(count)
select department_id,count(*) from t_employees GROUP BY department_id;


案例:查询各个部门、各个岗位的人数
思路:
1.按照部门编号进行分组(分组依据 department_id)。
2.按照岗位名称进行分组(分组依据 job_id)。
3.针对每个部门中的各个岗位进行人数统计(count)。
select department_id,job_id,count(*) from t_employees GROUP BY department_id,job_id;


查询各个部门id、总人数、first_name ----错误的查询
注意:分组查询匹配的字段必须是,聚合函数或分组依据列
select department_id,count(*),first_name from t_employees GROUP BY department_id;


分组过滤查询
语法:SELECT 列名  FROM 表名 WHERE 条件  GROUP BY 分组列 [HAVING 过滤规则]()
案例:统计60、70、90号部门的最高工资
思路:
1).	确定分组依据(department_id)
2).	对分组后的数据,过滤出部门编号是60、70、90信息
3).	max()函数处理
select department_id,max(salary) from t_employees GROUP BY department_id HAVING department_id in (60,70,90);

限定查询-限制查询出多少条 
SELECT 列名 FROM 表名 [LIMIT 起始行,查询行数]
案例:查询表中前五名员工的所有信息
select * from t_employees limit 0,5;   前5条  下标从0开始
select * from t_employees limit 5,5;   第二个5条

(=-=,感觉一天就直接把mysql基本给撩倒了,可怜的小海豚直接被大卸八块哦!!~学大数据的猴子们,跑路的基础要学好啊~)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值