第三章 SQL语言基础上(下)

3、分组语句

(1)SELECT PUB 出版社,SUM(PRICE*QTY) 金额 FROM books GROUP BY PUB;

以出版社分组统计金额。

第三章 SQL语言基础上(下)

(2)SELECT PUB 出版社,SUM(PRICE*QTY) 金额 FROM books GROUP BY PUB HAVING SUM(PRICE)>60;

聚集函数不能和where条件语句混合使用,可以和HAVING一起使用。

第三章 SQL语言基础上(下)

(3)SELECT A1,COUNT(A1) 计数 FROM aa GROUP BY A1 HAVING COUNT(A1)>1;

以A1字段分组,记录A1字段中数值出现的次数。

第三章 SQL语言基础上(下)

4、模糊查询

(1)SELECT * FROM aa WHERE A1 LIKE 'a_';

查找以a开头,以单个字符结尾的记录。

第三章 SQL语言基础上(下)

(2)SELECT * FROM aa WHERE A1 LIKE 'a%';

查找以a开头,0或多个字符结尾的记录。

第三章 SQL语言基础上(下)

(3)SELECT * FROM aa WHERE A1 LIKE '%a%';

查找包含字符a的记录。

第三章 SQL语言基础上(下)

5、表的连接

(1)SELECT EID,ENAME,SEX,d.NAME FROM e,d WHERE e.ID = d.ID;

表的连接查询设计两个及以上个表,表之间有某种联系。

第三章 SQL语言基础上(下)

(2)SELECT EID,ENAME,SEX,d.NAME FROM e JOIN d on e.ID = d.ID;

内连接:连接两个表,显示两个表公共匹配的数据。JOIN ON是内连接的标准写法。

第三章 SQL语言基础上(下)

(3)外连接分为两种:左连接和右连接

(a)SELECT EID,ENAME,SEX,d.NAME FROM e,d WHERE e.ID = d.ID(+);

左连接:以左表为主,全部显示左表数据,右表匹配的显示,不匹配的为空。

第三章 SQL语言基础上(下)

(b)SELECT EID,ENAME,SEX,d.NAME FROM e,d WHERE e.ID(+) = d.ID;

右连接:以右表为主,全部显示左表数据,左表匹配的显示,不匹配的为空。

第三章 SQL语言基础上(下)

6、子查询

(1)SELECT * FROM e WHERE ID IN (SELECT ID FROM d);

第三章 SQL语言基础上(下)

SELECT * FROM e WHERE EXISTS (SELECT ID FROM d);

第三章 SQL语言基础上(下)

无关子查询:独立于父查询。

(2)SELECT * FROM e WHERE ID IN (SELECT id FROM d WHERE id=e.ID AND ID='03');

第三章 SQL语言基础上(下)

相关子查询:子查询语句中所用到的条件与外部父查询有紧密联系。

(3)SELECT EID,ENAME FROM e UNION SELECT ID,NAME FROM d;

第三章 SQL语言基础上(下)

查询结果在一个结果集中显示,没有对表中数据进行操作。

(4)SELECT ID FROM e INTERSECT SELECT ID FROM d;

第三章 SQL语言基础上(下)

INTERSECT,返回几个查询中都出现的行。

(5)INSERT INTO e(EID,ENAME) SELECT ID,NAME FROM d;

查询已有表中的数据,并加入到表e中。

第三章 SQL语言基础上(下)

(6)CREATE TABLE ttt AS (SELECT * FROM e);

从已有表中把表结构、字段类型、数据一起复制给新创建的表。

第三章 SQL语言基础上(下)