Oracle

    技术2022-05-20  40

    Rownumoracle为每个表附加的一个尾字段,它记录着每一行的行号。Oracle的一个缺陷就是rownum只能和’<’或者’<=’一起使用。如果要求大于等于这可用其他方法。

     求薪水最高的前5

    select ename,sal from ( select ename,sal from emp order by sal desc) where rownum <=5;  

     

    求薪水的第6至第10位的员工姓名和薪水

    select ename,sal from ( select ename,sal,rownum r from (select ename,sal from emp order by sal desc) ) where r<=10 and r>=6;  

    CreatNewUser

    首先备份(  backup scott),在命令行下输入以下命令,按提示操作

    exp 

    然后创建用户  create user,在sqlplus下切换到管理员用户,输入

    create user USER_NAME(such as:lue) identified by password(lue) default tablespace users quota(配额) 10M on users即是给用户分配10M的空间 

    其次是分配新建用户的权限,命令:

    grant create session(登陆权限),creat table,create view to lue 

    最后导入数据  import the data,在命令行下输入以下命令,按提示操作;

    imp 

    一道SQL面试题

    3张表S,C,SC

    S(sno,sname) 代表(学号,姓名)

    C(cno,cname,cteacher)代表(课程号,课程名,教室)

    SC(sno,cno,scgrade)代表(学号,课程号,成绩)

    问题:

    1,  找出没有选过“liming”老师的所有学生的姓名

    2,  列出2门以上(2)不及格学生姓名及平均成绩

    3,  学过1号课程又学过2号课程所有学生的姓名

    答案:

    //Answer 1: select sname from S join SC on(s.sno = sc.sno) join C (c.cno = sc.cno) where C.cteacher <> ‘liming’; //answer 2: select sname where sno in (select sno,count(*) from SC where scgrade < 60 group by sno having count(*) >1); //answer 3: //方法1: select sname from S join (select sno from SC where C.cno = 1 and C.cno = 2) t on (S.sno = t.sno); //方法2: select sname from S where sno in(select sno from SC where cno = 1 and cno in (select distinct sno from SC where cno = 2) );  

     

     


    最新回复(0)