오라클 - 사용자 생성부터 CRUD까지 - 1

Date:

카테고리:

태그:

img


사용자 생성하기

먼저 SQL Plus에서 Administrator로 접속한다.

sys AS SYSDBA

그 후 사용자를 생성한다.

 CREATE USER junyihong IDENTIFIED BY 0000;

// 오류 발생 : 아이디 앞에 c##을 붙이도록 네이밍 규칙이 바뀌었다.

오라클 12C버전부터 등장하는 CDB, PDB 개념 때문.

C##을 붙이고 싶지 않다면 다음 명령어를 입력한다.

 alter session set "_ORACLE_SCRIPT" = true;

이후 SQL Plus 종료후 재진입.

junyihong, 0000 으로 로그인해본다.

//오류발생 : CREATE SESSION 권한을 갖고있지 않음. 권한부여를 해줘야 함!

CMD로 진입 후 권한부여 명령어 입력.

GRANT DBA TO junyihong;

// junyihong 계정에 최고 권한인 Data Base Administrator 권한을 부여한다.

이후 SQL Plus로 진입해서 junyihong으로 접속해보면 오류가 발생하지않고 접속 성공.


Table 만들기

DBA권한을 받은 계정으로 로그인해서 표를 만들어보자.

표의 이름은 topic이며, id, title, description, created를 목차로 갖는다.

SQL Plus에서 다음 명령어를 입력

 CREATE TABLE topic (
        ID NUMBER NOT NULL,
        TITLE VARCHAR2(50) NOT NULL,
        DESCRIPTION VARCHAR2(2000),
        CREATED DATE NOT NULL
    );
  • ID는 숫자(NUMBER) 이며, 비울 수 없다. (NOT NULL)
  • TITLE은 문자형(VARCHAR2)이며, 50글자 이내이고 비울 수 없다. (NOT NULL)
  • DESCRIPTION은 문자형(VARCHAR2)이며, 2000글자 이내이다.
  • CREATE는 날짜형(DATE)이며, 비울 수 없다. (NOT NULL)

오류가 발생하지 않는다면 테이블이 생성되었다는 문구가 출력된다.

⚠️이후 커밋을 해야한다

commit;


만든 테이블 조회하기

 SELECT table_name FROM all_tables WHERE OWNER = 'JUNYIHONG';

⚠️ 아이디를 소문자로 써서 오류발생… ‘JUNYIHONG이 오너인 테이블들에서 테이블네임을 가져와라’라는 의미


테이블에 CRUD (create, read, update, delete) 하기


1. 행 추가하기


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

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

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

commit;

⚠️SYSDATE를 ‘SYSDATE’라고 적어서 오류발생…

📰 결과물의 모습

id title description created
1 ORACLE ORACLE is … 2023-04-21
2 My SQL MySQL is … 2023-04-21
3 SQL Server SQL Server is … 2023-04-21


2. 행 읽기

 SELECT * FROM topic;

// topic 테이블의 모든 행렬을 가져온다.

 SELECT id, title, created FROM topic;

// topic 테이블의 아이디, 타이틀, 만든날짜를 선택해서 가져온다.

 SELECT * FROM topic WHERE id > 1;

// 아이디가 1인 행 만을 가져온다.

SELECT * FROM topic WHERE id > 1;

// 아이디가 1보다 큰 행만을 가져온다.

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

// 아이디가 1인 행에서 아이디, 타이틀, 만든날짜를 가져온다.



3. 정렬하기

 SELECT * FROM topic ORDER BY id DESC;

// 내림차순 / Descent 하강

 SELECT * FROM topic ORDER BY id ASC;

// 오름차순 / Ascent 상승

 SELECT * FROM topic OFFSET 1 ROWS;

// OFFSET 1은 0번째 이후에 있는 행들만 가져온다는 뜻. // === 첫번째 이후에 있는 행들만 가져온다.

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

// OFFSET 0 은 다 가져오겠다는 의미이고 OFFSET 1은 첫번째 이후의 행들을 가져온다는 뜻.
// FETCH NEXT 2 ROWS ONLY 은 OFFSET 1 이후에서 오직 두개의 행만을 가져온다는 뜻.


4. 업데이트하기 (수정하기)

UPDATE topic
SET
    title = 'MSSQL',
    description = 'MSSQL is ...'
WHERE
    id = 3;

commit;

⚠️ UPDATE문과 DELETE문은 WHERE문이 없다면 이상한거라고 생각하기 / 없으면 전체적용됨!!!


5. 삭제하기

 DELETE FROM topic WHERE id = 3;

// id값이 3인 행을 삭제한다.

Oracle 카테고리 내 다른 글 보러가기

댓글 남기기