上一篇博文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的值。
由于本人的学习能力有限,在学习过程中暂时只理解了这些知识,随着后续的学习,学习笔记会努力完善,还请见谅!