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

本文介绍了SQL中的分组查询技巧,包括基本分组、带有HAVING子句的分组、模糊查询、表连接及子查询等高级用法。通过实际例子展示了如何有效地组织和检索数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值