2일차 기초 실습
[oracle@localhost ~]$ sqlplus '/ as sysdba' SQL*Plus: Release 10.2.0.1.0 - Production on Fri Aug 10 19:42:55 2012 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to an idle instance. SQL> startup ORACLE instance started. Total System Global Area 167772160 bytes (메모리 사이즈) Fixed Size 1218316 bytes Variable Size 62916852 bytes Database Buffers 100663296 bytes (1일차 강의에서 DB Cache라고 잘못 설명함 Buffer가 맞음) Redo Buffers 2973696 bytes Database mounted. Database opened. SQL> SQL> desc dba_users; Name Null? Type ----------------------------------------- -------- ---------------------------- USERNAME NOT NULL VARCHAR2(30) USER_ID NOT NULL NUMBER PASSWORD VARCHAR2(30) ACCOUNT_STATUS NOT NULL VARCHAR2(32) LOCK_DATE DATE EXPIRY_DATE DATE DEFAULT_TABLESPACE NOT NULL VARCHAR2(30) TEMPORARY_TABLESPACE NOT NULL VARCHAR2(30) CREATED NOT NULL DATE PROFILE NOT NULL VARCHAR2(30) INITIAL_RSRC_CONSUMER_GROUP VARCHAR2(30) EXTERNAL_NAME VARCHAR2(4000) SQL> select username, account_status from dba_users; SQL> select * from tab; <---> ALT + F1 or sp_help SQL> select deptno from emp; DEPTNO ---------- 20 30 30 20 30 30 10 20 10 30 20 DEPTNO ---------- 30 20 10 오라클에서는 11개 단위로 끊어서 보여주기 때문에 아래 DEPTNO 가 한 번 더 나온것 뿐이다. SQL> select empno "EmpNo", ename "##name##" 2 from emp; EmpNo ##name## ---------- ---------- 7369 SMITH 7499 ALLEN 7521 WARD 7566 JONES 7654 MARTIN 7698 BLAKE 7782 CLARK " " 안에 넣은 Alias는 특수기호, 대소문자를 마음데로 사용할 수 있게 해준다. SQL> select empno || ' ' || ename "EmpInfo" 2 from emp; EmpInfo --------------------------------------------------- 7369 SMITH 7499 ALLEN 7521 WARD 7566 JONES 7654 MARTIN 7698 BLAKE 7782 CLARK 7788 SCOTT 7839 KING '||' 파이프기호를 사용하여 텍스트를 붙일 수 있다. SQL Server의 '+' 기호와 동일한 역할을 한다. SQL> select ename, sal, sal*2 from emp; ENAME SAL SAL*2 ---------- ---------- ---------- SMITH 800 1600 ALLEN 1600 3200 WARD 1250 2500 JONES 2975 5950 MARTIN 1250 2500 BLAKE 2850 5700 SQL서버에서는 (알수없음) 이라고 나오는것과 달리 수식 그대로를 컬럼명 처럼 보여준다. SQL> show all appinfo is OFF and set to "SQL*Plus" arraysize 15 autocommit OFF autoprint OFF autorecovery OFF autotrace OFF blockterminator "." (hex 2e) btitle OFF and is the first few characters of the next SELECT statement cmdsep OFF colsep " " compatibility ver show all 은 SQL*PLUS 의 모든 설정 값을 보여준다. autocommit OFF 는 자동커밋 설정을 꺼놓았음을 보여줌. SQL> SET autocommit ON 이런식으로 설정을 켜거나 끌 수 있다. SQL> SET Feed OFF SQL> select * from dept; DEPTNO DNAME LOC ---------- -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON SQL> Feed 옵션은 SQL Server의 SET NOCOUNT ON 과 동일함. SQL> select * from emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- ------------ ---------- ---------- ---------- 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7788 SCOTT ANALYST 7566 19-APR-87 3000 20 7839 KING PRESIDENT 17-NOV-81 5000 10 7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 7876 ADAMS CLERK 7788 23-MAY-87 1100 20 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- ------------ ---------- ---------- ---------- 7900 JAMES CLERK 7698 03-DEC-81 950 30 7902 FORD ANALYST 7566 03-DEC-81 3000 20 7934 MILLER CLERK 7782 23-JAN-82 1300 10 SQL> / EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- ------------ ---------- ---------- ---------- 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 '/' 는 이전에 사용했던 쿼리를 그대로 다시 실행하는 명령어. SQL> ; 1* select * from emp ';' 는 이전에 사용했던 쿼리를 그대로 보여주는 명령어. SQL> set pagesize 100 페이지 나누는 사이즈 크기 변경 명령어. SQL> set termout ON 출력결과 보여주고 가리는 명령어. SQL> set time on 20:41:26 SQL> 쿼리 실행 시간을 보여주는 명령어. SQL> set underline - > - > ; SP2-0311: string expected but not found SQL> set underline -- > SQL> set underline 에서 '-' 하나만 사용하면 오류가 나온다. 반드시 '--' 두개를 입력해야한다. SQL> col dname heading "GOOD|dname" SQL> select * from dept; GOOD DEPTNO dname LOC ---------- -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 컬럼명 위에 다른 명칭을 추가로 붙이 싶을 때 사용한다. 실제로는 거의 사용할 필요 없음. SQL> col sal for 999,999 SQL> select * from emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ------ --------- ---------- ------------ -------- ---------- ---------- 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1,600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1,250 500 30 원하는 보기 형태로 컬럼 포맷을 지정함 3자리 단위로 ',' 를 붙여서 보여줌. SQL> col ename COLUMN ename ON FORMAT a6 SQL> col ename clear SQL> col ename SP2-0046: COLUMN 'ename' not defined 정의된 컬럼의 속성을 보여주기도 하고, 정의된 포맷 속성을 삭제할 수도 있음. SQL> clear col columns cleared 정의된 컬럼 포맷 전부 삭제. SQL> ed Wrote file afiedt.buf ed라는 에디터에 쿼리를 저장해놓고 수정 및 실행할 수 있음. [oracle@localhost ~]$ ls -alrt 현재 디렉토리 파일 중 최신 파일부터 정렬해서 보여줌. SQL> select * from emp where job='clerk'; no rows selected SQL> select * from emp where job='CLERK'; Oracle에서는 대소문자 구분함. SQL> select * 2 from emp 3 where not deptno=20 and deptno=10; Oracle에서는 where 절에 NOT 이라는 인자를 앞에 두어서 조건을 부정으로 바꿀 수 있다. SQL> select * from emp where not (deptno=20 and deptno=10); 이렇게도 응용이 가능함. SQL> select * from emp where ename like '민경\_%' escape '\'; EMPNO ENAME JOB MGR HIREDATE SAL COMM ---------- ---------- --------- ---------- ------------ ---------- ---------- DEPTNO ---------- 2892 민경_왕태 DEVELOPER 7566 08-NOV-12 3500 40 조건에 있는 특정 캐릭터를 제거하는 용도로 사용할 수 있는데 escape 는 실제 필드에서 잘 사용하지 않는다. 아래는 Oracle의 설정을 볼 수 있다. 윈도우로 치면 레지스트리에 등록되어있는 설정값들이다. [oracle@localhost ~]$ export declare -x CLASSPATH="/u01/app/oracle/product/10.2.0/db_1/JRE:/u01/app/oracle/product/10.2.0/db_1/jlib:/u01/app/oracle/product/10.2.0/db_1/rdbms/jlib" declare -x COLORTERM="gnome-terminal" declare -x DBUS_SESSION_BUS_ADDRESS="unix:abstract=/tmp/dbus-a7aNh1ZI77" declare -x DESKTOP_SESSION="default" declare -x DESKTOP_STARTUP_ID="" declare -x DISPLAY=":0.0" declare -x EDITOR="vi" declare -x GDMSESSION="default" declare -x GNOME_DESKTOP_SESSION_ID="Default" declare -x GNOME_KEYRING_SOCKET="/tmp/keyring-Kd9oCq/socket" declare -x GTK_IM_MODULE="iiim" declare -x GTK_RC_FILES="/etc/gtk/gtkrc:/home/oracle/.gtkrc-1.2-gnome2" declare -x G_BROKEN_FILENAMES="1" declare -x HISTSIZE="1000" declare -x HOME="/home/oracle" declare -x HOSTNAME="localhost.localdomain" declare -x INPUTRC="/etc/inputrc" declare -x KDEDIR="/usr" declare -x LANG="ko_KR.UTF-8" declare -x LD_ASSUME_KERNEL="2.4.19" declare -x LD_LIBRARY_PATH="/u01/app/oracle/product/10.2.0/db_1/lib:/lib:/usr/lib:/usr/local/lib" declare -x LESSOPEN="|/usr/bin/lesspipe.sh %s" declare -x LOGNAME="oracle" declare -x LS_COLORS="no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35:" declare -x MAIL="/var/spool/mail/oracle" declare -x NLS_LANG="AMERICAN_AMERICA.KO16KSC5601" declare -x OLDPWD declare -x ORACLE_BASE="/u01/app/oracle" declare -x ORACLE_HOME="/u01/app/oracle/product/10.2.0/db_1" declare -x ORACLE_SID="orcl" declare -x ORACLE_TERM="xterm" declare -x ORA_NLS33="/u01/app/oracle/product/10.2.0/db_1/ocommon/nls/admin/data" declare -x PATH="/bin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/oracle/bin:/u01/app/oracle/product/10.2.0/db_1/bin" declare -x PWD="/home/oracle" declare -x SESSION_MANAGER="local/localhost.localdomain:/tmp/.ICE-unix/6748" declare -x SHELL="/bin/bash" declare -x SHLVL="2" declare -x SSH_AGENT_PID="6788" declare -x SSH_ASKPASS="/usr/libexec/openssh/gnome-ssh-askpass" declare -x SSH_AUTH_SOCK="/tmp/ssh-GnNolg6748/agent.6748" declare -x TERM="xterm" declare -x USER="oracle" declare -x WINDOWID="18874449" declare -x XAUTHORITY="/home/oracle/.Xauthority" declare -x XMODIFIERS="@im=htt" |
이중에서 TIMING, COL colname FORMAT 등은 실제 자주 사용한다고 한다.
'SQL > SQL 교육' 카테고리의 다른 글
[교육] SQL초보에서실전전문가까지 ORACLE - 4 (0) | 2012.08.16 |
---|---|
[교육] SQL초보에서실전전문가까지 ORACLE - 3 (0) | 2012.08.14 |
[교육] SQL초보에서실전전문가까지 ORACLE - 1 (0) | 2012.08.09 |
[SQL 전문가] 제1장 데이터 모델링의 이해 (0) | 2011.09.27 |
SQL 개발자(SQLD, SQL Developer)자격 (0) | 2011.09.26 |