ORACLE----多表查詢語句練習
阿新 • • 發佈:2018-10-07
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----多表查詢語句練習