前面第二篇中,整理并讲解了查询的一般语法及单表查询的常规内容。第三篇数据库设计中讲到,为了最大限度地降低数据冗余(重复),通过建立表与表之间的关联性,也就是主外键关系来实现这一目的。
但带来的问题是,在一定程度上是减少了数据冗余,却也增加了查询的难度,即:需要通过多表关联查询,才能获取到需要的数据。
本文重点梳理高级查询的相关内容,特别是多表查询和子查询,是学习的的重点和难点内容,需要学习者细细体会。
前面讲过聚合函数,用来统计数据的一类函数。此外还有字符串函数、日期函数以及数学函数、系统函数等。本文主要讲解字符串、日期函数,另外两类函数大家参考相关资料学习,很容易上手。
1、字符串函数
字符串函数主要用来处理表格中有关字符串字段相关的操作。包括:获取字符串的长度、去除前后的空格、截止子字符串、替换函数等。
上述三行案例中,
第一行代码可以获取姓名列的长度,即学生姓名中含有多少个字;第二行代码可以将学号转换为大写或小写字母输出;第三行代码通过左右截取函数的嵌套,可以去除姓名列前后的空格。需要注意:查询的结果不会影响原有表格内的数据,只是一张虚拟表格。
上述三行案例中,
第一行代码查询子字符串,获取所有学员的姓氏(不考虑复姓);第二行代码获取所有学员的名字(不含姓氏)。因为学员名字长度不同,先求总长度,减去姓氏的一个字符长度,再右截取不同长度的学员名字;第三行代码将地址列中含有“重庆”的内容替换为“重庆市沙坪坝区”。在使用时,这三个函数除了传入字符串参数外,还传入了其他参数,读者在使用时需明细参数的意义。