网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

SQL练习题

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务
为管理岗位业务培训信息,建立3个表:
    S(S#,SN,SD,SA)S#,SN,SD,SA分别代表、学员、所属单位、学员年龄
    C(C#,CN)C#,CN分别代表课程编号、课程名称
    SC(S#,C#,G)S#,C#,G分别代表、所选修的课程编号、学习成绩
    1.使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员和
    
    --实现代码:
    
    SelectSN,SDFROMS
    Where[S#]IN(
    Select[S#]FROMC,SC
    WhereC.[C#]=SC.[C#]
    ANDCN=N'税收基础')
    
    2.使用标准SQL嵌套语句查询选修课程编号为’C2’的学员和所属单位
    
    --实现代码:
    
    SelectS.SN,S.SDFROMS,SC
    
    WhereS.[S#]=SC.[S#]
    
    ANDSC.[C#]='C2'
    
    3.使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员和所属单位
    
    --实现代码:
    
    SelectSN,SDFROMS
    
    Where[S#]NOTIN(
    
    Select[S#]FROMSC
    
    Where[C#]='C5')
    
    4.使用标准SQL嵌套语句查询选修全部课程的学员和所属单位
    --实现代码:
    
    SelectSN,SDFROMS
    
    Where[S#]IN(
    
    Select[S#]FROMSC
    
    RIGHTJOIN
    
    CONSC.[C#]=C.[C#]GROUPBY[S#]
    
    HAVINGCOUNT(*)=COUNT([S#]))
    
    5.查询选修了课程的学员人数
    
    --实现代码:
    
    Select学员人数=COUNT(DISTINCT[S#])FROMSC
    
    6.查询选修课程超过5门的学员和所属单位
    
    --实现代码:
    
    SelectSN,SDFROMS
    
    Where[S#]IN(
    
    Select[S#]FROMSC
    
    GROUPBY[S#]
    
    HAVINGCOUNT(DISTINCT[C#])>5)
    
    题目2
    
    问题描述:
    
    已知关系模式:
    
    S(SNO,SNAME)学生关系。SNO为,SNAME为
    
    C(CNO,CNAME,CTEACHER)课程关系。CNO为课程号,CNAME为课程名,CTEACHER为任课教师
    
    SC(SNO,CNO,SCGRADE)选课关系。SCGRADE为成绩
    
    1.找出没有选修过“李明”老师讲授课程的所有学生
    
    --实现代码:
    
    SelectSNAMEFROMS
    
    WhereNOTEXISTS(
    
    Select*FROMSC,C
    
    WhereSC.CNO=C.CNO
    
    ANDCNAME='李明'
    
    ANDSC.SNO=S.SNO)
    
    2.列出有二门以上(含两门)不及格课程的学生及其平均成绩
    
    --实现代码:
    
    SelectS.SNO,S.SNAME,AVG_SCGRADE=AVG(SC.SCGRADE)
    
    FROMS,SC,(
    
    SelectSNO
    
    FROMSC
    
    WhereSCGRADE<60
    
    GROUPBYSNO
    
    HAVINGCOUNT(DISTINCTCNO)>=2
    
    )AWhereS.SNO=A.SNOANDSC.SNO=A.SNO
    
    GROUPBYS.SNO,S.SNAME
    
    3.列出既学过“1”号课程,又学过“2”号课程的所有学生
    
    --实现代码:
    
    SelectS.SNO,S.SNAME
    
    FROMS,(
    
    SelectSC.SNO
    
    FROMSC,C
    
    WhereSC.CNO=C.CNO
    
    ANDC.CNAMEIN('1','2')
    
    GROUPBYSNO
    
    HAVINGCOUNT(DISTINCTCNO)=2
    
    )SCWhereS.SNO=SC.SNO
    
    4.列出“1”号课成绩比“2”号同学该门课成绩高的所有学生的
    
    --实现代码:
    
    SelectS.SNO,S.SNAME
    
    FROMS,(
    
    SelectSC1.SNO
    
    FROMSCSC1,CC1,SCSC2,CC2
    
    WhereSC1.CNO=C1.CNOANDC1.NAME='1'
    
    ANDSC2.CNO=C2.CNOANDC2.NAME='2'
    
    ANDSC1.SCGRADE>SC2.SCGRADE
    
    )SCWhereS.SNO=SC.SNO
    
    5.列出“1”号课成绩比“2”号课成绩高的所有学生的及其“1”号课和“2”号课的成绩
    
    --实现代码:
    
    SelectS.SNO,S.SNAME,SC.[1号课成绩],SC.[2号课成绩]
    
    FROMS,(
    
    SelectSC1.SNO,[1号课成绩]=SC1.SCGRADE,[2号课成绩]=SC2.SCGRADE
    
    FROMSCSC1,CC1,SCSC2,CC2
    
    WhereSC1.CNO=C1.CNOANDC1.NAME='1'
    
    ANDSC2.CNO=C2.CNOANDC2.NAME='2'
    
    ANDSC1.SCGRADE>SC2.SCGRADE
    
    )SCWhereS.SNO=SC.SNO
    
    
    
    
    
    
    oracleCertificationProgram(OCP认证)的题目
    
    (1)A表中有100条记录.
    
    Select*FROMAWhereA.COLUMN1=A.COLUMN1
    
    这个语句返回几条记录?(简单吧,似乎1秒钟就有答案了:)
    
    (2)CreateSEQUENCEPEAK_NO
    
    SelectPEAK_NO.NEXTVALFROMDUAL-->假设返回1
    
    10秒中后,再次做
    
    
    SelectPEAK_NO.NEXTVALFROMDUAL-->返回多少?
    
    (3)SQL>connectsysassysdba
    
    Connected.
    
    
    SQL>insertintodualvalues('Y');
    
    1rowcreated.
    
    SQL>commit;
    
    Commitcomplete.
    
    SQL>selectcount(*)fromdual;
    
    COUNT(*)
    
    ----------
    
    2
    
    SQL>deletefromdual;
    
    commit;
    
    -->DUAL里还剩几条记录?
    
    JUSTTRYIT
    内容摘要:一些高难度的SQL面试题以下的null代表真的null,写在这里只是为了让大家看清楚根据如下表的查询结果,那么以下语句的结果是(知识点:notin/notexists+null)
    关键词:SqlServer面试题数据库面试题
    本文地址:teecool/post/2007072807.html
    内容正文:
    
    一些高难度的SQL面试题
    
    以下的null代表真的null,写在这里只是为了让大家看清楚
    
    
    根据如下表的查询结果,那么以下语句的结果是(知识点:notin/notexists+null)
    SQL>select*fromusertable;
    USERIDUSERNAME
    ---------------------------
    1user1
    2null
    3user3
    4null
    5user5
    6user6
    
    SQL>select*fromusergrade;
    USERIDUSERNAMEGRADE
    ------------------------------------
    1user190
    2null80
    7user780
    8user890
    执行语句:
    
    selectcount(*)fromusergradewhereusernamenotin(selectusernamefromusertable);
    
    selectcount(*)fromusergradegwherenotexists
    (selectnullfromusertabletwheret.userid=g.useridandt.username=g.username);
    
    结果为:语句1(0)语句2(3)
    
    A:0B:1C:2D:3E:NULL
    
    
    2
    
    在以下的表的显示结果中,以下语句的执行结果是(知识点:in/exists+rownum)
    SQL>select*fromusertable;
    USERIDUSERNAME
    ---------------------------
    1user1
    2user2
    3user3
    4user4
    5user5
    
    SQL>select*fromusergrade;
    USERNAMEGRADE
    --------------------------
    user990
    user880
    user780
    user290
    user1100
    user180
    
    执行语句
    Selectcount(*)fromusertablet1whereusernamein
    (selectusernamefromusergradet2whererownum<=1);
    
    Selectcount(*)fromusertablet1whereexists
    (select'x'fromusergradet2wheret1.username=t2.usernameandrownum<=1);
    
    以上语句的执行结果是:()()
    A:0B:1C:2D:3
    
    根据以下的在不同会话与时间点的操作,判断结果是多少,其中时间T1    原始表记录为;
    select*fromemp;
    EMPNODEPTNOSALARY
    -----------------
    100155
    101150
    
    select*fromdept;
    DEPTNOSUM_OF_SALARY
    -------------------
    1105
    2
    
    可以看到,现在因为还没有部门2的员工,所以总薪水为null,现在,
    有两个不同的用户(会话)在不同的时间点(按照特定的时间顺序)执行了一系列的操作,那么在其中或最后的结果为:
    
    timesession1session2
    -----------------------------------------------------------------------------
    T1insertintoemp
    values(102,2,60)
    
    T2updateempsetdeptno=2
    whereempno=100
    
    T3updatedeptsetsum_of_salary=
    (selectsum(salary)fromemp
    whereemp.deptno=dept.deptno)
    wheredept.deptnoin(1,2);
    
    T4updatedeptsetsum_of_salary=
    (selectsum(salary)fromemp
    whereemp.deptno=dept.deptno)
    wheredept.deptnoin(1,2);
    
    T5commit;
    
    T6selectsum(salary)fromempgroupbydeptno;
    问题一:这里会话2的查询结果为:
    T7commit;
    =======到这里为此,所有事务都已完成,所以以下查询与会话已没有关系========
    
    T8selectsum(salary)fromempgroupbydeptno;
    问题二:这里查询结果为
    
    T9select*fromdept;
    问题三:这里查询的结果为
    
    问题一的结果()问题二的结果是()问题三的结果是()
    
    A:B:
    --------------------------------
    150150
    260255
    
    C:D:
    --------------------------------
    1501115
    2115250
    
    E:F:
    --------------------------------
    11051110
    260255
    
    
    有表一的查询结果如下,该表为学生成绩表(知识点:关联更新)
    selectid,gradefromstudent_grade
    IDGRADE
    -------------------
    150
    240
    370
    480
    530
    690
    
    表二为补考成绩表
    selectid,gradefromstudent_makeup
    IDGRADE
    -------------------
    160
    280
    560
    
    现在有一个dba通过如下语句把补考成绩更新到成绩表中,并提交:
    updatestudent_gradessets.grade=
    (selectt.gradefromstudent_makeupt
    wheres.id=t.id);
    commit;
    请问之后查询:
    selectGRADEfromstudent_gradewhereid=3;结果为:
    
    A:0B:70C:nullD:以上都不对
    
    
    根据以下的在不同会话与时间点的操作,判断结果是多少,
    其中时间T1    
    session1session2
    ------------------------------------------------------------------------------
    T1selectcount(*)fromt;
    --显示结果(1000)条
    
    T2deletefromtwhererownum<=100;
    
    T3begin
    deletefromtwhererownum<=100;
    commit;
    end;
    /
    
    T4truncatetablet;
    
    T5selectcount(*)fromt;
    --这里显示的结果是多少
    
    A:1000B:900C:800D:0
    
  • 上一篇资讯: SQL经典
  • 下一篇资讯: SQL练习题(1)
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师