IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 今日Mysql总结 -> 正文阅读

[大数据]今日Mysql总结

目录

?编辑

1.导入数据

2.简单查询(查询表中数据)

3.查看表结构

4.查询多个字段

5.条件查询?

6. 排序

7.数据处理函数?

8.分组函数(多行处理函数)

9.分组查询

10.总结


1.导入数据

?show databases;------->create database bjpowernode;------->use bjpowernode;-------->source 文件的绝对路径/相对路径

2.简单查询(查询表中数据)

select 字段名 from 表名;

select ,from是关键字。字段名和表名是标识符。

sql不区分大小写。

3.查看表结构

不看表中的数据,只看表的结构

desc 表名;

4.查询多个字段

(1)select 字段名,字段名 from 表名

字段名之间用“,”隔开

(2)给查询的列起别名

select deptno,dname as deptname from dept;

注意:

只是将显示的查询结果列名显示为deptname,原表列名还是叫:dname
select语句是永远都不会进行修改操作的。(因为只负责查询)

as 可以省略。当别名内有空格时必须使用单引号或者双引号括起来,数据库中的字符串都是采用单引号括起来。这是标准的。双引号不标准。

5.条件查询?

select 字段名,字段名?from 表名 where 条件;

?? ?语法格式:
?? ??? ?select
?? ??? ??? ?字段1,字段2,字段3....
?? ??? ?from?
?? ??? ??? ?表名
?? ??? ?where
?? ??? ??? ?条件;

?? ?= 等于
?? ?查询薪资等于800的员工姓名和编号?
?? ??? ?select empno,ename from emp where sal = 800;
?? ?查询SMITH的编号和薪资?
?? ??? ?select empno,sal from emp where ename = 'SMITH'; //字符串使用单引号

?? ?<>或!= 不等于
?? ?查询薪资不等于800的员工姓名和编号?
?? ??? ?select empno,ename from emp where sal != 800;
?? ??? ?select empno,ename from emp where sal <> 800; // 小于号和大于号组成的不等号

?? ?< 小于
?? ?查询薪资小于2000的员工姓名和编号?
?? ??? ?mysql> select empno,ename,sal from emp where sal < 2000;

?? ?<= 小于等于
?? ?查询薪资小于等于3000的员工姓名和编号?
?? ??? ?select empno,ename,sal from emp where sal <= 3000;


?? ?> 大于
?? ?查询薪资大于3000的员工姓名和编号?
?? ??? ?select empno,ename,sal from emp where sal > 3000;

?? ?>= 大于等于
?? ?查询薪资大于等于3000的员工姓名和编号?
?? ??? ?select empno,ename,sal from emp where sal >= 3000;

?? ?between … and …. 两个值之间, 等同于 >= and <=
?? ?查询薪资在2450和3000之间的员工信息?包括2450和3000
?? ??? ?第一种方式:>= and <= (and是并且的意思。)
?? ??? ??? ?select empno,ename,sal from emp where sal >= 2450 and sal <= 3000;

?? ??? ?第二种方式:between … and …
?? ??? ??? ?select?
?? ??? ??? ??? ?empno,ename,sal?
?? ??? ??? ?from?
?? ??? ??? ??? ?emp?
?? ??? ??? ?where?
?? ??? ??? ??? ?sal between 2450 and 3000;
?? ??? ??? ?
?? ??? ??? ?注意:
?? ??? ??? ??? ?使用between and的时候,必须遵循左小右大。
?? ??? ??? ??? ?between and是闭区间,包括两端的值。

?? ?is null 为 null(is not null 不为空)
?? ?查询哪些员工的津贴/补助为null?
?? ??? ?mysql> select empno,ename,sal,comm from emp where comm = null;

?? ??? ?mysql> select empno,ename,sal,comm from emp where comm is null;
?? ?

?? ?and 并且
?? ?查询工作岗位是MANAGER并且工资大于2500的员工信息?
?? ??? ?select?
?? ??? ??? ?empno,ename,job,sal?
?? ??? ?from?
?? ??? ??? ?emp?
?? ??? ?where?
?? ??? ??? ?job = 'MANAGER' and sal > 2500;
?? ??? ?

?? ?or 或者
?? ?查询工作岗位是MANAGER和SALESMAN的员工?
?? ??? ?select empno,ename,job from emp where job = 'MANAGER';
?? ??? ?select empno,ename,job from emp where job = 'SALESMAN';

?? ??? ?select?
?? ??? ??? ?empno,ename,job
?? ??? ?from
?? ??? ??? ?emp
?? ??? ?where?
?? ??? ??? ?job = 'MANAGER' or job = 'SALESMAN';
?? ??? ?
??
?? ?
?? ?and和or同时出现的话,有优先级问题吗?
?? ?查询工资大于2500,并且部门编号为10或20部门的员工?
?? ??? ?select?
?? ??? ??? ?*
?? ??? ?from
?? ??? ??? ?emp
?? ??? ?where
?? ??? ??? ?sal > 2500 and deptno = 10 or deptno = 20;
?? ??? ??? ?and优先级比or高。
?? ??? ??? ?以上语句会先执行and,然后执行or;

?? ??? ?select?
?? ??? ??? ?*
?? ??? ?from
?? ??? ??? ?emp
?? ??? ?where
?? ??? ??? ?sal > 2500 and (deptno = 10 or deptno = 20);
?? ??? ?
?? ??? ?and和or同时出现,and优先级较高。如果想让or先执行,需要加“小括号”
?? ??? ?以后在开发中,如果不确定优先级,就加小括号就行了

?? ?in 包含,相当于多个 or (not in 不在这个范围中)
? ? ?
?? ??? ??? ?select empno,ename,job from emp where job = 'MANAGER' or job = 'SALESMAN';
?? ??? ??? ?select empno,ename,job from emp where job in('MANAGER', 'SALESMAN');
?? ??? ??? ?注意:in不是一个区间。in后面跟的是具体的值。

?? ??? ?查询薪资是800和5000的员工信息?
?? ??? ??? ?select ename,sal from emp where sal = 800 or sal = 5000;
?? ??? ??? ?select ename,sal from emp where sal in(800, 5000); //这个不是表示800到5000都找出来。
?? ??? ??? ?select ename,sal from emp where sal in(800, 5000, 3000);

?? ??? ??? ?// not in 表示不在这几个值当中的数据。
?? ??? ??? ?select ename,sal from emp where sal not in(800, 5000, 3000);

?? ?not 可以取非,主要用在 is 或 in 中
?? ??? ?is null
?? ??? ?is not null
?? ??? ?in
?? ??? ?not in

?? ?like?
?? ??? ?称为模糊查询,支持%或下划线匹配
?? ??? ?%匹配任意多个字符
?? ??? ?下划线:任意一个字符。
?? ??? ?(%是一个特殊的符号,_ 也是一个特殊符号)

?? ??? ?找出名字中含有O的?
?? ??? ?mysql> select ename from emp where ename like '%O%';
?? ??? ?+-------+
?? ??? ?| ename |
?? ??? ?+-------+
?? ??? ?| JONES |
?? ??? ?| SCOTT |
?? ??? ?| FORD ?|
?? ??? ?+-------+

?? ??? ?找出名字以T结尾的?
?? ??? ??? ?select ename from emp where ename like '%T';
?? ??? ??? ?
?? ??? ?找出名字以K开始的?
?? ??? ??? ?select ename from emp where ename like 'K%';

?? ??? ?找出第二个字每是A的?
?? ??? ??? ?select ename from emp where ename like '_A%';
?? ??? ?
?? ??? ?找出第三个字母是R的?
?? ??? ??? ?select ename from emp where ename like '__R%';
? ? ? ?

?? ??? ?找出名字中有“_”的?
?? ??? ??? ?select name from t_student where name like '%_%'; //这样不行。

?? ??? ??? ?mysql> select name from t_student where name like '%\_%'; // \转义字符。
?? ??? ??? ?+----------+
?? ??? ??? ?| name ? ? |
?? ??? ??? ?+----------+
?? ??? ??? ?| jack_son |
?? ??? ??? ?+----------+

6. 排序

select??ename,sal? from? emp? order by? sal; // 默认是升序

指定降序:select?ename,sal?from?emp?order by?sal desc;

指定升序:select?ename,sal?from?emp?order by?sal asc;

多个字段排序

select??ename,sal?from?emp?order by?sal asc, ename asc; // sal在前,起主导,只有sal相等的时候,才会考虑启用ename排序。

7.数据处理函数?

数据处理函数又被称为单行处理函数

??单行处理函数的特点:一个输入对应一个输出。

??和单行处理函数相对的是:多行处理函数。(多行处理函数特点:多个输入,对应1个输出!)
常见单行处理函数

lower 转换小写

select lower(ename) as ename from emp;

upper 转换大写

select * from t_student;

select upper(name) as name from t_student;

?? ?+----------+
? ? ? ?| name ? ? |
?? ??? ?+----------+
?? ??? ?| ZHANGSAN |
?? ??? ?| LISI ? ? |
?? ??? ?| WANGWU ? |
?? ??? ?| JACK_SON |
?? ??? ?+----------+

substr 取子串(substr( 被截取的字符串, 起始下标,截取的长度))

select substr(ename, 1, 1) as ename from emp;注意:起始下标从1开始,没有0.

首字母大写

select name from t_student;
?? ??? ??? ?select upper(substr(name,1,1)) from t_student;
?? ??? ??? ?select substr(name,2,length(name) - 1) from t_student;
?? ??? ??? ?select concat(upper(substr(name,1,1)),substr(name,2,length(name) - 1)) as result from t_student;
?? ??? ??? ?+----------+
?? ??? ??? ?| result ? |
?? ??? ??? ?+----------+
?? ??? ??? ?| Zhangsan |
?? ??? ??? ?| Lisi ? ? |
?? ??? ??? ?| Wangwu ? |
?? ??? ??? ?| Jack_son |
?? ??? ??? ?+----------+

concat函数进行字符串的拼接

select concat(empno,ename) from emp;

length 取长度

select length(ename) enamelength from emp;

trim 去空格

select * from emp where ename = ' ?KING';

select * from emp where ename = trim(' ? KING');

str_to_date 将字符串转换成日期
date_format 格式化日期
format 设置千分位

case..when..then..when..then..else..end

round 四舍五入

select round(1236.567, 2) as result from emp; //保留2个小数
select round(1236.567, -1) as result from emp; // 保留到十位。

rand() 生成随机数

select round(rand()*100,0) from emp; // 100以内的随机数

ifnull 可以将 null 转换成一个具体值
ifnull是空处理函数。专门处理空的。
在所有数据库当中,只要有NULL参与的数学运算,最终结果就是NULL。

ifnull函数用法:ifnull(数据, 被当做哪个值)
如果“数据”为NULL的时候,把这个数据结构当做哪个值。

补助为NULL的时候,将补助当做0

?select ename, (sal + ifnull(comm, 0)) * 12 as yearsal from emp;

8.分组函数(多行处理函数)

多行处理函数的特点:输入多行,最终输出一行。

5个:
?? ??? ?count?? ?计数
?? ??? ?sum?? ?求和
?? ??? ?avg?? ?平均值
?? ??? ?max?? ?最大值
?? ??? ?min?? ?最小值
?? ?
?? ?注意:
?? ??? ?分组函数在使用的时候必须先进行分组,然后才能用。
?? ??? ?如果你没有对数据进行分组,整张表默认为一组。

第一点:分组函数自动忽略NULL,你不需要提前对NULL进行处理。

第二点:分组函数中count(*)和count(具体字段)有什么区别?

count(具体字段):表示统计该字段下所有不为NULL的元素的总数。
?? ??? ??? ?count(*):统计表当中的总行数。(只要有一行数据count则++)
?? ??? ??? ??? ??? ??? ?因为每一行记录不可能都为NULL,一行数据中有一列不为NULL,则这行数据就是有效的。

9.分组查询

书写顺序,执行顺序

?

?分组函数不能直接使用在where后面,因为分组函数在使用的时候必须先分组之后才能使用。
?where执行的时候,还没有分组。所以where后面不能出现分组函数。

在一条select语句当中,如果有group by语句的话,select后面只能跟:参加分组的字段,以及分组函数。其它的一律不能跟。

having

使用having可以对分完组之后的数据进一步过滤。having不能单独使用,having不能代替where,having必须和group by联合使用。使用having可以对分完组之后的数据进一步过滤having不能单独使用,having不能代替where,having必须和group by联合使用。.

where和having,优先选择where,where实在完成不了了,再选择having。

10.总结

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:30:00  更:2022-07-17 16:32:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 23:50:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码