zoukankan      html  css  js  c++  java
  • Oracle第五课课后作业

    Oracle第五课课后作业

    一、DQL(data query language)数据查询语言

    1. 建班级表

      CREATE TABLE t_clazz2(
      ID CHAR(7) PRIMARY KEY CHECK(regexp_like(ID,'^d{7}$')),
      NAME VARCHAR(20) NOT NULL unique CHECK(regexp_like(NAME,'[' || unistr('4e00') || '-' || unistr('9fa5') || ']'))
      );
      -- 向班级表中插入数据
      INSERT INTO t_clazz2(ID,NAME) VALUES('1820551','网工一班');
      INSERT INTO t_clazz2(ID,NAME) VALUES('1820221','电子一班');
      INSERT INTO t_clazz2(ID,NAME) VALUES('1820222','电子二班');
      -- 测试班级名称的唯一性
      INSERT INTO t_clazz2(ID,NAME) VALUES('1820223','电子二班');
      -- 测试班号不是7位数
      INSERT INTO t_clazz2(ID,NAME) VALUES('182023','电子三班');

      -- 查询班级表
      SELECT * FROM t_clazz2;
    2. 建学生表

      CREATE TABLE t_student2(
      ID CHAR(9) PRIMARY KEY CHECK(regexp_like(ID,'^d{9}$')),
      NAME VARCHAR(14) NOT NULL  CHECK(regexp_like(NAME,'[' || unistr('4e00') || '-' || unistr('9fa5') || ']')),
      sex NUMBER(1) DEFAULT 0 NOT NULL ,
      age NUMBER(3) DEFAULT 0 NOT NULL ,
      clazz CONSTRAINT fk_clazzid REFERENCES t_clazz2(ID)
      );
      -- 向学生表中插入数据
      INSERT INTO t_student2(ID,NAME,sex,age,clazz) VALUES('182055116','谭艺',0,18,'1820551');
      INSERT INTO t_student2(ID,NAME,sex,age,clazz) VALUES('182055113','邓婕',1,18,'1820551');
    3. 多表连接

      -- 内连接
      SELECT * FROM t_student2 t,t_clazz2 c WHERE t.clazz=c.id;
      -- 左连接
      SELECT * FROM t_student2 t LEFT JOIN t_clazz2 c ON t.clazz=c.id;
      -- 右连接
      SELECT * FROM t_student2 t RIGHT JOIN t_clazz2 c ON t.clazz=c.id;
      -- 全连接
      SELECT * FROM t_student2 t FULL JOIN t_clazz2 c ON t.clazz=c.id;
    4. 分页查询

      -- 分页查询
      SELECT * FROM (SELECT p.*,ROWNUM rn FROM (SELECT s.* FROM t_student2 s ORDER BY ID) p) o WHERE o.rn>(n-1)*5 AND o.rn<=n*5;

    二、TCL(transaction control language)事务控制语言

    -- 提交事务
    commit;
    -- 事务回滚
    rollback;
    -- 设置标志
    savepoint p1;
    -- 插入数据
    insert into emp(empno) values(5);
    -- 回滚到标志处
    rollback to p1;

    三、DCL(data control language)数据控制语言

    • 作用:给用户分配权限,角色

    • -- 创建角色
      create role 角色名;
      -- 分配权限
      grant select on class to 角色名;

    四、索引

      • 字典中有索引,书中有目录

      • 快速查询数据

      • 优点:DQL快速查询,为了保证查询速度,可以牺牲一定的空间和DML的操作时间

      • 缺点:占空间(在保存正常业务数据的同时,还要额外的存储索引信息),在维护正常业务数据的同时,还要维护索引的数据(占时间)

      • 什么情况下适合建立索引

        • 一个条件经常出现在where中,就要考虑是否要建立索引

        • 对于列中的数据区分度比较高的列也可以建立索引(反例:性别不适合)

        • 如果同时又多个查询条件,where c1=a and c2 = b,建立联合索引(c1,c2),索引中的列的顺序和where条件中的顺序尽量一致

          • 索引(c1,c2...)条件是where c1 = a and c2=b 这个是好的,条件是where c2=b这个不是特别理想,或者where c2=b and c1 = a这个也不好

      • 索引的分类

        • 聚集索引:会改变记录的物理位置

        • 非聚集索引:数据的顺序和它插入时的顺序一致,在索引中保存的是记录的rowid,找到索引,然后找到rowid,然后找到记录

        • name1row1
          name2 row3
          name3 row4
          name4 row2

          -- 上面的表格为非聚集索引表格,里面存储了rowid

          -- 姓名列在插入时的数据是name1,name4,name2,name3,建立索引后不会改变插入顺序

          -- 在索引中的顺序是name1,name2,name3,name4

          -- 要找name3,根据算法在索引表里找到name3对应的物理地址(row4),很快定位到name3这条记录



    软件下载提取码:qwer
  • 相关阅读:
    Win10 WSL Ubuntu18.04 编译安装MySQL5.7
    PHP7 深入理解
    php session 测试
    nginx 匹配路由分发php和golang
    composer 库无法提交git
    Win10 1803安装Ubuntu1804子系统
    dhtmlxTreeGrid使用
    win7 64位系统下安装PL/SQL连接Oracle服务器的解决方法
    转载--eclipse快捷键
    JUnit4学习笔记2-Eclipse中使用JUint4进行单元测试
  • 原文地址:https://www.cnblogs.com/ty0910/p/14298866.html
Copyright © 2011-2022 走看看