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高阶语句(一)

一、SQL语句常用查询

对mysql数据库的查询,除了基本的查询外,有时候需要对查询的结果进行处理。例如只取一部分数据,对查询结果进行排序或分组等等。
模板表
在这里插入图片描述

按关键字排序 :类比于windows 任务管理器

使用select语句可以将需要的数据从mysql数据库中查询出来,如果对查询的结果进行排序,可以用 OEDER BY 语句来对语句实现排序,并最终将排序后的结果返回给客户。
这个语句可针对一个或多个字段
语法

select colunm1,colunm2, ... from table_name order by column1,column2 , ... ASC|DESC

ASC: 是按照升序进行排序的,默认的排序方式,可省略(如果没有指定的的具体排序方式,则默认ASC方式进行排序)


DESC: 是按照降序方式进行排列(order by前边也可以使用 where 字句对查询结果进一步过滤)

1.1 按关键字查询

== 1.按年龄排序,默认不指定升序排列==

mysql> select id,name,age,hobby from info1 order by age;

在这里插入图片描述

1.2 年龄按降序排列

mysql> select id,name,age,hobby from info1 order by age desc;

在这里插入图片描述

ORDER BY还可以结合where进行条件过滤

#筛选名单里30岁的人
mysql> select name,age from info1 where age='30' order by id desc;

在这里插入图片描述

1.3 升降序查询学生信息

ORDER BY 语句也可以使用多个字段来进行排序
如果是多字段的时候,第一个参数相同的情况,第二个字段有效

① 查询学生名单先按id降序排列,相同年龄的,id也按降序排列

select id,name,age,hobby from info1 order by age desc,id descc;

在这里插入图片描述

② 查询学生信息先按兴趣id降序排列,相同分数的,id按升序排列

select id,name,age,hobby from info1 order by age desc,id;

在这里插入图片描述

二、区间判断AND /OR

2.1 查找年龄在某个区间


mysql> select * from info1 where age > 18 and age < 25;

在这里插入图片描述

2.2 嵌套/多条件查询


mysql> select * from info1 where age > 29 or (age <25 and age > 18 );

在这里插入图片描述

2.3 distinct 查询不重复记录

mysql> select distinct age from info1;

在这里插入图片描述

三、对结果进行分组

通过SQL查询出来的结果,还可以对其进行分组,使用GROUP BY 语句来实现,GROUP BY通常都是结合聚合函数一起使用的,常用的聚合函数包括:计数(COUNT)、求和(SUM)、求平均数(AVG)、最大值(MAX)、最小值(MIN)、GROUP BY分组的时候可以按照一个或多个字段对结果进行分组处理:

语法

SELECT column_name, aggregate_function(column_name)FROM table_name WHERE column_name operator valueGROUP BY column_name;

3.1 将age相同的分为一组,统计name学生的个数

在这里插入图片描述

结合where语句
在这里插入图片描述

四、限制结果条目(limit???)

在使用 MySQL SELECT 语句进行查询时,结果集返回的是所有匹配的记录(行)。有时候仅 需要返回第一行或者前几行,这时候就需要用到 LIMIT 子句
语法

SELECT column1, column2, ... FROM table_name LIMIT [offset,] number

LIMIT 的第一个参数是位置偏移量(可选参数),是设置 MySQL 从哪一行开始显示。 如果不设定第一个参数,将会从表中的第一条记录开始显示。需要注意的是,第一条记录的 位置偏移量是 0,第二条是 1,以此类推。第二个参数是设置返回记录行的最大数目。

4.1 查询所有信息的前4行

在这里插入图片描述

4.2 查询第3行开始,往后2行的记录

在这里插入图片描述

4.3 按id的大小升序排列显示前三行

在这里插入图片描述

4.4 按id的大小升序排列显示后三行

在这里插入图片描述

五、设置别名(alias ——as)

在 MySQL 查询时,当表的名字比较长或者表内某些字段比较长时,为了方便书写或者多次使用相同的表,可以给字段列或表设置别名。使用的时候直接使用别名,简洁明了,增强可读性

语法

对于列的别名:SELECT column_name AS alias_name FROM table_name;
对于表的别名:SELECT column_name(s) FROM table_name AS alias_name;

使用场景

  1. 对复杂的表进行查询时,别名可以缩短查询语句的长度
  2. 多表相连查询时(通俗易懂、剪短sql语句)

5.1 查询字段数量

select count(*) as number from info1;

5.2 列别名设置

在这里插入图片描述

5.3 用as创建表

创建了一个新表test1 并定义表结构,插入表数据(与info1表相同)

但是”约束“没有被完全”复制“过来

#但是如果原表设置了主键,那么附表的:default字段会默认设置一个0

create table bakup2 as select * from zhuangzu;

在这里插入图片描述

克隆、复制表结构

create table bakup (select * from zhuangzu);

在这里插入图片描述
在这里插入图片描述

六、通配符

  • 通配符主要用于替换字符串中的部分字符,通过部分字符的匹配将相关结果查询出来。
  • 通常通配符都是跟 LIKE 一起使用的,并协同 WHERE 子句共同来完成查询任务。常用的通配符有两个,分别是:

%:百分号表示零个、一个或多个字符 *

_:下划线表示单个字符

select id,name from info1 where name like 'z%';

在这里插入图片描述

select id,name from info1 where name like 'l_z';

在这里插入图片描述

select id,name,address from info1 where address like '%a%';

在这里插入图片描述

select id,address from info1 where address like 'C%_';

select id,name from abc where name like '%n_';

在这里插入图片描述
在这里插入图片描述

七、子查询

子查询也被称作内查询或者嵌套查询,是指在一个查询语句里面还嵌套着另一个查询语句。子查询语句是先于主查询语句被执行的,其结果作为外层的条件返回给主查询进行下一 步的查询过滤。

子语句可以与主语句所查询的表相同,也可以是不同表

select name,age from info1 where id in(select id from zhuangzu);

主语句:select name,age from info1 where id

从语句:select id from zhuangzu
在这里插入图片描述

7.1update子查询

UPDATE 语句也可以使用子查询。UPDATE 内的子查询,在 set 更新内容时,可以是单独的一列,也可以是多列。
在这里插入图片描述

7.2delete子查询

在这里插入图片描述

7.3取反子查询

在 IN 前面还可以添加 NOT,其作用与 IN 相反,表示否定(即不在子查询的结果集里面)

删除年龄不是大于20岁的记录

在这里插入图片描述

7.4exists子查询

EXISTS 这个关键字在子查询时,主要用于判断子查询的结果集是否为空。如果不为空, 则返回 TRUE;反之,则返回 FALSE
在这里插入图片描述

八、mysql视图

数据库中的虚拟表,这张虚拟表中不包含真实数据,只是做了真实数据的映射

功能: 简化查询结果集、灵活查询、可以针对不同用户呈现不同结果集、相对有更高的安全性

PS: 视图适合于多表连接浏览时使用!不适合增、删、改

而存储过程适合于使用较频繁的SQL语句,这样可以提高执行效率!

区别:

①、视图是已经编译好的sql语句。而表不是

②、视图没有实际的物理记录。而表有。 show table status\G

③、表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能有创建的语句来修改

④、视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户触数据表,从而不知道表结构。

⑤、表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。

⑥、视图的建立和删除只影响视图本身,不影响对应的基本表。(但是更新视图数据,是会影响到基本表的)

创建视单表图

在视图中展示24岁以上的
在这里插入图片描述

查看视图
在这里插入图片描述
查看视图和原表结构

在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-06-29 19:08:56  更:2022-06-29 19:10:28 
 
开发: 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年11日历 -2024/11/23 16:40:51-

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