[Oracle] Oracle 기본 문법
⛅ 시작하기 앞서
◾ 사용자와 스키마 생성
cmd
에 sqlplus
입력 후 엔터
sys AS SYSDBA
로 접속
CREATE USER ann IDENTIFIED 111111;
◾ 사용자에게 권한 부여
sys AS SYSDBA
로 접속
GRANT DBA TO ann;
exit 후 ann
(password: 111111)으로 로그인 가능
⛅ Oracle 기본 문법
◾ table 생성하기
CREATE TABLE topic (
id NUMBER NOT NULL,
title VARCHAR2(50) NOT NULL,
description VARCHAR2(4000),
created DATE NOT NULL
);
◾ table 조회하기
CREATE TABLE topic (
id NUMBER NOT NULL,
title VARCHAR2(50) NOT NULL,
description VARCHAR2(4000),
created DATE NOT NULL
);
◾ 데이터를 insert 하기
INSERT INTO topic
(id,title,description,created)
VALUES
(1,'ORACLE','ORACLE is ...',SYSDATE);
◾ commit 하기
무엇인가를 수정했다면 반드시 커밋하기!
commit;
◾ table 조회하기
◽ 모든 row와 column을 가져오기
SELECT * FROM topic;
);
◽ 특정 column만 가져오기
CREATE TABLE topic (
SELECT id,title,created FROM topic;
);
◽ 특정 row만 가져오기
SELECT * FROM topic WHERE id = 1;
SELECT * FROM topic WHERE id > 1;
◽ 특정 row와 column만 가져오기
SELECT id,title,created FROM topic WHERE id = 1;
◽ 정렬하기
SELECT * FROM topic ORDER BY id DESC;
SELECT * FROM topic ORDER BY title ASC;
DESC: Descend (큰 수가 먼저) ASC: Ascend (작은 수가 먼저)
◾ update 하기
UPDATE topic
SET
title = 'MSSQL',
description = 'MSSQL is ...'
WHERE
id = 3;
◽ date의 입력포멧 지정해서 update (24시간 형식/12시간 형식)
UPDATE animal_ins
SET
datetime = TO_DATE('2018-01-22 14:32:00', 'YYYY-MM-DD HH24:MI:SS' )
WHERE
name = 'Sugar';
UPDATE animal_ins
SET
datetime = TO_DATE('2017-03-06 03:01:00', 'YYYY-MM-DD HH:MI:SS' )
WHERE
animal_id = 'A30375';
◾ delete 하기
◽ 특정 행 삭제하기
DELETE FROM topic WHERE id = 3;
◽ 모든 행 삭제하기
DELETE FROM topic;
◽ 표 자체를 삭제하기
DROP TABLE topic;
⛅ Primary Key와 시퀀스
◾ Primary Key
Primary key를 추가하면 ID 값이 table 안에서 유일무의한 값일때만 INSERT 명령을 실행할 수 있다. <hr> (Primary key는 table을 create 할 때 추가하는게 좋음)
CREATE TABLE topic (
id NUMBER NOT NULL,
title VARCHAR2(50) NOT NULL,
description VARCHAR2(4000),
created DATE NOT NULL,
CONSTRAINT PK_TOPIC PRIMARY KEY(id)
);
(CONSTRAINT PK_TOPIC PRIMARY KEY(id,title)
이라고 한다면 id와 title이 묶여서 primary key가 됨)
◾ 시퀀스
새로운 행을 생성할 때 가장 최근에 들어온 id를 확인하고 넣기는 너무 번거롭다.
◽ 시퀀스 생성하기
CREATE SEQUENCE SEQ_TOPIC;
◽ 시퀀스를 이용해 Primary Key값 생성하기
방금 생성한 시퀀스를 이용해 새로운 데이터를 CREATE 할 때, 자동으로 1씩 증가시키는 primary key값을 만들 수 있다.
INSERT INTO topic
(id,title,description,created)
VALUES
(SEQ_TOPIC.NEXTVAL,'MongoDB Server','MongoDB Server is ...',SYSDATE);
◽ 현재 가지고 있는 시퀀스 값 확인
SELECT SEQ_TOPIC.CURRVAL FROM topic;
SELECT SEQ_TOPIC.CURRVAL FROM DUAL;
다음에 붙여질 번호는 현재 시퀀스값 + 1 이다.
DUAL이라는 가상의 특수한 table을 적으면 시퀀스 값이 한번만 나온다.
⛅ 마무리 하며
이 글은 sqlplus를 이용하며 작성했지만, sqlplus의 가독성이 좋지 않기 때문에 앞으로는 대체제인 SQL Developer를 사용할 예정이다.
⛅ 참고
💛 개인 공부 기록용 블로그입니다. 👻