공부기록/사전학습
Oracle
루팽
2022. 10. 22. 00:44
<생활코딩>
- Oracle
1. Oracle
sys AS SYSDBA //관리자 사용자명
Schema(스키마)-서로 연관된 표들을 그루핑(스키마에 속한 표들을 설명하는 것)
CREATE USER user BY password; //user 앞에 c##을 붙이거나 ALTER SESSION SET “_ORACLE_SCRIPT” = TRUE; 입력
GRANT DBA to user;//사용자에게 모든 권한 주기
CREATE TABLE topic (
id NUMBER NOT NULL,
title VARCHAR2(50) NOT NULL,
description VARCHAR2(4000),
created DATE NOT NULL
);
SELECT table_name FROM all_tables WHERE OWNER = 'LUPPANG'; //대문자 입력해야 인식
INSERT INTO topic (id, title, description, created) VALUES (1, 'ORACLE', 'ORACLE is...', SYSDATE);
commit; //커밋까지 해야 완전히 입력되는 것!!
SQL의 장점
데이터 한계가 없고 읽는 것도 자유로움
명령어 통해 데이터베이스 제어
자동화 가능
SELECT * FROM topic; //*는 모든 column
SELECT id, title, created FROM topic; //id, title, created만 골라보기
SELECT * FROM topic WHERE id = 1;
SELECT * FROM topic WHERE id > 1;
SELECT id, title, created FROM topic WHERE id = 1;
SELECT * FROM topic ORDER BY id DESC; //id기준 내림차 정렬
SELECT * FROM topic ORDER BY title ASC; //제목 기준 오름차 정렬
SELECT * FROM topic OFFSET 1 ROWS; //0번째는 생략, 이후 행들만(1번째 줄부터) 가져옴
SELECT * FROM topic OFFSET 1 ROWS FETCH NEXT 2 ROWS ONLY; //0번째 생략, 1번 행부터 2개의 행만 가져옴
UPDATE topic
SET
title = 'MSSQL',
description = 'MSSQL is...'
WHERE
id = 3; //수정’ 삭제 시에는 반드시 WHERE로 지정해줘야 함!(그렇지 않을 경우 전체 적용)
DELETE FROM topic WHERE id = 3;
DROP TABLE topic; //테이블 삭제(커밋 필요 없음)
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)
); //기본키(고유식별자) 설정
CREATE SEQUENCE SEQ_TOPIC; //시퀀스 만들기(프라이머리와 한쌍으로 사용)
INSERT INTO topic (id, title, description, created)
VALUES (SEQ_TOPIC.NEXTVAL, 'MongoDB', 'MongoDB is...', SYSDATE);
//프라이머리(id값)가 자동으로 설정(겹치지 않게 +1 되도록)
SELECT SEQ_TOPIC.CURRVAL FROM topic; //현재 시퀀스 확인
SELECT SEQ_TOPIC.CURRVAL FROM DUAL; //값을 하나만 보여줌
CREATE TABLE author(
id NUMBER NOT NULL,
name VARCHAR2(20) NOT NULL,
profile VARCHAR2(50),
CONSTRAINT PK_AUTHOR PRIMARY KEY(id)
);
CREATE SEQUENCE SEQ_AUTHOR;
INSERT INTO author (id, name, profile) VALUES(SEQ_AUTHOR.nextval, 'luppang', 'developer');
ALTER TABLE TOPIC ADD (AUTHOR_ID NUMBER);
UPDATE TOPIC SET AUTHOR_ID = '1' WHERE id = 1;
SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.id;
SELECT
T.id TOPIC_ID,
title,
name
FROM topic T
LEFT JOIN author A
ON T.author_id = A.id
WHERE
T.id = 1; //약자 T로 topic, A로 author 테이블 지정