1. 程式人生 > >ORACLE----多表查詢語句練習

ORACLE----多表查詢語句練習

sco tag lead num creat cor 多表數據查詢 pda 查詢

一.建表

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----多表查詢語句練習