现在的位置: 首页 > 综合 > 正文

笔记081110 等值链接 左连接 右连接 AVG COUNT

2017年11月10日 ⁄ 综合 ⁄ 共 5493字 ⁄ 字号 评论关闭
 

笔记081110


2008-11-11 下午8:15 发布人 tiger chang

*************************************************
*    NAME    :ChangTiger            *
*    DATE     :19:28 2008-11-10        *
*    EMAIL    :o52tiger@yahoo.com.cn        *
*************************************************

What is Oracle? A Video Tutorial

**********************************************************************************
等值连接
SQL> SELECT A.NAME ,B.AGE FROM TIGER2 A ,TIGER B WHERE A.ID = B.ID;
**********************************************************************************

再建立一个张表用来存储课程信息
CREATE TABLE LESSION2(
LID NUMBER(3),
LNAME VARCHAR(20)
);
插入些许数据
INSERT INTO LESSION2 VALUES(110,'SHU_XUE');
INSERT INTO LESSION2 VALUES(111,'YU_WEN');
INSERT INTO LESSION2 VALUES(112,'HUA_XUE');

建立一张表存储学生选课信息
CREATE TABLE  S_L2(
SID NUMBER(8),
LID NUMBER(3),
SCORE NUMBER(3)
);
插入些许数据
INSERT INTO S_L2 VALUES(1001,112,16);
INSERT INTO S_L2 VALUES(1002,112,56);
INSERT INTO S_L2 VALUES(1003,112,96);
INSERT INTO S_L2 VALUES(1004,112,46);

查询学生的名字,所学课程的名字和成绩
SELECT S.SNAME , L.LNAME, SL.SCORE  FROM STUDENT2 S , LESSION2 L , S_L2 SL WHERE
L.LID = SL.LID AND  S.ID = SL.SID;


SNAME                LNAME                     SCORE
-------------------- -------------------- ----------
CHANGTIGER           SHU_XUE                      86
CHANGTIGER           YU_WEN                       86
CHANGTIGER           HUA_XUE                      16
NANCHANG             SHU_XUE                      86
NANCHANG             YU_WEN                       86
NANCHANG             HUA_XUE                      56
SHANGHAI             SHU_XUE                      56
SHANGHAI             YU_WEN                       56
SHANGHAI             HUA_XUE                      96
BEIJING              SHU_XUE                      46
BEIJING              YU_WEN                       46

SNAME                LNAME                     SCORE
-------------------- -------------------- ----------
BEIJING              HUA_XUE                      46

12 rows selected.

SQL>

SELECT S.SNAME , L.LNAME ,S.AGE   FROM STUDENT2 S , LESSION2 L , S_L2 SL WHERE
L.LID = SL.LID AND  S.ID = SL.SID AND S.AGE > 23  ORDER BY L.LNAME;

**********************************************************************************
建表用来存储成绩的级别,比如80到100为A
CREATE TABLE GRADE2(
LEV VARCHAR2(2),
LOW NUMBER(3),
HIGH NUMBER(3)
);
插入些许数据
INSERT INTO GRADE2 VALUES('A',80,100);
INSERT INTO GRADE2 VALUES('B',60,80);
INSERT INTO GRADE2 VALUES('C',50,60);
INSERT INTO GRADE2 VALUES('D',0,50);

查询学生名字 所学课程 和成绩等级
SELECT S.SNAME ,L.LNAME , G.LEV
FROM STUDENT2 S, GRADE2 G ,S_L2 SL ,LESSION2 L
WHERE L.LID = SL.LID AND S.ID = SL.SID AND (SL.SCORE
BETWEEN G.LOW AND G.HIGH ) 

SNAME                LNAME                LE
-------------------- -------------------- --
CHANGTIGER           SHU_XUE              A
CHANGTIGER           YU_WEN               A
CHANGTIGER           HUA_XUE              D
NANCHANG             SHU_XUE              A
NANCHANG             YU_WEN               A
NANCHANG             HUA_XUE              C
SHANGHAI             SHU_XUE              C
SHANGHAI             YU_WEN               C
SHANGHAI             HUA_XUE              A
BEIJING              SHU_XUE              D
BEIJING              YU_WEN               D

SNAME                LNAME                LE
-------------------- -------------------- --
BEIJING              HUA_XUE              D

12 rows selected.

SQL>

**********************************************************************************
SQL> SELECT A.SNAME,A.ID ,B.SNAME,B.ID FROM STUDENT2 A ,STUDENT2 B WHERE A.SNAME = B.SNAME
 AND A.ID != B.ID;

**********************************************************************************
外链接查询练习

SELECT S.SNAME,S.AGE,C.NAME FROM STUDENT2 S,CLASS2 C WHERE S.CID =  C.ID(+);
(+) 表示的是外连接 (右外连接)
SELECT S.SNAME,S.AGE,C.NAME FROM STUDENT2 S,CLASS2 C WHERE S.CID(+) =  C.ID;
左外连接

**********************************************************************************

SQL> SELECT S.SNAME,S.AGE,C.NAME FROM STUDENT2 S,CLASS2 C WHERE S.CID(+) =  C.ID
;

SNAME                       AGE NAME
-------------------- ---------- --------------------
CHANGTIGER                   24 JAVA
BEIJING                      22 JAVA
NANCHANG                     24 JAVA
CHANGTIGER                   34 C++
SHANGHAI                     24 C++
BEIJING                      24 C++

6 rows selected.
SQL> SELECT S.SNAME,S.AGE,C.NAME FROM STUDENT2 S,CLASS2 C WHERE S.CID =  C.ID(+)
;

SNAME                       AGE NAME
-------------------- ---------- --------------------
CHANGTIGER                   24 JAVA
BEIJING                      22 JAVA
NANCHANG                     24 JAVA
CHANGTIGER                   34 C++
SHANGHAI                     24 C++
BEIJING                      24 C++
BEIJINDDD                    11

7 rows selected.

**********************************************************************************
CLEAR SCREEN; 清屏
**********************************************************************************
SQL> SELECT COUNT(* ) FROM STUDENT2;

  COUNT(*)
----------
         7

SQL> SELECT COUNT(CID) FROM STUDENT2;

COUNT(CID)
----------
         6

**********************************************************************************

SQL> SELECT AGE , COUNT(CID) FROM STUDENT2 GROUP BY AGE ;

       AGE COUNT(CID)
---------- ----------
        11          0
        22          1
        24          4
        34          1

**********************************************************************************
SQL> SELECT TRUNC(AGE/10) ,COUNT(*) FROM STUDENT2 GROUP BY TRUNC(AGE/10);

TRUNC(AGE/10)   COUNT(*)
------------- ----------
            1          1
            2          5
            3          1

**********************************************************************************
**********************************************************************************
SQL> SELECT AVG(DISTINCT AGE) FROM STUDENT2;

AVG(DISTINCTAGE)
----------------
           22.75

********************************************************************************************

抱歉!评论已关闭.