第七章 组合查询
1、什么是字符集?
规定了某个文字对应的二进制数字存放方式(编码)和某串二进制数值代表那个文字(解码)的转换关系。常见的字符集有ASCI字符集、 GB2312字符集(简体中文)、BIG5字符集(繁体中文)、UnicodeI字符集等。。。
2、什么事字符编码?
3、字库表(character repertoier):
是一个相当于所有可读或者可显示字符的数据库,字库表决定了整个字符集能够展现表示的所有字符的范围。
4、字符码(character encoding from):
将编码字符集和实际存储数值之间的转换关系。一般来说都会直接将编码得值作为编码后直接存储。
5、编码字符集(coded character set):
用一个编码值来表示一个字符在字库表中的位置。
6、UTF-8:
变长编码,最小单位为一个字节。
1)3个字节的UTF-8十六进制编码一定是以E开头的。
2)2个字节的UTF-8十六进制编码一定是以C/D开头的。
3)1个字节的UTF-8十六进制编码一定是以比8小得数字开头的。
一、子查询
1、什么是子查询?( Column)
子查询是嵌套在查询与局里面的查询语句,就像语句块里嵌套语句块类似。
子查询分为两种:一种是相关查询,一种是无相关查询。
子查询简单形式:
Select columnA,(子查询)as ColumnB from 表明
2、如何使用子查询?
在完整的SQL结构中能嵌套资产讯的位置分别是select、from、where、group by、having、order by.
3、在select中嵌套
语句:
嵌套在select语句中的SQL语句要求查询的值只能是单行单列。
4、在from中嵌套
结构:
from里的子查询可以使任意查询语句,然后将其结果作为外部查询的表。
from中嵌套的SQL不受任何限制,也就是说子查询结果可以为多行多列。
举例:
select* from(select `姓名`,`学号`,`科目` FROM t_student) s;
5、在Where中嵌套
结构:
在where 中嵌套的子查询根据不同的运算符有不同的分类。
6、在Group by 中嵌套
7、在Having中嵌套
8、在Order by 中嵌套
1)标量子查询:
是指查询返回的是单一值的标量,如一个数字或一个字符串,也就是子查询中最简单的返回形式。可以使用运算符对子查询的标量结果进行比较,通常子查询的位置在比较式的右侧。
举例:
-- 查询比张三的计算机基础成绩高的其他学生成绩信息
select *from t_student
where 分数>(select 分数 from t_student
where 姓名 = '张三' and 科目= '计算机基础')
and 姓名!= '张三'and 科目 = '计算机基础';
2)列子查询
是指查询返回的结果集是N行以列,该结果通常用来自对标的某个属性查询返回。可以使用IN、any(同 some)、exists和all操作符,不能直接使用运算符。
in运算符:
all运算符
和子查询的结果逐一比较,必须全部满足时表达式的值才为真。
any运算符:
和子查询的结果逐一比较,其中一条记录满足条件则表达式的值就为真。
举例:
--查询比张三的所有成绩都要高的学生成绩
SELECT * FROM t_student
WHERE 分数 > ALL(SELECT 分数 from t_student
where 姓名 = '张三');
wxists/ not exists运算符
wxists判断子查询是否存在数据,如果存在表达式为真,反之为假,not wxists
相反。
3)行子查询
指子查询返回的结果集是一行N列,盖子查询的结果通常是对表的某行数据进行查询而返回的结果数。
4)表子查询
指子查询返回的结果集是N行N列的一个表数据。
二、组合查询
1、使用Union运算符
是一种联合两条火以上查询的运算符,类似多条查询结果想组合的效果。
标准结构:
Union结果集列名与Union运算符中第一个select语句的结果集中的列名相同。另一个select语句的结果集列名将被忽略。
注意:他是把后一个的表的数据添加到第一个表中。
三、总结