* 개발자가 공부하면 좋은 것

  - 이산수학


* 톰캣 다운로드

tomcat.apache.org

8.5.32 64bit zip

원하는 위치에 압축 해제


* 웹 서버

- Web Server (HTTP)

- WAS Server

 Apache + tomcat

 Web Logic

 WebToB + Jeus : Tmax (국산)


 IIS + .NET

 - MS -> IIS

 - ASP -> .NET

...



* 자바 버전 확인

java -version : 1.8.0_181

javac -version : 1.8.0_172

- 자바는 자동 업데이트 때문에 컴파일러와 버전이 다를 수도 있다.


* 자바 .class 파일을 자바 바이트 코드라고도 한다.

* 라즈베리파이

- OS : 라즈비안

- 굉장히 가볍게 잘 돌아간다.


* 라이센스

- 전략을 가지고 공부하자.

어려운 과목은 미리 포기.

70점 IT-PMP

정보시스템감리사 125분 125문, 1000명 중 상위성적 40명 합격


* Tomcat의 구성

- bin : 실행 파일

- conf : 설정 파일

 server.xml - Tomcat 환경

 web.xml - Site (n개)

 각각의 web의 web.xml - 상위 web.xml을 상속받음



* SVN CVS 형상관리


* Servlet

- servlet과 servlet-mapping은 한 쌍이다.

<servlet>

......

</servlet>


<servlet-mapping>

......

</servlet-mapping>



* 에러

400번대는 해피한 에러, 500번대는 골치아픈 에러

'스마트웹&콘텐츠 개발자 과정 > Servlet | JSP' 카테고리의 다른 글

넷째 시간 끄적끄적  (0) 2018.08.03
세 번째 시간 끄적끄적  (0) 2018.08.02
둘째 시간 끄적끄적  (0) 2018.08.02

[oracle@localhost ~]$ set pagesize 1000

[oracle@localhost ~]$ set long 9

[oracle@localhost ~]$ sqlplus / as sysdba


SQL*Plus: Release 11.2.0.1.0 Production on Mon Jul 30 09:18:11 2018


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


Connected to an idle instance.


SYS> startup

ORACLE instance started.


Total System Global Area  623546368 bytes

Fixed Size                  1338308 bytes

Variable Size             469763132 bytes

Database Buffers          146800640 bytes

Redo Buffers                5644288 bytes

Database mounted.

Database opened.

SYS> conn hr/hr

Connected.

HR> select dbms_metadata.get_ddl('TABLESPACE',tablespace_name)

  2  from dba_tablespaces;

from dba_tablespaces

     *

ERROR at line 2:

ORA-00942: table or view does not exist



HR> conn / as sysdba

Connected.

SYS> 

SYS> select dbms_metadata.get_ddl('TABLESPACE',tablespace_name)

  2  from dba_tablespaces;



DBMS_METADATA.GET_DDL('TABLESPACE',TABLESPACE_NAME)

--------------------------------------------------------------------------------


  CREATE TABLESPACE "SYSTEM" DATAFILE

  '/u01/app/oracle/oradata/orcl/system01



  CREATE TABLESPACE "SYSAUX" DATAFILE

  '/u01/app/oracle/oradata/orcl/sysaux01



  CREATE UNDO TABLESPACE "UNDOTBS1" DATAFILE

  '/u01/app/oracle/oradata/orcl/u


DBMS_METADATA.GET_DDL('TABLESPACE',TABLESPACE_NAME)

--------------------------------------------------------------------------------



  CREATE TEMPORARY TABLESPACE "TEMP" TEMPFILE

  '/u01/app/oracle/oradata/orcl/



  CREATE TABLESPACE "USERS" DATAFILE

  '/u01/app/oracle/oradata/orcl/users01.d



  CREATE TABLESPACE "NEW_USERS" DATAFILE


DBMS_METADATA.GET_DDL('TABLESPACE',TABLESPACE_NAME)

--------------------------------------------------------------------------------

  '/u01/app/oracle/product/11.2.0/db_



  CREATE TABLESPACE "EMP_TBS1" DATAFILE

  '/u01/app/oracle/oradata/orcl/emp_tb



  CREATE TABLESPACE "EMP_TBS2" DATAFILE

  '/u01/app/oracle/oradata/orcl/emp_tb



8 rows selected.


SYS> SYS>  

SYS> 

SYS> 

SYS> select dbms_metadata.get_ddl('TABLE','DEPARTMENTS','HR') from dual;


DBMS_METADATA.GET_DDL('TABLE','DEPARTMENTS','HR')

--------------------------------------------------------------------------------


  CREATE TABLE "HR"."DEPARTMENTS"

   (    "DEPARTMENT_ID" NUMBER(4,0),

        "DEPARTM



SYS> !ls

afiedt.buf    ex_07_18.sql  lab_04_03.sql    lab_05_04.sql  lab_08_03.sql    lab2_01_04.sql   m_05_01.sql   m_05_05b.sql    q_dbf.sql        test_hjs_03.sql

Desktop       ex_07_22.sql  lab_05_01_2.sql  lab_06_01.sql  lab2_01_01.sql   lab2_02_01.sql   m_05_02.sql   m_05_06.sql     q_log.sql        test_hjs_04.sql

ex_06_12.sql  ex_07_m.sql   lab_05_01.sql    lab_07_02.sql  lab2_01_02.sql   lab2_02_02.sql   m_05_03.sql   m_07_02.sql     q_tbs.sql        test_hjs_05.sql

ex_06_14.sql  job_pkg.plb   lab_05_02_2.sql  lab_08_01.sql  lab2_01_03.sql   lab2_02_03a.sql  m_05_04.sql   oradiag_oracle  test_hjs_01.sql  test_hjs_06.sql

ex_07_16.sql  job_pkg.sql   lab_05_02.sql    lab_08_02.sql  lab2_01_04b.sql  labs             m_05_05a.sql  over_load.sql   test_hjs_02.sql


SYS> !mkdir directory


SYS> !ls

afiedt.buf    ex_07_16.sql  job_pkg.sql      lab_05_02.sql  lab_08_02.sql   lab2_01_04b.sql  labs         m_05_05a.sql    over_load.sql    test_hjs_02.sql

Desktop       ex_07_18.sql  lab_04_03.sql    lab_05_04.sql  lab_08_03.sql   lab2_01_04.sql   m_05_01.sql  m_05_05b.sql    q_dbf.sql        test_hjs_03.sql

directory     ex_07_22.sql  lab_05_01_2.sql  lab_06_01.sql  lab2_01_01.sql  lab2_02_01.sql   m_05_02.sql  m_05_06.sql     q_log.sql        test_hjs_04.sql

ex_06_12.sql  ex_07_m.sql   lab_05_01.sql    lab_07_02.sql  lab2_01_02.sql  lab2_02_02.sql   m_05_03.sql  m_07_02.sql     q_tbs.sql        test_hjs_05.sql

ex_06_14.sql  job_pkg.plb   lab_05_02_2.sql  lab_08_01.sql  lab2_01_03.sql  lab2_02_03a.sql  m_05_04.sql  oradiag_oracle  test_hjs_01.sql  test_hjs_06.sql


SYS> !

[oracle@localhost ~]$ ls

afiedt.buf    ex_07_16.sql  job_pkg.sql      lab_05_02.sql  lab_08_02.sql   lab2_01_04b.sql  labs         m_05_05a.sql    over_load.sql    test_hjs_02.sql

Desktop       ex_07_18.sql  lab_04_03.sql    lab_05_04.sql  lab_08_03.sql   lab2_01_04.sql   m_05_01.sql  m_05_05b.sql    q_dbf.sql        test_hjs_03.sql

directory     ex_07_22.sql  lab_05_01_2.sql  lab_06_01.sql  lab2_01_01.sql  lab2_02_01.sql   m_05_02.sql  m_05_06.sql     q_log.sql        test_hjs_04.sql

ex_06_12.sql  ex_07_m.sql   lab_05_01.sql    lab_07_02.sql  lab2_01_02.sql  lab2_02_02.sql   m_05_03.sql  m_07_02.sql     q_tbs.sql        test_hjs_05.sql

ex_06_14.sql  job_pkg.plb   lab_05_02_2.sql  lab_08_01.sql  lab2_01_03.sql  lab2_02_03a.sql  m_05_04.sql  oradiag_oracle  test_hjs_01.sql  test_hjs_06.sql

[oracle@localhost ~]$ rm -rf directory/

[oracle@localhost ~]$ ls

afiedt.buf    ex_07_18.sql  lab_04_03.sql    lab_05_04.sql  lab_08_03.sql    lab2_01_04.sql   m_05_01.sql   m_05_05b.sql    q_dbf.sql        test_hjs_03.sql

Desktop       ex_07_22.sql  lab_05_01_2.sql  lab_06_01.sql  lab2_01_01.sql   lab2_02_01.sql   m_05_02.sql   m_05_06.sql     q_log.sql        test_hjs_04.sql

ex_06_12.sql  ex_07_m.sql   lab_05_01.sql    lab_07_02.sql  lab2_01_02.sql   lab2_02_02.sql   m_05_03.sql   m_07_02.sql     q_tbs.sql        test_hjs_05.sql

ex_06_14.sql  job_pkg.plb   lab_05_02_2.sql  lab_08_01.sql  lab2_01_03.sql   lab2_02_03a.sql  m_05_04.sql   oradiag_oracle  test_hjs_01.sql  test_hjs_06.sql

ex_07_16.sql  job_pkg.sql   lab_05_02.sql    lab_08_02.sql  lab2_01_04b.sql  labs             m_05_05a.sql  over_load.sql   test_hjs_02.sql

[oracle@localhost ~]$ mkdir reports_dir

[oracle@localhost ~]$ exit

exit


SYS> create directory reports_dir as '/home/oracle/reports_dir';


Directory created.


SYS> !ls /home/oracle/reports_dir


SYS> desc utl_file

PROCEDURE FCLOSE

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ --------

 FILE                           RECORD                  IN/OUT

   ID                           BINARY_INTEGER          IN/OUT

   DATATYPE                     BINARY_INTEGER          IN/OUT

   BYTE_MODE                    BOOLEAN                 IN/OUT

PROCEDURE FCLOSE_ALL

PROCEDURE FCOPY

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ --------

 SRC_LOCATION                   VARCHAR2                IN

 SRC_FILENAME                   VARCHAR2                IN

 DEST_LOCATION                  VARCHAR2                IN

 DEST_FILENAME                  VARCHAR2                IN

 START_LINE                     BINARY_INTEGER          IN     DEFAULT

 END_LINE                       BINARY_INTEGER          IN     DEFAULT

PROCEDURE FFLUSH

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ --------

 FILE                           RECORD                  IN

   ID                           BINARY_INTEGER          IN

   DATATYPE                     BINARY_INTEGER          IN

   BYTE_MODE                    BOOLEAN                 IN

PROCEDURE FGETATTR

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ --------

 LOCATION                       VARCHAR2                IN

 FILENAME                       VARCHAR2                IN

 FEXISTS                        BOOLEAN                 OUT

 FILE_LENGTH                    NUMBER                  OUT

 BLOCK_SIZE                     BINARY_INTEGER          OUT

FUNCTION FGETPOS RETURNS BINARY_INTEGER

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ --------

 FILE                           RECORD                  IN

   ID                           BINARY_INTEGER          IN

   DATATYPE                     BINARY_INTEGER          IN

   BYTE_MODE                    BOOLEAN                 IN

FUNCTION FOPEN RETURNS RECORD

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ --------

   ID                           BINARY_INTEGER          OUT

   DATATYPE                     BINARY_INTEGER          OUT

   BYTE_MODE                    BOOLEAN                 OUT

 LOCATION                       VARCHAR2                IN

 FILENAME                       VARCHAR2                IN

 OPEN_MODE                      VARCHAR2                IN

 MAX_LINESIZE                   BINARY_INTEGER          IN     DEFAULT

FUNCTION FOPEN_NCHAR RETURNS RECORD

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ --------

   ID                           BINARY_INTEGER          OUT

   DATATYPE                     BINARY_INTEGER          OUT

   BYTE_MODE                    BOOLEAN                 OUT

 LOCATION                       VARCHAR2                IN

 FILENAME                       VARCHAR2                IN

 OPEN_MODE                      VARCHAR2                IN

 MAX_LINESIZE                   BINARY_INTEGER          IN     DEFAULT

PROCEDURE FREMOVE

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ --------

 LOCATION                       VARCHAR2                IN

 FILENAME                       VARCHAR2                IN

PROCEDURE FRENAME

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ --------

 SRC_LOCATION                   VARCHAR2                IN

 SRC_FILENAME                   VARCHAR2                IN

 DEST_LOCATION                  VARCHAR2                IN

 DEST_FILENAME                  VARCHAR2                IN

 OVERWRITE                      BOOLEAN                 IN     DEFAULT

PROCEDURE FSEEK

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ --------

 FILE                           RECORD                  IN/OUT

   ID                           BINARY_INTEGER          IN/OUT

   DATATYPE                     BINARY_INTEGER          IN/OUT

   BYTE_MODE                    BOOLEAN                 IN/OUT

 ABSOLUTE_OFFSET                BINARY_INTEGER          IN     DEFAULT

 RELATIVE_OFFSET                BINARY_INTEGER          IN     DEFAULT

PROCEDURE GET_LINE

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ --------

 FILE                           RECORD                  IN

   ID                           BINARY_INTEGER          IN

   DATATYPE                     BINARY_INTEGER          IN

   BYTE_MODE                    BOOLEAN                 IN

 BUFFER                         VARCHAR2                OUT

 LEN                            BINARY_INTEGER          IN     DEFAULT

PROCEDURE GET_LINE_NCHAR

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ --------

 FILE                           RECORD                  IN

   ID                           BINARY_INTEGER          IN

   DATATYPE                     BINARY_INTEGER          IN

   BYTE_MODE                    BOOLEAN                 IN

 BUFFER                         NVARCHAR2               OUT

 LEN                            BINARY_INTEGER          IN     DEFAULT

PROCEDURE GET_RAW

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ --------

 FILE                           RECORD                  IN

   ID                           BINARY_INTEGER          IN

   DATATYPE                     BINARY_INTEGER          IN

   BYTE_MODE                    BOOLEAN                 IN

 BUFFER                         RAW                     OUT

 LEN                            BINARY_INTEGER          IN     DEFAULT

FUNCTION IS_OPEN RETURNS BOOLEAN

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ --------

 FILE                           RECORD                  IN

   ID                           BINARY_INTEGER          IN

   DATATYPE                     BINARY_INTEGER          IN

   BYTE_MODE                    BOOLEAN                 IN

PROCEDURE NEW_LINE

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ --------

 FILE                           RECORD                  IN

   ID                           BINARY_INTEGER          IN

   DATATYPE                     BINARY_INTEGER          IN

   BYTE_MODE                    BOOLEAN                 IN

 LINES                          BINARY_INTEGER          IN     DEFAULT

PROCEDURE PUT

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ --------

 FILE                           RECORD                  IN

   ID                           BINARY_INTEGER          IN

   DATATYPE                     BINARY_INTEGER          IN

   BYTE_MODE                    BOOLEAN                 IN

 BUFFER                         VARCHAR2                IN

PROCEDURE PUTF

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ --------

 FILE                           RECORD                  IN

   ID                           BINARY_INTEGER          IN

   DATATYPE                     BINARY_INTEGER          IN

   BYTE_MODE                    BOOLEAN                 IN

 FORMAT                         VARCHAR2                IN

 ARG1                           VARCHAR2                IN     DEFAULT

 ARG2                           VARCHAR2                IN     DEFAULT

 ARG3                           VARCHAR2                IN     DEFAULT

 ARG4                           VARCHAR2                IN     DEFAULT

 ARG5                           VARCHAR2                IN     DEFAULT

PROCEDURE PUTF_NCHAR

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ --------

 FILE                           RECORD                  IN

   ID                           BINARY_INTEGER          IN

   DATATYPE                     BINARY_INTEGER          IN

   BYTE_MODE                    BOOLEAN                 IN

 FORMAT                         NVARCHAR2               IN

 ARG1                           NVARCHAR2               IN     DEFAULT

 ARG2                           NVARCHAR2               IN     DEFAULT

 ARG3                           NVARCHAR2               IN     DEFAULT

 ARG4                           NVARCHAR2               IN     DEFAULT

 ARG5                           NVARCHAR2               IN     DEFAULT

PROCEDURE PUT_LINE

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ --------

 FILE                           RECORD                  IN

   ID                           BINARY_INTEGER          IN

   DATATYPE                     BINARY_INTEGER          IN

   BYTE_MODE                    BOOLEAN                 IN

 BUFFER                         VARCHAR2                IN

 AUTOFLUSH                      BOOLEAN                 IN     DEFAULT

PROCEDURE PUT_LINE_NCHAR

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ --------

 FILE                           RECORD                  IN

   ID                           BINARY_INTEGER          IN

   DATATYPE                     BINARY_INTEGER          IN

   BYTE_MODE                    BOOLEAN                 IN

 BUFFER                         NVARCHAR2               IN

PROCEDURE PUT_NCHAR

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ --------

 FILE                           RECORD                  IN

   ID                           BINARY_INTEGER          IN

   DATATYPE                     BINARY_INTEGER          IN

   BYTE_MODE                    BOOLEAN                 IN

 BUFFER                         NVARCHAR2               IN

PROCEDURE PUT_RAW

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ --------

 FILE                           RECORD                  IN

   ID                           BINARY_INTEGER          IN

   DATATYPE                     BINARY_INTEGER          IN

   BYTE_MODE                    BOOLEAN                 IN

 BUFFER                         RAW                     IN

 AUTOFLUSH                      BOOLEAN                 IN     DEFAULT


SYS> CREATE OR REPLACE PROCEDURE create_user (

  2    p_user_name VARCHAR2, p_

  3  BEGIN

  4  END;

  5  /


Warning: Procedure created with compilation errors.


SYS> ED

Wrote file afiedt.buf


  1  CREATE OR REPLACE PROCEDURE create_user (

  2    p_user_name VARCHAR2) IS

  3  BEGIN

  4    execute immediate 'CREATE USER ' || p_user_name || ' IDENTIFIED BY ' || p_user_name);

  5* END;

SYS> /       


Warning: Procedure created with compilation errors.


SYS> show error

Errors for PROCEDURE CREATE_USER:


LINE/COL ERROR

-------- -----------------------------------------------------------------

4/86     PLS-00103: Encountered the symbol ")" when expecting one of the

         following:

         . ( * @ % & = - + ; < / > at in is mod remainder not rem

         return returning <an exponent (**)> <> or != or ~= >= <= <>

         and or like like2 like4 likec between into using || bulk

         member submultiset

         The symbol "(" was substituted for ")" to continue.


SYS> ed

Wrote file afiedt.buf


  1  CREATE OR REPLACE PROCEDURE create_user (

  2    p_user_name VARCHAR2) IS

  3  BEGIN

  4    execute immediate 'CREATE USER ' || p_user_name || ' IDENTIFIED BY ' || p_user_name;

  5* END;

SYS> /


Procedure created.


SYS> exec create_user

BEGIN create_user; END;


      *

ERROR at line 1:

ORA-06550: line 1, column 7:

PLS-00306: wrong number or types of arguments in call to 'CREATE_USER'

ORA-06550: line 1, column 7:

PL/SQL: Statement ignored



SYS> exec create_user('hjs');


PL/SQL procedure successfully completed.


SYS> 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)

 PASSWORD_VERSIONS                                                          VARCHAR2(8)

 EDITIONS_ENABLED                                                           VARCHAR2(1)

 AUTHENTICATION_TYPE                                                        VARCHAR2(8)


SYS> select username from dba_users;


USERNAME

------------------------------

MGMT_VIEW

SYS

SYSTEM

DBSNMP

SYSMAN

JSHONG

HR

U2

HJS

U1

OUTLN


USERNAME

------------------------------

WMSYS

APPQOSSYS

DIP

ORACLE_OCM


15 rows selected.


SYS> set timing on

SYS> alter system set cursor_sharing = EXACT;


System altered.


Elapsed: 00:00:00.04

SYS> create tablespace query_data

  2  datafile '/u01/app/oracle/oradata/orcl/query_data01.dbf' size 100m

  3  autoextend on next 10m maxsize 500m;

  

Tablespace created.


Elapsed: 00:00:03.68

SYS> connect hr/hr

Connected.

HR> create table big_table (c1 number, c2 varchar2(200)) tablespace query_data;


Table created.


Elapsed: 00:00:00.06

HR> declare 

  2  i number;

  3  str varchar2(200);

  4  begin

  5    for i in 1..100000 loop

  6      str := 'insert into big_table values ('||i||', RPAD('||i||', 100, ''*''))';

  7      execute immediate str;

  8    end loop;

  9  end;

 10  /


PL/SQL procedure successfully completed.


Elapsed: 00:00:28.39

HR> truncate table big_table;


Table truncated.


Elapsed: 00:00:00.46

HR> declare 

  2  i number;

  3  str varchar2(200);

  4  begin

  5    str:= 'insert into big_table values (:x1, :x2)';

  6    for i in 1..100000 loop

  7      execute immediate str using i, RPAD(i, 100, '*');

  8    end loop;

  9  end;

 10  /


PL/SQL procedure successfully completed.


Elapsed: 00:00:03.43

HR> set timing off

HR> 



'스마트웹&콘텐츠 개발자 과정 > PL SQL' 카테고리의 다른 글

PL/SQL 1일차  (0) 2018.07.23

Pseudo Column (의사 결정 컬럼)

    • ROWNUM : Top-N 분석 시 사용
               1부터 시작
    • ROWID : 물리적 Row 주소값


* Top-N 분석 예제 :
employees 테이블에서 최상위 소득자 3명의 이름과 급여를 표시하시오.
HR> select ROWNUM as RANK, last_name, salary
  2  from (select last_name, salary from employees order by salary DESC)
  3  where ROWNUM <= 3;

      RANK LAST_NAME                     SALARY
---------- ------------------------- ----------
         1 Whalen                         25000
         2 King                           24000
         3 Kochhar                        17000


HR> select ROWNUM as RANK, last_name, hire_date
  2  from (select last_name, hire_date from employees order by hire_date DESC)
  3  where ROWNUM <= 5;

      RANK LAST_NAME                 HIRE_DATE
---------- ------------------------- ---------
         1 Zlotkey                   29-JAN-00
         2 Mourgos                   16-NOV-99
         3 Grant                     24-MAY-99
         4 Lorentz                   07-FEB-99
         5 Vargas                    09-JUL-98


* ROWID 예시 :


ROWID              EMPLOYEE_ID LAST_NAME

------------------ ----------- -------------------------

AAAETOAAEAAAAELAAL         149 Zlotkey

AAAETOAAEAAAAELAAM         174 Abel

AAAETOAAEAAAAELAAN         176 Taylor

AAAETOAAEAAAAELAAO         178 Grant

AAAETOAAEAAAAELAAP         200 Whalen

AAAETOAAEAAAAELAAQ         201 Hartstein

AAAETOAAEAAAAELAAR         202 Fay

AAAETOAAEAAAAELAAS         205 Higgins

AAAETOAAEAAAAELAAT         206 Gietz



※ 6 3 6 3으로 끊으면 된다.

AAAEY/   AAE   AAAAFb   AAT

  6       3       6      3

Object# Field# Block#  Row#



select min(rowid), employee_id, last_name

from t1

group by employee_id, last_name

order by 2;

※ group by절에는 group function을 제외한 나머지 컬럼이 반드시 들어가야 한다.




* 중복을 제거!


방법 1 :


delete from t1

where rowid not in (select(min(rowid) from t1

                    group by employee_id);



방법 2 : 별칭을 주어 rowid 최소값보다 큰 것들을 제거


delete from t1 a

where rowid > (select min(rowid) from t1 b

               where a.employee_id = b.employee_id);




* mission! 급여 상위 6 ~ 10위를 추출하라.



'스마트웹&콘텐츠 개발자 과정 > Oracle' 카테고리의 다른 글

Workshop II 남은 부분 수업  (0) 2018.07.24
admin 수업 마지막  (0) 2018.07.03
admin 수업  (0) 2018.06.22
Admin 수업 - 백업 실습  (0) 2018.06.21
admin  (0) 2018.06.20

SYS> conn hr/hr

Connected.

HR> create table emp as select * from employees;


Table created.


HR> create index emp_id_no on emp(employee_id);


Index created.


HR> insert into emp select * from emp;


20 rows created.


HR> /


40 rows created.


HR> /


80 rows created.


HR> /


160 rows created.


HR> /


320 rows created.


HR> /


640 rows created.


HR> /


1280 rows created.


HR> /


2560 rows created.


HR> /


5120 rows created.


HR> /


10240 rows created.


HR> /


20480 rows created.


HR> /


40960 rows created.


HR> commit;


Commit complete.


HR> select sum(blocks) from user_segments where segment_name = 'EMP';


SUM(BLOCKS)

-----------

        896


HR> delete from emp;


81920 rows deleted.


HR> insert into emp select * from employees;


20 rows created.


HR> commit;


Commit complete.


HR> alter table emp shrink space check;

alter table emp shrink space check

*

ERROR at line 1:

ORA-10636: ROW MOVEMENT is not enabled



HR> select table_name, row_movement from user_tables where table_name = 'EMP';


TABLE_NAME                     ROW_MOVE

------------------------------ --------

EMP                            DISABLED


HR> alter table emp enable row movement;


Table altered.


HR> select table_name, row_movement from user_tables where table_name = 'EMP';


TABLE_NAME                     ROW_MOVE

------------------------------ --------

EMP                            ENABLED


HR> alter table emp shrink space check;

alter table emp shrink space check

*

ERROR at line 1:

ORA-10655: Segment can be shrunk



HR> alter table emp shrink space compact;


Table altered.


HR> alter table emp shrink space;


Table altered.


HR> select sum(blocks) from user_segments where segment_name = 'EMP';


SUM(BLOCKS)

-----------

          8


HR> create table rp_emp

  2  partition by range(department_id) (

  3  partition p_10 values less than (30) tablespace new_users,

  4  partition p_30 values less than (60) tablespace users,

  5  partition p_50 values less than (90) tablespace new_users,

  6  partition p_70 values less than (maxvalue) tablespace users)

  7  as        

  8  select * from employees;


Table created.


HR> insert into rp_emp   

  2  select * from rp_emp;


20 rows created.


HR> /


40 rows created.


HR> /


80 rows created.


HR> /


160 rows created.


HR> commit;


Commit complete.


HR> create table hp_emp

  2  partition by hash(employee_id) partitions 4

  3  store in (users, new_users)

  4  as select * from employees;


Table created.


HR> insert into hp_emp

  2  select * from hp_emp;


20 rows created.


HR> /


40 rows created.


HR> /


80 rows created.


HR> /


160 rows created.


HR> /


320 rows created.


HR> commit;


Commit complete.


HR> select table_name, partition_name from user_tab_partitions;


TABLE_NAME                     PARTITION_NAME

------------------------------ ------------------------------

RP_EMP                         P_70

RP_EMP                         P_50

RP_EMP                         P_30

RP_EMP                         P_10

HP_EMP                         SYS_P23

HP_EMP                         SYS_P24

HP_EMP                         SYS_P22

HP_EMP                         SYS_P21


8 rows selected.


HR> select count(*) from rp_emp partition (p_10);


  COUNT(*)

----------

        48


HR> select count(*) from rp_emp partition (p_30);


  COUNT(*)

----------

        80


HR> select count(*) from rp_emp partition (p_50);


  COUNT(*)

----------

        96


HR> select count(*) from rp_emp partition (p_70);


  COUNT(*)

----------

        96


HR> select count(*) from rp_emp partition (sys_p21);

select count(*) from rp_emp partition (sys_p21)

                                       *

ERROR at line 1:

ORA-02149: Specified partition does not exist



HR> select count(*) from hp_emp partition (sys_p21);


  COUNT(*)

----------

        96


HR> select count(*) from hp_emp partition (sys_p22);


  COUNT(*)

----------

       128


HR> select count(*) from hp_emp partition (sys_p23);


  COUNT(*)

----------

       256


HR> select count(*) from hp_emp partition (sys_p24);


  COUNT(*)

----------

       160


HR> conn / as sysdba 

Connected.

SYS> select tp.endian_format

  2  from v$transportable_platform tp, v$database d

  3  where tp.platform_name = d.platform_name;


ENDIAN_FORMAT

--------------

Little






Cluster Table 실습



HR> conn hr/hr

Connected.

HR> create cluster emp_dept_clu(department_id number(4))

  2  tablespace users;


Cluster created.


HR> create index emp_dept_clu_ind

  2  on cluster emp_dept_clu

  3  tablespace users;


Index created.


HR> create table dept_clu cluster emp_dept_clu(department_id)

  2  as select * from departments;


Table created.


HR> create table emp_clu cluster emp_dept_clu(department_id)    

  2  as select * from departments;


Table created.


HR> drop table emp_clu;


Table dropped.


HR> create table emp_clu cluster emp_dept_clu(department_id)

  2  as select * from employees;


Table created.


HR> select rowid, department_id from dept_clu

  2  where department_id = 50;


ROWID              DEPARTMENT_ID

------------------ -------------

AAAETCAAEAAAADPAAA            50


HR> select rowid, employee_id, department_id from emp_clu

  2  where department_id = 50;


ROWID              EMPLOYEE_ID DEPARTMENT_ID

------------------ ----------- -------------

AAAETCAAEAAAADPAAA         124            50

AAAETCAAEAAAADPAAB         141            50

AAAETCAAEAAAADPAAC         142            50

AAAETCAAEAAAADPAAD         143            50

AAAETCAAEAAAADPAAE         144            50

 



'스마트웹&콘텐츠 개발자 과정 > Oracle' 카테고리의 다른 글

ROWID를 이용한 중복 제거  (0) 2018.07.26
admin 수업 마지막  (0) 2018.07.03
admin 수업  (0) 2018.06.22
Admin 수업 - 백업 실습  (0) 2018.06.21
admin  (0) 2018.06.20

> sqlplus / as sysdba > startup > conn hr/hr


HR> select first_name from employees where employee_id=100;


FIRST_NAME

--------------------------------------------------

Steven


HR> DECLARE

  2  v_fname VARCHAR2(20);

  3  BEGIN

  4  SELECT first_name INTO v_fname FROM employees

  5  WHERE employee_id=100;

  6  END;

  7  /


PL/SQL procedure successfully completed.


HR> ed

Wrote file afiedt.buf


  1  DECLARE

  2  v_fname VARCHAR2(20);

  3  BEGIN

  4  SELECT first_name INTO v_fname FROM employees

  5  WHERE employee_id=100;

  6* END;

HR> show serveroutput

serveroutput OFF

HR> set serveroutput on

HR> ed      

Wrote file afiedt.buf


  1  DECLARE

  2  v_fname VARCHAR2(20);

  3  BEGIN

  4  SELECT first_name INTO v_fname FROM employees

  5  WHERE employee_id=100;

  6  DBMS_OUTPUT.PUT_LINE(' The First Name of the Employee is ' || v_fname);

  7* END;

HR> /

The First Name of the Employee is Steven


PL/SQL procedure successfully completed.


HR> BEGIN


HR> DBMS_OUTPUT.PUT_LINE('Hello World');

SP2-0734: unknown command beginning "DBMS_OUTPU..." - rest of line ignored.

HR> begin

  2  dbms_output.put_line('Hello World');

  3  end;

  4  /

Hello World


PL/SQL procedure successfully completed.


HR> save lab_01_02

Created file lab_01_02.sql




* 변수에 & 해서 old, new값 안 볼 때 : set verify off

* procedure successfully ~ 보기 싫을 때 : set feedback off



declare

  v_maxdid departments.department_id%type;

  v_rows varchar2(100);

begin

  select max(department_id)

  into v_maxdid

  from departments;

  dbms_output.put_line('Maximum department id is '||v_maxdid);


  insert into departments

  values (v_maxdid+10, '&b_dname', null, null);

  v_rows := sql%rowcount || ' row inserted';

  dbms_output.put_line(v_rows);

end;

/




'스마트웹&콘텐츠 개발자 과정 > PL SQL' 카테고리의 다른 글

마지막 수업  (0) 2018.07.30

+ Recent posts