zoukankan      html  css  js  c++  java
  • sqlplus运行sql文件并且创建scott默认数据表

    今天买了Oracle Database 9i/10g/11g编程艺术:深入数据库体系结构(第2版)这本书,该书中的实例都是在SCOTT/TIGER模式下进行的,在我们安装数据库的时候,可以直接选择SCOTT这个模式,如果没有的话,也可以手动创建,这里提到了demobld.sql。那么如何使用demobld.sql文件来创建SCOTT这个模式中的表呢?

    首先使用sqlplus连接数据,连接代码如下:

    C:\Users\xuwei>sqlplus scott/tiger@orcl

    然后执行如下运行sql文件的代码

    SQL> @d:\demobld.sql

    demobld.sql文件放在D盘根目录下面,demobld.sql内容如下:

    View Code
    --
    -- Copyright (c) Oracle Corporation 1988, 1999.  All Rights Reserved.
    --
    --  NAME
    --    demobld.sql
    --
    -- DESCRIPTION
    --   This script creates the SQL*Plus demonstration tables in the
    --   current schema.  It should be STARTed by each user wishing to
    --   access the tables.  To remove the tables use the demodrop.sql
    --   script.
    --
    --  USAGE
    --       SQL> START demobld.sql
    --
    --
    
    SET TERMOUT ON
    PROMPT Building demonstration tables.  Please wait.
    SET TERMOUT OFF
    
    CREATE TABLE BONUS
            (ENAME VARCHAR2(10),
             JOB   VARCHAR2(9),
             SAL   NUMBER,
             COMM  NUMBER);
    
    CREATE TABLE EMP
           (EMPNO NUMBER(4) NOT NULL,
            ENAME VARCHAR2(10),
            JOB VARCHAR2(9),
            MGR NUMBER(4),
            HIREDATE DATE,
            SAL NUMBER(7, 2),
            COMM NUMBER(7, 2),
            DEPTNO NUMBER(2));
    
    INSERT INTO EMP VALUES
            (7369, 'SMITH',  'CLERK',     7902,
            TO_DATE('17-DEC-1980', 'DD-MON-YYYY'),  800, NULL, 20);
    INSERT INTO EMP VALUES
            (7499, 'ALLEN',  'SALESMAN',  7698,
            TO_DATE('20-FEB-1981', 'DD-MON-YYYY'), 1600,  300, 30);
    INSERT INTO EMP VALUES
            (7521, 'WARD',   'SALESMAN',  7698,
            TO_DATE('22-FEB-1981', 'DD-MON-YYYY'), 1250,  500, 30);
    INSERT INTO EMP VALUES
            (7566, 'JONES',  'MANAGER',   7839,
            TO_DATE('2-APR-1981', 'DD-MON-YYYY'),  2975, NULL, 20);
    INSERT INTO EMP VALUES
            (7654, 'MARTIN', 'SALESMAN',  7698,
            TO_DATE('28-SEP-1981', 'DD-MON-YYYY'), 1250, 1400, 30);
    INSERT INTO EMP VALUES
            (7698, 'BLAKE',  'MANAGER',   7839,
            TO_DATE('1-MAY-1981', 'DD-MON-YYYY'),  2850, NULL, 30);
    INSERT INTO EMP VALUES
            (7782, 'CLARK',  'MANAGER',   7839,
            TO_DATE('9-JUN-1981', 'DD-MON-YYYY'),  2450, NULL, 10);
    INSERT INTO EMP VALUES
            (7788, 'SCOTT',  'ANALYST',   7566,
            TO_DATE('09-DEC-1982', 'DD-MON-YYYY'), 3000, NULL, 20);
    INSERT INTO EMP VALUES
            (7839, 'KING',   'PRESIDENT', NULL,
            TO_DATE('17-NOV-1981', 'DD-MON-YYYY'), 5000, NULL, 10);
    INSERT INTO EMP VALUES
            (7844, 'TURNER', 'SALESMAN',  7698,
            TO_DATE('8-SEP-1981', 'DD-MON-YYYY'),  1500, NULL, 30);
    INSERT INTO EMP VALUES
            (7876, 'ADAMS',  'CLERK',     7788,
            TO_DATE('12-JAN-1983', 'DD-MON-YYYY'), 1100, NULL, 20);
    INSERT INTO EMP VALUES
            (7900, 'JAMES',  'CLERK',     7698,
            TO_DATE('3-DEC-1981', 'DD-MON-YYYY'),   950, NULL, 30);
    INSERT INTO EMP VALUES
            (7902, 'FORD',   'ANALYST',   7566,
            TO_DATE('3-DEC-1981', 'DD-MON-YYYY'),  3000, NULL, 20);
    INSERT INTO EMP VALUES
            (7934, 'MILLER', 'CLERK',     7782,
            TO_DATE('23-JAN-1982', 'DD-MON-YYYY'), 1300, NULL, 10);
    
    CREATE TABLE DEPT
           (DEPTNO NUMBER(2),
            DNAME VARCHAR2(14),
            LOC VARCHAR2(13) );
    
    INSERT INTO DEPT VALUES (10, 'ACCOUNTING', 'NEW YORK');
    INSERT INTO DEPT VALUES (20, 'RESEARCH',   'DALLAS');
    INSERT INTO DEPT VALUES (30, 'SALES',      'CHICAGO');
    INSERT INTO DEPT VALUES (40, 'OPERATIONS', 'BOSTON');
    
    CREATE TABLE SALGRADE
            (GRADE NUMBER,
             LOSAL NUMBER,
             HISAL NUMBER);
    
    INSERT INTO SALGRADE VALUES (1,  700, 1200);
    INSERT INTO SALGRADE VALUES (2, 1201, 1400);
    INSERT INTO SALGRADE VALUES (3, 1401, 2000);
    INSERT INTO SALGRADE VALUES (4, 2001, 3000);
    INSERT INTO SALGRADE VALUES (5, 3001, 9999);
    
    COMMIT;
    
    SET TERMOUT ON
    PROMPT Demonstration table build is complete.

    为上述表添加约束

    View Code
    alter table emp add constraint emp_pk primary key(empno); 
    alter table dept add constraint dept_pk primary key(deptno); 
    alter table emp add constraint emp_fk_dept  
                                     foreign key(deptno) references dept; 
    alter table emp add constraint emp_fk_emp foreign key(mgr) references emp; 

    PS:emp数据格式错误,按照如下修改。

    按上述操作发现emp表虽然创建成功,但是数据没有插入成功。是因为一起格式的问题。我们将原来的 TO_DATE('23-JAN-1982', 'DD-MON-YYYY')转换成 TO_DATE('23-1-1982', 'DD-MM-YYYY')这样的格式。插入脚本如下:

    View Code
    INSERT INTO EMP VALUES
            (7369, 'SMITH',  'CLERK',     7902,
            TO_DATE('17-12-1980', 'DD-MM-YYYY'),  800, NULL, 20);
    INSERT INTO EMP VALUES
            (7499, 'ALLEN',  'SALESMAN',  7698,
            TO_DATE('20-2-1981', 'DD-MM-YYYY'), 1600,  300, 30);
    INSERT INTO EMP VALUES
            (7521, 'WARD',   'SALESMAN',  7698,
            TO_DATE('22-2-1981', 'DD-MM-YYYY'), 1250,  500, 30);
    INSERT INTO EMP VALUES
            (7566, 'JONES',  'MANAGER',   7839,
            TO_DATE('2-4-1981', 'DD-MM-YYYY'),  2975, NULL, 20);
    INSERT INTO EMP VALUES
            (7654, 'MARTIN', 'SALESMAN',  7698,
            TO_DATE('28-9-1981', 'DD-MM-YYYY'), 1250, 1400, 30);
    INSERT INTO EMP VALUES
            (7698, 'BLAKE',  'MANAGER',   7839,
            TO_DATE('1-5-1981', 'DD-MM-YYYY'),  2850, NULL, 30);
    INSERT INTO EMP VALUES
            (7782, 'CLARK',  'MANAGER',   7839,
            TO_DATE('9-1-1981', 'DD-MM-YYYY'),  2450, NULL, 10);
    INSERT INTO EMP VALUES
            (7788, 'SCOTT',  'ANALYST',   7566,
            TO_DATE('09-12-1982', 'DD-MM-YYYY'), 3000, NULL, 20);
    INSERT INTO EMP VALUES
            (7839, 'KING',   'PRESIDENT', NULL,
            TO_DATE('17-11-1981', 'DD-MM-YYYY'), 5000, NULL, 10);
    INSERT INTO EMP VALUES
            (7844, 'TURNER', 'SALESMAN',  7698,
            TO_DATE('8-9-1981', 'DD-MM-YYYY'),  1500, NULL, 30);
    INSERT INTO EMP VALUES
            (7876, 'ADAMS',  'CLERK',     7788,
            TO_DATE('12-1-1983', 'DD-MM-YYYY'), 1100, NULL, 20);
    INSERT INTO EMP VALUES
            (7900, 'JAMES',  'CLERK',     7698,
            TO_DATE('3-12-1981', 'DD-MM-YYYY'),   950, NULL, 30);
    INSERT INTO EMP VALUES
            (7902, 'FORD',   'ANALYST',   7566,
            TO_DATE('3-12-1981', 'DD-MM-YYYY'),  3000, NULL, 20);
    INSERT INTO EMP VALUES
            (7934, 'MILLER', 'CLERK',     7782,
            TO_DATE('23-1-1982', 'DD-MM-YYYY'), 1300, NULL, 10);
    
    INSERT INTO EMP VALUES
            (7934, 'MILLER', 'CLERK',     7782,
            TO_DATE('23-1-1982', 'DD-MM-YYYY'), 1300, NULL, 10);

    PS:2012-6-19附上完整正确的demobld.sql

    View Code
    --
    -- Copyright (c) Oracle Corporation 1988, 1999.  All Rights Reserved.
    --
    --  NAME
    --    demobld.sql
    --
    -- DESCRIPTION
    --   This script creates the SQL*Plus demonstration tables in the
    --   current schema.  It should be STARTed by each user wishing to
    --   access the tables.  To remove the tables use the demodrop.sql
    --   script.
    --
    --  USAGE
    --       SQL> START demobld.sql
    --
    --
    
    SET TERMOUT ON
    PROMPT Building demonstration tables.  Please wait.
    SET TERMOUT OFF
    
    CREATE TABLE BONUS
            (ENAME VARCHAR2(10),
             JOB   VARCHAR2(9),
             SAL   NUMBER,
             COMM  NUMBER);
    
    CREATE TABLE EMP
           (EMPNO NUMBER(4) NOT NULL,
            ENAME VARCHAR2(10),
            JOB VARCHAR2(9),
            MGR NUMBER(4),
            HIREDATE DATE,
            SAL NUMBER(7, 2),
            COMM NUMBER(7, 2),
            DEPTNO NUMBER(2));
    
    INSERT INTO EMP VALUES
            (7369, 'SMITH',  'CLERK',     7902,
            TO_DATE('17-12-1980', 'DD-MM-YYYY'),  800, NULL, 20);
    INSERT INTO EMP VALUES
            (7499, 'ALLEN',  'SALESMAN',  7698,
            TO_DATE('20-2-1981', 'DD-MM-YYYY'), 1600,  300, 30);
    INSERT INTO EMP VALUES
            (7521, 'WARD',   'SALESMAN',  7698,
            TO_DATE('22-2-1981', 'DD-MM-YYYY'), 1250,  500, 30);
    INSERT INTO EMP VALUES
            (7566, 'JONES',  'MANAGER',   7839,
            TO_DATE('2-4-1981', 'DD-MM-YYYY'),  2975, NULL, 20);
    INSERT INTO EMP VALUES
            (7654, 'MARTIN', 'SALESMAN',  7698,
            TO_DATE('28-9-1981', 'DD-MM-YYYY'), 1250, 1400, 30);
    INSERT INTO EMP VALUES
            (7698, 'BLAKE',  'MANAGER',   7839,
            TO_DATE('1-5-1981', 'DD-MM-YYYY'),  2850, NULL, 30);
    INSERT INTO EMP VALUES
            (7782, 'CLARK',  'MANAGER',   7839,
            TO_DATE('9-1-1981', 'DD-MM-YYYY'),  2450, NULL, 10);
    INSERT INTO EMP VALUES
            (7788, 'SCOTT',  'ANALYST',   7566,
            TO_DATE('09-12-1982', 'DD-MM-YYYY'), 3000, NULL, 20);
    INSERT INTO EMP VALUES
            (7839, 'KING',   'PRESIDENT', NULL,
            TO_DATE('17-11-1981', 'DD-MM-YYYY'), 5000, NULL, 10);
    INSERT INTO EMP VALUES
            (7844, 'TURNER', 'SALESMAN',  7698,
            TO_DATE('8-9-1981', 'DD-MM-YYYY'),  1500, NULL, 30);
    INSERT INTO EMP VALUES
            (7876, 'ADAMS',  'CLERK',     7788,
            TO_DATE('12-1-1983', 'DD-MM-YYYY'), 1100, NULL, 20);
    INSERT INTO EMP VALUES
            (7900, 'JAMES',  'CLERK',     7698,
            TO_DATE('3-12-1981', 'DD-MM-YYYY'),   950, NULL, 30);
    INSERT INTO EMP VALUES
            (7902, 'FORD',   'ANALYST',   7566,
            TO_DATE('3-12-1981', 'DD-MM-YYYY'),  3000, NULL, 20);
    INSERT INTO EMP VALUES
            (7934, 'MILLER', 'CLERK',     7782,
            TO_DATE('23-1-1982', 'DD-MM-YYYY'), 1300, NULL, 10);
    
    INSERT INTO EMP VALUES
            (7934, 'MILLER', 'CLERK',     7782,
            TO_DATE('23-1-1982', 'DD-MM-YYYY'), 1300, NULL, 10);
    
    
    CREATE TABLE DEPT
           (DEPTNO NUMBER(2),
            DNAME VARCHAR2(14),
            LOC VARCHAR2(13) );
    
    INSERT INTO DEPT VALUES (10, 'ACCOUNTING', 'NEW YORK');
    INSERT INTO DEPT VALUES (20, 'RESEARCH',   'DALLAS');
    INSERT INTO DEPT VALUES (30, 'SALES',      'CHICAGO');
    INSERT INTO DEPT VALUES (40, 'OPERATIONS', 'BOSTON');
    
    CREATE TABLE SALGRADE
            (GRADE NUMBER,
             LOSAL NUMBER,
             HISAL NUMBER);
    
    INSERT INTO SALGRADE VALUES (1,  700, 1200);
    INSERT INTO SALGRADE VALUES (2, 1201, 1400);
    INSERT INTO SALGRADE VALUES (3, 1401, 2000);
    INSERT INTO SALGRADE VALUES (4, 2001, 3000);
    INSERT INTO SALGRADE VALUES (5, 3001, 9999);
    
    
    alter table emp add constraint emp_pk primary key(empno); 
    alter table dept add constraint dept_pk primary key(deptno); 
    alter table emp add constraint emp_fk_dept foreign key(deptno) references dept; 
    alter table emp add constraint emp_fk_emp foreign key(mgr) references emp; 
    
    COMMIT;
    
    SET TERMOUT ON
    PROMPT Demonstration table build is complete.
  • 相关阅读:
    React:Target container is not a DOM element
    安装完node.js,在命令行输入npm -v无反应的解决办法
    正则匹配中文字符
    设计一个函数,它接受不定数量的参数,这是参数都是函数。这些函数都接受一个回调函数作为参数,按照回调函数被调用的顺序返回函数名
    回调函数/callback
    切图 or 切片
    编写获取最终样式的函数
    【Java例题】5.2 数组转换
    【Java例题】5.1 多项式计算
    【Java例题】4.5异常处理
  • 原文地址:https://www.cnblogs.com/xwdreamer/p/2537170.html
Copyright © 2011-2022 走看看