Search
moon
sun

관리 구문

관리 구문

DDL

💡
데이터 정의어; 데이터베이스의 객체를 생성, 수정, 삭제하는 언어
명령어
설명
CREATE
데이터베이스 객체를 생성합니다. 테이블, 뷰, 인덱스 등을 생성하는 데 사용됩니다.
ALTER
데이터베이스 객체를 수정합니다. 테이블에 열을 추가하거나 삭제하는 데 사용됩니다.
DROP
데이터베이스 객체를 삭제합니다. 테이블, 뷰, 인덱스 등을 삭제하는 데 사용됩니다.
TRUNCATE
테이블의 모든 데이터를 삭제합니다. 테이블 구조는 그대로 유지됩니다.

CREATE TABLE - 테이블 생성

🗃️테이블 생성

CREATE TABLE 계정.테이블명 ( 컬럼명1 데이터타입 [NULL/NOT NULL] [DEFAULT 기본값] [PRIMARY KEY | UNIQUE] , 컬럼명2 데이터타입 [NULL/NOT NULL] [DEFAULT 기본값] [PRIMARY KEY | UNIQUE] , 컬럼명3 데이터타입 [NULL/NOT NULL] [DEFAULT 기본값] [PRIMARY KEY | UNIQUE] );
SQL
복사

🗃️기존 테이블을 조회(복사)하여 테이블 생성

CREATE TABLE 테이블명 AS SELECT * FROM 기존 테이블명 [WHERE 조건];
SQL
복사
[WHERE 조건] 은 필요 시 사용!
일반적으로 백업 테이블을 만들 때 사용!

ALTER TABLE - 테이블 변경

🗃️테이블에 컬럼 추가

ALTER TABLE 테이블명 ADD 컬럼명 데이터타입;
SQL
복사

🗃️테이블의 컬럼명을 변경

ALTER TABLE 테이블명 RENAME COLUMN 기존컬럼명 TO 변경할컬럼명;
SQL
복사

🗃️테이블의 컬럼 데이터타입을 변경

ALTER TABLE 테이블명 MODIFY 컬럼명 변경할데이터타입;
SQL
복사

🗃️테이블의 컬럼 삭제

ALTER TABLE 테이블명 DROP COLUMN 컬럼명;
SQL
복사

테이블 삭제

🗃️테이블 삭제

DROP TABLE 테이블명 ;
SQL
복사
옵션
CASCADE CONSTRAINTS : 테이블 삭제 시, 정의한 제약조건도 자동으로 삭제

🗃️테이블 데이터 삭제

TRUNCATE TABLE 테이블명;
SQL
복사

🗃️테이블명 변경

RENAME 테이블명 TO 변경할테이블명;
SQL
복사

🗃️제약조건

: 테이블에 저장할 데이터를 제약하는 조건
데이터 무결성 : 데이터 정확성 + 데이터 일관성을 보장하는 성질

🗃️오라클 제약조건 종류

NOT NULL : NULL 을 저장할 수 없도록 하는 제약조건
UNIQUE : 유일한 값을 갖도록 하는 제약조건 (중복불가), NULL 은 허용
PRIMARY KEY : 기본키로 지정. UNIQUE + NOT NULL
FOREIGN KEY : 참조 테이블의 열에 존재하는 값만 저장할 수 있도록 지정하는 제약조건
CHECK : 설정한 조건에 해당하는 데이터만 저장할 수 있도록 하는 제약조건

🗃️ 데이터 무결성 종류

개체 무결성 : 기본키는 반드시 유일한 값, NULL 불가, 중복 불가
참조 무결성 : 외래키의 값이 참조 테이블에 기본키의 값으로만 존재. NULL 가능
도메인 무결성 : 지정된 값의 범위 안에서만 데이터를 저장

🗃️ 제약조건 추가

ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 제약조건;
SQL
복사

🗃️ 제약조건 삭제

ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명;
SQL
복사

🗃️ 제약조건 이름 변경

ALTER TABLE 테이블명 RENAME CONSTRAINT 기존이름 TO 변경이름;
SQL
복사

NOT NULL

🗃️ NOT NULL - 테이블 생성 시, NOT NULL 지정

CREATE TABLE 테이블명 ( 컬럼1 데이터타입 NOT NULL, 컬럼2 데이터타입 NOT NULL, ... );
SQL
복사

🗃️ NOT NULL - 테이블 생성 시, 제약조건으로 지정

CREATE TABLE 테이블명 ( 컬럼1 데이터타입 CONSTRAINT 제약조건명1, 컬럼2 데이터타입 CONSTRAINT 제약조건명2, ... );
SQL
복사

🗃️ NOT NULL - 테이블 생성 후, NOT NULL 로 수정

ALTER TABLE 테이블명 MODIFY (컬럼 NOT NULL);
SQL
복사

🗃️ NOT NULL - 테이블 생성 후, 제약조건 추가

ALTER TABLE 테이블명 MODIFY (컬럼 CONSTRAINT 제약조건명);
SQL
복사

UNIQUE

🗃️ UNIQUE - 테이블 생성 시, UNIQUE 지정

CREATE TABLE 테이블명 ( 컬럼1 데이터타입 UNIQUE, 컬럼2 데이터타입 UNIQUE, ... );
SQL
복사
CREATE TABLE 테이블명 ( 컬럼1 데이터타입, 컬럼2 데이터타입, ... UNIQUE( 컬럼1, 컬럼2, ... ) );
SQL
복사

🗃️ UNIQUE - 테이블 생성 시, 제약조건으로 지정

CREATE TABLE 테이블명 ( 컬럼1 데이터타입 CONSTRAINT 제약조건명1, 컬럼2 데이터타입 CONSTRAINT 제약조건명2, ... );
SQL
복사

🗃️ UNIQUE - 테이블 생성 후, UNIQUE 로 수정

ALTER TABLE 테이블명 MODIFY (컬럼 UNIQUE);
SQL
복사

🗃️ UNIQUE - 테이블 생성 후, 제약조건으로 추가

ALTER TABLE 테이블명 MODIFY (컬럼 CONSTRAINT 제약조건명);
SQL
복사

PRIMARY KEY

🗃️ PRIMARY KEY - 테이블 생성 시, PRIMARY 키로 지정

CREATE TABLE 테이블명 ( 컬럼1 데이터타입 PRIMARY KEY, 컬럼2 데이터타입 PRIMARY KEY, ... );
SQL
복사
CREATE TABLE 테이블명 ( 컬럼1 데이터타입, 컬럼2 데이터타입, ... PRIMARY KEY( 컬럼1, 컬럼2, ... ) );
SQL
복사

🗃️ PRIMARY KEY - 테이블 생성 시, 제약조건으로 추가

CREATE TABLE 테이블명 ( 컬럼1 데이터타입 CONSTRAINT 제약조건명1, 컬럼2 데이터타입 CONSTRAINT 제약조건명2, ... );
SQL
복사

🗃️ PRIMARY KEY - 테이블 생성 후, PRIMARY KEY 로 지정

ALTER TABLE 테이블명 MODIFY (컬럼 PRIMARY KEY);
SQL
복사

🗃️ PRIMARY KEY - 테이블 생성 후, 제약조건으로 추가

ALTER TABLE 테이블명 MODIFY (컬럼 CONSTRAINT 제약조건명);
SQL
복사

FOREIGN KEY

🗃️ FOREIGN KEY - 테이블 생성 시, FOREIGN KEY 지정

CREATE TABLE 테이블명 ( 컬럼1 데이터타입 REFERENCES 참조테이블(참조 컬럼), 컬럼2 데이터타입, ... );
SQL
복사
CREATE TABLE 테이블명 ( 컬럼1 데이터타입, 컬럼2 데이터타입, ... CONSTRAINT 제약조건 FOREIGN KEY (외래키 컬럼) REFERENCES 참조테이블(참조 컬럼) );
SQL
복사

🗃️ FOREIGN KEY - 테이블 생성 시, 제약조건으로 지정

CREATE TABLE 테이블명 ( 컬럼1 데이터타입 CONSTRAINT 제약조건명1, 컬럼2 데이터타입 CONSTRAINT 제약조건명2, ... );
SQL
복사

🗃️ FOREIGN KEY - 테이블 생성 후, 제약조건으로 지정

ALTER TABLE 테이블명 MODIFY (컬럼 CONSTRAINT 제약조건명);
SQL
복사

CHECK

🗃️ CHECK - 테이블 생성 시, 제약조건으로 지정

CREATE TABLE 테이블명 ( 컬럼명1 데이터타입 CONSTRAINT 제약조건명 CHECK (조건), 컬럼명2 데이터타입 , ... );
SQL
복사

🗃️ CHECK - 테이블 생성 후, CHECK 지정

ALTER TABLE 테이블명 MODIFY (컬럼 CHECK 조건);
SQL
복사

🗃️ CHECK - 테이블 생성 후, 제약조건으로 지정

ALTER TABLE 테이블명 MODIFY CONSTRAINT 제약조건명 CHECK 조건;
SQL
복사

DEFAULT

🗃️ DEFAULT - 테이블 생성 시, DEFAULT 지정

CREATE TABLE 테이블명 ( 컬럼명1 데이터타입 DEFAULT 기본값, 컬럼명2 데이터타입 DEFAULT 기본값, ... );
SQL
복사

DML

💡
데이터 조작어; 데이터를 추가, 조회, 수정, 삭제하는 언어
명령어
설명
SELECT
데이터베이스에서 데이터를 조회합니다. 특정 테이블 또는 뷰에서 데이터를 선택하여 가져옵니다.
INSERT
데이터베이스에 새로운 데이터를 추가합니다.
UPDATE
데이터베이스에 있는 기존 데이터를 수정합니다.
DELETE
데이터베이스에서 특정 데이터를 삭제합니다.

SELECT

데이터 조회
SELECT 컬럼명1, 컬럼명2, ... (전체 * ) FROM 테이블명 WHERE 조건 GROUP BY 그룹기준 컬럼 HAVING 그룹 조건 (그룹기준은 여러 개 지정 가능) ORDER BY 정렬기준 컬럼 [ASC | DESC] (정렬기준은 여러 개 지정 가능)
SQL
복사
필수 키워드 : SELECT, FROM
옵션 키워드 : WHERE, GROUP BY, ORDER BY
⚠️ 위에서 작성한 순서대로 키워드를 작성하지 않으면 오류가 발생한다.

🔀실행순서

FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY

✅ WHERE

SELECT, UPDATE, DELETE 시 특정 조건에 부합하는 데이터만 명령을 적용하는 키워드

✅ GROUP BY 그룹컬럼 HAVING 조건

그룹컬럼을 기준으로 그룹함수를 사용하기 위해 쓰이는 키워드
GROUP BY 는 반드시 그룹함수와 함께 사용해야한다.
그룹컬럼 - 그룹함수의 결과를 구별짓는 기준
HAVING 은 그룹컬럼을 기준으로 그룹지어진 데이터들에 대해서 조건을 주는 키워드이다.

✅ ORDER BY 정렬컬럼1 [ASC | DESC], 정렬컬럼2 [ASC | DESC]

데이터의 순서를 정렬하는 키워드
지정한 정렬컬럼을 기준으로 오름차순( ABC순, 가나다순, 123순) 정렬한다
ASC, DESC 은 옵션 키워드로 생략가능하다.
ASC (Asccend) - 오름차순
DESC (Descend) - 내림차순

INSERT

데이터 추가

🗃️기본 구문

INSERT INTO 테이블 ( 컬럼1, 컬럼2, 컬럼3, ... ) VALUES (1,2,3, ...)
SQL
복사
⚠️ 컬럼 작성 순서와, 값 작성 순서를 짝을 이루어 작성해야한다.

🗃️컬럼명 생략

INSERT INTO 테이블 VALUES (1,2,3, ... )
SQL
복사
⚠️ 컬럼명들을 생략하고 작성하면, 컬럼 정의 순서대로 모든 값을 지정해주어야한다.

🗃️데이터를 조회하여 추가하기

INSERT INTO 테이블 ( 컬럼1, 컬럼2, 컬럼,3, ... ) SELECT 컬럼1, 컬럼2, 컬럼3, ... FROM 테이블 [WHERE 조건];
SQL
복사

UPDATE

데이터 수정

🗃️기본 구문

UPDATE 테이블명 SET 컬럼1 = 변경할값, 컬럼2 = 변경할값, ... [WHERE 조건];
SQL
복사

🗃️데이터를 조회하여 수정하기

UPDATE 테이블명 SET (컬럼1, 컬럼2, ... ) = (SELECT 컬럼1, 컬럼2, ... FROM 테이블명2 WHERE 조건) [WHERE 조건];
SQL
복사
⚠️ 지정한 수정 컬럼의 개수와 조회한 컬럼의 개수가 일치해야한다.

DELETE

데이터 삭제

🗃️기본 구문

DELETE FROM 테이블 [WHERE 조건];
SQL
복사

DCL

💡
데이터 제어어; 사용자(계정)에 권한을 부여, 해제 하는 언어
명령어
설명
GRANT
데이터베이스 객체에 대한 권한을 부여합니다. 다른 사용자가 특정 객체를 조작할 수 있도록 합니다.
REVOKE
데이터베이스 객체에 대한 권한을 해제합니다.

▶ 권한 부여

GRANT 권한1, 권한2, ... TO 사용자명;
SQL
복사

▶ 권한

: 사용자 생성 및 관리, 데이터베이스 자원을 생성 및 관리하는 권한

▶ 권한 종류

USER : CREATE USER, ALTER USER, DROP USER
SESSION : CREATE SESSION, ALTER SESSION
TABLE : CREATE TABLE, ALTER TABLE, DROP ANY TABLE SELECT ANY TABLE, INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE
INDEX : CREATE ANY INDEX, ALTER ANY INDEX, DROP ANY INDEX
VIEW : ...
SEQUENCE : ...
SYNONYM : ...
▶ 롤 (ROLE)
: 여러 권한을 하나로 묶어놓은 그룹권한
롤을 이용하면, 여러 권한을 한 번에 부여하고, 해제할 수 있다.
▶ 사전 정의 롤
CONNECT : ALTER SESSION, CREATE CLUSTER, CREATE DATABASE LINK, CREATE SEQUENCE, CREATE SESSION, CREATE SYNONYM, CREATE TABLE, CREATE VIEW
RESOURCE : CREATE TRIGGER, CREATE SEQUENCE, CREATE TYPE, CREATE PROCEDURE, CREATE CLUSTER, CREATE OPERATOR, CREATE INDEXTYPE, CREATE TABLE
DBA : 데이터베이스를 관리하는 시스템 권한의 대부분

▶ 권한 부여 - GRANT

GRANT 권한 TO 사용자명 [WITH ADMIN OPTION];
SQL
복사
GRANT 권한 ON 스키마.객체 TO 사용자명 [WITH GRANT OPTION];
SQL
복사
WITH ADMIN OPTION, WITH GRANT OPTION : 부여받은 권한을 다른 사용자에게 재부여할 수 있는 권한까지 부여
ALL PRIVILEGES : 모든 권한을 부여하는 키워드

▶ 권한 해제 - REVOKE

REVOKE 권한 FROM 사용자명;
SQL
복사
REVOKE 권한 ON 스키마.객체 FROM 사용자명 [CASCADE | FORCE | RESTRICT];
SQL
복사
CASCADE : 종속된 사용자 권한이 있다면 같이 해제
RESTRICT : 종속된 사용자 권한이 있다면 권한 해제를 방지
FORCE : 사용자 정의에 대한 실행 권한을 취소

TCL

💡
트랜잭션 제어어; 변경한 데이터에 대하여 적용, 복원하는 언어
명령어
설명
COMMIT
현재까지의 트랜잭션 작업을 영구적으로 반영하여 데이터베이스에 변경 사항을 저장합니다.
ROLLBACK
현재까지의 트랜잭션 작업을 취소하고 이전 상태로 되돌립니다. 변경 사항을 취소하여 롤백합니다.
SAVEPOINT
트랜잭션 내에서 저장점을 설정합니다. 설정된 저장점까지의 작업을 롤백할 수 있습니다.