루팽 2022. 10. 22. 00:44

<생활코딩>

  1. 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 테이블 지정