zoukankan      html  css  js  c++  java
  • oracle 数据库基本操作二——数据操纵语言

    1.  (插入数据)  按前面各表中的数据分别插入到教学数据库的四个数据库表中。将自己的信息作为数据插入到学生表(学号的后5位作为学生表的学号),向Score表中插入相应的选课数据。
      insert into Student(SNO,SNAME,SDEPT,SCLASS,SSEX,SAGE) values('96001','马小燕','CS','01','','21');
      insert into Student(SNO,SNAME,SDEPT,SCLASS,SSEX,SAGE) values('96002','黎明','CS','01','','18');
      insert into Student(SNO,SNAME,SDEPT,SCLASS,SSEX,SAGE) values('96003','刘东明','MA','01','','18');
      insert into Student(SNO,SNAME,SDEPT,SCLASS,SSEX,SAGE) values('96004','赵志勇','IS','02','','20');
      insert into Student(SNO,SNAME,SDEPT,SCLASS,SSEX,SAGE) values('97001','马蓉','MA','02','','19');
      insert into Student(SNO,SNAME,SDEPT,SCLASS,SSEX,SAGE) values('97002','李成功','CS','01','','20');
      insert into Student(SNO,SNAME,SDEPT,SCLASS,SSEX,SAGE) values('97003','黎明','IS','03','','19');
      insert into Student(SNO,SNAME,SDEPT,SCLASS,SSEX,SAGE) values('97004','李丽','CS','02','','19');
      insert into Student(SNO,SNAME,SDEPT,SCLASS,SSEX,SAGE) values('96005','司马志明','CS','02','','18');
      insert into Student(SNO,SNAME,SDEPT,SCLASS,SSEX,SAGE) values('74277','**','CS','01','','20');
      insert into Course(CNO,CNAME,CTIME) values('001','数学分析','144');
      insert into Course(CNO,CNAME,CTIME) values('002','普通物理','144');
      insert into Course(CNO,CNAME,CTIME) values('003','微机原理','72');
      insert into Course(CNO,CNAME,CTIME) values('004','数据结构','72');
      insert into Course(CNO,CNAME,CTIME) values('005','操作系统','64');
      insert into Course(CNO,CNAME,CTIME) values('006','数据库原理','64');
      insert into Course(CNO,CNAME,CTIME) values('007','DB_Design','48');
      insert into Course(CNO,CNAME,CTIME) values('008','程序设计','56');
      
      insert into Teach(TNAME,TSEX,CNO,TDATE,TDEPT) values('王成刚','','004',to_date('1999-9-5','yyyy-mm-dd'),'CS');
      insert into Teach(TNAME,TSEX,CNO,TDATE,TDEPT) values('李正科','','003',to_date('1999-9-5','yyyy-mm-dd'),'CS');
      insert into Teach(TNAME,TSEX,CNO,TDATE,TDEPT) values('严敏','','001',to_date('1999-9-5','yyyy-mm-dd'),'MA');
      insert into Teach(TNAME,TSEX,CNO,TDATE,TDEPT) values('赵高','','004',to_date('1999-9-5','yyyy-mm-dd'),'IS');
      insert into Teach(TNAME,TSEX,CNO,TDATE,TDEPT) values('李正科','','003',to_date('2000-2-23','yyyy-mm-dd'),'MA');
      insert into Teach(TNAME,TSEX,CNO,TDATE,TDEPT) values('刘玉兰','','006',to_date('2000-2-23','yyyy-mm-dd'),'CS');
      insert into Teach(TNAME,TSEX,CNO,TDATE,TDEPT) values('王成刚','','004',to_date('2000-2-23','yyyy-mm-dd'),'IS');
      insert into Teach(TNAME,TSEX,CNO,TDATE,TDEPT) values('马跃','','008',to_date('2000-9-6','yyyy-mm-dd'),'CS');
      insert into Teach(TNAME,TSEX,CNO,TDATE,TDEPT) values('王成刚','','007',to_date('1999-9-5','yyyy-mm-dd'),'CS');
      
      insert into Score(SNO,CNO,SCORE) values('96001','001','77.5');
      insert into Score(SNO,CNO,SCORE) values('96001','003','89');
      insert into Score(SNO,CNO,SCORE) values('96001','004','86');
      insert into Score(SNO,CNO,SCORE) values('96001','005','82');
      insert into Score(SNO,CNO,SCORE) values('96002','001','88');
      insert into Score(SNO,CNO,SCORE) values('96002','003','92.5');
      insert into Score(SNO,CNO,SCORE) values('96002','006','90');
      insert into Score(SNO,CNO,SCORE) values('96005','004','92');
      insert into Score(SNO,CNO,SCORE) values('96005','005','90');
      insert into Score(SNO,CNO,SCORE) values('96005','006','89');
      insert into Score(SNO,CNO,SCORE) values('96005','007','76');
      insert into Score(SNO,CNO,SCORE) values('96003','001','69');
      insert into Score(SNO,CNO,SCORE) values('97001','001','96');
      insert into Score(SNO,CNO,SCORE) values('97001','008','95');
      insert into Score(SNO,CNO,SCORE) values('96004','001','87');
      insert into Score(SNO,CNO,SCORE) values('96003','003','91');
      insert into Score(SNO,CNO,SCORE) values('97002','003','91');
      insert into Score(SNO,CNO,SCORE) values('97002','004','');
      insert into Score(SNO,CNO,SCORE) values('97002','006','92');
      insert into Score(SNO,CNO,SCORE) values('97004','005','90');
      insert into Score(SNO,CNO,SCORE) values('97004','006','85');
      insert into Score(SNO,CNO,SCORE) values('97004','008','75');
      insert into Score(SNO,CNO,SCORE) values('97003','001','59');
      insert into Score(SNO,CNO,SCORE) values('97003','003','58'); 
    2.  (多行插入)  将表Student中在计算机系(‘CS’)的学生数据插入到表Student_Temp中。(以上操作中,注意用COMMIT提交数据,将数据保存到数据库服务器)
      insert into student_temp(sno,sname,sd,sa) select sno,sname,sdept,sage from student where sdept='CS';
      
      commit;
    3.  (利用查询来实现表的定义与数据插入)  求每一个学生的平均成绩,把结果存入数据库表Student_Gr中。
      create table student_gr ( sno char(5) not null,sname char(16),avgs number(5,2));

      insert
      into student_gr(sno,sname,avgs) select score.sno,sname,avg(score) from student,score
      where student.sno=score.sno group by score.sno,sname;
    4.  (修改数据)  将Student_Temp表中所有学生的年龄加2。
      update student_temp set sa=sa+2;
    5.  (修改数据)  将Course表中‘程序设计’课时数修改成与‘数据结构’的课时数相同。
      update course set ctime = (select ctime from course where cname='数据结构') where cname = '程序设计';
    6.  (插入数据)  向Score表中插入数据(‘98001’, ‘001’, 95),根据返回信息解释其原因。
      SQL> insert into score(sno,cno,score) values('98001','001',95);
      insert into score(sno,cno,score) values('98001','001',95)
      *1 行出现错误:
      ORA-02291: 违反完整约束条件 (SUNC.S_SNO_FK) - 未找到父项关键字
      
      SQL> select * from student where sno = '98001';
      
      未选定行


      原因:Score表受sunc.s_sno_fk外键在Student表中的约束,因为Student表中没有学号为'98001'的同学,故在Score表中无法插入此条数据。
    7.  (插入数据)  向Score表中插入数据(‘97001’, ‘010’, 80),根据返回信息解释其原因。
      SQL> insert into score(sno,cno,score) values('97001','010',80);
      insert into score(sno,cno,score) values('97001','010',80)
      *1 行出现错误:
      ORA-02291: 违反完整约束条件 (SUNC.S_CNO_FK) - 未找到父项关键字
      
      
      SQL> select * from student where sno = '97001';
      
      SNO              SAGE SDEP SSEX   SCLA SNAME
      ---------- ---------- ---- ------ ---- --------------------------------
      97001              19 MA   女     02   马蓉
      
      SQL> select * from course where cno = '010';
      
      未选定行


      原因:Score表中有两个外键,必须同时满足Student和Course中对应的键,有一个不存在都不可以在Score表中插入数据
    8.  (删除数据)  删除Student表中学号为‘96001’的学生信息,根据返回信息解释其原因。
      SQL> delete from student where sno = '96001';
      delete from student where sno = '96001'
      *1 行出现错误:
      ORA-02292: 违反完整约束条件 (SUNC.S_SNO_FK) - 已找到子记录
      
      SQL> select * from score where sno = '96001';
      
      SNO        CNO         SCORE
      ---------- ------ ----------
      96001      001            78
      96001      003            89
      96001      004            86
      96001      005            82

      原因:受外键的约束,子表已经存在此外键信息,故不能删除;
      通过子查询查询子表,查到关于学号为96001的同学已存在的数据,如果要让Student表删除掉学号为96001的同学,必须先从子表开始删除数据;

    9.  (删除数据)  删除Course表中课程号为‘003’ 的课程信息,根据返回信息解释其原因。
      SQL> delete from course where cno = '003';
      delete from course where cno = '003'
      *1 行出现错误:
      ORA-02292: 违反完整约束条件 (SUNC.TEACH_CNO_FK) - 已找到子记录
      SQL> select * from course where cno = '003';
      
      CNO    CNAME                                    CTIME
      ------ ---------------------------------------- ----------------
      003    微机原理                                 72

      原因:受外键的约束,子表已经存在此外键信息,故不能删除;
      通过子查询查询子表,查到关于课程号为‘003’的同学已存在的数据,如果要让Course表删除掉课程号为‘003’的同学,必须先从子表开始删除数据;

    10.  (删除数据)  删除学生表Student_Temp中学号以96打头的学生信息。(此操作后,注意用ROLLBACK回退可能更新的数据)
       delete from student_temp where sno like '96%';
      
      //回退数据
       rollback;
    11. (删除数据)  删除数据库表Student_Temp中所有学生的数据。
      delete from student_temp;
    12. (删除表)    删除数据库表Student_Temp和Student_Gr。
      drop table student_temp;
      drop table student_gr;

      创建表时一定要细心,在插入数据是出现各种各样的错误,最后通过修改表的属性等操作终于完成了数据插入;

      用to_date('2000-2-23','yyyy-mm-dd')在插入数据时设置时间格式;

      alter session set nls_date_format='yyyy-mm-dd';将日期设置成年月日格式;

      因为同一个课程可以多位老师教学,所以不需要设置主键,否则数据插入会出现问题;

      在使用相似匹配时依然用等号,导致不知错在哪,最后查阅资料发现是like!

  • 相关阅读:
    前端组件库
    lazyload隐藏元素不生效处理方法
    Javascript规范
    发送验证码
    flex
    css3转圈
    1.15考试总结
    [violet]蒲公英题解
    ubuntu和windows下的程序对拍
    [Poetize6] IncDec Sequence题解
  • 原文地址:https://www.cnblogs.com/a1982467767/p/7705418.html
Copyright © 2011-2022 走看看