본문 바로가기
코딩 어쩌구/Data

[생활코딩] Oracle (1)

by annmunju 2021. 1. 21.

opentutorials.org/course/3885

 

Oracle - 생활코딩

수업소개 무료이면서, 오픈소스이고, 3대 데이터베이스 중에 하나인 Oracle의 입문 수업입니다.  수업대상 정보기술의 심장인 데이터베이스가 어떻게 동작하는지 궁금하신 분 데이터를 보다 전

opentutorials.org

 

1. 가격 정책

 - Express (무료. 본 강의에서 사용함) > Personal > Standard(Named User plus / Processor) > Enterprise(Named User plus / Processor)


2. 설치


3. '나 이거 할 줄 알아'를 외치는 최소 단위

 - SETUP > CRUD > GROUP > RUN


4. 사용자와 스키마

 - 표에 정보를 기록하고 읽는것이 첫째 목적이다. 표가 많아지면 연관된 표를 그룹핑하기 위한 체계가 필요한데 그것을 스키마라고 함. 

 - 여러 컴퓨터들이 네트워크로 오라클에 접속해 관리. 스키마를 생성하면 사용자가 사용. 사용자가 스키마를 관리. 

 - 사용자 추가

Microsoft Windows [Version 10.0.19041.746]
(c) 2020 Microsoft Corporation. All rights reserved.

C:\Users\뭉주>sqlplus

SQL*Plus: Release 18.0.0.0.0 - Production on 목 1월 21 08:52:02 2021
Version 18.4.0.0.0

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

사용자명 입력: sys AS SYSDBA
비밀번호 입력:

다음에 접속됨:
Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0

SQL> CREATE USER mungdo IDENTIFIED BY 비밀번호;
CREATE USER mungdo IDENTIFIED BY 비밀번호
            *
1행에 오류:
ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다.


SQL> ALTER SESSION SET "_ORACLE_SCRIPT" = TRUE;

세션이 변경되었습니다.

SQL> CREATE USER mungdo IDENTIFIED BY 비밀번호;

사용자가 생성되었습니다.

SQL> exit
Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0에서 분리되었습니다.

C:\Users\뭉주>sqlplus

SQL*Plus: Release 18.0.0.0.0 - Production on 목 1월 21 08:57:48 2021
Version 18.4.0.0.0

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

사용자명 입력: mungdo
비밀번호 입력:
ERROR:
ORA-01045: 사용자 MUNGDO는 CREATE SESSION 권한을 가지고있지 않음; 로그온이
거절되었습니다

 

사용자명 입력: sys AS SYSDBA
비밀번호 입력:

다음에 접속됨:
Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0

SQL> GRANT DBA TO mungdo;

권한이 부여되었습니다.

SQL> exit
Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0에서 분리되었습니다.

C:\Users\뭉주>sqlplus

SQL*Plus: Release 18.0.0.0.0 - Production on 목 1월 21 09:03:58 2021
Version 18.4.0.0.0

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

사용자명 입력: mungdo
비밀번호 입력:

다음에 접속됨:
Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0

 


5. 테이블

 - 테이블 생성 

SQL> CREATE TABLE mungdo.topic(
	id NUMBER NOT NULL,
	title VARCHAR2(50) NOT NULL,
	description VARCHAR2(4000) NOT NULL,
	created DATE NOT NULL
);

SQL> SELECT table_name FROM all_tables WHERE OWNER = 'MUNGDO';

TABLE_NAME
--------------------------------------------------------------------------------
TOPIC

* 왜 OWNER 이름은 대문자로 써야할까..? 


6. 행추가

SQL> INSERT INTO topic(id, title, description, created)
  2  VALUES
  3  (1,'ORACLE','ORACLE is ...', SYSDATE);

1 개의 행이 만들어졌습니다.

SQL> INSERT INTO topic(id, title, description, created)
  2  VALUES (2,'MySQL','MySQL is ...', SYSDATE);

1 개의 행이 만들어졌습니다.

SQL>
SQL> INSERT INTO topic(id, title, description, created)
  2  VALUES (3,'SQL Server','SQL Server is ...', SYSDATE);

1 개의 행이 만들어졌습니다.

SQL> commit;

커밋이 완료되었습니다.
#커밋을 해야 실제 데이터에 반영됨. 트랜젝션이랑 관련있다고 하는데.. 아직 설명 X


7. SQL이란?

 - 엑셀 행 추가에 한계가 있음. SQL은 방대한 데이터 저장 가능.

 - 명령어를 통해 데이터베이스를 제어할 수 있음. 

 - 성능이 뛰어남. 명령어로 자동화 할 수 있음.

 

8. 행 읽기

 - topic 테이블 읽기

SQL> SELECT * FROM topic;

        ID
----------
TITLE
--------------------------------------------------------------------------------
DESCRIPTION
--------------------------------------------------------------------------------
CREATED
--------
         1
ORACLE
ORACLE is ...
21/01/21


        ID
----------
TITLE
--------------------------------------------------------------------------------
DESCRIPTION
--------------------------------------------------------------------------------
CREATED
--------
         2
MySQL
MySQL is ...
21/01/21


        ID
----------
TITLE
--------------------------------------------------------------------------------
DESCRIPTION
--------------------------------------------------------------------------------
CREATED
--------
         3
SQL Server
SQL Server is ...
21/01/21

 

 - 보고싶은 것만 보기 (id, title, created)

SQL> SELECT id, title, created FROM topic;

 

 - 보고싶은 것만 보기 (id, title, created) + id가 1번인 행만 보기 

SQL> SELECT id, title, created FROM topic WHERE id = 1;

 

 - 정렬 (ORDER BY, DESC, ASC)

SQL> SELECT * FROM topic ORDER BY id DESC;

        ID
----------
TITLE
--------------------------------------------------------------------------------
DESCRIPTION
--------------------------------------------------------------------------------
CREATED
--------
         3
SQL Server
SQL Server is ...
21/01/21


        ID
----------
TITLE
--------------------------------------------------------------------------------
DESCRIPTION
--------------------------------------------------------------------------------
CREATED
--------
         2
MySQL
MySQL is ...
21/01/21


        ID
----------
TITLE
--------------------------------------------------------------------------------
DESCRIPTION
--------------------------------------------------------------------------------
CREATED
--------
         1
ORACLE
ORACLE is ...
21/01/21

 

 - 페이징

SELECT * FROM topic 
    OFFSET 1 ROWS
    FETCH NEXT 2 ROWS ONLY;

 > OFFSET n ROWS : n부터 가져오기(0부터 시작)

 > FETCH NEXT n ROWS ONLY : n 개 가져오기

 >> 1부터 가져와서 2개의 열을 출력

728x90

'코딩 어쩌구 > Data' 카테고리의 다른 글

[edwith] 파이썬을 이용한 웹 스크래핑 (1)  (0) 2021.05.03
[생활코딩] Oracle (2)  (0) 2021.01.21
[생활코딩] MySQL (3)  (0) 2021.01.20
[생활코딩] MySQL (2)  (0) 2021.01.19
[생활코딩] MySQL (1)  (0) 2021.01.18