PL/SQL模块学习之二、SQL*Plus常用指令

1.desc 显示表字段

SQL> alter user scott account unlock;

用户已更改。 #我用tiger密码无法登陆,所以需要修改密码
SQL> alter user scott identified by Password;

用户已更改。

SQL> conn scott/Password   #connect username/password@sid  使用默认数据库可不用服务名
已连接。
SQL> desc dept;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 DEPTNO                                    NOT NULL NUMBER(2)
 DNAME                                              VARCHAR2(14)
 LOC                                                VARCHAR2(13)

2.column指令

1)FOR[MAT] format

1.1)格式化模式‘9’ (number)

SQL> select * from salgrade;

    GRADE      LOSAL      HISAL
---------- ---------- ----------
        1        700       1200
        2       1201       1400
        3       1401       2000
        4       2001       3000
        5       3001       9999
#由于3列数据类型均为NUMBER所以使用“9”,99是格式化模式,每个“9”表示一位数字
SQL> col grade for 99 #表示占用两位数字的宽度
SQL> col losal for 9999  #表示占用四位数字的宽度
SQL> col hisal for 9999
SQL> select * from salgrade;

GRADE LOSAL HISAL
----- ----- -----
   1   700  1200
   2  1201  1400
   3  1401  2000
   4  2001  3000
   5  3001  9999
SQL> col hisal for 9999.99 #表示带小数点
SQL> select * from sAlgrade;

GRADE LOSAL    HISAL
----- ----- --------
   1   700  1200.00
   2  1201  1400.00
   3  1401  2000.00
   4  2001  3000.00
   5  3001  9999.00

1.2)格式化模式‘a’ (字符)

SQL> col object_name for a20 #格式化为20个字符宽度
SQL> select object_name,object_type from user_objects
2  where object_type = 'TABLE';

OBJECT_NAME          OBJECT_TYPE
-------------------- -------------------
BONUS                TABLE
DEPT                 TABLE
EMP                  TABLE
SALGRADE             TABLE

1.3)格式化模式‘$’ (美元)

SQL> col losal for $9999
SQL> col hisal for $9999
SQL> select * from salgrade;

GRADE  LOSAL  HISAL
----- ------ ------
   1   $700  $1200
   2  $1201  $1400
   3  $1401  $2000
   4  $2001  $3000
   5  $3001  $9999

1.4)格式化模式‘L’ (人名币)

SQL> col losal for L9999
SQL> col hisal for L9999
SQL> select * from salgrade;

GRADE           LOSAL           HISAL
----- --------------- ---------------
    17001200
    212011400
    314012000
    420013000
    530019999

查看当前数据库支持的字符集

SQL> select userenv('language') from dual;

USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK

ZHS16GBK<语言><比特位><编码>


1.5)查看列显示格式

SQL> col losal
COLUMN   losal ON
FORMAT   L9999
SQL> col hisal
COLUMN   hisal ON
FORMAT   L9999

2)CLE(AR)删除格式化设置

SQL> col losal clear
SQL> col hisal clear
SQL> col losal
SP2-0046: COLUMN 'losal' 未定义
SQL> col hisal
SP2-0046: COLUMN 'hisal' 未定义

3)HEA[DING] text格式化列属性名称

SQL> col losal heading '低工资'
SQL> col hisal heading '高工资'
SQL> select * from salgrade;

GRADE     低工资     高工资
----- ---------- ----------
   1        700       1200
   2       1201       1400
   3       1401       2000
   4       2001       3000
   5       3001       9999

4)JUS[TIFY]{L[EFT]|C[ENTER]|R[IGHT]}

JUS[TIFY] 靠左 居中 偏右
奇怪的是对我没用

SQL> col dname jus  center
SQL> col loc jus center
SQL> select * from dept;

   DEPTNO     DNAME           LOC
---------- -------------- -------------
       10 ACCOUNTING     NEW YORK
       20 RESEARCH       DALLAS
       30 SALES          CHICAGO
       40 OPERATIONS     BOSTON

5)NEWL(INE)使所有列的显示另起一行

用的少

SQL> col dname newline
SQL> select * from dept;

    DEPTNO
----------
    DNAME           LOC
-------------- -------------
        10
ACCOUNTING     NEW YORK

6)NOPRI[NT]|PRI[NT]使得格式化的数据不显示或显示

SQL> col loc noprint
SQL> col dname clear
SP2-0046: COLUMN 'dname' 未定义
SQL> select * from dept;

   DEPTNO DNAME
---------- --------------
       10 ACCOUNTING
       20 RESEARCH
       30 SALES
       40 OPERATIONS

7)NUL[L] text 填充空值数据

SQL> insert into dept (deptno,dname,loc) values (50,'Marcketing','');

已创建 1 行。

SQL> select * from dept;

    DEPTNO DNAME               LOC
---------- -------------- -------------
        50 Marcketing
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

SQL> col loc null 'TEMP';
SQL> select * from dept;

    DEPTNO DNAME               LOC
---------- -------------- -------------
        50 Marcketing     TEMP  #填充数据只是显示,不会修改实际数据
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

8)ON|OFF 格式化操作修改是否启用

OFF后,之前的格式化操作将取消,之后格式化修改将无效
ex: SQL> col loc off

3.run或“/”指令重复执行SQL缓冲区的语句

run会显示sql语句反馈,“/”不会

SQL> select * from dept;

    DEPTNO DNAME               LOC
---------- -------------- -------------
        50 Marcketing     TEMP
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

SQL> run
  1* select * from dept

    DEPTNO DNAME               LOC
---------- -------------- -------------
        50 Marcketing     TEMP
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

SQL> /

    DEPTNO DNAME               LOC
---------- -------------- -------------
        50 Marcketing     TEMP
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

4.L(ist)指令和n指令列出当前SQL缓冲区的SQL命令

SQL> select empno,ename,job,mgr,hiredate,sal
  2  from emp
  3  where job ='MANAGER';

     EMPNO ENAME      JOB              MGR HIREDATE              SAL
---------- ---------- --------- ---------- -------------- ----------
      7566 JONES      MANAGER         7839 02-4-81           2975
      7698 BLAKE      MANAGER         7839 01-5-81           2850
      7782 CLARK      MANAGER         7839 09-6-81           2450

SQL> list
  1  select empno,ename,job,mgr,hiredate,sal
  2  from emp
  3* where job ='MANAGER'
SQL> 1 #定位到第一行
  1* select empno,ename,job,mgr,hiredate,sal

5.change指令和n(next)指令

1) change 修改缓存中的命令

前面已经定位到第一行,使用change命令将列sal改为deptno

SQL> ch /sal/deptno
  1* select empno,ename,job,mgr,hiredate,deptno
SQL> /

     EMPNO ENAME      JOB              MGR HIREDATE           DEPTNO
---------- ---------- --------- ---------- -------------- ----------
      7566 JONES      MANAGER         7839 02-4-81             20
      7698 BLAKE      MANAGER         7839 01-5-81             30
      7782 CLARK      MANAGER         7839 09-6-81             10

2) n 定位到缓存中的某一行

n为SQL语句的行号,随后输入替换的行

SQL> list
 1  select empno,ename,job,mgr,hiredate,deptno
 2  from emp
 3* where job ='MANAGER'
SQL> 1 select empno,ename,job,mgr
SQL> list
 1  select empno,ename,job,mgr
 2  from emp
 3* where job ='MANAGER'

6.附加 a 在行末尾添加语句

SQL> list
 1  select empno,ename,job,mgr
 2  from emp
 3* where job ='MANAGER'
SQL> 1
 1* select empno,ename,job,mgr
SQL> a,deptno    #将,loc添加到第一行的SQL末尾
 1* select empno,ename,job,mgr,deptno
SQL> list
 1  select empno,ename,job,mgr,deptno
 2  from emp
 3* where job ='MANAGER'

7.del n (n为行号) 删除缓存中某行命令

SQL> list
  1  select empno,ename,job,mgr,deptno
  2  from emp
  3* where job ='MANAGER'
SQL> del 3
SQL> list
  1  select empno,ename,job,mgr,deptno
  2* from emp

8.set line指令 设置显示宽度

格式:set line {80/n}
将查询的数据输出设置为n个字符宽度显示,默认80个字符宽度输出
当输出无法显示为一行时,可使用此变量,将数值设置较大些即可

SQL> list
  1  select empno,ename,job,mgr,deptno
  2* from emp
SQL> select * from emp;

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
---------- ---------- --------- ---------- -------------- ---------- ----------
    DEPTNO
----------
      7369 SMITH      CLERK           7902 17-12-80            800
        20

      7499 ALLEN      SALESMAN        7698 20-2-81           1600        300

SQL> set line 100#设置显示行的长度为100个字符,即可显示在一行
SQL> select * from emp;

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-12-80            800
        20
      7499 ALLEN      SALESMAN        7698 20-2-81           1600        300        30
      7521 WARD       SALESMAN        7698 22-2-81           1250        500        30

设置数据显示行数和宽度

参考百度经验《sqlplus连接数据设置显示行数和宽度》在这里插入图片描述


9.spool指令

将用户输入的sql语句和查询结果存储到指定的文件中

SQL> show spool
spool OFF
SQL> spool d:\spool_test
SQL> show spool
spool ON
SQL> select empno,ename,job,mgr,sal
  2  from emp
  3  where job = 'MANAGER';

     EMPNO ENAME      JOB              MGR        SAL
---------- ---------- --------- ---------- ----------
      7566 JONES      MANAGER         7839       2975
      7698 BLAKE      MANAGER         7839       2850
      7782 CLARK      MANAGER         7839       2450

SQL> spool off

执行完后在D盘生成了spool_test.lst文件
在这里插入图片描述

10.脚本文件

1)创建脚本文件

SQL> select empno,ename,job,mgr,hiredate,sal
 2  from emp
 3  where job = 'MANAGER'
 4  order by sal;

    EMPNO ENAME      JOB              MGR HIREDATE              SAL
---------- ---------- --------- ---------- -------------- ----------
     7782 CLARK      MANAGER         7839 09-6-81           2450
     7698 BLAKE      MANAGER         7839 01-5-81           2850
     7566 JONES      MANAGER         7839 02-4-81           2975
#save命令创建
SQL> save d:\SELECT_emp
已创建 file d:\SELECT_emp.sql

可在D盘找到该文件
在这里插入图片描述

2)运行脚本文件

SQL> @d:\SELECT_emp

     EMPNO ENAME      JOB              MGR HIREDATE              SAL
---------- ---------- --------- ---------- -------------- ----------
      7782 CLARK      MANAGER         7839 09-6-81           2450
      7698 BLAKE      MANAGER         7839 01-5-81           2850
      7566 JONES      MANAGER         7839 02-4-81           2975

SQL> start d:\SELECT_tmp
SP2-0310: 无法打开文件 "d:\SELECT_tmp.sql"
SQL> start d:\SELECT_emp

     EMPNO ENAME      JOB              MGR HIREDATE              SAL
---------- ---------- --------- ---------- -------------- ----------
      7782 CLARK      MANAGER         7839 09-6-81           2450
      7698 BLAKE      MANAGER         7839 01-5-81           2850
      7566 JONES      MANAGER         7839 02-4-81           2975

3)sqlplus下编辑脚本文件

3.1)get装载到缓冲区后修改

SQL> get d:\SELECT_emp
 1  select empno,ename,job,mgr,hiredate,sal
 2  from emp
 3  where job = 'MANAGER'
 4* order by sal
SQL> 1
 1* select empno,ename,job,mgr,hiredate,sal
SQL> change \sal\depno
 1* select empno,ename,job,mgr,hiredate,depno
SQL> list  #实际脚本文件未修改
 1  select empno,ename,job,mgr,hiredate,depno
 2  from emp
 3  where job = 'MANAGER'
 4* order by sal

3.2)edit调用系统编辑软件修改

在这里插入图片描述


扩展~

11.ECHO环境变量

echo打开时脚本语句会输出显示

SQL> show echo
echo OFF
SQL> @d:\SELECT_emp

     EMPNO ENAME      JOB              MGR HIREDATE              SAL
---------- ---------- --------- ---------- -------------- ----------
      7782 CLARK      MANAGER         7839 09-6-81           2450
      7698 BLAKE      MANAGER         7839 01-5-81           2850
      7566 JONES      MANAGER         7839 02-4-81           2975

SQL> set echo on
SQL> show echo
echo ON
SQL> @d:\SELECT_emp
SQL> select empno,ename,job,mgr,hiredate,sal
  2  from emp
  3  where job = 'MANAGER'
  4  order by sal
  5  /

     EMPNO ENAME      JOB              MGR HIREDATE              SAL
---------- ---------- --------- ---------- -------------- ----------
      7782 CLARK      MANAGER         7839 09-6-81           2450
      7698 BLAKE      MANAGER         7839 01-5-81           2850
      7566 JONES      MANAGER         7839 02-4-81           2975

12.FEEBACK环境变量

控制查询输出的数据行数是否显示,以及记录数达到什么值时才显示行数

SQL> show feedback
用于 6 或更多行的 FEEDBACK ON
SQL> select* from salgrade;

GRADE     低工资     高工资
----- ---------- ----------
    1        700       1200
    2       1201       1400
    3       1401       2000
    4       2001       3000
    5       3001       9999

由于数据行数小于6,所以不显示数据行数,设置FEEDBACK参数为3

SQL> set feedback 3
SQL> select * from salgrade;

GRADE     低工资     高工资
----- ---------- ----------
    1        700       1200
    2       1201       1400
    3       1401       2000
    4       2001       3000
    5       3001       9999

已选择5行。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle数据库基础 任务一 1、修改上机的计算机上的文件: product\11.1.0\db_1\NETWORK\ADMIN\tnsnames.ora product\11.1.0\db_1\NETWORK\ADMIN\listener.ora 把文件中的HOST后面的名称更改为localhost或者127.0.0.1 目的:在你自己的计算机上开启监听服务,用于接受客户端的连接请求, localhost指在什么计算机上开启监听,一定是你自己的计算机,本机可以使用如 下方法表示:localhost 127.0.0.1 hostname ip 查看主机名:hostname 查看ip:ipconfig 2、启动数据库: 方法1: 打开管理工具中的服务管理工具,启动OracleOraHome90TNSListener和 OracleServicehygj服务 方法2: 打开CMD命令提示符界面,输入 net start OracleOraHome90TNSListener net start OracleServicehygj 3、默认开放的用户: 系统管理员: sys 设置密码:change_on_install 数据库管理员: system 设置密码:manager 普通用户: scott 设置密码:tiger 4、打开IE,使用https://localhost:1158/em来访问: 输入用户名:scott 密码:tiger 登陆系统 5、使用scott/tiger用户下的emp表完成下列练习,表的结构说明如下: emp员工表 字段内容如下: empno 员工号 ename 员工姓名 job 工作 mgr 上级编号 hiredate 受雇日期 sal 薪金 comm 佣金 deptno 部门编号 . 选择部门30中的所有员工 . 列出所有办事员(CLERK)的姓名,编号和部门编号 . 找出佣金高于薪金的员工 . 找出佣金高于薪金的60%的员工 . 找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详 细资料 . 找出既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详细 资料 . 找出收取佣金的员工的不同工作 . 找出不收取佣金或收取的佣金低于100的员工 . 向emp表中插入一纪录,员工TOM,80年1月10日入职,薪金为3000, 没有补贴(comm) . 将emp表中与scott用户具有相同工作岗位的人的工资更改为原来的105% 任务二 1、创建my_employee表,并向表中添加数据,数据参考如下: ID Last_name First_name UserID Salary 1 Patel Ralph rpatel 795 2 Dancs Betty bdancs 860 3 Biri Ben bbiri 110 4 Newman Chard cnewman 750 5 Ropeburn Audry apopebur 1550 (1)、编写如下的脚本: 把这个脚本存储在c:盘根目录下,存储为test.sql,并使用start命令调用此 脚本 set echo off set feedback off prompt Creating The My_employee table. Please wait... create table my_employee ( id number(4) constraint my_employee_id_nn not null, last_name varchar2(25), first_name varchar2(25), userid varchar28), salary number(9,2)) / (2).显示my_employee表的结构 (3).向my_employee表中添加首条纪录,要求不在insert语句中使用字段列表 (4).向my_employee表中添加第二条纪录,要求在insert语句中使用字段列表 (5).验证数据是否添加成功 (6).使数据的添加成为永久性的。 2、将3号员工的Last_name修改为Drexler 3、将所有工资小

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值