第三章 SQL语言基础上(下)
3、分组语句
(1)SELECT PUB 出版社,SUM(PRICE*QTY) 金额 FROM books GROUP BY PUB;
以出版社分组统计金额。
(2)SELECT PUB 出版社,SUM(PRICE*QTY) 金额 FROM books GROUP BY PUB HAVING SUM(PRICE)>60;
聚集函数不能和where条件语句混合使用,可以和HAVING一起使用。
(3)SELECT A1,COUNT(A1) 计数 FROM aa GROUP BY A1 HAVING COUNT(A1)>1;
以A1字段分组,记录A1字段中数值出现的次数。
4、模糊查询
(1)SELECT * FROM aa WHERE A1 LIKE 'a_';
查找以a开头,以单个字符结尾的记录。
(2)SELECT * FROM aa WHERE A1 LIKE 'a%';
查找以a开头,0或多个字符结尾的记录。
(3)SELECT * FROM aa WHERE A1 LIKE '%a%';
查找包含字符a的记录。
5、表的连接
(1)SELECT EID,ENAME,SEX,d.NAME FROM e,d WHERE e.ID = d.ID;
表的连接查询设计两个及以上个表,表之间有某种联系。
(2)SELECT EID,ENAME,SEX,d.NAME FROM e JOIN d on e.ID = d.ID;
内连接:连接两个表,显示两个表公共匹配的数据。JOIN ON是内连接的标准写法。
(3)外连接分为两种:左连接和右连接
(a)SELECT EID,ENAME,SEX,d.NAME FROM e,d WHERE e.ID = d.ID(+);
左连接:以左表为主,全部显示左表数据,右表匹配的显示,不匹配的为空。
(b)SELECT EID,ENAME,SEX,d.NAME FROM e,d WHERE e.ID(+) = d.ID;
右连接:以右表为主,全部显示左表数据,左表匹配的显示,不匹配的为空。
6、子查询
(1)SELECT * FROM e WHERE ID IN (SELECT ID FROM d);
SELECT * FROM e WHERE EXISTS (SELECT ID FROM d);
无关子查询:独立于父查询。
(2)SELECT * FROM e WHERE ID IN (SELECT id FROM d WHERE id=e.ID AND ID='03');
相关子查询:子查询语句中所用到的条件与外部父查询有紧密联系。
(3)SELECT EID,ENAME FROM e UNION SELECT ID,NAME FROM d;
查询结果在一个结果集中显示,没有对表中数据进行操作。
(4)SELECT ID FROM e INTERSECT SELECT ID FROM d;
INTERSECT,返回几个查询中都出现的行。
(5)INSERT INTO e(EID,ENAME) SELECT ID,NAME FROM d;
查询已有表中的数据,并加入到表e中。
(6)CREATE TABLE ttt AS (SELECT * FROM e);
从已有表中把表结构、字段类型、数据一起复制给新创建的表。