第五章 高级数据过滤
本章示例表为transcript成绩表,数据库软件选用SQLITE3,具体如下
1、高级过滤也是通过where条件子句实现,辅以and、or、in、not进行实现
SELECT * FROM transcript WHERE Maths >= 90 AND English >= 90
即为满足Maths >= 90 且 English >= 90
查询结果:
3、or语句:or语句连接的多个条件为或的关系,例如
SELECT * FROM transcript WHERE Maths >= 91 OR English >= 91
即为满足Maths >= 9或者English >= 91
查询结果如下
4、可以通过()进行子句的扩展,()的执行优先级大于AND和OR
SELECT * FROM transcript WHERE (Maths >= 91 AND English >= 91) OR English <= 80
5、IN:IN语句可以理解为多个=条件的OR组合的快捷方式
SELECT * FROM transcript WHERE Maths IN (89,91);
SELECT * FROM transcript WHERE NOT Maths = 89;
第六章 用通配符进行过滤
1、通配符匹配组合:使用like结合% 、_、[]符合进行查询条件的过滤
2、like+%:%用来模糊表示剩余字符,使用的形式可以是'xxx%'、‘%xxx’、‘xxx%yyy’的形式
SELECT * FROM transcript WHERE name like 'T%';
SELECT * FROM transcript WHERE name like '%y';
SELECT * FROM transcript WHERE name like '%l%';
注:通配符匹配字段时要正确填写大小写字母,因为这里属于行记录字段的内容。
3、like+_:_只能表示单个字符,不能模糊匹配多个字符。
SELECT * FROM transcript WHERE name like '_m';
这样查找就没有找到记录
SELECT * FROM transcript WHERE name like '_om';
4、like+[]:[]里填写字符集,SELECT * FROM transcript WHERE name like '[T]%',
第七章 创建计算字段
1、计算字段是为了方便直接将检索出来的一个或者多个字段直接进行转换成想要的形式而创建的字段
2、拼接字段:SQL Server使用+,DB2、Oracle、PgSQL、SQLite使用||,Mysql和MariaDB使用特殊函数
将name和Maths按照name(Maths)的形式进行拼接:
SELECT name || '(' || Maths || ')' FROM transcript;
3、可以把拼接查到的字段用AS别名的形式展示,具体如下
SELECT name || '(' || Maths || ')' AS MathsInfo FROM transcript;
4、用于计算数据:将多个列的查询结果进行计算,计算的结果作为结果进行展示
SELECT name, Maths+English AS TotalScore FROM transcript;
第八章 使用函数处理数据
1、SQL也支持一些函数用于处理数据,函数一般是在数据上执行的,为数据的转换和提供方便,每个DBMS有其特定的函数,只有少数的几个函数被所有主要的DBMS同时支持。
2、因为DBMS支持的函数不同,所以在一条SQL通用的对接多个DBMS时,需要做好函数使用的注释,以及做好不同DBMS的判断,使用其对应的函数。
3、大多数SQL支持的函数:处理文本字符串(如删除或填充值、转换值的大小写等)的文本函数;进行数值数据算术操作(如返回绝对值、进行代数运算)的数值函数;处理日期和时间值并从这些值中提取特定的成分(如返回两个日期之差,检查日期有效性等)的日期和时间处理函数;用于生成美观好懂的输出内容的格式化函数;返回DBMS正使用的特殊信息的系统函数。
4、处理文件类函数举例
SQLite进行字母的大写转换 UPPER
SELECT UPPER(name) FROM transcript;
5、日期和时间类函数举例
计算当前月份的最后一天 date()
SELECT date('now','start of month','+1 month','-1 day');
6、代数计算类函数举例
计算某一列的平均值 avg()
SELECT AVG(Maths) FROM transcript;
.
7、系统函数举例
返回当前sqlite版本函数 sqlite_version()
SELECT sqlite_version() AS 'SQLite Version';