zoukankan      html  css  js  c++  java
  • 小菜鸟之Oracle数据库

      1 select * from STUDENT;
      2 select * from mark;
      3 select * from COURSE;
      4 
      5 select * from teacher;
      6 
      7 --注释
      8 select sname from student;--投影查询
      9 select * from student;
     10 select sname as 姓名,ssex as 性别,sage from student ;--属性起别名
     11 select sname 姓名,ssex 性别,sage from student ;
     12 select distinct sage,ssex  from student;--distinct 修饰组合,去掉重复的
     13 select    5
     14 from      1
     15 where     2
     16 group by  3
     17 having    4
     18 order by  6
     19  select * from student
     20 where SNATIVEPLACE='上海'
     21 select * from student where sage=19;--查询十九岁
     22 = >  <=  >= !=  and or not   not > and >or
     23 select * from student
     24 where(sage=19 or sage =21)and ssex ='男';
     25 
     26 select * from student where SNATIVEPLACE !='福建' and
     27 select * from student where  not  sage=19 or ssex='女' and SNATIVEPLACE ='福建'--除福建
     28 select * from student where (SNATIVEPLACE='福建'and ssex='女') or ( not SNATIVEPLACE='上海'and ssex='男')
     29 --来自福建的女生以及上海以外的男生
     30 select * from STUDENT
     31 where SAGE between 19 and 20---20  dao 19
     32 select * from STUDENT
     33 where sage in(19,20,22) and ssex='男'--in集合数  19 20 22 男生
     34 select * from STUDENT where sname like '王%'
     35 --模糊查找 like '%' 下划线表示几个名__  %任意几个名
     36 select * from STUDENT where sname like '徐__'
     37 insert into STUDENT(sid,SNAME) values(10039,'小雅')
     38 select  * from STUDENT where SSEX is null  --数据为空 is null
     39 select  ssex,min(SAGE),max(SAGE),avg(SAGE),sum(SAGE),count(*) from STUDENT group by SSEX
     40 select SNATIVEPLACE,count(*) from STUDENT where SSEX='男' group by SNATIVEPLACE; 统计各个地区男生数
     41 select * from MARK
     42 select sid,avg(cmark) from mark group by sid;--每个学生均分
     43 select sid,min(cmark),count(*) from mark  where CMARK<60 group by sid--不及格数目(查询条件出现个,每个就是分组
     44 select SCLASS,count(distinct SNATIVEPLACE) from STUDENT group by SCLASS--各个学生分别来自多少不同的地区
     45 select *from STUDENT
     46 
     47 select ssex,sage, count(*)   from student group by ssex,sage  --可以同时性别,年龄进行分组
     48 select  max(SAGE) from STUDENT
     49 select sid from mark group by sid having avg(cmark)>80
     50 select SID from MARK where CMARK>80 group by SID--where中不能出现avg 之类的 where avg(mark)》80
     51 select SNATIVEPLACE,count(*)from STUDENT where SSEX='男' group by SNATIVEPLACE---各个地区的男生人数
     52 select SNATIVEPLACE,count(*) from STUDENT group by SNATIVEPLACE,SSEX having SSEX='男'---各个地区的男生人数
     53 select * from STUDENT order by SAGE desc--asc升序,desc降序(空属性第一大 根据年龄排序
     54 select * from STUDENT order by SAGE desc,sid --二阶排序在年龄相同的情况下sid排序
     55 select * from STUDENT order by SAGE asc
     56 select sid,avg(cmark) amk from MARK group by SID order by amk desc--j降序均分
     57 select trunc(CMARK/10)*10||'`'||(trunc(CMARK/10)*10+9),count(*)  from MARK where CID=2001--(学科
     58 group by trunc(CMARK/10)
     59 
     60 --分段,turnc取证
     61 select  * from STUDENT,MARK where STUDENT.sid=mark.sid--俩个表合一
     62 select  * from STUDENT s,MARK m where s.SID=m.SID
     63 select  * from STUDENT,MARK,COURSE
     64 where STUDENT.sid=mark.sid and mark.cid=COURSE.cid;
     65 
     66 select SNATIVEPLACE,avg(cmark)  from STUDENT,mark,COURSE where STUDENT.sid=mark.sid and mark.cid=COURSE.cid and CNAME='数学'
     67 group by SNATIVEPLACE---各个地区数学均分
     68 select sname,avg(CMARK) from STUDENT s,MARK m where s.sid=m.sid and SSEX='男' group by s.sid,SNAME--找出每个男生平均分,显示其姓名,均分
     69 select * from STU,DENT s,MARK m where s.sid=m.sid and SSEX='男'
     70 select * from MARK a,MARK b where a.sid=10002 and b.sid=10003 and a.cid=b.cid  and a.cmark>b.cmark
     71 select SNAME from MARK a,MARK b,STUDENT s  where a.sid=b.sid and a.cid=2001  and b.cid=2002  and a.cmark>b.cmark
     72 --那些同学20001号课程成绩比自己的20002成绩高,找sid
     73 --查询核心1.from:将表格从硬盘的文件进行提取,并形成实例 将内存的实例从上往下依次循环,每次提取一条记录,并交给后续的子句 在多表中会对多张表进行笛卡尔想成,生成巨大的笛卡尔乘积
     74 -- 2.每个字句在执行顺序
     75 --where 接受from 给自己的一一条记录,对记录进行合法判断 =  >=  <= != <>,这些是比大小 而且可以比字符串,而且比大小的过程中,式子两边必须一个是属性,一个是值 支持逻辑 and or not   not》and
     76 》or 支持between连续空间 如果空间不连续 有in() 模糊查询like %表示多个任意字母而__表示一个任意字母
     77 -- 空的匹配使用 is null 或者is not null 不可以使用匹配null
     78  -- group by sage 含义是将整个表根据sage 进行分组,分组:sage值相同的记录合并至一个“小组”中
     79  解释器不会遍历记录,而是遍历小组
     80  因此select 语句可以查询的特征语句必须来自group by 的分组特征
     81 --group by 之后可以跟随多个属性进行分组特征,先后顺序不重要
     82 ---可以没有group by 语句直接进行查询统计结果 这类语句默认分组,就是将整个结果当成一个组看待
     83 select 语句的作用投影的信息至屏幕上,属性之间分隔符号为英文逗号,属性可以起别名,as 最好省,*是通配符,表示这张表所有的属性select
     84 可以去重,distinct
     85 order by 的作用排序,须指定属性
     86 desc 降序
     87 asc 升序
     88 order by 表示一阶属性相同时,使用二节顺序的值
     89 
     90 select  sname  from MARK a,MARK b,STUDENT s
     91 where a.cid!=b.cid and   a.sid==10002 and a.sid=b.sid a.sname='数学' and b.sname='英语'
     92 and a.cmark>b.cmark
     93 那些学生2001号成绩大于2002号成绩
     94 --1、与“张三”同乡的男生姓名
     95 select * from STUDENT where SNAME='张三'
     96 select SNAME from STUDENT where  SNATIVEPLACE='江苏'and SSEX='男'
     97 select  * from STUDENT a,STUDENT b    where a.SNATIVEPLACE=b.SNATIVEPLACE;
     98 select a.*from STUDENT a,STUDENT b
     99 where a.SNATIVEPLACE=b.SNATIVEPLACE and b.SNAME='张三' and a.SSEX='男' and a.SNAME!='张三'
    100 --统计每门课程的平均成绩,并按照成绩降序排序
    101 select a.CNAME,avg(CMARK) from COURSE a,MARK b  where a.cid=b.CID group by CNAME order by avg(CMARK) desc
    102 --查询“福建”地区学生所选修的全部课程名称
    103 select  CNAME from STUDENT,MARK,COURSE
    104 where STUDENT.sid=mark.sid and mark.cid=COURSE.cid and SNATIVEPLACE='福建'
    105 --查询所在班级和该班内学生的年龄之和,对该班级中每个人的年龄进行比对,(要求大于20岁的人参与统计)
    106 select a.SCLASS,sum(a.SAGE) from STUDENT a,STUDENT b where  a.sclass=b.sclass and sage >20  group by SCLASS
    107 select a.SCLASS,sum(a.SAGE) from STUDENT a,STUDENT b where a.SAGE=b.SAGE and b.SAGE>20 group by a.SCLASS+
    108 select SCLASS from STUDENT a,STUDENT b  where a. group by SCLASS
    109 --5、查询所在班级和该班内学生的年龄之和,(要求该班级中每个人的年龄都大于20岁)
    110 select a.SCLASS,sum(a.SAGE) from STUDENT a,STUDENT b where a.SAGE=b.SAGE and b.SAGE>20 group by a.SCLASS
    111 男生与女生数学均分
    112 select SSEX,trunc(avg(CMARK) ,2) from STUDENT s,MARK m,COURSE c
    113 where s.sid=m.sid and m.cid=c.cid and CNAME='数学' and ssex is not null group by SSEX
    114 数学每个分段多少人数
    115 select trunc(CMARK/10)*10||'`'||(trunc(CMARK/10)*10+9),count(*) from STUDENT s,MARK m,COURSE c
    116 where s.sid=m.sid and m.cid=c.cid and CNAME='数学' group by trunc(CMARK/10)
    117 找出各科成绩及格与不及格的人数,要求表示课程名称0 不及格 1 及格
    118 select (trunc(CMARk/60)||'`'||(trunc(CMARK/60)+1)) 1,    count(*) from STUDENT s,MARK m,COURSE c
    119 where s.sid=m.sid and m.cid=c.cid and cmark/60>1 and CMARK/60<1 group by trunc(CMARk/60)
    120 select cname,trunc(CMARK/60),count(*)
    121 from  MARK m,COURSE c
    122 where m.cid=c.cid
    123 group by c.cid,CNAME,trunc(CMARK/60)
    124 找出福建与安徽学生的数学均分
    125   select SNATIVEPLACE,avg(CMARK)
    126   from STUDENT s,MARK m,COURSE c
    127   where s.sid=m.sid and m.cid=c.cid and CNAME='数学'and  (SNATIVEPLACE='福建 'or SNATIVEPLACE='安徽')
    128   group by SNATIVEPLACE
    129 
    130 
    131 找出福建与安徽的所有学生总分
    132  select SNATIVEPLACE,sum(CMARK) from STUDENT s,MARK m,COURSE c
    133   where s.sid=m.sid and m.cid=c.cid and (SNATIVEPLACE='福建'or SNATIVEPLACE='安徽')
    134   group by SNATIVEPLACE
    135 
    136 找出福建与安徽的所有学生  各科总分
    137 select CNAME,sum(CMARK) from STUDENT s,MARK m,COURSE c
    138   where s.sid=m.sid and m.cid=c.cid and (SNATIVEPLACE='福建'or SNATIVEPLACE='安徽')
    139   group by CNAME
    140 
    141 
    142 
    143  找出福建与安徽的所有学生每个学生总分
    144         select SNATIVEPLACE,SNAME,sum(CMARK)
    145         from STUDENT s,MARK m,COURSE c
    146   where s.sid=m.sid and m.cid=c.cid and (SNATIVEPLACE='福建'or SNATIVEPLACE='安徽')
    147   group by SNAME,SNATIVEPLACE
    148 
    149 
    150 
    151 子查询
    152 select sid from STUDENT
    153 where SNAME='张三'
    154 select * from STUDENT
    155 where SNATIVEPLACE=(select SNATIVEPLACE from STUDENT where SNAME='张三' )
    156 找出数学成绩比张三高的男生姓名
    157 select  SNAME from STUDENT
    158 where SSEX='男' and CMARK=(select cmark from COURSE where SNAME='张三' and cmark=()    )
    159 
    160 select cid from COURSE
    161 where CNAME='数学' and sid=
    162                      (select sid from STUDENT where  SNAME='张三' and cmark=
    163                                                                     (select CMARK from MARK where SNAME='张三' and sid=
    164                                                                                                                  (select sid from STUDENT where SSEX='男')) )
    165 select cid from COURSE
    166 where CNAME='数学' sid=(select sid from STUDENT where sname='张三' cmark=(select CMARK from MARK where sid= ))
    167 stp1 在course表找数学cid
    168 select cid from COURSE where CNAME='数学'
    169 2 在student中找张三的sid
    170 select sid from STUDENT where SNAME='张三'
    171 3 在mark中找出张三数学成绩
    172 select CMARK from MARK where sid=(2) and cid=(1)
    173 4 在mark中找出比张三高的人sdi
    174 select  sid from MARK where CMARK>(3) and cid=(1)
    175 5在student中找出姓名,男性
    176 select SNAME from STUDENT where sid in(4) and ssex='男'
    177  select SNAME from STUDENT where sid in(
    178    select  sid from MARK where CMARK>(
    179      select CMARK from MARK where sid=(
    180        select sid from STUDENT where SNAME='张三') and cid=(
    181          select cid from COURSE where CNAME='数学')) and cid=(
    182           select cid from COURSE where CNAME='数学')
    183   ) and ssex='男'
    184 找出均分比张三高的男生姓名
    185  select sid from STUDENT where SNAME='张三'
    186 均分
    187  select avg(CMARK) from MARK where
    188 
    189 
    190 
    191 找出最大年龄姓名
    192 select max(sage) from STUDENT
    193 select sname from select where age=(select max(sage) from STUDENT )
    194 
    195 select * from mark group by sid
    196 
    197 
    198 找出六老师学生数学最高分姓名
    199 
    200 select TID from TEACHER where TNAME='马六'
    201 数学
    202 select CID from COURSE where  tid='30001' and CNAME='数学'
    203 最高分数
    204 
    205 select max(CMARK) from MARK where cid=2001
    206 select sid from MARK where CMARK=97
    207 姓名
    208 
    209 select SNAME from STUDENT where sid=10008
    210 select SNAME from STUDENT where sid in(
    211   select sid from MARK where CMARK=(
    212     select max(CMARK) from MARK where cid=(
    213       select CID from COURSE where  CNAME='数学' and tid=(
    214         select TID from TEACHER where TNAME='马六'
    215        )
    216      )
    217    )
    218 
    219  )
    220 张三地区
    221  SELECT SNATIVEPLACE FROM STUDENT WHERE SNAME='张三'
    222 
    223 同学
    224  select sid from STUDENT where SNATIVEPLACE in (1)
    225 select cid from COURSE where CNAME='数学'
    226 
    227 select max(CMARK) from MARK where CID=() SID in (2)
    228 select sid from MARK where  CMARK=(3)
    229 select  SNAME from STUDENT where SID=(4)
    230 数学成绩
    231 select  SNAME from STUDENT where SID=(
    232  select sid
    233  from MARK
    234  where CMARK = (
    235    select max(CMARK) from MARK where CID=(
    236      select cid from COURSE where CNAME='数学'
    237      ) and SID in (
    238                                      select sid from STUDENT where SNATIVEPLACE in (
    239                                      SELECT SNATIVEPLACE FROM STUDENT WHERE SNAME='张三'
    240                                      )
    241                                      )
    242 
    243   )
    244 )
    245 
    246 
    247 找出均分最高的姓名
    248 1 找出均分表
    249 select sid ,avg(CMARK) amk from MARK group by SID
    250 2 找出最高
    251 select max(amk) from (1)
    252 3 在均分表中,谁的均分等于最高分
    253 select sid from (1) where amk=(2)
    254 select name from STUDENT
    255 
    256 select sid from (select sid ,avg(CMARK) amk from MARK group by SID) where amk=(select max(amk) from (select sid ,avg(CMARK) amk from MARK group by SID))
    257 
    258 select sid ,avg(cmark) m from mark  where group by SID
    259 select min(m) from (1)
    260 select  sid from (1) where m=(2)
    261 select SNAME from STUDENT where sid=(3)
    262 
    263 select ROWNUM,s.*  from STUDENT s where ROWNUM<=10
    264 select SAGE,max()
    265 select SAGE from STUDENT order by desc
    266 select  * from () where ROWNUM=1
    267 
    268 select  * from (select * from STUDENT order by desc ) where ROWNUM=1
    269 找出年龄从大到小第5至8 学生信息
    270 select * from STUDENT where ROWNUM<=8 order by SAGE  desc
    271 select  * from STUDENT where ROWNUM <=4 order by SAGE
    272 
    273 select  * from (select * from STUDENT where ROWNUM<=8 order by SAGE  desc) where ROWNUM <=4 order by SAGE asc
    274 找出均分高到低5到8 学生信息
    275 select
    276 1  与“张三”同乡的男生姓名
    277 select SNATIVEPLACE from STUDENT where SNAME='张三'
    278 select sid from STUDENT where SNATIVEPLACE=(select SNATIVEPLACE from STUDENT where SNAME='张三')
    279 select SNAME from STUDENT where sid (2).
    280 select SNAME from STUDENT where sid in (
    281 select sid from STUDENT where SNATIVEPLACE=(
    282 select SNATIVEPLACE from STUDENT where SNAME='张三'
    283  )
    284  )
    285 选修了马六老师所讲课程的学生人数
    286 1.赵露老师techer 求tid
    287  select tid from TEACHER where TNAME='马六'
    288 
    289  2.tid cid
    290    select cid from COURSE where tid in (select tid from TEACHER where TNAME='马六')
    291    cid sid
    292 
    293    select sid   from MARK where cid= 2001
    294     sid count
    295    select count(*) from STUDENT where sid in (select sid   from MARK where cid= 2001)
    296 
    297 
    298 
    299 查询没学过“胡”姓老师课的同学的学号、姓名
    300 模糊查询胡老师,tid
    301 select tid from TEACHER where TNAME like '胡%'
    302 tid cid
    303  select  cid from COURSE where tid  in ()
    304 
    305 cid sid
    306 select sid from MARK where  cid in ()
    307 
    308 sid 名字,学号
    309 select SNAME,sid from STUDENT where sid in ()
    310 
    311 select SNAME,sid from STUDENT where sid not in (
    312   select sid from MARK where cid in  (
    313     select  cid from COURSE where tid in (
    314       select tid from TEACHER where TNAME like '胡%'
    315      )
    316    )
    317  )
    318 
    319 “数学”课程得最高分的学生姓名、性别
    320 数学cid
    321   select cid from COURSE where CNAME='数学'
    322 
    323 
    324 最高分
    325   select max(CMARK) from MARK where cid in ()
    326 
    327 姓名
    328    select sid from MARK where CMARK in ()
    329   select sid,SNAME from STUDENT where sid=()
    330 
    331 select sid,SNAME from STUDENT where sid=(
    332   select sid from MARK where CMARK in (
    333     select max(CMARK) from MARK where cid in (
    334       select cid from COURSE where CNAME='数学'
    335      )
    336    )
    337  )
    338 
    339 统计每门课程的平均成绩,并按照成绩降序排序
    340 select cid,avg(cmark)   from mark group by cid
    341 select czg  from (select cid,avg(cmark) czg  from mark group by cid) order by czg desc
    342 
    343 select * from czg order by desc
    344 
    345 子查询实现�查询‘3-2班’"张三"同学的"英语"成绩
    346 select sid from STUDENT where SNAME='张三'
    347 select cid from COURSE where CNAME='英语'
    348 select CMARK from MARK where sid =() and cid=()
    349 
    350 select CMARK from MARK where sid =(
    351   select sid from STUDENT where SNAME='张三'
    352  ) and cid=(
    353    select cid from COURSE where CNAME='英语'
    354  )
    355 
    356 查询“福建”地区学生所选修的全部课程名称
    357 select SNATIVEPLACE from STUDENT where SNATIVEPLACE='福建'
    358 select sid from STUDENT where SNATIVEPLACE='福建'
    359 
    360 select cid from MARK where sid in ()
    361 select CNAME from COURSE where cid in (
    362   select cid from MARK where sid in (
    363   select sid from STUDENT where SNATIVEPLACE='福建'
    364  )
    365  )
    366 
    367 用子查询实现查询选修“数学”课的全部学生的数学总成绩
    368 select cid from COURSE where CNAME='数学'
    369 select sid from MARK where cid in ()
    370 select sum(CMARK) from MARK where sid in()
    371 select sum(CMARK) from MARK where sid in(
    372   select sid from MARK where cid in (
    373     select cid from COURSE where CNAME='数学'
    374    )
    375  ) and cid =(select cid from COURSE where CNAME='数学')
    376 用子查询实现查询选修“高等数学”课的全部学生的所有课程总成绩高等数学总成绩
    377 select cid from COURSE where CNAME='数学'
    378 select sid from MARK where cid in (2001)
    379 --select cid from COURSE where sid in ()
    380 select sum(CMARK) from MARK where cid in ()
    381 
    382 select sum(CMARK) from MARK where sid in (
    383     select sid from MARK where cid in (
    384       select cid from COURSE where CNAME='数学'
    385      )
    386    )
    387 
    388 
    389 
    390 请用两种方法实现:查找所有成绩都在68分以上的学生姓名
    391 select sid,min(CMARK)  from MARK  group by sid having min(CMARK)<68
    392 select min(CMARK) from MARK group by  sid
    393 select sid from (select min(CMARK) from MARK group by  sid
    394 
    395                  ) where cmark>68
    396 查找至少2门成绩在80分以上的学生姓名
    397 select sid from MARK group by SID
    398 select cid from MARK where CMARK>80
    399 select  sid from MARK where cid=()
    400 select sid,count(*) c from MARK where CMARK> 80 group by sid
    401 select sid from (select sid,count(*) c from MARK where CMARK> 80 group by sid ) where c>2
    402 select SNAME from STUDENT where sid in ()
    403 
    404 
    405 查询个人平均总成绩小于平均总成绩的学生姓名
    406 select avg(CMARK) c from MARK m
    407 select sid,avg(CMARK) z from MARK m group by sid;
    408 select sid from (select avg(CMARK) c from MARK m),(select sid,avg(CMARK) z from MARK m group by sid) WHERE Z>C
    409 
    410 用子查询实现张三在其各科成绩中最高分成绩所对应的课程号和成绩
    411 select SID from STUDENT where SNAME='张三'
    412 
    413 select cid,CMARK c from MARK x where sid=(select SID from STUDENT where SNAME='张三')
    414 select max(CMARK) from (select cid,CMARK  from MARK x where sid=(select SID from STUDENT where SNAME='张三'));
    415 select CID,CMARK from MARK where sid=(select SID from STUDENT where SNAME='张三')
    416         and cmark=(select max(CMARK) from (select cid,CMARK  from MARK x where sid=(select SID from STUDENT where SNAME='张三')))
    417 
    418 8 找出张三的最高分和最低分以及对应的课程名
    419 
    420 select max(CMARK) from (select cid,CMARK  from MARK x where sid=(select SID from STUDENT where SNAME='张三'));
    421 select min(CMARK) from (select cid,CMARK  from MARK x where sid=(select SID from STUDENT where SNAME='张三'));
    422 select cid from MARK
    423 where sid=(select SID from STUDENT where SNAME='张三')
    424 and
    425  (CMARK=(select max(CMARK) from (select cid,CMARK  from MARK x where sid=(select SID from STUDENT where SNAME='张三')))OR
    426   CMARK=(select min(CMARK) from (select cid,CMARK  from MARK x where sid=(select SID from STUDENT where SNAME='张三'))))
    427 
    428 分页查询
    429 找出没有数学课的学生姓名
    430 select cid from COURSE where CNAME='数学'
    431 select sid from MARK where cid  in ()
    432 select SNAME from STUDENT where sid not in ()
    433 select SNAME from STUDENT where   sid not   in (
    434   select sid from MARK where cid  in (
    435     select cid from COURSE where CNAME='数学'
    436     )
    437   )
    438 
    439 找出各科成绩均比张三高的学生姓名
    440 组合表
    441  select * from MARK a,MARK b where a.cid=b.cid  and b.sid=10002
    442  select max(CMARK) c from MARK where sid=10002
    443 张三 选修的cid
    444 select sid,min(CMARK)z  from ( select * from MARK a,MARK b where a.cid=b.cid  and b.sid=10002 )
    445 where c.max(CMARK)<z.min(CMARK)
    446   group by SID
    447 
    448 cid sid
    449 
    450 select sid,min(CMARK) from MARK group by sid
    451 组合表格,选课有重复
    452 s1  select a.sid sid1 ,b.sid sid2,a.cid cid1 ,a.CMARK cmarka,b.CMARK cmarkb
    453            from MARK a,MARK b where a.cid=b.cid  and b.sid=10002
    454 在表找至少有一门成绩低于张三的
    455 s2   select sid1 from (s1) where cmarka<cmarkb
    456 
    457 select sid from (1) where b.sid<cmark
    458 在排除低于的
    459 s3 select sid1  from (s1) where cid1 not in (2)
    460 
    461 找年龄最大的
    462 年龄排序
    463  select * from STUDENT order by sage desc
    464 
    465 取第一个
    466 select * from (1) where  ROWNUM=1
    467 
    468 找出最大,在问谁等于最大
    469 
    470 select max(SAGE) from STUDENT
    471 select * from student where sage =()
    472 
    473 我的年龄比所有人大包括自己
    474 1 找出所有人
    475 select SAGE from STUDENT where SAGE is not null
    476  2扫描学生表,和所有人年龄进行比对
    477 select * from STUDENT where  not SAGE<any(1) and  SAGE is not null
    478 
    479 
    480 找出张三选课内容完全相同的
    481 1 找出张三sid
    482 
    483 2找出cid
    484   select sid from MARK where sid=(1)
    485 
    486 3张三没选cid
    487 select cid from MARK where cid not in (2)
    488 4
    489 谁选了张三未选的si
    490 select sid from MARK where cid in (3)
    491 5找出张三课程数量
    492  select  * from MARK where sid =(1)
    493 6比课程
    494 select sid from MARK where sid not in (4)
    495 group by sid having count(*) = (5)
    496 7 替换姓名
    497 select SNAME from STUDENT where SID in (6)
    498 
    499 
    500 找出张三数学英语成绩 显示数学英语姓名三列
    501 select SNAME,(
    502   select CMARK from MARK where sid=10002 and cid=2001
    503   )数学成绩,(
    504      select CMARK from MARK where sid=10002 and cid=2002
    505   )英语成绩
    506 from STUDENT
    507 where SNAME='张三'
    508 查询所有人数学英语成绩
    509 select SNAME,(
    510   select CMARK from MARK where sid=s.sid and cid=2001
    511   )数学成绩,(
    512      select CMARK from MARK where sid=s.sid and cid=2002
    513   )英语成绩
    514 from STUDENT s
    515 
    516 
    517 exists存在
    518 where  exists (select ..) 存在一个就是ture
    519 where  not exists (select ..)
    520       如果我是年龄最大的,那么一定不存在有人比我大
    521       select * from STUDENT s where not exists(
    522         select * from STUDENT where sage>s.SAGE
    523         )
    524 
    525 找出选修所有的课程
    526 select * from STUDENT s where not exists(
    527   select * from COURSE c where not exists(
    528     select * from MARK where sid=s.sid and c=c.cid
    529     )
    530   )
    531 
    532 集合运算
    533 集合运算就是将两个或者多个结果集组合成为一个结果集。集合运算包括:
    534 INTERSECT(交集),返回两个查询共有的记录。
    535 UNION ALL(并集),返回各个查询的所有记录,包括重复记录。
    536 UNO(并集),返回各个查询的所有记录,不包括重复记录。
    537 MINUS(补集)返回第一个查询检索出的记录减去第二个查询检索出的记录之后剩余的记录。
    538 当使用集合运算时,要注意:查询所返回的列数以及列的类型必须匹配,列名可以不同
    539 并集
    540 select SNAME,SAGE from STUDENT where SAGE in(19,21)
    541 union
    542 select SNAME,SAGE from STUDENT where SAGE in(20,22)
    543 
    544 并集
    545 select SNAME,SAGE from STUDENT where SAGE in(19,21)
    546 union all
    547 select SNAME,SAGE from STUDENT where SAGE in(20,22)
    548 交集
    549   select SNAME,SAGE from STUDENT where SAGE in(19,21)
    550 intersect
    551 select SNAME,SAGE from STUDENT where SAGE in(20,22)
    552 
    553 补集
    554  select SNAME,SAGE from STUDENT where SAGE in(19,21)
    555 minus
    556 select SNAME,SAGE from STUDENT where SAGE in(20,22)
    557 
    558 找出福建除最高和最低的平均年龄
    559 select sid from STUDENT where SNATIVEPLACE='福建'
    560 select max(SAGE) from STUDENT where sid in (select sid from STUDENT where SNATIVEPLACE='福建')
    561 union
    562 select min(SAGE) from STUDENT where SNATIVEPLACE='福建'
    563 select sid,avg(SAGE) from STUDENT where sid in ()
    564 
    565 select sid,avg(SAGE) from STUDENT where sid in (
    566   select max(SAGE) from STUDENT where sid not in (
    567     select sid from STUDENT where SNATIVEPLACE='福建'
    568     )
    569 union
    570 select min(SAGE) from STUDENT where sid in (
    571   select sid from STUDENT where SNATIVEPLACE='福建'
    572     )
    573 
    574   )
    575 1找出福建最高年龄
    576  select max(SAGE) from STUDENT where SNATIVEPLACE='福建'
    577  select sid from STUDENT where SAGE=( select max(SAGE) from STUDENT where SNATIVEPLACE='福建')
    578 2找出福建最低年龄
    579 select min(SAGE) from STUDENT where SNATIVEPLACE='福建'
    580 select sid from STUDENT where SAGE=(select min(SAGE) from STUDENT where SNATIVEPLACE='福建')
    581 3union连接
    582  select max(SAGE) from STUDENT where SNATIVEPLACE='福建'
    583  union
    584  select min(SAGE) from STUDENT where SNATIVEPLACE='福建'
    585 4 找出福建地区学生,并去除3中学生,剩下的平均年龄
    586 select sid from STUDENT where sid not in (
    587   select sid from STUDENT where SAGE=(select min(SAGE) from STUDENT where SNATIVEPLACE='福建')
    588   union
    589   select sid from STUDENT where SAGE=( select max(SAGE) from STUDENT where SNATIVEPLACE='福建')
    590   )
    591 select avg(SAGE) from STUDENT where sid in (
    592   select sid from STUDENT where sid not in (
    593   select sid from STUDENT where SAGE=(select min(SAGE) from STUDENT where SNATIVEPLACE='福建')
    594   union
    595   select sid from STUDENT where SAGE=( select max(SAGE) from STUDENT where SNATIVEPLACE='福建')
    596   )
    597   )
    598 
    599 按平均成绩从高到低显示所有学生的“数学”、“英语”、“语文”三门的课程成绩�(按如下形式显示:学生ID,高等数学,计算机数学,英语,有效课程数,有效平均分 )
    600 select SNAME,(
    601   select CMARK from MARK where sid=s.sid and cid=2001
    602   )数学成绩,(
    603      select CMARK from MARK where sid=s.sid and cid=2002
    604   )英语成绩,
    605        (select cmark from MARK where sid =s.sid and cid =
    606 from STUDENT s
    607 查询各科成绩前三名的记录:(不考虑成绩并列情况)
    608 课程名   第一名   第二名   第三名;
    609 select * from MARK where  ROWNUM=1 order by CMARK desc
    610 select * from MARK where  ROWNUM=1   order by CMARK desc
    611 查找至少2门成绩在80分以上的学生姓名
    612 select
    613 
    614 
    615 
    616 
    617 
    618 --34谁的各科成绩均高于各科均分
    619 select CID,avg(CMARK)  amk from MARK m group by CID;
    620 --S2
    621 select m1.sid,count(*) c from MARK m1,(select CID,avg(CMARK)  amk from MARK m group by CID) m2
    622 where m1.CID=m2.cid and m1.CMARK>m2.amk group by m1.sid;
    623 --s3
    624 select sid from (select m1.sid,count(*) c from MARK m1,(select CID,avg(CMARK)  amk from MARK m group by CID) m2
    625 where m1.CID=m2.cid and m1.CMARK>m2.amk group by m1.sid) where c=7;
    626 --s4
    627 select SNAME from STUDENT where SID in (select sid from (select m1.sid,count(*) c from MARK m1,(select CID,avg(CMARK)  amk from MARK m group by CID) m2
    628 where m1.CID=m2.cid and m1.CMARK>m2.amk group by m1.sid) where c=7)
    629 
    630 -33求各门课程去掉一个最高分和最低分后的平均分
    631 --s1
    632 select CID,MAX(CMARK) 最高分 ,MIN(CMARK) 最低分 from MARK group by CID;
    633 --s2
    634 select m1.CID,CMARK from MARK m1,(select CID,MAX(CMARK) 最高分 ,MIN(CMARK) 最低分 from MARK group by CID) m2
    635 where m1.CID=m2.CID and m1.CMARK!=m2.最高分 and CMARK!=m2.最低分;
    636 --s3
    637 select CID,AVG(CMARK) from (select m1.CID,CMARK from MARK m1,(select CID,MAX(CMARK) a ,MIN(CMARK) b from MARK group by CID) m2
    638 where m1.CID=m2.CID and m1.CMARK!=m2.a and CMARK!=m2.b)
    639 group by CID;
    640 --32上海地区哪门课的均分比福建差
    641 --s1
    642 select sid from STUDENT where SNATIVEPLACE='上海';
    643 --s2
    644 select cid,avg(CMARK) amk from MARK where sid in (select sid from STUDENT where SNATIVEPLACE='上海') group by CID;
    645 --s3
    646 select sid from STUDENT where SNATIVEPLACE='福建';
    647 --s4
    648 select cid,avg(CMARK) amk from MARK where sid in (select sid from STUDENT where SNATIVEPLACE='福建') group by CID;
    649 --s5
    650 select  a.CID
    651 from (select cid,avg(CMARK) amk from MARK where sid in (select sid from STUDENT where SNATIVEPLACE='上海') group by CID) a,
    652 (select cid,avg(CMARK) amk from MARK where sid in (select sid from STUDENT where SNATIVEPLACE='福建') group by CID) b
    653 where a.CID=b.CID and a.amk<b.amk;
    654 --s6
    655 select CNAME FROM COURSE where CID in (select  a.CID
    656 from (select cid,avg(CMARK) amk from MARK where sid in (select sid from STUDENT where SNATIVEPLACE='上海') group by CID) a,
    657 (select cid,avg(CMARK) amk from MARK where sid in (select sid from STUDENT where SNATIVEPLACE='福建') group by CID) b
    658 where a.CID=b.CID and a.amk<b.amk)
    659 --30找出数学和英语均分最高的男生姓名
    660 --S1
    661 select CID 科目 from COURSE where CNAME='数学'
    662 union
    663 select CID from COURSE where CNAME='英语';
    664 --s2
    665 select sid,avg(CMARK) amk from MARK m where CID=(select CID from COURSE where CNAME='数学')group by SID
    666 union
    667 select sid,avg(CMARK) amk from MARK m where CID=(select CID from COURSE where CNAME='英语')group by SID;
    668 --s3
    669 select sid,avg(amk) am
    670 from (select sid,avg(CMARK) amk from MARK m where CID=(select CID from COURSE where CNAME='数学')group by SID
    671 union
    672 select sid,avg(CMARK) amk from MARK m where CID=(select CID from COURSE where CNAME='英语')group by SID)
    673 group by SID;
    674 --s4
    675 select max(am) from (select sid,avg(amk) am
    676 from (select sid,avg(CMARK) amk from MARK m where CID=(select CID from COURSE where CNAME='数学')group by SID
    677 union
    678 select sid,avg(CMARK) amk from MARK m where CID=(select CID from COURSE where CNAME='英语')group by SID)
    679 group by SID);
    680 --s5
    681 select sid from (select sid,avg(amk) am
    682 from (select sid,avg(CMARK) amk from MARK m where CID=(select CID from COURSE where CNAME='数学')group by SID
    683 union
    684 select sid,avg(CMARK) amk from MARK m where CID=(select CID from COURSE where CNAME='英语')group by SID)
    685 group by SID) where am=(select max(am) from (select sid,avg(amk) am
    686 from (select sid,avg(CMARK) amk from MARK m where CID=(select CID from COURSE where CNAME='数学')group by SID
    687 union
    688 select sid,avg(CMARK) amk from MARK m where CID=(select CID from COURSE where CNAME='英语')group by SID)
    689 group by SID));
    690 --s6
    691 select SNAME from STUDENT
    692 where Sid in (select sid from (select sid,avg(amk) am
    693 from (select sid,avg(CMARK) amk from MARK m where CID=(select CID from COURSE where CNAME='数学')group by SID
    694 union
    695 select sid,avg(CMARK) amk from MARK m where CID=(select CID from COURSE where CNAME='英语')group by SID)
    696 group by SID) where am=(select max(am) from (select sid,avg(amk) am
    697 from (select sid,avg(CMARK) amk from MARK m where CID=(select CID from COURSE where CNAME='数学')group by SID
    698 union
    699 select sid,avg(CMARK) amk from MARK m where CID=(select CID from COURSE where CNAME='英语')group by SID)
    700 group by SID)));
    701 --29 请显示张三同学的数学和英语成绩,要求显示姓名,数学成绩,英语成绩
    702 select SNAME 学生姓名,(select CMARK from MARK where cid=2001 and sid=10001) 数学成绩,(select CMARK from MARK where cid=2002 and sid=10001) 英语成绩
    703 from STUDENT where sname='张三';
    704 --28数学状元的同班同学中男生均分最高的学生姓名
    705 --s1
    706 select cid from COURSE where CNAME='数学';
    707 --s2
    708 select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学');
    709 --s3
    710 select max(CMARK) from (select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'));
    711 --s4
    712 select sid  from(select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))
    713 where CMARK=(select max(CMARK) from (select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学')));
    714 --s5
    715 select SCLASS from STUDENT where SID=(select sid  from(select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))
    716 where CMARK=(select max(CMARK) from (select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))));
    717 --s6
    718 select sid from STUDENT where SCLASS=(select SCLASS from STUDENT where SID=(select sid  from(select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))
    719 where CMARK=(select max(CMARK) from (select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))))) and SSEX='男' and
    720 sid!=(select sid  from(select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))
    721 where CMARK=(select max(CMARK) from (select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))));
    722 --s7
    723 select sid,avg(CMARK) am FROM MARK where SID in (select sid from STUDENT where SCLASS=(select SCLASS from STUDENT where SID=(select sid  from(select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))
    724 where CMARK=(select max(CMARK) from (select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))))) and SSEX='男' and
    725 sid!=(select sid  from(select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))
    726 where CMARK=(select max(CMARK) from (select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))))) group by sid;
    727 --s8
    728 select max(am) from (select sid,avg(CMARK) am FROM MARK where SID in (select sid from STUDENT where SCLASS=(select SCLASS from STUDENT where SID=(select sid  from(select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))
    729 where CMARK=(select max(CMARK) from (select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))))) and SSEX='男' and
    730 sid!=(select sid  from(select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))
    731 where CMARK=(select max(CMARK) from (select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))))) group by sid);
    732  --s9
    733  select SID from (select sid,avg(CMARK) am FROM MARK where SID in (select sid from STUDENT where SCLASS=(select SCLASS from STUDENT where SID=(select sid  from(select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))
    734 where CMARK=(select max(CMARK) from (select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))))) and SSEX='男' and
    735 sid!=(select sid  from(select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))
    736 where CMARK=(select max(CMARK) from (select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))))) group by sid)
    737  where am=(select max(am) from (select sid,avg(CMARK) am FROM MARK where SID in (select sid from STUDENT where SCLASS=(select SCLASS from STUDENT where SID=(select sid  from(select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))
    738 where CMARK=(select max(CMARK) from (select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))))) and SSEX='男' and
    739 sid!=(select sid  from(select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))
    740 where CMARK=(select max(CMARK) from (select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))))) group by sid));
    741 --s10
    742 select SNAME from STUDENT where SID in (select SID from
    743  (select sid,avg(CMARK) am FROM MARK where SID in (select sid from STUDENT where SCLASS=(select SCLASS from STUDENT
    744  where SID=(select sid  from(select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))
    745 where CMARK=(select max(CMARK) from (select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))))) and SSEX='男' and
    746 sid!=(select sid  from(select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))
    747 where CMARK=(select max(CMARK) from (select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))))) group by sid)
    748  where am=(select max(am) from (select sid,avg(CMARK) am FROM MARK where SID in (select sid from STUDENT where SCLASS=(select SCLASS
    749  from STUDENT where SID=(select sid  from(select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))
    750 where CMARK=(select max(CMARK) from (select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))))) and SSEX='男' and
    751 sid!=(select sid  from(select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))
    752 where CMARK=(select max(CMARK) from (select sid,CMARK from MARK where CID=(select cid from COURSE where CNAME='数学'))))) group by sid)));
    753 --27 男生人数最多的地区中哪个学生年龄最大
    754 --s1
    755 select SNATIVEPLACE,count(*) cu from STUDENT s group by SNATIVEPLACE;
    756 --s2
    757 select max(cu) from (select SNATIVEPLACE,count(*) cu from STUDENT s group by SNATIVEPLACE);
    758 --s3
    759 select SNATIVEPLACE from (select SNATIVEPLACE,count(*) cu from STUDENT s group by SNATIVEPLACE)
    760 where cu in (select max(cu) from (select SNATIVEPLACE,count(*) cu from STUDENT s group by SNATIVEPLACE));
    761 --s4
    762 select sid,SAGE from STUDENT where SNATIVEPLACE=(select SNATIVEPLACE from (select SNATIVEPLACE,count(*) cu from STUDENT s group by SNATIVEPLACE)
    763 where cu in (select max(cu) from (select SNATIVEPLACE,count(*) cu from STUDENT s group by SNATIVEPLACE)));
    764 --s5
    765 select max(sAGE) from (select sid,SAGE from STUDENT where SNATIVEPLACE=(select SNATIVEPLACE from (select SNATIVEPLACE,count(*) cu from STUDENT s group by SNATIVEPLACE)
    766 where cu in (select max(cu) from (select SNATIVEPLACE,count(*) cu from STUDENT s group by SNATIVEPLACE))));
    767 --s6
    768 select sid from (select sid,SAGE from STUDENT where SNATIVEPLACE=(select SNATIVEPLACE from (select SNATIVEPLACE,count(*) cu from STUDENT s group by SNATIVEPLACE)
    769 where cu in (select max(cu) from (select SNATIVEPLACE,count(*) cu from STUDENT s group by SNATIVEPLACE))))
    770 where SAGE=(select max(sAGE) from (select sid,SAGE from STUDENT where SNATIVEPLACE=(select SNATIVEPLACE from (select SNATIVEPLACE,count(*) cu from STUDENT s group by SNATIVEPLACE)
    771 where cu in (select max(cu) from (select SNATIVEPLACE,count(*) cu from STUDENT s group by SNATIVEPLACE)))));
    772 --s6
    773 select SNAME from STUDENT where SID in (select sid from (select sid,SAGE from STUDENT where SNATIVEPLACE=(select SNATIVEPLACE from (select SNATIVEPLACE,count(*) cu from STUDENT s group by SNATIVEPLACE)
    774 where cu in (select max(cu) from (select SNATIVEPLACE,count(*) cu from STUDENT s group by SNATIVEPLACE))))
    775 where SAGE=(select max(sAGE) from (select sid,SAGE from STUDENT where SNATIVEPLACE=(select SNATIVEPLACE from (select SNATIVEPLACE,count(*) cu from STUDENT s group by SNATIVEPLACE)
    776 where cu in (select max(cu) from (select SNATIVEPLACE,count(*) cu from STUDENT s group by SNATIVEPLACE))))));
    777 select sid 学生id ,(select cmark from mark where cid=
    778 (select cid from course where cname='数学') and sid=sc.sid) 数学 ,(select cmark from mark where cid=
    779 (select cid from course where cname='英语')and sid=sc.sid) 英语,count(*) 有效课程数,avg(cmark) 有效均分
    780 from mark sc group by sid
    781 --1.与“张三”同乡的男生姓名
    782 1.
    783 select SNATIVEPLACE from STUDENT where SNAME='张三'
    784 2.
    785 select sid from STUDENT where SNATIVEPLACE=()
    786 3.
    787 select SNAME from STUDENT where sid in ()
    788 --
    789 select SNAME from STUDENT where sid in (
    790   select sid from STUDENT where SNATIVEPLACE=(
    791     select SNATIVEPLACE from STUDENT where SNAME='张三'
    792     )
    793 
    794   )
    795 --2.选修了胡适老师所讲课程的学生人数
    796 1.
    797 select tid from TEACHER where TNAME='胡适'
    798 2.
    799 select cid from COURSE where tid in ()
    800 3;
    801 select sid from MARK where cid in ()
    802 4.
    803 select SNAME from STUDENT where sid in ()
    804 
    805 5
    806 select SNAME from STUDENT where sid in (
    807   select sid from MARK where cid in (
    808     select cid from COURSE where tid in (
    809       select tid from TEACHER where TNAME='胡适'
    810 
    811       )
    812     )
    813   )
    814 --3.查询没学过“胡”姓老师课的同学的学号、姓名
    815 1.
    816 select tid from TEACHER where TNAME like '胡%'
    817 2.
    818 select cid from COURSE where tid in (select tid from TEACHER where TNAME like '胡%')
    819 3.
    820 select sid from MARK where cid  in (2002,2004)
    821 4.
    822 select SNAME from STUDENT where sid in ()
    823 5.
    824 select SNAME from STUDENT where sid not  in (
    825   select sid from MARK where cid in (
    826     select cid from COURSE where tid in (
    827       select tid from TEACHER where TNAME like '胡%'
    828       )
    829     )
    830   )
    831 --4“数学”课程得最高分的学生姓名、性别
    832 1
    833 select cid from COURSE where CNAME='数学'
    834 2
    835 select max(CMARK) from MARK where cid=()
    836 3.
    837 select sid from MARK where CMARK in ()
    838 4.
    839 select SNAME,SSEX from STUDENT where  sid in ()
    840 5.
    841 select SNAME,SSEX from STUDENT where  sid in (
    842   select sid from MARK where CMARK in (
    843     select max(CMARK) from MARK where cid=(
    844       select cid from COURSE where CNAME='数学'
    845       )
    846     )
    847   )
    848 --5统计每门课程的平均成绩,并按照成绩降序排序
    849 select avg(CMARK) from MARK group by cid order by avg(CMARK) desc
    850 
    851 -17 用子查询实现张三在其各科成绩中最高分成绩所对应的课程号和成绩
    852 1.
    853 select sid from STUDENT where SNAME='张三'
    854 2.
    855 select max(CMARK) from MARK where sid = ()
    856 3.
    857 select cid from MARK where sid =()
    858 and CMARK=()
    859 4
    860 
    861 select cid,CMARK from MARK where sid =(
    862   select sid from STUDENT where SNAME='张三'
    863   )
    864 and CMARK=(
    865   select max(CMARK) from MARK where sid = (
    866     select sid from STUDENT where SNAME='张三'
    867     )
    868     )
    869 
    870 --33求各门课程去掉一个最高分和最低分后的平均分
    871 --s1
    872 select CID,MAX(CMARK) a ,MIN(CMARK) b from MARK group by CID;
    873 --s2
    874 select m1.CID,CMARK from MARK m1,(select CID,MAX(CMARK) a ,MIN(CMARK) b from MARK group by CID) m2
    875 where m1.CID=m2.CID and m1.CMARK!=m2.a and CMARK!=m2.b;
    876 --s3
    877 select CID,AVG(CMARK) from (select m1.CID,CMARK from MARK m1,(select CID,MAX(CMARK) a ,MIN(CMARK) b from MARK group by CID) m2
    878 where m1.CID=m2.CID and m1.CMARK!=m2.a and CMARK!=m2.b)
    879 group by CID;
    880 
    881 
    882 select sid
    883 from STUDENT where SNAME='张三'
    884 select a.sid from MARK a,MARK b where a.cid=b.sid and b.sid=() and a.CMARK<=b.CMARK
    885 select sid from MARK where sid not in ()
    886 select SNAME from STUDENT where sid in ()
    887 
    888 select sid 学生id ,(select cmark from mark where cid=
    889 (select cid from course where cname='数学') and sid=sc.sid) 数学 ,(select cmark from mark where cid=
    890 (select cid from course where cname='英语')and sid=sc.sid) 英语,count(*) 有效课程数,avg(cmark) 有效均分
    891 from mark sc group by sid
    892 
    893 select sid from STUDENT where SNATIVEPLACE='上海'
    894 select cid,avg(CMARK) amk  from MARK where sid in ()
    895 
    896 select sid from STUDENT where SNATIVEPLACE='福建'
    897 select cid,avg(CMARK) amk  from MARK where sid in ()
    898 
    899 select a.cid from () where a.cid=b.cid and a.cmk<b.cmk
    900 
    901 2019/7/22
    902 ---将每个同学的成绩降序排序 开窗
    903 select m.*,rank() over (partition by SID order by CMARK desc ) from MARK m
    904 select m.*,dense_rank() over (partition by SID order by CMARK desc ) id1,
    905        rank() over (partition by SID order by CMARK desc) id2 from MARK m
    906 
    907 找出各个地区各门课均分,各个地区集中显示,均分降序排序
    908 1.
    909 select SNATIVEPLACE from STUDENT group by SNATIVEPLACE
    910 select sid from STUDENT where SNATIVEPLACE in (select SNATIVEPLACE from STUDENT group by SNATIVEPLACE)
    911 select avg(CMARK)  from ()
    912 
    913 2,
    914 select avg(CMARK) from MARK where
    915 select SNATIVEPLACE,CNAME,avg(CMARK) amk,row_number() over (
    916   partition by SNATIVEPLACE order by avg(CMARK) desc )
    917   id1_row_number,
    918 rank() over (
    919   partition by SNATIVEPLACE order by avg(CMARK) desc
    920   )id2_rank,dense_rank() over (
    921     partition by SNATIVEPLACE order by avg(CMARK) desc
    922   )
    923 
    924 from STUDENT s,MARK m,COURSE c
    925 where s.sid=m.sid and m.sid=c.sid
    926 group by snativeplace, cname
    927 
    928 select SNATIVEPLACE,CNAME,amk,max(amk) over (partition by SNATIVEPLACE),
    929        min(amk) over ( partition by SNATIVEPLACE)
    930  first_value() over
    931 from(
    932     select SNATIVEPLACE,CNAME,avg(CMARK) amk,
    933            row_number() over (
    934              partition by SNATIVEPLACE order by avg(CMARK) desc
    935              ) id_row_number,
    936            rank() over (
    937              partition by SNATIVEPLACE order by avg(amk)  desc
    938              ) id2_rank,
    939            dense_rank() over (
    940              partition by SNATIVEPLACE order by avg(amk)  desc
    941              ) id3_dense_rank
    942   from STUDENT s,MARK m,COURSE c
    943 where s.sid=m.sid and m.sid=c.sid
    944 group by snativeplace, cname
    945 
    946       )格式,连接查询
    947       select  * from STUDENT s,MARK m where s.sid=m.sid
    948 
    949 select * from STUDENT s inner join MARK m on s.sid=m.sid--内连,交集
    950 select * from STUDENT s left outer join MARK m on s.sid=m.sid--外联
    951 
    952 
    953 select SNAME,SSEX,amk from STUDENT s left outer join (
    954   select sid,avg(CMARK) amk from MARK group by sid
    955   ) m on s.sid=m.sid
    956 where SSEX='男'
    957 
    958 
    959 select SNAME,SSEX,amk from STUDENT s full outer join (
    960   select sid,avg(CMARK) amk from MARK group by sid
    961   ) m on s.sid=m.sid and SSEX='男'
    962 --sql 语言
    963 DDL 对结构进行操作 create drop alter  drop database Data Define Language
    964 DML 对数据进行操作 insert delete update             Data MANAGEMENT Language
    965 DQL 对数据查询                                      Data Query Language
    966 
    967 DCL                                                  Data control Language
    968 TCL                                                   Transaction Control Languc
    969 
    970 create table STUDENTq(sid number(5,0) , ssex char(2),sage number(10)
    971                     )
    972 insert into STUDENTq(sid,ssex,ssage) values (10005222,'男',20);
    973 
    974 select * from STUDENT
    975 drop table studentq
    976 insert into STUDENT(SNAME,SAGE) values ('张伟',21)---添加
    977 commit --确当数据,提交
    978 
    979 create table stu33 as------复制表
    980   select * from STUDENT where ssex='男'
    981 
    982 select * from stu33
    983 
    984 
    985   drop table newstu2
    986 
    987 
    988 
    989 insert into stu1
    990 select * from STUDENT where sage>=20
    991 
    992 select * from newwtu2
    993 
    994 
    995 数据的删除
    996 delete from STUDENT where 1=1
    997 
    998 select ROWID,s.* from STUDENT s---内存地址
    999 --删除重复数据
    1000 delete from STUDENT
    1001 where ROWID not in (
    1002   select min(ROWID) from STUDENT
    1003   group by sid
    1004   )
    1005 
    1006 commit
    1007 
    1008 select sid from STUDENT where SNATIVEPLACE='安徽'
    1009 select cid from COURSE where CNAME='数学'
    1010 修改,多个属性,加,
    1011 
    1012 来自安徽的均分低于70,数学成绩+5
    1013 update  MARK
    1014 set CMARK=CMARK+5
    1015 where cid=(
    1016   select cid from COURSE where CNAME='数学') and sid in(
    1017     select sid from MARK
    1018     where sid in (
    1019       select sid from STUDENT where SNATIVEPLACE='安徽'
    1020       ) group by sid having avg(CMARK) <70
    1021   )
    1022 
    1023 
    1024 select  mod(12,5)from DUAL
    1025 create table stu2 ( sname
    1026                       varchar2(80),
    1027                       birth date
    1028 
    1029   )
    1030 select * from STU2
    1031 insert into stu2 (sname ,birth) values('张三',to_date('2019-5-5','YYYY-MM-DD'))
    1032 
    1033 select sysdate,
    1034        extract(YEAR FROM sysdate),
    1035        extract(MONTH FROM sysdate),
    1036        extract( DAY sysdate)
    1037 FROM DUAL
    1038 create table reader(rname number(100),rsex char(3),
    1039                     )
    1040 insert into STUDENTq(sid,ssex,ssage) values (10005222,'男',20);
    1041 --to_date插入日期和时间用的
    1042  insert into stu2(sname birth)
    1043    values('张三',to_date('2019/5/21 16:55:56','YYYY/MM/DD HH24:MI:SS'))
    1044 --sysdate sysadte+1加一天的时间 sysdate+1/24加一小时 其他以此类推
    1045 select sysdate from dual
    1046 --用现在的时间减去你的生日得到你从出生到现在过了多久
    1047 select s.*,sysdate-birth from stu2 s
    1048 
    1049 
    1050 --extract 单取出年月日
    1051   select sysdate(
    1052     extract(year from sysdate)
    1053     extract(month from sysdate)
    1054     extract(day from sysdate)
    1055   )
    1056 from dual
    1057 
    1058 --算岁数
    1059  select sysdate(
    1060     extract(year from sysdate)-extract(year from birth)+1
    1061   )
    1062 from dual
    1063 
    1064 select last_day(sysdate) from dual
    1065 
    1066 
    1067 
    1068 作者表
    1069 create table writer (
    1070  wsid char(100),wname  char(50),wsex char(3),warea varchar2(100) ,wtelephone char(100),wid char(100),wtotal varchar2(100),wword varchar2 (100),wnote varchar2(100)
    1071 
    1072 
    1073   )
    1074 
    1075 
    1076 select * from WRITER
    1077 
    1078 
    1079 insert into writer values ('001','唐三','男','徐州','18851923638','3203821958265805456','107万','174万','18444')
    1080 insert into writer values ('002','土豆','男','南京','18851923635','320382195826580486','105万','141万','1845')
    1081 insert into writer values ('003','番茄','女','上海','18851923635','320382195826585586','104万','147万','184844')
    1082 insert into writer values ('004','五一','女','南京','18851923634','320382195826580576','108万','177万','18445')
    1083 insert into writer values ('005','胡歌','男','长春','188519236378','320382195826580786','152万','152万','1875')
    1084 insert into writer values ('006','西瓜','男','徐州','18851923638','3203821958265804456','1474万','14万','1844')
    1085 insert into writer values ('007','独角','男','南京','18851923635','3203821958265450486','14万','151万','184')
    1086 insert into writer values ('008','南瓜','女','西藏','18851923635','3203821958885586','17万','14万','1848')
    1087 insert into writer values ('009','东瓜','女','香港','18851923634','320382198826580576','18万','147万','185')
    1088 insert into writer values ('0010','','男','长春','188519236378','3203821957826580786','15万','14万','185')
    1089 
    1090 drop table writer
    1091 打赏表
    1092 mony
    1093 create table mony(
    1094   wsid char(100),mbook char(100),mmony char(100)
    1095   )
    1096 select * from mony
    1097 
    1098 insert into mony valus('001','斗破苍穹','100万')
    1099 insert into mony values('002','圣墟','125万')
    1100 insert into mony values('003','霸道总裁爱上我','245万')
    1101 insert into mony values('004','高冷男神','152万')
    1102 insert into mony values('005','我是流氓','1424万')
    1103 insert into mony valu('006','斗破苍穹2','100万')
    1104 insert into mony values('007','明朝','125万')
    1105 insert into mony values('008','王子','245万')
    1106 insert into mony values('009','汉朝','152万')
    1107 insert into mony values('0010','981','1424万')
    1108 作者等级
    1109 grade
    1110 create table grade (
    1111 wsid char(100),ggrade char(100)
    1112 )
    1113 insert into grade values ('001','大神')
    1114 insert into grade values ('002','大神')
    1115 insert into grade values ('003','封圣')
    1116 insert into grade values ('004','大神')
    1117 insert into grade values ('005','小白')
    1118 select * from grade
    1119 
    1120 排行榜
    1121 list
    1122 create table wlist (
    1123   wsid char(100),wname char(100),lrank char(100)
    1124 
    1125 )
    1126 select * from wlist
    1127 insert into wlist values('001','斗破苍穹','1')
    1128 insert into wlist values('002','圣墟','2')
    1129 insert into wlist values('003','霸道总裁爱上我','3')
    1130 insert into wlist values('004','高冷男神','4')
    1131 insert into wlist values('005','我是流氓','5')
    1132 insert into wlist values('006','斗破苍穹2','6')
    1133 insert into wlist values('007','明朝','7')
    1134 insert into wlist values('008','王子','8')
    1135 insert into wlist values('009','汉朝','9')
    1136 insert into wlist values('0010','981','10')
    1137 
    1138 drop table list
    1139 
    1140 
    1141 随机0到100的整数
    1142 select trunc(DBMS_random. value*100) from dual
    1143 
    1144 select systimestamp from dual
    1145 select to_date('2018-7-5','yyy-mm-dd'), to_date ('2018-7-5','yyy-mm-dd') + interval '7' hour from dual
    1146 
    1147 CREATE SEQUENCE stuq
    1148 MINVALUE 10005
    1149 START WITH 10005
    1150 MAXVALUE  100000
    1151 INCREMENT BY 1
    1152 NOCYCLE
    1153 CACHE 30
    1154 
    1155 create table stua(
    1156   sid number primary key,
    1157   sname varchar2(20)
    1158 )
    1159 insert into stua values(stuq.NEXTVAL,'小明');
    1160 insert into stua values(stuq.NEXTVAL,'小张');
    1161 insert into stua values(stuq.NEXTVAL,'小明');
    1162 insert into stua values(stuq.NEXTVAL,'小张');
    1163 insert into stua values(stuq.NEXTVAL,'小明');
    1164 insert into stua values(stuq.NEXTVAL,'小张');
    1165 insert into stua values(stuq.NEXTVAL,'小明');
    1166 insert into stua values(stuq.NEXTVAL,'小张');
    1167 select * from stua
    1168 drop SEQUENCE stuq
    1169 --表格对数据进行判定,非法的改动拒绝
    1170               五大约束
    1171 主建 primary,外键 foreign,唯一 Unique,非空 not null,检验 check
    1172 主键(灵魂)
    1173 不能为空
    1174 不能重复(唯一)
    1175 --1简写
    1176 create table stu2(
    1177   sid number primary key ,
    1178   sname varchar2(100)
    1179 )
    1180 --2(完整写法
    1181 create table stu2(
    1182   sid number,
    1183   sname varchar2(100) not null  unique,--不为空,不重名
    1184   constraint pk_sid primary key (sid)
    1185 )
    1186 成绩表主键
    1187 create table mark2(
    1188   sid number,
    1189   cid number,
    1190   cmark number,
    1191   constraint pk_sid primary key (sid,cid)
    1192 )
    1193 --check = where 时间除外
    1194 create table stu4(
    1195   sid number primary key ,
    1196   sname varchar2(100) not null ,
    1197   ssex char(3) check ( ssex in ('男','女') )
    1198   --amk number check (amk>=0 and amk<=100)     ,--均分
    1199 
    1200 )
    1201 --外键,指向的是主键,比如marksid cid 是外建,
    1202 
    1203 select * from STUDENT
    1204 drop table student;
    1205 drop table mark;
    1206 drop table COURSE;
    1207 drop table TEACHER;
    1208 create table student(
    1209    sid int   ,
    1210   sname varchar2(100) ,
    1211   sage int not null ,
    1212  ssex char(3) check ( ssex in ('男','女') ),
    1213   snativeplace varchar2(100)  ,
    1214   smajor varchar2(100) ,
    1215   sclass varchar2(100) ,
    1216   snative varchar2(100) ,
    1217   brith varchar2(100) ,
    1218     constraint pk_sid primary key (sid)
    1219 
    1220 )
    1221 
    1222 select * from student
    1223 insert into student (sid,sname,sage,ssex,snativeplace,smajor,sclass,snative) values (10001,'廖官忠',21,'男','福建','信计','2班','汉族');
    1224 insert into student (sid,sname,sage,ssex,snativeplace,smajor,sclass,snative) values (10002,'张三',20,'男','江苏','信计','2班','汉族');
    1225 insert into student (sid,sname,sage,ssex,snativeplace,smajor,sclass,snative) values (10003,'李四',19,'男','福建','信计','2班','傣族');
    1226 insert into student (sid,sname,sage,ssex,snativeplace,smajor,sclass,snative) values (10004,'萧瑾',21,'女','福建','统计','1班','汉族');
    1227 insert into student (sid,sname,sage,ssex,snativeplace,smajor,sclass,snative) values (10005,'叶晶',21,'女','上海','传煤','1班','朝鲜族');
    1228 insert into student (sid,sname,sage,ssex,snativeplace,smajor,sclass,snative) values (10006,'萧瑾',19,'女','北京','统计','2班','汉族');
    1229 insert into student (sid,sname,sage,ssex,snativeplace,smajor,sclass,snative) values (10007,'李宁',21,'男','云南','信控','1班','傣族');
    1230 insert into student (sid,sname,sage,ssex,snativeplace,smajor,sclass,snative) values (10008,'唐品',18,'男','江苏','信计','2班','汉族');
    1231 insert into student (sid,sname,sage,ssex,snativeplace,smajor,sclass,snative) values (10009,'吴强',20,'男','山东','统计','1班','汉族');
    1232 insert into student (sid,sname,sage,ssex,snativeplace,smajor,sclass,snative) values (10010,'欧阳锋',22,'男','四川','应数','1班','汉族');
    1233 insert into student (sid,sname,sage,ssex,snativeplace,smajor,sclass,snative) values (10011,'王充样',23,'男','黑龙江','统计','2班','汉族');
    1234 insert into student (sid,sname,sage,ssex,snativeplace,smajor,sclass,snative) values (10012,'卫小宝',17,'女','福建','统计','2班','汉族');
    1235 insert into student (sid,sname,sage,ssex,snativeplace,smajor,sclass,snative) values (10013,'李绍',21,'女','福建','信计','2班','汉族');
    1236 insert into student (sid,sname,sage,ssex,snativeplace,smajor,sclass,snative) values (10014,'黄马华',22,'男','浙江','心理学','1班','汉族');
    1237 insert into student (sid,sname,sage,ssex,snativeplace,smajor,sclass,snative) values (10015,'艾蔚儿',19,'女','福建','计算机','1班','黎族');
    1238 
    1239 insert into student (sid,sname,sage,ssex,snativeplace,smajor,sclass,snative) values (10016,'赵若辰',21,'男','江苏','心理学','1班','汉族');
    1240 insert into student (sid,sname,sage,ssex,snativeplace,smajor,sclass,snative) values (10017,'徐扬',22,'男','青海','计算机','1班','汉族');
    1241 insert into student (sid,sname,sage,ssex,snativeplace,smajor,sclass,snative) values (10018,'徐静静',19,'女','安徽','计算机','1班','黎族');
    1242 insert into student (sid,sname,sage,ssex,snativeplace,smajor,sclass,snative,brith) values (10019,'徐静静',19,'女','安徽','计算机','1班','黎族',to_date('2018-2-9','yyy-mm-dd'));
    1243 
    1244 create table teacher (
    1245   tid int,p
    1246   tname varchar2(100),
    1247  tsex char(3) check ( tsex in ('男','女') ),
    1248   tage int,
    1249   tlvl varchar2(100),
    1250   constraint te_tid primary key (tid)
    1251 )
    1252 select * from teacher
    1253 insert into teacher (tid,tname,tsex,tage,tlvl) values (30001,'马六','男',45,'高级教师');
    1254 insert into teacher (tid,tname,tsex,tage,tlvl) values (30002,'胡美丽','女',32,'中级教师');
    1255 insert into teacher (tid,tname,tsex,tage,tlvl) values (30003,'李强','男',40,'高级教师');
    1256 insert into teacher (tid,tname,tsex,tage,tlvl) values (30004,'胡适','男',55,'教授');
    1257 insert into teacher (tid,tname,tsex,tage,tlvl) values (30005,'钱枫','男',37,'高级教师');
    1258 insert into teacher (tid,tname,tsex,tage,tlvl) values (30006,'戴安安','女',27,'中级教师');
    1259 insert into teacher (tid,tname,tsex,tage,tlvl) values (30007,'张伯伦','男',47,'教授');
    1260 
    1261 create table mark(
    1262   sid number,
    1263   cid number,
    1264   cmark number,
    1265 constraint pk_sid_cid primary key (sid,cid),
    1266 constraint fk_sid foreign key (sid) references student(sid),
    1267 constraint fk_cid foreign key (cid) references student(cid)
    1268 )
    1269 insert into mark (sid,cid,cmark) values (10001,2001,85);
    1270 insert into mark (sid,cid,cmark) values (10001,2002,75);
    1271 insert into mark (sid,cid,cmark) values (10001,2003,80);
    1272 insert into mark (sid,cid,cmark) values (10001,2004,70);
    1273 insert into mark (sid,cid,cmark) values (10001,2005,60);
    1274 insert into mark (sid,cid,cmark) values (10001,2006,95);
    1275 insert into mark (sid,cid,cmark) values (10001,2007,70);
    1276 insert into mark (sid,cid,cmark) values (10002,2001,80);
    1277 insert into mark (sid,cid,cmark) values (10002,2002,65);
    1278 insert into mark (sid,cid,cmark) values (10002,2003,70);
    1279 insert into mark (sid,cid,cmark) values (10002,2004,80);
    1280 insert into mark (sid,cid,cmark) values (10002,2005,55);
    1281 insert into mark (sid,cid,cmark) values (10002,2006,78);
    1282 insert into mark (sid,cid,cmark) values (10002,2007,82);
    1283 insert into mark (sid,cid,cmark) values (10003,2001,69);
    1284 insert into mark (sid,cid,cmark) values (10003,2002,57);
    1285 insert into mark (sid,cid,cmark) values (10003,2003,90);
    1286 insert into mark (sid,cid,cmark) values (10003,2004,80);
    1287 insert into mark (sid,cid,cmark) values (10003,2005,77);
    1288 insert into mark (sid,cid,cmark) values (10003,2006,92);
    1289 insert into mark (sid,cid,cmark) values (10003,2007,80);
    1290 insert into mark (sid,cid,cmark) values (10004,2001,85);
    1291 insert into mark (sid,cid,cmark) values (10004,2002,76);
    1292 insert into mark (sid,cid,cmark) values (10004,2003,66);
    1293 insert into mark (sid,cid,cmark) values (10004,2004,54);
    1294 insert into mark (sid,cid,cmark) values (10004,2005,80);
    1295 insert into mark (sid,cid,cmark) values (10004,2006,73);
    1296 insert into mark (sid,cid,cmark) values (10004,2007,80);
    1297 insert into mark (sid,cid,cmark) values (10005,2001,93);
    1298 insert into mark (sid,cid,cmark) values (10005,2002,82);
    1299 insert into mark (sid,cid,cmark) values (10005,2003,71);
    1300 insert into mark (sid,cid,cmark) values (10005,2004,68);
    1301 insert into mark (sid,cid,cmark) values (10005,2005,70);
    1302 insert into mark (sid,cid,cmark) values (10005,2006,86);
    1303 insert into mark (sid,cid,cmark) values (10005,2007,90);
    1304 insert into mark (sid,cid,cmark) values (10006,2001,69);
    1305 insert into mark (sid,cid,cmark) values (10006,2002,48);
    1306 insert into mark (sid,cid,cmark) values (10006,2003,90);
    1307 insert into mark (sid,cid,cmark) values (10006,2004,68);
    1308 insert into mark (sid,cid,cmark) values (10006,2005,80);
    1309 insert into mark (sid,cid,cmark) values (10006,2006,88);
    1310 insert into mark (sid,cid,cmark) values (10006,2007,70);
    1311 insert into mark (sid,cid,cmark) values (10007,2001,77);
    1312 insert into mark (sid,cid,cmark) values (10007,2002,75);
    1313 insert into mark (sid,cid,cmark) values (10007,2003,82);
    1314 insert into mark (sid,cid,cmark) values (10007,2004,67);
    1315 insert into mark (sid,cid,cmark) values (10007,2005,84);
    1316 insert into mark (sid,cid,cmark) values (10007,2006,95);
    1317 insert into mark (sid,cid,cmark) values (10007,2007,73);
    1318 insert into mark (sid,cid,cmark) values (10008,2001,97);
    1319 insert into mark (sid,cid,cmark) values (10008,2002,86);
    1320 insert into mark (sid,cid,cmark) values (10008,2003,68);
    1321 insert into mark (sid,cid,cmark) values (10008,2004,81);
    1322 insert into mark (sid,cid,cmark) values (10008,2005,71);
    1323 insert into mark (sid,cid,cmark) values (10008,2006,78);
    1324 insert into mark (sid,cid,cmark) values (10008,2007,64);
    1325 insert into mark (sid,cid,cmark) values (10009,2001,90);
    1326 insert into mark (sid,cid,cmark) values (10009,2002,75);
    1327 insert into mark (sid,cid,cmark) values (10009,2003,60);
    1328 insert into mark (sid,cid,cmark) values (10009,2004,57);
    1329 insert into mark (sid,cid,cmark) values (10009,2005,90);
    1330 insert into mark (sid,cid,cmark) values (10009,2006,85);
    1331 insert into mark (sid,cid,cmark) values (10009,2007,91);
    1332 insert into mark (sid,cid,cmark) values (10010,2001,85);
    1333 insert into mark (sid,cid,cmark) values (10010,2002,62);
    1334 insert into mark (sid,cid,cmark) values (10010,2003,72);
    1335 insert into mark (sid,cid,cmark) values (10010,2004,81);
    1336 insert into mark (sid,cid,cmark) values (10010,2005,91);
    1337 insert into mark (sid,cid,cmark) values (10010,2006,90);
    1338 insert into mark (sid,cid,cmark) values (10010,2007,66);
    1339 insert into mark (sid,cid,cmark) values (10011,2001,55);
    1340 insert into mark (sid,cid,cmark) values (10011,2002,75);
    1341 insert into mark (sid,cid,cmark) values (10011,2003,67);
    1342 insert into mark (sid,cid,cmark) values (10011,2004,87);
    1343 insert into mark (sid,cid,cmark) values (10011,2005,88);
    1344 insert into mark (sid,cid,cmark) values (10011,2006,77);
    1345 insert into mark (sid,cid,cmark) values (10011,2007,61);
    1346 insert into mark (sid,cid,cmark) values (10012,2001,77);
    1347 insert into mark (sid,cid,cmark) values (10012,2002,81);
    1348 insert into mark (sid,cid,cmark) values (10012,2003,91);
    1349 insert into mark (sid,cid,cmark) values (10012,2004,67);
    1350 insert into mark (sid,cid,cmark) values (10012,2005,60);
    1351 insert into mark (sid,cid,cmark) values (10012,2006,80);
    1352 insert into mark (sid,cid,cmark) values (10012,2007,74);
    1353 insert into mark (sid,cid,cmark) values (10013,2001,88);
    1354 insert into mark (sid,cid,cmark) values (10013,2002,75);
    1355 insert into mark (sid,cid,cmark) values (10013,2003,90);
    1356 insert into mark (sid,cid,cmark) values (10013,2004,60);
    1357 insert into mark (sid,cid,cmark) values (10013,2005,71);
    1358 insert into mark (sid,cid,cmark) values (10013,2006,95);
    1359 insert into mark (sid,cid,cmark) values (10013,2007,89);
    1360 insert into mark (sid,cid,cmark) values (10014,2001,65);
    1361 insert into mark (sid,cid,cmark) values (10014,2002,72);
    1362 insert into mark (sid,cid,cmark) values (10014,2003,68);
    1363 insert into mark (sid,cid,cmark) values (10014,2004,67);
    1364 insert into mark (sid,cid,cmark) values (10014,2005,60);
    1365 insert into mark (sid,cid,cmark) values (10014,2006,75);
    1366 insert into mark (sid,cid,cmark) values (10014,2007,81);
    1367 insert into mark (sid,cid,cmark) values (10015,2001,55);
    1368 insert into mark (sid,cid,cmark) values (10015,2002,67);
    1369 insert into mark (sid,cid,cmark) values (10015,2003,61);
    1370 insert into mark (sid,cid,cmark) values (10015,2004,71);
    1371 insert into mark (sid,cid,cmark) values (10015,2005,81);
    1372 insert into mark (sid,cid,cmark) values (10015,2006,88);
    1373 insert into mark (sid,cid,cmark) values (10015,2007,90);
    1374 insert into mark (sid,cid,cmark) values (10016,2001,72);
    1375 insert into mark (sid,cid,cmark) values (10016,2002,82);
    1376 insert into mark (sid,cid,cmark) values (10016,2003,92);
    1377 insert into mark (sid,cid,cmark) values (10016,2004,62);
    1378 insert into mark (sid,cid,cmark) values (10016,2005,63);
    1379 insert into mark (sid,cid,cmark) values (10016,2006,73);
    1380 insert into mark (sid,cid,cmark) values (10016,2007,83);
    1381 insert into mark (sid,cid,cmark) values (10017,2001,85);
    1382 insert into mark (sid,cid,cmark) values (10017,2002,77);
    1383 insert into mark (sid,cid,cmark) values (10017,2003,87);
    1384 insert into mark (sid,cid,cmark) values (10017,2004,79);
    1385 insert into mark (sid,cid,cmark) values (10017,2005,69);
    1386 insert into mark (sid,cid,cmark) values (10017,2006,58);
    1387 insert into mark (sid,cid,cmark) values (10017,2007,74);
    1388 insert into mark (sid,cid,cmark) values (10018,2001,88);
    1389 insert into mark (sid,cid,cmark) values (10018,2002,78);
    1390 insert into mark (sid,cid,cmark) values (10018,2003,88);
    1391 insert into mark (sid,cid,cmark) values (10018,2004,78);
    1392 insert into mark (sid,cid,cmark) values (10018,2005,68);
    1393 insert into mark (sid,cid,cmark) values (10018,2006,98);
    1394 insert into mark (sid,cid,cmark) values (10018,2007,78);
    1395 
    1396 create table course(
    1397 cid number,
    1398   cname varchar2(100),
    1399   cval number,
    1400   ctime number,
    1401   tid number,
    1402   constraint pk_cid primary key (cid),
    1403   constraint  te_tid foreign key (tid) reference teacher(tid)
    1404 );
    1405 select * from course
    1406 insert into course (cid,cname,cval,ctime,tid) values (2001,'数学',6,64,30001);
    1407 insert into course (cid,cname,cval,ctime,tid) values (2002,'英语',4,64,30002);
    1408 insert into course (cid,cname,cval,ctime,tid) values (2003,'体育',2,32,30003);
    1409 insert into course (cid,cname,cval,ctime,tid) values (2004,'马克思主义',6,64,30004);
    1410 insert into course (cid,cname,cval,ctime,tid) values (2005,'计算机基础',3,48,30005);
    1411 insert into course (cid,cname,cval,ctime,tid) values (2006,'心理学',4,48,30006);
    1412 insert into course (cid,cname,cval,ctime,tid) values (2007,'空间天气学',6,64,30007);
    1413 insert into teacher (tid,tname,tsex,tage,tlvl) values (30001,'马六','男',45,'高级教师');
    1414 insert into teacher (tid,tname,tsex,tage,tlvl) values (30002,'胡美丽','女',32,'中级教师');
    1415 insert into teacher (tid,tname,tsex,tage,tlvl) values (30003,'李强','男',40,'高级教师');
    1416 insert into teacher (tid,tname,tsex,tage,tlvl) values (30004,'胡适','男',55,'教授');
    1417 insert into teacher (tid,tname,tsex,tage,tlvl) values (30005,'钱枫','男',37,'高级教师');
    1418 insert into teacher (tid,tname,tsex,tage,tlvl) values (30006,'戴安安','女',27,'中级教师');
    1419 insert into teacher (tid,tname,tsex,tage,tlvl) values (30007,'张伯伦','男',47,'教授');
    1420 
    1421 
    1422 
    1423 drop table writer;
    1424 create table writer (
    1425  wsid char(100),
    1426  wname  char(50),
    1427  wsex char(3),
    1428  warea varchar2(100) ,
    1429  wtelephone char(100) not null ,
    1430  wid char(100) not null ,
    1431  wtotal varchar2(100),
    1432  wword varchar2 (100),
    1433  wnote varchar2(100),
    1434 
    1435 constraint w_wsid primary key (wsid)
    1436 
    1437   );
    1438 drop table wmony;
    1439   --打赏表
    1440 --mony
    1441 create table wmony(
    1442   wsid char(100),
    1443   mbook char(100),
    1444   mmony char(100),
    1445     constraint e_wsid primary key (wsid)
    1446   );
    1447 
    1448 
    1449   --作者等级
    1450 --grade
    1451 drop table wgrade;
    1452 create table wgrade (
    1453 wsid char(100),
    1454 ggrade char(100),
    1455  constraint g_wsid primary key (wsid)
    1456 );
    1457 
    1458 --排行榜
    1459 --list
    1460 drop table wqlist;
    1461 create table wqlist (
    1462   wsid char(100),
    1463   wname char(100),
    1464   lrank char(100),
    1465   constraint l_wsid primary key (wsid)
    1466 
    1467 );
    1468 
    1469 insert into writer values ('001','唐三','男','徐州','18851923638','32038219565805456','107万','174万','18444');
    1470 insert into writer values ('002','土豆','男','南京','18851923635','32038219582658048','105万','141万','1845');
    1471 insert into writer values ('003','番茄','女','上海','18851923675','320382195826585586','104万','147万','184844');
    1472 insert into writer values ('004','五一','女','南京','18851923634','320382195826587','488万','177万','18445');
    1473 insert into writer values ('005','胡歌','男','长春','18851923678','32038219582658071','152万','152万','1875');
    1474 insert into writer values ('006','西瓜','男','徐州','18851923688','3203821958265804452','1474万','14万','1844');
    1475 insert into writer values ('007','独角','男','南京','18851023635','3203821958265450483','14万','151万','184');
    1476 insert into writer values ('008','南瓜','女','西藏','18851927635','3203821958885584','17万','14万','1848');
    1477 insert into writer values ('009','东瓜','女','香港','18851973634','320382198826580575','18万','147万','185');
    1478 insert into writer values ('0010','北瓜','男','长春','18851923678','3203821957826580786','15万','14万','185');
    1479 commit;
    1480 
    1481 
    1482 
    1483 insert into wmony values('001','斗破苍穹','100万');
    1484 insert into wmony values('002','圣墟','125万');
    1485 insert into wmony values('003','霸道总裁爱上我','245万');
    1486 insert into wmony values('004','高冷男神','152万');
    1487 insert into wmony values('005','我是流氓','1424万');
    1488 insert into wmony values('006','三体','100万');
    1489 insert into wmony values('007','明朝','125万');
    1490 insert into wmony values('008','王子','245万');
    1491 insert into wmony values('009','汉朝','152万');
    1492 insert into wmony values('0010','981','1424万');
    1493 commit;
    1494 insert into wgrade values ('001','大神');
    1495 insert into wgrade values ('002','大神');
    1496 insert into wgrade values ('003','封圣');
    1497 insert into wgrade values ('004','大神');
    1498 insert into wgrade values ('005','小白');
    1499 
    1500 commit;
    1501 insert into wqlist values('001','斗破苍穹','1');
    1502 insert into wqlist values('002','圣墟','2');
    1503 insert into wqlist values('003','霸道总裁爱上我','3');
    1504 insert into wqlist values('004','高冷男神','4');
    1505 insert into wqlist values('005','我是流氓','5');
    1506 insert into wqlist values('006','斗破苍穹2','6');
    1507 insert into wqlist values('007','明朝','7');
    1508 insert into wqlist values('008','王子','8');
    1509 insert into wqlist values('009','汉朝','9');
    1510 insert into wqlist values('0010','981','10');
    1511 
    1512 commit;
    1513 select * from writer;
    1514 select * from wmony;
    1515 select * from wgrade;
    1516 select * from wqlist;
    1517 
    1518 
    1519 
    1520 索引
    1521 1.什么时候会用到索引
    1522 
    1523 2.索引的作用
    1524 节约时间,加快查询速度
    1525 3.索引缺点
    1526 占空间
    1527 
    1528 create index idx_sage on student (sage) --创建
    1529   drop index  idx_sage --删除
    1530 
    1531 --视图 view
    1532 超链接 指定数据
    1533 知保存命令
    1534 只有select是才执行
    1535 在不违法规则的情况下,可以对数据进行修改
    1536 
    1537 create view myv_stu as
    1538   select sid,sname from student where ssex='男'
    1539 
    1540 select * from myv_stu
    1541 select * rowid.s,* from student s;
    1542 
    1543 
    1544 create or replace view avgMark as
    1545   select s.sid,sname ,avg(cmark) amk from student s left outer join mark m on s.sid=m.sid group by s.sid,sname;
    1546 select * from avgMark
    1547 
    1548   select sid,avg(cmark) amk from mark group by sid  ;
    1549 
    1550 select sid
    1551 from (select sid,avg(cmark) amk from mark group by sid) where amk=(select sid,avg(cmark) amk from mark group by sid  )
    1552 ---删除
    1553 truncate table student--永久性删除  DDL 不删除结构,删除数据
    1554 delete from student where 1=1--在roolback中回到初始值
    1555 
    1556 
    1557 
    1558 数据库编程
    1559 
    1560 plsql结构
    1561 【declare】可选项
    1562 
    1563   变量定义区
    1564   begin
    1565 代码区
    1566   【exception】
    1567 
    1568   异常处理区
    1569 end;
    1570 
    1571 
    1572 --赋值    i  NUMBER:=100;
    1573 DECLARE
    1574   i  NUMBER:=100;
    1575 
    1576   BEGIN
    1577   DBMS_OUTLN.PUT_LINE(i);
    1578 
    1579 
    1580 
    1581 end;
    1582 --赋值
    1583 DECLARE
    1584   i  number:=10002;
    1585   s  varchar2(100);
    1586 
    1587   BEGIN
    1588     select sname into s from student
    1589     where sid=i;
    1590   DBMS_OUTput.PUT_LINE(s);
    1591 
    1592 
    1593 
    1594 end;
    1595 
    1596 DECLARE
    1597   i  number:=10002;
    1598   age number;
    1599   s  varchar2(100);
    1600 
    1601   BEGIN
    1602     select sname,sage into s,age from student
    1603     where sid=i;
    1604   DBMS_OUTput.PUT_LINE(s||';'||age);
    1605 
    1606 
    1607 
    1608 
    1609 
    1610 
    1611 
    1612 
    1613 
    1614 
    1615 end;
    1616 
    1617 
    1618 
    1619 
    1620 select sname
    1621    from student s,(select sid,avg(cmark) from mark group by sid) m
    1622    where s.sid=m.sid
    1623 
    1624 
    1625 
    1626 create view am as
    1627 
    1628 select  sname,amk from student s,(select sid,avg(cmark) amk from mark group by sid) m
    1629 where s.sid=m.sid;
    1630 
    1631  select sid,avg(cmark) amk from mark group by sid m
    1632 
    1633 select * from am
    1634 
    1635 select sname, case
    1636 when amk>=90 then '优秀'
    1637            when amk>=80 then '良好'
    1638            when amk>=60 then '一般'
    1639 
    1640            else '不及格'
    1641            end
    1642 from am;
    1643 
    1644 
    1645 
    1646 
    1647 drop view am
    1648 
    1649 
    1650 declare
    1651   sno student.sid %type ;
    1652   begin
    1653   select sid from student where sname='&此人的学号为||sno'
    1654   exception
    1655   when too_many_rows then
    1656   dbns_output.put_line('异常')
    1657 
    1658 end;
    1659 
    1660 declare
    1661 snm student.snm %type ;
    1662   cnt number;
    1663 
    1664   begin
    1665   select sname into snm from student where sid='&此人为';
    1666 update student set scmark=scmark+5
    1667 where sid=(
    1668 select sid from student where snativeplace='安徽'
    1669     ) and (select avg(cmark) from mark where sid in (select sid from student where snativeplace='安徽') group by sid)<70
    1670     and cname='数学'
    1671 
    1672 
    1673   update student set scmark=scmark+2
    1674 where sid=(
    1675 select sid from student where snativeplace='北京'
    1676     ) and (select avg(cmark) from mark where sid in (select sid from student where snativeplace='北京'))<75
    1677 
    1678 cnt:=sql%rowcount;
    1679 
    1680 dbms_output.put_line('更新'||cnt||'门');
    1681 exception
    1682   when too_many_rows then
    1683   dbms_output.put_line('异常');
    1684   when no_data_found then
    1685   dbms_output.put_line('qw异常');
    1686  when others then
    1687   dbms_output.put_line('qw异常');
    1688   end;
    1689 
    1690 
    1691 
    1692 declare
    1693  snm student.sname%type:='请输入姓名';sno student.sid%type;
    1694 amk mark.cmark%type;
    1695   score mark.cmark%type;snt student.snativeplace%type;
    1696   cnt number;
    1697   cno course.cid%type;
    1698   begin
    1699   --取出所有数据,保存变量中
    1700   select sid,snativeplace into sno,snt
    1701     from student where sname=snm;
    1702     select avg(cmark) into  amk from mark where sid=sno;
    1703           select cid into cno from course where cname='数学';
    1704 
    1705     select cmark into score from mark where cid=cno and sid=sno;
    1706 
    1707   --条件判断
    1708   if snt='安徽' and amk<70
    1709 then
    1710   score:=score+5;
    1711     elsif
    1712     snt='北京' and amk<75
    1713     then
    1714      update mark set cmark=cmark+2
    1715 
    1716 
    1717     cnt:=sql%rowcount;
    1718     dbms_output.put_line('更新'||cnt||'门')
    1719   end if;
    1720   --在条件骨架插入
    1721   exception
    1722   when too_many_rows then
    1723   dbms_output.put_line('重复名字');
    1724   when no_data_found then
    1725   dbms_output.put_line('名字为口');
    1726  when others then
    1727   dbms_output.put_line('未知异常');
    1728   --异常
    1729 
    1730 end;
    1731 
    1732 
    1733 --第二题:
    1734 --扫描每个学生:
    1735 --如果这个学生来自壮族或者苗族,那么其各科成绩+3分,
    1736 --且不进行后续判断
    1737 --如果这个学生来自安徽,且均分低于70
    1738 --那么将其数学成绩+5分
    1739 --如果这个学生来自北京,且均分低于75分,那么将其各课
    1740 --成绩低于70分的课程成绩+2分,并打印共更新了几门课。
    1741 --当各学生成绩更新完毕后打印这个学生的各科成绩
    1742 --要求显示  XXX的数学成绩是。。。分,成绩优秀
    1743     --      XXX的英语成绩是。。。分,成绩良好-
    1744 
    1745     select * from student;
    1746 declare
    1747 snm student.sname%type;sno student.sid%type;
    1748 amk mark.cmark%type;
    1749   score mark.cmark%type;snt student.snativeplace%type;
    1750   cnt number;
    1751   cno course.cid%type;
    1752 sna student.snative%type;
    1753 line student%rowtype;
    1754   line2 course%rowtype;
    1755    cnm course.cname%type;
    1756    cM  course.cid%type;
    1757  begin
    1758   for line in (select * from student) loop
    1759   select sid into sno
    1760   from student
    1761   where sid = line.sid;
    1762 select sname into snm
    1763   from student
    1764   where sid = line.sid;
    1765   select snativeplace into snt
    1766   from student
    1767   where sid = sno;
    1768 select snative into sna
    1769   from student
    1770   where sid = sno;
    1771 
    1772   select avg(cmark) into amk
    1773   from mark
    1774   where sid = line.sid;
    1775 
    1776 select cid into cno from course where cname='数学';
    1777 
    1778 select cmark into score from mark where sid=sno and cid=cno;
    1779  if sna='壮族' or sna='苗族'
    1780  then
    1781    update mark set cmark=cmark+3
    1782    where sid=sno;
    1783    elsif
    1784    snt='安徽' and amk<70
    1785 then
    1786 update mark set cmark=cmark+5
    1787    where cid=score and sid=sno;
    1788     elsif
    1789     snt='北京' and amk<75
    1790     then
    1791      update mark set cmark=cmark+2
    1792 where sid = sno and cmark<70;
    1793 
    1794     cnt:=sql%rowcount;
    1795     dbms_output.put_line('更新'||cnt||'门')
    1796 end if;
    1797 for line2 in (select * from course) loop
    1798   select cid into cno
    1799   from course
    1800     where cid = line2.cid;
    1801     select cname into cnm
    1802   from course
    1803     where cid = line2.cid;
    1804     select cname into cnm
    1805   from course
    1806     where cid = cno;
    1807     select cmark into cmk
    1808   from mark
    1809     where cid = cno and sid =sno;
    1810     if cmk > 90
    1811         then
    1812           DBMS_OUTPUT.put_line(snm||'的'||cnm||'是'||cmk||',成绩优秀');
    1813       elsif cmk > 80
    1814         then
    1815           DBMS_OUTPUT.put_line(snm||'的'||cnm||'是'||cmk||',成绩良好');
    1816       elsif cmk > 60
    1817         then
    1818           DBMS_OUTPUT.put_line(snm||'的'||cnm||'是'||cmk||',成绩一般');
    1819       else
    1820           DBMS_OUTPUT.put_line(snm||'的'||cnm||'是'||cmk||',不及格');
    1821       end if;
    1822 
    1823 end loop;
    1824   end loop;
    1825 
    1826   exception
    1827   when too_many_rows then
    1828   dbms_output.put_line('重复名字');
    1829   when no_data_found then
    1830   dbms_output.put_line('名字为空');
    1831  when others then
    1832   dbms_output.put_line('未知异常');
    1833 end;
    1834 
    1835 
    1836 
    1837 
    1838 declare
    1839   line student%rowtype;
    1840   snm student.sname%type;
    1841   snv student.snative%type;
    1842   snp student.snativeplace%type;
    1843   sno student.sid%type;
    1844   amk mark.cmark%type;
    1845   cM  course.cid%type;
    1846   line2 course%rowtype;
    1847   cnm course.cname%type;
    1848   cno course.cid%type;
    1849   cmk mark.cmark%type;
    1850   cnt number;
    1851 
    1852 begin
    1853   for line in (select * from student) loop
    1854   select sid into sno
    1855   from  student
    1856   where sid = line.sid;
    1857   select sname into snm
    1858   from student
    1859   where sid = sno;
    1860   select snativeplace into snp
    1861   from student
    1862   where sid = sno;
    1863   select snative into snv
    1864   from student
    1865   where sid = sno;
    1866   select avg(cmark) into amk
    1867   from mark
    1868   where sid = sno;
    1869   select cid into cM
    1870   from course
    1871   where cname = '数学';
    1872 -----------------------------------------
    1873 
    1874   if snv = '壮族' or snv = '苗族'
    1875     then
    1876       update mark set cmark = cmark + 3
    1877       where sid = sno;
    1878   elsif snp = '安徽' and amk < 70
    1879   then
    1880     update mark set cmark = cmark + 5
    1881     where cid = cM and sid = sno;
    1882   elsif snp = '北京' and amk < 75
    1883   then
    1884     update mark set cmark = cmark + 2
    1885     where sid = sno and cmark < 70;
    1886     cnt := SQL%rowcount;
    1887     DBMS_OUTPUT.put_line('共更新了'||cnt||'门课');
    1888   end if;
    1889       for line2 in (select * from course) loop
    1890       select cid into cno
    1891       from course
    1892       where cid = line2.cid;
    1893       select cname into cnm
    1894       from course
    1895       where cid = cno;
    1896       select cmark into cmk
    1897       from mark
    1898       where cid = cno and sid = sno;
    1899       if cmk > 90
    1900         then
    1901           DBMS_OUTPUT.put_line(snm||'的'||cnm||'是'||cmk||',成绩优秀');
    1902       elsif cmk > 80
    1903         then
    1904           DBMS_OUTPUT.put_line(snm||'的'||cnm||'是'||cmk||',成绩良好');
    1905       elsif cmk > 60
    1906         then
    1907           DBMS_OUTPUT.put_line(snm||'的'||cnm||'是'||cmk||',成绩一般');
    1908       else
    1909           DBMS_OUTPUT.put_line(snm||'的'||cnm||'是'||cmk||',不及格');
    1910       end if;
    1911     end loop;
    1912   end loop;
    1913 end;
    1914 S
    1915 --第二题:
    1916 --扫描每个学生:
    1917 --如果这个学生来自壮族或者苗族,那么其各科成绩+3分,
    1918 --且不进行后续判断
    1919 --如果这个学生来自安徽,且均分低于70
    1920 --那么将其数学成绩+5分
    1921 --如果这个学生来自北京,且均分低于75分,那么将其各课
    1922 --成绩低于70分的课程成绩+2分,并打印共更新了几门课。
    1923 --当各学生成绩更新完毕后打印这个学生的各科成绩
    1924 --要求显示  XXX的数学成绩是。。。分,成绩优秀
    1925     --      XXX的英语成绩是。。。分,成绩良好-
    1926   select * from course
    1927       select * from student
    1928 
    1929 declare
    1930   line student%rowtype;
    1931   line2 course%rowtype;
    1932   snm student.sname%type;
    1933   sna student.snative%type;
    1934 snt student.snativeplace%type;
    1935 sno student.sid%type;
    1936   cmk mark.cmark%type;
    1937 amk mark.cmark%type;
    1938 cno course.cid%type;
    1939 cna course.cname%type;
    1940   cm course.cid%type;
    1941 
    1942 
    1943 
    1944   begin
    1945 
    1946 end;
    1947 
    1948 
    1949 
    1950 
    1951 select CID,cmark from MARK where SID=(select SID from STUDENT where SNAME='张三')
    1952 and CMARK=(select MAX(CMARK) from MARK m where SID=(select SID from STUDENT where SNAME='张三'));
    1953 --编写存储过程,modMK,要求输入学号,课程号,成绩
    1954 --如果学号不存在,课程号在成绩表中不存在,抛出异常
    1955 --如果sid和cid指定的记录不存在测向mark插入新的记录
    1956 --sid和cid在这条记录修改为新的marmark已经存在则如果
    1957 --如果输入的成绩参数小于0,和大于100,异常
    1958  create or replace  procedure qa(
    1959  sno in student.sid%type,
    1960 cna course.cid%type,
    1961 cm mark.cmark%type
    1962 )
    1963 as
    1964 
    1965   nsno student.sid%type;
    1966   ncna course.cid%type,
    1967 ncm mark.cmark%type
    1968 
    1969   begin
    1970    when cm<0 and cm>100
    1971      then
    1972   dbms_output.put_line('输入值不正确');
    1973   when sid!=sno then
    1974   dbms_output.put_line('学号不存在');
    1975    when cid!=cno then
    1976   dbms_output.put_line('课程号不存在');
    1977 
    1978     select cid into ncno from course where cid=cna;
    1979     select sid into nsno from student where sid=sno;
    1980     select cmark into ncm from mark where sid=sno and cid=cna;
    1981     select * from student s,mark m,course c where s.sid=m.sid and c.cid=m.cid  m;
    1982      if sid!=sno or cid!=cna
    1983        then
    1984        insert into m values (sno,cna,cm);
    1985      end if;
    1986      end;
    1987 
    1988 
    1989 select * from mark
    1990 exception
    1991   when too_many_rows then
    1992   dbms_output.put_line('重复名字');
    1993   when no_data_found then
    1994   dbms_output.put_line('名字为空');
    1995  when others then
    1996   dbms_output.put_line('未知异常');
    1997 
    1998 
    1999 
    2000 drop procedure qa
    2001  create or replace  procedure qa(
    2002  sno in student.sid%type,
    2003 cna in course.cid%type,
    2004 cm  in mark.cmark%type
    2005 )
    2006 as
    2007 
    2008   nsno student.sid%type;
    2009   ncna course.cid%type;
    2010 ncm mark.cmark%type;
    2011 numerro exception;
    2012   begin
    2013    if cm<0 or cm>100
    2014      then
    2015        raise numerro;
    2016        end if;
    2017 
    2018     select cid into ncna from course where cid=cna;
    2019     select sid into nsno from student where sid=sno;
    2020     select cmark into ncm from mark where sid=sno and cid=cna;
    2021 
    2022 
    2023      if sno!=nsno and cm !=ncm
    2024        then
    2025          insert into mark(sid,cid,cmark)values(sno,cna,cm);
    2026          elsif
    2027          sno = nsno and cm=ncm
    2028          then
    2029            update mark set cmark=cm
    2030            where sid=sno and cid=cna;
    2031            end if;
    2032 
    2033 exception
    2034   when NO_DATA_FOUND THEN
    2035     DBMS_OUTPUT.put_line('此用户不存在');
    2036   when OTHERS THEN
    2037     DBMS_OUTPUT.put_line('其他未知异常');
    2038 
    2039 
    2040 end;
    2041    begin
    2042      qa(10001,2001,45)
    2043    end;
    2044 
    2045   create table stubak
    2046   as select * from student where 1=2
    2047   select * from stubak
    2048   create or replace trigger stug
    2049   before delete on student--删除
    2050   begin
    2051   insert into stubak values(
    2052   :old.sid,:old.sname,:old.sage,:old.ssex,
    2053   :old.snativeplace,
    2054   :old.smajor,
    2055   :old.sclass,
    2056   :old.sname
    2057   ) ;
    2058  end;
    2059 
    2060 
    2061 
    2062 
    2063  create or replace trigger jf
    2064   after update on student
    2065   for each row
    2066    as
    2067   snm student.sname%type;
    2068   sno student.sid%type:='&请输入学生学号';
    2069   amk mark.cmark%type;
    2070 
    2071 
    2072 
    2073   begin
    2074   select sname into snm from student where sid =sno;
    2075 select avg(cmark) into amk from mark where sid=sno;
    2076 dbms_output.put_line(snm||'的均分是'||amk);
    2077 if amk>80
    2078   then
    2079   update student set
    2080     sclass='1班' ;
    2081    else
    2082   sclass='2班';
    2083 
    2084 
    2085 end if;
    2086 end;
    2087 
    2088 
    2089 
    2090 
    2091 -- 从账户一向账户二转账DECLARE
    2092   v_money NUMBER(8, 2); -- 转账金额
    2093   v_balance account.balance%TYPE; -- 账户余额
    2094 BEGIN
    2095   v_money := &转账金额; -- 输入转账金额
    2096   -- 从账户一减钱
    2097   UPDATE account SET balance = balance - v_money WHERE id=&转出账户
    2098   RETURNING balance INTO v_balance;
    2099   IF SQL%NOTFOUND THEN
    2100     RAISE_APPLICATION_ERROR(-20001, '没有该账户:'||&转出账户);
    2101   END IF;
    2102   IF v_balance < 0 THEN
    2103     RAISE_APPLICATION_ERROR(-20002, '账户余额不足');
    2104   END IF;
    2105 
    2106   -- 向账户二加钱
    2107   UPDATE account SET balance = balance + v_money WHERE id=&转入账户;
    2108   IF SQL%NOTFOUND THEN
    2109     RAISE_APPLICATION_ERROR(-20001, '没有该账户:'||&转入账户);
    2110   END IF;
    2111 
    2112   -- 如果没有异常,则提交事务
    2113   COMMIT;
    2114   DBMS_OUTPUT.PUT_LINE('转账成功');
    2115 
    2116   EXCEPTION
    2117     WHEN OTHERS THEN
    2118       ROLLBACK; -- 出现异常则回滚事务
    2119       DBMS_OUTPUT.PUT_LINE('转账失败:');
    2120       DBMS_OUTPUT.PUT_LINE(SQLERRM);END;
    2121 
    2122 
    2123 
    2124 ---
    2125 
    2126 Oracle 用户管理权限
    2127 
    2128 
    2129 CRESTE PROFILE LIM
    2130 failed_login_attempts 3;
    2131 
    2132 
    2133 ldentified
    2134 
    2135 select s.sid,avg(),from student s,mark m,course c where s.sid=m.sid and m.cid= c.cid  group by s.sid,m.cid;
    2136 select avg() from (select * from student s,mark m,course c where s.sid=m.sid and m.cid= c.cid )
    2137 
    2138 
    2139 select sid,avg(cmark) from (
    2140                            select * from student s,mark m,course c where s.sid=m.sid and m.cid= c.cid s)
    2141 group by sid
    2142 select sid,avg(cmark)  from STUDENT,mark,COURSE where STUDENT.sid=mark.sid and mark.cid=COURSE.cid
    2143 group by sid---各个地区数学均分
    2144 
    2145 
    2146 create view avg_w as
    2147   select s.sid,s.sname,avg(cmark) from student s,mark m,course c where s.sid=m.sid and m.cid= c.cid group by s.sid , c.sid;
    2148 
    2149 
    2150 delimiter//
    2151   create procedure add_pro
    2152   (a int,b int,out max int,out min int)
    2153   begin
    2154     set min = (select s.sid,min(cmark) from student s,mark m,course c where s.sid=m.sid and m.cid= c.cid group by s.sid);
    2155      set max= (select s.sid,max(cmark) from student s,mark m,course c where s.sid=m.sid and m.cid= c.cid group by s.sid);
    2156 
    2157 
    2158 select max(cmark) from mark
    2159 
    2160 select * from avgMark
    2161 
    2162 
    2163 
    2164 
    2165 delimiter//
    2166   create procedure add_pro
    2167   (a String,out max int,out min int)
    2168   begin
    2169     max=select s.sid,max(cmark)
    2170     from student s,mark m,course c
    2171     where s.sid=m.sid and m.cid= c.cid and s.sname = a group by s.sid;
    2172 
    2173 min=select s.sid,min(cmark)
    2174     from student s,mark m,course c
    2175     where s.sid=m.sid and m.cid= c.cid and s.sname = a group by s.sid;
    2176     end;
    2177 
    2178 
    2179 
    2180 
    2181 
    2182 
    2183 
    2184 
    2185 
    2186 
    2187 
    2188 
    2189 select s.sid,max(cmark)
    2190     from student s,mark m,course c
    2191     where s.sid=m.sid and m.cid= c.cid group by s.sid;
    2192 
  • 相关阅读:
    hdu 6702 ^&^ 位运算
    hdu 6709 Fishing Master 贪心
    hdu 6704 K-th occurrence 二分 ST表 后缀数组 主席树
    hdu 1423 Greatest Common Increasing Subsequence 最长公共上升子序列 LCIS
    hdu 5909 Tree Cutting FWT
    luogu P1588 丢失的牛 宽搜
    luogu P1003 铺地毯
    luogu P1104 生日
    luogu P1094 纪念品分组
    luogu P1093 奖学金
  • 原文地址:https://www.cnblogs.com/czg-0705/p/11396241.html
Copyright © 2011-2022 走看看