zoukankan      html  css  js  c++  java
  • Oracle入门基础(九)一一创建表和管理表

    练习:查询每一年入职人数及总人数
    SQL> select count(*) Total,
      2         sum(decode(to_char(hiredate,'yyyy'),'1980',1,0)) "1980",
      3         sum(decode(to_char(hiredate,'yyyy'),'1981',1,0)) "1981",
      4         sum(decode(to_char(hiredate,'yyyy'),'1982',1,0)) "1982",
      5         sum(decode(to_char(hiredate,'yyyy'),'1987',1,0)) "1987"
      6  from emp;
    
         TOTAL       1980       1981       1982       1987                                                                                                                                                  
    ---------- ---------- ---------- ---------- ----------                                                                                                                                                  
            14          1         10          1          2                                                                                                                                                  
    
    
    SQL> --创建表
    SQL> create table test1
      2  (tid number,tname varchar2(20));
    
    SQL> --rowid 行地址
    SQL> select rowid,empno,ename,sal from emp;
    
    ROWID                   EMPNO ENAME             SAL                                                                                                                                                     
    ------------------ ---------- ---------- ----------                                                                                                                                                     
    AAAMfPAAEAAAAAgAAA       7369 SMITH             800                                                                                                                                                     
    AAAMfPAAEAAAAAgAAB       7499 ALLEN            1600                                                                                                                                                     
    
    
    SQL> select * from emp where rowid='AAAMfPAAEAAAAAgAAJ';
    
         EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO                                                                                                              
    ---------- ---------- --------- ---------- -------------- ---------- ---------- ----------                                                                                                              
          7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0         30                                                                                                              
    
    已选择 1 行。
    
    SQL> --创建表:保存20号部门的员工
    SQL> create table emp20 as select * from emp where deptno=20;
    
    SQL> --创建表:员工号 姓名  月薪 年薪 部门名称
    SQL> create table empinfo as select e.empno,e.ename,e.sal,e.sal*12 annsal,d.dname
               from emp e,dept d where e.deptno=d.deptno;
    
    SQL> --修改表:增加新列,修改列,删除列,重命名列,重命名表
    SQL> --增加新列
    SQL> alter table test1 add photo blob;
    SQL> --修改列
    SQL> alter table test1 modify tname varchar2(40);
    SQL> --删除列
    SQL> alter table test1 drop column photo;
    SQL> --重命名列
    SQL> alter table test1 rename column tname to username;
    
    SQL> --重命名表
    SQL> rename test1 to test2;
    SQL> --删除表
    SQL> drop table TESTDELETE;
    
    SQL> --查看回收站
    SQL> show recyclebin;
    ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME          
    ---------------- ------------------------------ ------------ -------------------
    TESTDELETE       BIN$z6+GnIyhQtaIrbPpN1H99A==$0 TABLE        2016-10-06:15:24:14
    SQL> --清空回收站
    SQL> purge recyclebin;
    回收站已清空。
    
    SQL> select * from TESTSAVEPOINT;
    
           TID TNAME                                                                
    ---------- --------------------                                                 
             1 Tom                                                                  
             2 Mary                                                                 
    
    已选择 2 行。
    
    SQL> drop table TESTSAVEPOINT;
    
    表已删除。
    
    SQL> show recyclebin;
    ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME          
    ---------------- ------------------------------ ------------ -------------------
    TESTSAVEPOINT    BIN$384BF4yOT+aAlXzC7eLPIA==$0 TABLE        2016-10-06:15:28:07
    SQL> select * from TESTSAVEPOINT;
    select * from TESTSAVEPOINT
                  *
    第 1 行出现错误: 
    ORA-00942: 表或视图不存在 
    
    
    SQL> select * from tab;
    
    TNAME                          TABTYPE  CLUSTERID                               
    ------------------------------ ------- ----------                               
    DEPT                           TABLE                                                                                      
    BIN$384BF4yOT+aAlXzC7eLPIA==$0 TABLE                                            
    
    
    SQL> select * from "BIN$384BF4yOT+aAlXzC7eLPIA==$0";
    
           TID TNAME                                                                
    ---------- --------------------                                                 
             1 Tom                                                                  
             2 Mary                                                                 
    
    已选择 2 行。
    
    SQL> --注意:管理员没有回收站
    SQL> show user
    USER 为 "SCOTT"
    SQL> show recyclebin;
    ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME          
    ---------------- ------------------------------ ------------ -------------------
    TESTSAVEPOINT    BIN$384BF4yOT+aAlXzC7eLPIA==$0 TABLE        2016-10-06:15:28:07
    SQL> --闪回删除 ---> 回收站
    SQL> flashback table TESTSAVEPOINT to before drop;
    
    闪回完成。
    
    SQL> show recyclebin;
    SQL> select * from TESTSAVEPOINT;
    
           TID TNAME                                                                
    ---------- --------------------                                                 
             1 Tom                                                                  
             2 Mary                                                                 
    
    已选择 2 行。
    
    SQL> create table test3
      2  (tid number,
      3   tname varchar2(20),
      4   gender varchar2(2) check (gender in ('男','女')),
      5   sal  number check (sal > 0)
      6  );
    
    表已创建。
    
    SQL> insert into test3 values(1,'Tom','男',2000);
    
    已创建 1 行。
    
    SQL> insert into test3 values(2,'Mike','啊',2000);
    insert into test3 values(2,'Mike','啊',2000)
    *
    第 1 行出现错误: 
    ORA-02290: 违反检查约束条件 (SCOTT.SYS_C005393) 
    
    SQL> create table student
      2  (
      3   sid number constraint student_pk primary key,
      4   sname varchar2(20) constraint student_name_notnull not null,
      5   gender varchar2(2) constraint student_gender check (gender in ('男','女')),
      6   email varchar2(40) constraint student_email_unique unique
      7                      constraint student_email_notnull not null,
      8   deptno number constraint student_fk references dept(deptno) on delete set null
      9  );
    SQL> insert into student values(1,'Tom','男','tom@126.com',10);
    
    已创建 1 行。
    
    SQL> insert into student values(2,'Mike','男','tom@126.com',10);
    insert into student values(2,'Mike','男','tom@126.com',10)
    *
    第 1 行出现错误: 
    ORA-00001: 违反唯一约束条件 (SCOTT.STUDENT_EMAIL_UNIQUE) 
    
  • 相关阅读:
    redis--pipelining管道
    插入排序
    选择排序
    冒泡排序
    网页表格导入导出Excel
    easyUI的datagrid表格的使用
    软件工程实践总结(个人)
    Beta答辩总结
    Beta冲刺7
    Beta冲刺6
  • 原文地址:https://www.cnblogs.com/Aaron-007/p/12814622.html
Copyright © 2011-2022 走看看