Lin Hong's TECH Blog! 刀不磨要生锈,人不学习要落后 - Thinking ahead

Oracle sqlcl Tips

2021-12-06

Oracle SQLcl Tips

Oracle SQLcl (SQL Developer Command Line), a Java-based command-line interface for Oracle Database.

Using SQLcl, you can execute SQL and PL/SQL statements interactively or as as a batch file.

SQLcl provides inline editing, statement completion, command recall, and also supports existing SQL*Plus scripts.

SQLcl

SQLcl 21.3.3 Downloads 2021/12/01

Oracle SQL Developer Command Line (SQLcl) 21.2 Release Notes

Platform Support

SQLcl release 21.2 is available for Windows 10 and Windows Server 2008/2012, Linux or Mac OS X. (See full Certification)
If using a OCI “Thick” connection type, a 21c Oracle Client will be required

It has been installed in $ORACLE_HOME/bin by default in 19c.

[oracle@ol8-19c ~]$ which sql
/u01/app/oracle/product/19.0.0/dbhome_1/bin/sql
[oracle@ol8-19c ~]$

Sample sqlcl

  • info
  • info+
  • ddl
  • history
  • list
  • tab
  • set sqlformat html/csv/json
  • ctas
[oracle@ol8-19c ~]$ sql hong/oracle@pdb1

SQLcl: Release 19.1 Production on Wed Dec 08 09:56:56 2021

Copyright (c) 1982, 2021, Oracle.  All rights reserved.

Last Successful login time: Wed Dec 08 2021 09:56:59 +08:00

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.10.0.0.0

09:57:11 HONG@pdb1> info bonus
TABLE: BONUS
	 LAST ANALYZED:2021-10-12 13:00:15.0
	 ROWS         :0
	 SAMPLE SIZE  :0
	 INMEMORY     :DISABLED
	 COMMENTS     :

Columns
NAME         DATA TYPE           NULL  DEFAULT    COMMENTS
 ENAME       VARCHAR2(10 BYTE)   Yes
 JOB         VARCHAR2(9 BYTE)    Yes
 SAL         NUMBER              Yes
 COMM        NUMBER              Yes


09:57:24 HONG@pdb1> info emp
TABLE: EMP
	 LAST ANALYZED:2021-10-13 13:00:27.0
	 ROWS         :14
	 SAMPLE SIZE  :14
	 INMEMORY     :DISABLED
	 COMMENTS     :

Columns
NAME         DATA TYPE           NULL  DEFAULT    COMMENTS
*EMPNO       NUMBER(4,0)         No
 ENAME       VARCHAR2(10 BYTE)   Yes
 JOB         VARCHAR2(9 BYTE)    Yes
 MGR         NUMBER(4,0)         Yes
 HIREDATE    DATE                Yes
 SAL         NUMBER(7,2)         Yes
 COMM        NUMBER(7,2)         Yes
 DEPTNO      NUMBER(2,0)         Yes

Indexes
INDEX_NAME            UNIQUENESS   STATUS   FUNCIDX_STATUS   COLUMNS
HONG.PK_EMP           UNIQUE       VALID    <n>              EMPNO
HONG.IDX_EMP_SALARY   NONUNIQUE    VALID    <n>              SAL


09:57:33 HONG@pdb1> info+ emp

TABLE: EMP
	 LAST ANALYZED:2021-10-13 13:00:27.0
	 ROWS         :14
	 SAMPLE SIZE  :14
	 INMEMORY     :DISABLED
	 COMMENTS     :

Columns
NAME         DATA TYPE           NULL  DEFAULT    LOW_VALUE             HIGH_VALUE            NUM_DISTINCT   HISTOGRAM
*EMPNO       NUMBER(4,0)         No                   7369                  7934                  14             NONE
 ENAME       VARCHAR2(10 BYTE)   Yes                  ADAMS                 WARD                  14             NONE
 JOB         VARCHAR2(9 BYTE)    Yes                  ANALYST               SALESMAN              5              FREQUENCY
 MGR         NUMBER(4,0)         Yes                  7566                  7902                  6              NONE
 HIREDATE    DATE                Yes                  1980.12.17.00.00.00   1987.05.23.00.00.00   13             FREQUENCY
 SAL         NUMBER(7,2)         Yes                  800                   5000                  12             FREQUENCY
 COMM        NUMBER(7,2)         Yes                  0                     1400                  4              NONE
 DEPTNO      NUMBER(2,0)         Yes                  10                    30                    3              FREQUENCY

Indexes
INDEX_NAME            UNIQUENESS   STATUS   FUNCIDX_STATUS   COLUMNS
HONG.PK_EMP           UNIQUE       VALID    <n>              EMPNO
HONG.IDX_EMP_SALARY   NONUNIQUE    VALID    <n>              SAL

09:58:12 HONG@pdb1> ddl emp

  CREATE TABLE "HONG"."EMP"
   (	"EMPNO" NUMBER(4,0),
	"ENAME" VARCHAR2(10),
	"JOB" VARCHAR2(9),
	"MGR" NUMBER(4,0),
	"HIREDATE" DATE,
	"SAL" NUMBER(7,2),
	"COMM" NUMBER(7,2),
	"DEPTNO" NUMBER(2,0),
	 CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 INVISIBLE COMPUTE STATISTICS
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM"  ENABLE,
	 CONSTRAINT "FK_DEPTNO" FOREIGN KEY ("DEPTNO")
	  REFERENCES "HONG"."DEPT" ("DEPTNO") ENABLE
   ) SEGMENT CREATION IMMEDIATE
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM" ;

  CREATE INDEX "HONG"."IDX_EMP_SALARY" ON "HONG"."EMP" ("SAL")
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM" ;
09:58:20 HONG@pdb1>

09:58:23 HONG@pdb1> set linesize 300 pagesize 200

HONG@pdb1> set sqlformat json
HONG@pdb1> select * from emp;
{"results":[{"columns":[{"name":"EMPNO","type":"NUMBER"},{"name":"ENAME","type":"VARCHAR2"},{"name":"JOB","type":"VARCHAR2"},{"name":"MGR","type":"NUMBER"},{"name":"HIREDATE","type":"DATE"},{"name":"SAL","type":"NUMBER"},{"name":"COMM","type":"NUMBER"},{"name":"DEPTNO","type":"NUMBER"}],"items":
[
{"empno":7839,"ename":"KING","job":"PRESIDENT","mgr":<n>,"hiredate":"17-NOV-81","sal":5000,"comm":<n>,"deptno":10}
,{"empno":7698,"ename":"BLAKE","job":"MANAGER","mgr":7839,"hiredate":"01-MAY-81","sal":2850,"comm":<n>,"deptno":30}
,{"empno":7782,"ename":"CLARK","job":"MANAGER","mgr":7839,"hiredate":"09-JUN-81","sal":2450,"comm":<n>,"deptno":10}
,{"empno":7566,"ename":"JONES","job":"MANAGER","mgr":7839,"hiredate":"02-APR-81","sal":2975,"comm":<n>,"deptno":20}
,{"empno":7788,"ename":"SCOTT","job":"ANALYST","mgr":7566,"hiredate":"19-APR-87","sal":3000,"comm":<n>,"deptno":20}
,{"empno":7902,"ename":"FORD","job":"ANALYST","mgr":7566,"hiredate":"03-DEC-81","sal":3000,"comm":<n>,"deptno":20}
,{"empno":7369,"ename":"SMITH","job":"CLERK","mgr":7902,"hiredate":"17-DEC-80","sal":800,"comm":<n>,"deptno":20}
,{"empno":7499,"ename":"ALLEN","job":"SALESMAN","mgr":7698,"hiredate":"20-FEB-81","sal":1600,"comm":300,"deptno":30}
,{"empno":7521,"ename":"WARD","job":"SALESMAN","mgr":7698,"hiredate":"22-FEB-81","sal":1250,"comm":500,"deptno":30}
,{"empno":7654,"ename":"MARTIN","job":"SALESMAN","mgr":7698,"hiredate":"28-SEP-81","sal":1250,"comm":1400,"deptno":30}
,{"empno":7844,"ename":"TURNER","job":"SALESMAN","mgr":7698,"hiredate":"08-SEP-81","sal":1500,"comm":0,"deptno":30}
,{"empno":7876,"ename":"ADAMS","job":"CLERK","mgr":7788,"hiredate":"23-MAY-87","sal":1100,"comm":<n>,"deptno":20}
,{"empno":7900,"ename":"JAMES","job":"CLERK","mgr":7698,"hiredate":"03-DEC-81","sal":950,"comm":<n>,"deptno":30}
,{"empno":7934,"ename":"MILLER","job":"CLERK","mgr":7782,"hiredate":"23-JAN-82","sal":1300,"comm":<n>,"deptno":10}
]}]}
14 rows selected.

HONG@pdb1> set sqlformat default
SQL Format Cleared

HONG@pdb1> select * from emp;

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7839 KING       PRESIDENT <n>        17-NOV-81       5000 <n>                10
      7698 BLAKE      MANAGER         7839 01-MAY-81       2850 <n>                30
      7782 CLARK      MANAGER         7839 09-JUN-81       2450 <n>                10
      7566 JONES      MANAGER         7839 02-APR-81       2975 <n>                20
      7788 SCOTT      ANALYST         7566 19-APR-87       3000 <n>                20
      7902 FORD       ANALYST         7566 03-DEC-81       3000 <n>                20
      7369 SMITH      CLERK           7902 17-DEC-80        800 <n>                20
      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30
      7521 WARD       SALESMAN        7698 22-FEB-81       1250        500         30
      7654 MARTIN     SALESMAN        7698 28-SEP-81       1250       1400         30
      7844 TURNER     SALESMAN        7698 08-SEP-81       1500          0         30
      7876 ADAMS      CLERK           7788 23-MAY-87       1100 <n>                20
      7900 JAMES      CLERK           7698 03-DEC-81        950 <n>                30
      7934 MILLER     CLERK           7782 23-JAN-82       1300 <n>                10

14 rows selected.

HONG@pdb1>

HONG@pdb1> ctas
CTAS
 ctas table new_table
Uses DBMS_METADATA to extract the DDL for the existing table
 Then modifies that into a create table as select * from

HONG@pdb1> ctas emp emp1
CREATE TABLE "HONG"."EMP1"
   (	"EMPNO",
	"ENAME",
	"JOB",
	"MGR",
	"HIREDATE",
	"SAL",
	"COMM",
	"DEPTNO",
	 CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 INVISIBLE COMPUTE STATISTICS
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM"  ENABLE
   ) SEGMENT CREATION IMMEDIATE
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM"
 as
select * from EMP
HONG@pdb1>

HONG@pdb1> help
For help on a topic type help <topic>
List of Help topics available:

/
@
@@
ACCEPT
ALIAS*
APEX*
APPEND
ARCHIVE_LOG
BREAK
BRIDGE*
BTITLE
CD*
CHANGE
CLEAR
COLUMN
COMPUTE
CONNECT
COPY
CTAS*
DDL*
DEFINE
DEL
DESCRIBE
DISCONNECT
EDIT
EXECUTE
EXIT
FIND*
FORMAT*
GET
HISTORY*
HOST
INFORMATION*
INPUT
LIQUIBASE*
LIST
LOAD*
NET*
OERR*
PASSWORD
PAUSE
PRINT
PROMPT
QUIT
REMARK
REPEAT*
RESERVED_WORDS
REST*
RUN
SAVE
SCRIPT*
SET
SETERRORL
SHOW
SHUTDOWN
SODA*
SPOOL
SSHTUNNEL*
START
STARTUP
STORE
TIMING
TNSPING*
TTITLE
UNDEFINE
VARIABLE
VAULT*
WHENEVER
WHICH*
XQUERY
HONG@pdb1>

Reference

SQLcl 21.3.3 Downloads 2021/12/01

Oracle SQL Developer Command Line (SQLcl) 21.2 Release Notes

Have a good work&life! 2021/12 via LinHong


Similar Posts

Comments