MySQL查询语句的进阶

上一篇博文MySQL的基础查询与排序我们讲述到了简单的查询,今天我们就来简单的了解一下高级查询,在此我们需要引入了视图、子查询、函数的概念。

视图

何为视图? -->本质就是个虚拟的表,也就是收其并非真实存在,我们为什么要探讨它呢?这就要追其溯源。

正因为有视图的存在,使得以下几个方面得到了改善:

1.将频繁使用的SELECT语句保存以提高效率。
2.使用户看到的数据更加清晰。
3.可以不对外公开数据表全部字段,增强数据的保密性。
4.降低了数据的冗余。

说起视图必然就要说到表,它们之间的区别可以用一段简单的口诀来形象的记忆

视图不是表,视图是虚表,视图依赖表

既然引入了视图,要想应用它,自然也就少不了MySQL常用的

创建视图

以下是创建视图的基本格式:

create view '视图名'
 as
SELECT查询语句

例子:

创建了一个名为sno_student的视图,该视图基于student表:

CREATE VIEW sno_student 
 AS
 SELECT sno, sname, age, gender
 FROM student;

这个视图将包含student表中的sno、sname、age和gender字段的数据。通过创建视图,我们可以方便地访问和查询student表中特定字段的数据,而不必每次都编写复杂的查询语句。为此视图提供了一种虚拟表的方式,可以更好的帮助我们简化数据查询和管理。

使用视图:

SELECT * FROM sno_student;

这串命令返回sno_student视图中的所有字段数据,正因如此我们可以更方便地访问和管理特定字段的数据,提高了数据查询的效率和简洁性。


视图的删除

基本格式:

DROP VIEW '视图名';

例子:

DROP VIEW sno_student;

此处是对名为sno_student的视图进行删除。


修改视图

基本格式:

ALTER VIEW '视图名' AS SELECT查询语句

例子:

ALTER VIEW top_performers 
 AS
 SELECT * 
 FROM student 
  WHERE grade > 95;

上述的这串是将top_performers视图更新为显示student表中成绩大于95分的学生信息。通过执行,视图top_performers的定义将被替换为新的查询结果,也就是说现在只包含了成绩大于95分的学生信息。



子查询

子查询指一个查询语句嵌套在另一个查询语句内部的查询,就好比编程语言中的嵌套循环一样,在 SELECT 子句中先计算子查询,子查询结果作为外层另一个查询的过滤条件,查询是基于一个表或者多个表,表与表之间存在着关联。

SELECT '索引列'
FROM table1 '表名称'
WHERE column1 = (SELECT column1 FROM table2 WHERE condition);

将从table2表中检索column1列的值,并根据条件condition进行过滤。然后,子查询的结果将与table1表中的column1列进行比较。如果匹配,那么这行数据将被包含在结果集中。



函数

求某个值或某些值时,共分为三步

1 --> 写出相应的函数 2 --> 传入相应的参数 3 --> 返回预期值

sql自带了许多的函数,其中算数函数的用法与Excel中的函数有着异曲同工之妙。

在这里插入图片描述

字符串函数

1.CONCAT – 拼接

语法:CONCAT(str1, str2, str3)

2.LENGTH – 字符串长度

语法:LENGTH( 字符串 )

3.REPLACE – 字符串的替换

语法:REPLACE( 对象字符串,替换前的字符串,替换后的字符串 )

4.SUBSTRING – 字符串的截取

语法:SUBSTRING (对象字符串 FROM 截取的起始位置 FOR 截取的字符数)

此处索引的起始值为1,在编程语言中的索引起始值是0

日期函数

CURRENT_DATE – 获取当前日期

SELECT CURRENT_DATE;

CURRENT_TIME – 当前时间

SELECT CURRENT_TIME;

CURRENT_TIMESTAMP – 当前日期和时间

SELECT CURRENT_TIMESTAMP;

EXTRACT – 截取日期元素

语法:EXTRACT(日期元素 FROM 日期)


转换函数

CAST – 类型转换

语法:CAST(转换前的值 AS 需要转换的数据类型)

--将一个字符串转换为整数类型:

CAST('123' AS INT) 

--这将把字符串'123'转换为整数类型。

COALESCE – 将NULL转换为其他值

语法:COALESCE(数据1,数据2,数据3……)

--假设有三个数据字段A,B和C,如果字段A为空,则返回字段B的值,如果字段B也为空,则返回字段C的值,可以使用COALESCE函数:

COALESCE(A, B, C)

--将返回字段A的值,如果字段A为空,则返回字段B的值,如果字段B也为空,则返回字段C的值。

由于本人的学习能力有限,在学习过程中暂时只理解了这些知识,随着后续的学习,学习笔记会努力完善,还请见谅!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值