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

教程使用 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


“oracle_11gR2_08 分组查询GROUP BY,模糊查询LIKE,表连接JOIN ON,子查询IN(又叫嵌套查询)”没有评论

有任何疑问或建议,可以给作者留言:



公告:

  • 2010年5月之前的视频是文字解说演示,没有声音。
  • 2010年5月以后的视频全部带声音。