码迷,mamicode.com
首页 > 数据库 > 详细

ORACLE----多表查询语句练习

时间:2018-10-07 21:31:34      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:上海   null   ber   添加   def   div   creat   over   排序   

一.建表

1.建立两张表CLASSINFO,STUDENTINFO.

--建表CLASSINFO;
CREATE
TABLE CLASSINFO ( CLASSID NUMBER(2) PRIMARY KEY, CLASSNAME VARCHAR(10) NOT NULL);
--建表STUDENTINFO;
CREATE
TABLE STUDENTINFO ( STUDENTID NUMBER(2) PRIMARY KEY , STUDENTNAME CHAR(10) NOT NULL, STUDENTSEX CHAR(2) CHECK(STUDENTSEX=‘男‘ OR STUDENTSEX=‘女‘), STUDENTAGE NUMBER(2) NOT NULL, STUDENTTEL NUMBER(11) UNIQUE, STUDENTADDRESS VARCHAR(20) DEFAULT ‘上海‘, classid number(2) REFERENCES classinfo(classid));

2.在两张表中插入数据。

--表CLASSINFO;
INSERT
INTO CLASSINFO (CLASSID,CLASSNAME) VALUES( 1,‘六班‘); INSERT INTO CLASSINFO (CLASSID,CLASSNAME) VALUES( 2,‘七班‘);
INSERT INTO STUDENTINFO  VALUES (1,‘Timmy‘,‘男‘,20,‘13285601693‘,‘suzhou‘,1 ); 
ALTER TABLE STUDENTINFO MODIFY  (STUDENTNAME  CHAR(10) );--这里是来修改STUDETNAME字段的数据类型的长度。
INSERT INTO STUDENTINFO  VALUES (2,‘Lizmer‘,‘男‘,25,‘18056947153‘,‘anhui‘,1 ); 
INSERT INTO STUDENTINFO  VALUES (3,‘Gray‘,‘男‘,30,‘18056996153‘,‘hubei‘,2 ); 
INSERT INTO STUDENTINFO  VALUES (4,‘Roger‘,‘男‘,31,‘18056886153‘,‘henan‘,2 );

3.在两张表中添加字段。

ALTER TABLE CLASSINFO ADD (Teacher char(20));
ALTER TABLE CLASSINFO ADD (Leader char(20));
ALTER TABLE STUDENTINFO ADD (SCORE NUMBER(20));
ALTER TABLE STUDENTINFO ADD (Teacher char(20));

4.在新添加的字段中添加数据。

UPDATE CLASSINFO SET Teacher=‘刘A‘ where  CLASSID=‘2‘;
UPDATE CLASSINFO SET Leader=‘陈B‘ where  CLASSID=‘2‘;
UPDATE STUDENTINFO SET Teacher=‘张I‘ where  STUDENTID=‘4‘;
UPDATE STUDENTINFO SET Leader=‘汤J‘ where  STUDENTID=‘4‘;
UPDATE STUDENTINFO SET SCORE=‘100‘ where  STUDENTID=‘5‘;

5.表CLASSINFO和STUDENTINFO如下所示。

技术分享图片 技术分享图片

ps:score字段的添加和插入数据参考上例。

二.高级多表数据查询。

2.1 RANK() OVERORDER BY/ DENSE_RANK() OVERORDER BY/ RANK() OVER PARTITION BY  ORDER BY;

##我们通常将group by叫做分组,而partition by称作分区,分组返回通常是一行,partition by返回的是多行。
SELECT STUDENTINFO.*,DENSE_RANK() OVER(ORDER BY STUDENTINFO.SCORE DESC ) AS RANKS 
  FROM STUDENTINFO;
SELECT STUDENTINFO.*,RANK() OVER(ORDER BY STUDENTINFO.SCORE DESC ) AS RANKS 
  FROM STUDENTINFO;
SELECT RANK() OVER(PARTITION BY STUDENTNAME ORDER BY STUDENTINFO.SCORE DESC ) AS RANKS 
  FROM STUDENTINFO;--这里解释一下,假如Timmy有两次得分记录,那么上述语句就是对Timmy的得分排序。

ORACLE----多表查询语句练习

标签:上海   null   ber   添加   def   div   creat   over   排序   

原文地址:https://www.cnblogs.com/zxdkj/p/9750369.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!