oracle查询例子,Oracle SQL语句查询例子

1.现有一个简化的学生选课系统,对象及其描述如下:学生(学号,姓名),课程(课程代号,课程名称),学生可以不选,或者至多选6门课。   create table C  (    ID                   NUMBER(10)                      not null,    CODE                 VARCHAR2(50),    NAME                 VARCHAR2(50),    constraint PK_C primary key (ID) ); create table S (    ID                   NUMBER(10)                      not null,    CODE                 VARCHAR2(50),    NAME                 VARCHAR2(50),    constraint PK_S primary key (ID) ); create table SC  (    S_ID            Number(10)                      not null,    C_ID             NUMBER(10)                      not null,    constraint PK_S_C primary key (S_ID, C_ID),    constraint FK_C_SC foreign key (C_ID)          references C(ID),    constraint FK_S_SC foreign key (S_ID)          references S (ID) ); A)选了 “Java程序设计” 的学生列表(按学号生序)。 select S.* from S, SC, C WHERE S.ID=SC.S_ID AND C.ID=SC.C_ID AND C.NAME = 'Java程序设计' ORDER BY S.CODE B)选了3门以上课程的学生列表和选课数(按学号生序)。 SELECT S.ID,S.CODE,S.NAME,COUNT(*) FROM S, SC WHERE S.ID = SC.S_ID GROUP BY S.ID,S.CODE,S.NAME HAVING COUNT(*) >= 3 ORDER BY S.CODE C)选了0门课程的学生列表(按学号生序)。 SELECT S.* FROM S, SC WHERE S.ID=SC.S_ID(+) AND SC.S_ID IS NULL ORDER BY S.CODE SELECT S.* FROM S LEFT JOIN SC ON S.ID=SC.S_ID WHERE SC.S_ID IS NULL ORDER BY S.CODE select s.code,s.name from s where s.id not in(select s_id from sc) order by s.code asc D)选课最多的学生列表(按学号生序)。 SELECT S.ID,S.CODE,S.NAME FROM S, SC WHERE S.ID = SC.S_ID GROUP BY S.ID,S.CODE,S.NAME HAVING COUNT(*) = (       SELECT MAX(COUNT(SC.S_ID))  FROM SC       GROUP BY SC.S_ID) ORDER BY S.CODE E)仅仅选了“Java程序设计”一门课的学生列表(按学号生序)。 select S.* from S, SC, C WHERE S.ID=SC.S_ID AND C.ID=SC.C_ID AND C.NAME = 'Java程序设计' AND S.ID in ( SELECT S_ID from SC GROUP BY SC.S_ID HAVING COUNT(SC.S_ID) = 1) order by s.code select S.* from S, SC, C, (select SC.S_ID, count(SC.S_ID) count from SC  group by SC.S_ID) N WHERE S.ID=SC.S_ID AND C.ID=SC.C_ID AND C.NAME = 'Java程序设计' AND S.ID = N. S_ID AND N.COUNT = 1 order by s.code F)选了3门课,并且其中一门为“Java程序设计”的学生列表(按学号生序)。 SELECT S.* FROM S, SC, C WHERE S.ID=SC.S_ID AND C.ID=SC.C_ID AND C.NAME = 'Java程序设计' AND S.ID IN ( SELECT S_ID from SC GROUP BY SC.S_ID HAVING COUNT(SC.S_ID) = 3) ORDER BY S.CODE G)即选了“Java程序设计” 又选了“Delphi程序设计”的学生列表(按学号生序)。 (select s.* from s,c,sc where s.id = sc.S_ID and sc.C_ID = c.id and c.name = 'Java程序设计') intersect (select s.* from s,c,sc where s.id = sc.S_ID and sc.C_ID = c.id and c.name = 'Delphi程序设计') select s.* from s,c,sc where s.id = sc.S_ID and sc. C_ID = c.id and c.name = 'Java程序设计' and s.id in ( select s.id from s,c,sc where s.id = sc.S_ID and sc.C_ID = c.id and c.name = 'Delphi程序设计') select S.* from S, SC, C, SC SC2, C C2 WHERE S.ID=SC.S_ID AND C.ID=SC.C_ID AND C.NAME = 'Java程序设计' AND S.ID= SC2.S_ID AND C2.ID= SC2.C_ID AND C2.NAME = 'Delphi程序设计' order by s.code H)选了“Java程序设计”没选“Delphi程序设计”的学生列表(按学号生序)。 select S.* from S, SC, C, (select SC.S_ID from SC, C WHERE C.ID=SC.C_ID AND C.NAME = 'Delphi程序设计') X WHERE S.ID=SC.S_ID AND C.ID=SC.C_ID AND C.NAME = 'Java程序设计' AND S.ID = X. S_ID (+) AND X. S_ID IS NULL order by s.code (select s.* from s,c,sc where s.id = sc.S_ID and sc.C_ID = c.id and c.name = 'Java程序设计') minus (select s.* from s,c,sc where s.id = sc.S_ID and sc.C_ID = c.id and c.name = 'Delphi程序设计') select s.* from s,c,sc where s.id = sc.S_ID and sc. C_ID = c.id and c.name = 'Java程序设计' and s.id not in (select s.id from s,c,sc where s.id = sc.S_ID and sc.C_ID = c.id and c.name = 'Delphi程序设计') 2.请实现一个基于Oracle的数据库设计,完成某个磁盘的所有目录及文件信息(包括目录结构)的存储。   目录信息包括目录名,创建时间   文件信息包括文件名,创建时间,文件大小   并用sql语句实现。   create table P  (    ID                   NUMBER(10)                      not null,    PARENTID             NUMBER(10),    NAME                 VARCHAR2(100),    CREATETIME           DATE,    constraint PK_P primary key (ID),    constraint FK_P_PARENT foreign key (PARENTID) references P (ID) ); create table F  (    ID                   NUMBER(10)                      not null,    PATHID               NUMBER(10),    NAME                 VARCHAR2(100),    CREATETIME           DATE,    FILESIZE               NUMBER(10),    constraint PK_F primary key (ID),    constraint FK_P_F foreign key (PATHID) references P (ID) ); A) 列出某个目录下的所有子目录列表,同级目录按名称升序排列。 SELECT * FROM P START WITH P.NAME='P1' CONNECT BY PRIOR P.ID = P.PARENTID ORDER SIBLINGS BY P.NAME B) 列出某个目录下的所有文件列表,同级目录中文件按名称升序排列。 SELECT F.* FROM F, (SELECT P.ID, ROWNUM RN FROM P START WITH P.NAME='P1' CONNECT BY PRIOR P.ID = P.PARENTID ORDER SIBLINGS BY  P.NAME) R WHERE F.PATHID = R.ID ORDER BY R.RN, F.NAME C) 列出某个目录下的所有doc文件。 SELECT F.* FROM F, (SELECT P.ID, ROWNUM RN FROM P START WITH P.NAME='P1' CONNECT BY PRIOR P.ID = P.PARENTID ORDER SIBLINGS BY  P.NAME) R WHERE F.PATHID = R.ID AND UPPER(F.NAME) LIKE '%.DOC' ORDER BY R.RN, F.NAME D) 列出某个目录下的所有的空目录。 SELECT R.* FROM (SELECT P.*, ROWNUM RN FROM P START WITH P.NAME='P1' CONNECT BY PRIOR P.ID = P.PARENTID ORDER SIBLINGS BY  P.NAME) R, F WHERE R.ID=F.PATHID(+) and F.PATHID IS NULL ORDER BY R.RN

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值