oracle 分组 连接查询_oracle_11gR2_08 分组查询GROUP BY,模糊查询LIKE,表连接JOIN ON,子查询IN(又叫嵌套查询)...

这是有声音的视频, 请检查耳机或者音箱 声音输出设备

教程使用 Oracle 11g Release 2 版本

内容:学习 分组查询group by, 模糊查询/搜索like, 表连接join on, 子查询in() / not in()

====================================

1, 分组查询

删除之前的表:

DROP TABLE xue_sheng;

DROP TABLE ban_ji;

新建学生表: xue_sheng

CREATE TABLE xue_sheng( id integer, xing_ming varchar(25),xing_bie number, fen_shu number, b_id integer);

INSERT INTO xue_sheng VALUES(1,'ZhanSan',1,80,1);

INSERT INTO xue_sheng VALUES(2,'LiSi',1,90,2);

INSERT INTO xue_sheng VALUES(3,'ZhanHong',0,75,2);

INSERT INTO xue_sheng VALUES(4,'ChenXiaoMing',1,85,1);

查询要求: 分组显示男女同学的总分

SELECT xing_bie,sum(fen_shu) FROM xue_sheng GROUP BY xing_bie;

先把性别分组, 然后进行一个求和的统计。

===================================

2, 模糊查询 或者 模糊查找

使用LIKE 关键字, 通用字符 '%'

SELECT * FROM xue_sheng where xing_ming LIKE 'Zhan%';

SELECT * FROM xue_sheng where xing_ming LIKE '%g';

SELECT * FROM xue_sheng where xing_ming LIKE '%a%';

====================================

3, 表连接

新建一个班级表: ban_ji

CREATE TABLE ban_ji( id integer , ban_ji varchar(25));

INSERT INTO ban_ji VALUES(1,'1-(1)');

INSERT INTO ban_ji VALUES(2,'1-(2)');

INSERT INTO ban_ji VALUES(3,'1-(3)');

SELECT id, ban_ji FROM ban_ji;

-----------

SELECT id, xing_ming,ban_ji FROM xue_sheng , ban_ji;

SELECT id, xing_ming,ban_ji FROM xue_sheng , ban_ji

*

ERROR at line 1:

ORA-00918: column ambiguously defined

------------

学生表, 班级表一起查询:

别名的使用

SELECT x.id, xing_ming,ban_ji FROM xue_sheng x, ban_ji b;

SELECT x.id, xing_ming,ban_ji FROM xue_sheng x, ban_ji b where x.b_id=b.id;

SELECT x.id, xing_ming,ban_ji FROM xue_sheng x JOIN ban_ji b ON x.b_id=b.id;

=================================

子查询 IN() 或者 NOT IN() ,又叫嵌套查询

SELECT * FROM xue_sheng WHERE b_id IN( 1,3 );

SELECT * FROM xue_sheng WHERE b_id=1 OR b_id=3;

两条语句一样的效果

------------------------

SELECT * FROM xue_sheng WHERE b_id IN( SELECT id FROM ban_ji );

显示 在1-(2)班级的所有同学:

SELECT * FROM xue_sheng WHERE b_id IN( SELECT id FROM ban_ji where ban_ji='1-(2)');

做一个分解步骤来理解,

第一先步骤先执行 SELECT id FROM ban_ji where ban_ji='1-(2)';

第二步 , 在执行 SELECT * FROM xue_sheng WHERE b_id IN( 第一步的结果 );

NOT IN() 的使用

SELECT * FROM xue_sheng WHERE b_id NOT IN( SELECT id FROM ban_ji where ban_ji='1-(2)');

=====================================

总结一下, 我个人觉得 配合上面的例子 然后写一下语句,查询出来的结果 , 进行分析理解。

慢慢来熟悉这些语句。视频就到这里结束了 谢谢各位观看 88

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值