这是有声音的视频, 请检查耳机或者音箱 声音输出设备
教程使用 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