2024. 10. 18. 22:10ㆍ자격증
관리구문
관리구문 DDL (Data Definition Language)
DROP 명령어
데이터 베이스 객체를 삭제하는데 사용되며, 테이블, 인덱스, 뷰, 트리거 등을 삭제할 수 있으며 삭제된 객체는 복구할 수 없습니다.
- DROP TABLE Employees;
Employees 테이블을 삭제합니다. 테이블이 삭제되면 해당 테이블에 저장된 데이터와 테이블 구조도 모두 삭제됩니다.
DROP 명령어의 옵션 CASCADE : 참조 무결성을 유지하기 위해 테이블을 삭제할때 이 테이블을 참조하는 모든 외래키 제약 조건을 함께 삭제합니다.
- DROP TABLE Departments CASCADE;
Departments 테이블을 삭제하고 이 테이블을 참조하는 모든 외래 키 제약 조건도 함께 삭제합니다.
TRUNCATE 명령어
테이블의 모든 데이를 삭제하지마, 테이블 구조는 유지합니다. TRUNCATE는 DELETE와 비슷하지만 더 빠르고 롤백할 수 없는 특징이 있습니다.
- TRUNCATE TABLE Employees;
Employees 테이블의 모든 데이터를 삭제합니다. 테이블의 주고(열 정의, 제약 조건 등)는 그대로 유지됩니다.
RENAME 명령어
데이터베이스 객체의 이름을 변경하는 사용됩니다. 주로 테이블의 이름을 변경하는데 사용되면 객체의 구조나 데이터는 변경되지 않습니다.
- RENAME Employees TO Staff;
Employees 테이블의 이름을 Staff로 변경합니다. 테이블의 구조와 데이터느 그대로 유지됩니다.
관리구문 DML(Data Manipulation Language)
DML(Data Manipulation Language)은 SQL 하위 집합으로 데이터베이스에 저장된 데이터를 조작(조사, 삽입, 수정, 삭제)하는데 사용됩니다. DML은 사용자가 데이터베이스 내에서 데이터를 실제로 관리하고 운영하는데 필수적인 명령어들을 포함하고 있습니다. 이 명령어 들을 통해 사용자는 데이터를 효율적으로 관리할 수 있습니다.
주요 DML 명령어
명령어 | 기능 설명 |
SELECT | 데이터베이스에서 데이터를 조회합니다. 테이블에서 데이터를 검색하고 필요한 정보를 반환 |
INSERT | 테이블에 새로운 데이터를 삽입, 새 행(row)을 테이블에 추가 |
UPDATE | 기존 테이블의 데이터를 수정, 특정 조건에 맞는 행의 값을 변경할 수 있음 |
DELETE | 테이블에서 데이터를 삭제, 특정 조건에 맞는 행을 삭제하거나 조건 없이 모든 데이터를 삭제할 수 있음 |
MERGE | 데이터를 삽입, 수정, 삭제하는 복합 작업을 하나의 명령어로 수행, 두 테이블을 비교하여 데이터 동기화 |
INSERT 명령어
데이터베이스에 새로운 데이터를 삽입하는데 사용, 새로 추가된 데이터는 지정된 테이블에 행(row)으로 삽입
기본구문
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);
- table_name : 데이터를 삽입할 테이블의 이름
- column1, column2 ... : 데이터를 삽입할 열의 이름을 나열
- value1, value2, ... : 각 열에 삽입할 값을 나열
UPDATE 명령어
기존 데이터의 특정 값을 수정하는 사용, 주어진 조건에 따라 테이블 내의 데이터를 업데이트
기본 구문
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
- table_name : 데이터를 삽입할 테이블의 이름
- column1 = value1, column2 = value2, ... : 수정하려는 열과 그에 대한 새로운 값을 나열
- condition : 특정 조건을 만족하는 데이터만 수정하기 위해 사용
DELETE 명령어
데이터베이스에서 데이터를 삭제하는데 사용, 지정된 조건에 맞는 행을 삭제할 수 있으며, 조건을 지정하지 않으면 테이블의 모든 데이터를 삭제할 수 있음
기본 구문
DELETE FROM table_name
WHRER condition;
- table_name : 데이터를 삽입할 테이블의 이름
- condition : 특정 조건을 만족하는 데이터만 수정하기 위해 사용
특징 | DELETE | TRUNCATE | DROP |
기능 | 테이블에서 데이터를 삭제 | 테이블의 모든 데이터를 삭제하지만 구조는 유지 | 테이블 또는 데이터베이스 객체 전체를 삭제 |
삭제 범위 | 조건에 맞는 특정 행 또는 모든 행을 삭제 | 모든 데이터를 삭제 | 테이블, 인덱스 등 데이터베이스 객체 전체를 삭제 |
wHERE 절 사용 | 사용 가능 | 사용 불가 | 사용 불가 |
데이터 삭제시 롤백 가능 여부 | 롤백 가능 | 롤백 불가능 | 롤백 불가능 |
트랜잭션 사용 | 트랜잭션을 통해 관리 | 트랜잭션 로그를 거의 사용하지 않음 | 트랜잭션을 사용하지 않음 |
성능 | 비교적 느림 | DELETE 보다 빠름 | 가장 빠름 |
테이블 구조 유지 여부 | 테이블 구조는 유지 | 테이블 구조는 유지 | 테이블 구조도 삭제 |
SQL 범주 | DML(Data Manipulation Language) | DDL(Data Definition Language) | DDL(Data Definition Language) |
MERGE
SQL에서 데이터 조작 작업을 수행하는 명령어로 주로 데티어베이스에서 두 테이블간의 데이터를 비교하여 필요에 따라 데이터를 삽입(INSERT), 업데이트(UPDATE) 또는 삭제(DELETE)하는 데 사용됩니다. MERGE 문은 조건에 따라 여러 DML작업을 하나의 구문으로 처리할 수 있어 데이터 동기화나 복합적인 데이터 조작 작업을 효울적으로 수행할 수 있습니다.
기본 구문
MERGE INTO target_table USING source_table
ON (target_table.column = source_table.column)
WHEN MATCHED THEN
UPDATE SET target_table.column1 = source_table.column1
WHEN NOT MATCHED THEN
INSERT (column1, column2, ...)
VALUES (target_table.column1, source_table.column2, ...);
- tager_table : 데이터를 삽입, 업데이트, 삭제할 대상 테이블
- source_table : 대상 테이블과 비교할 원본 테이블
- ON : 두 테이블간의 비교 조건을 지정
- WHEN MATCHED : 조건이 일치하는 경우(즉, 두 테이블의 특정 행이 일치하는 경우)에 수행할 작업을 지정, 일반적으로 UPDATE 또는 DELETE가 여기에 사용
- WHEN NOT MATCHED : 조건이 일치하지 않는 경우(즉, 원본 테이블에만 존재하는 경우) 수행할 작업을 지정, 일반적으로 INSERT가 여기에 사용
관리 구문 TCL(Transaction Control Laguage)
TCL(Transaction Control Laguage)는 트랜잭션을 관리하기 위한 SQL의 하위 집합입니다. TCL 명령어를 통해 트랜잭션을 시작하고 종료하며, 필요할 경우 트랜잭션을 취소할 수 있습니다. 트랜잭션의 관리는 데이터베이스의 일관성과 무결성을 유지하는데 매우 중요합니다.
트랜잭션(Transaction)은 데이터베이스에서 하나 이상의 DML 명령어가 논리적으로 하나의 작업 단위로 묶여 수행되는 것을 의미합니다. 트랜잭션은 데이터의 일관성과 무결성을 보장하기 위해 사용됩니다.
ACID 속성 | 설명 | 예시 |
Atomicity(원자성) | 트랜잭션 내의 모든 작업이 완전히 수행되거나 전혀 수행되지 않음을 보장합니다. 트랜잭션의 일부만 수행될 수는 없습니다. | 은행 계좌에서 송금하는 경우 돈을 출금하고 입금하는 작업이 모두 성공해야하며, 하나라도 실패하면 전체가 취소됩니다. |
Condidtency(일관성) | 트랜잭션이 성공적으로 완료되면 데이터베이스는 일관된 상태를 유지합니다. 데이터 무결성 제약조건이 보장됩니다. | 계좌 잔액이 음수가 되지 않도록 하는 제약조건이 있는 경우 트랜잭션이 이를 위반하지 않도록 보장합니다. |
lsolation(고립성) | 트랜잭션이 실행되는 동안 다른 트랜잭션의 간섭을 받지 않으며 각 트랜잭션은 독립적으로 수행됩니다. | 두 사용자가 동시에 동일한 상품을 구매할 때 각 사용자가 보는 재고는 고립되어 있어 다른 트랜잭션의 영향을 받지 않습니다. |
Durability(지속성) | 트랜잭션이 완료되면 그 결과는 영구적으로 저장되며, 시스템 장애가 발생하더라도 손실되지 않습니다. | 트랜잭션이 완료된 후 데이터 베이스 서버에 장애가 발생하더라도 트랜잭션의 결과는 디스트에 안전하게 저장되어 손실되지 않습니다. |
- COMMIT
- 트랜잭션에서 수행된 모든 변경사항을 영구적으로 데이터베이스에 반영합니다. 트랜잭션이 성공적으로 완료되었을때 사용됩니다.
- ROLLBACK
- 트랜잭션에서 수행된 모든 변경사항을 취소하고 데이터베이스를 트랜잭션이 시작되기 전의 상태로 되돌립니다.
- SAVEPOINT
- 트랜잭션 내에서 특정 지점을 설정하여 나중에 그 지점을 롤백 할 수 있게 합니다. SAVEPOINT는 트랜잭션 내에서 부분적으로 작업을 취소하고 싶을때 유용합니다.
- ROLLBACK TO SAVEPOINT
- 특정 저장점까지 트랜잭션을 롤백합니다. 전체 트랜잭션을 취소하는 것이 아니라 저장점 이후의 작업만 취소합니다.
관리구문 DCL(Data Control Language)
DCL(Data Control Language)는 데이터베이스에서 사용자 권한을 관리하고 데이터에 대한 접근을 제어하는데 사용되는 SQL의 하위 집합입니다. DCL 명령어를 사용하면 특정 사용자나 사용자 그룹이 데이터 베이스의 특정 객체(예: 테이블, 뷰, 인덱스 등)에 접근할 수 있는 권한을 부여하거나 철회할 수 있습니다.
DCL의 주요 명령어
GRANT : 특정 사용자에게 데이터베이스 객체에 대한 접근 권한을 부여합니다.
REVOKE : 특정 사용자에게 부여된 데이터베이스 객체에 대한 접근 권한을 취소합니다.
1. GRANT 명령어
GRANT 명령어는 득정 사용자에게 데이터베이스 객체에 대한 권한을 부여하는데 사용됩니다. 이 권한은 테이블, 뷰, 프로시저 등 다양한 데이터베이스 객체에 대해 부여될 수 있습니다.
기본구문
GRANT privilige ON object To user;
- privilige : 부여할 권한의 유형입니다. 예를 들어 SELECT, INSERT, UPDATE, DELETE 등의 권한이 있습니다.
- object : 권한을 부여할 데이터베이스 객체입니다. 예를 들어 테이블이나 뷰의 이름이 여기에 들어갑니다.
- user : 권한을 부여받을 사용자나 사용자 그룹입니다.
WITH GRANT OPTION:
권한을 부여받은 사용자가 다른 사용자에게도 해당 권한을 부여할 수 있습니다.
예시
GRANT SELECT ON Employees To John WITH GRANT OPTION;
- John은 Employees 테이블에서 데이터를 조회할 수 있을 뿐만 아니라, 다른 사용자에게도 동일한 SELECT 권한을 부여할수 있습니다.
- 만약 John이 다른 사람에게 동일한 SELECT 권한을 부여 후에 뒤에서 배울 REVOKE를 당한다면, John에게 권한을 받은 다른 사람의 권한도 같이 사라진다.
2. REVOKE 명령어
특정 사용자에게 부여된 권한을 취소하는데 사용됩니다. 명령어는 보안을 강화하고 필요하지 않거나 부적절한 권한을 제거하는데 중요합니다.
기본구문
REVOKE privilege ON object FROM user;
- privilege : 취소할 권한의 유형입니다. 예를 들어 SELECT, INSERT, UPDATE, DELETE 등의 권한이 있습니다.
- object : 권한을 취소할 데이터베이스 객체입니다. 예를 들어 테이블이나 뷰의 이름이 여기에 들어갑니다.
- user : 권한을 잃게 될 사용자나 사용자 그룹입니다.
Role 관련 주요 명령어
데이터베이스 관리시스템(DBMS)에서 사용자 권한을 보다 쉽게 관리하기 위해 사용하는 개념입니다. 역할은 여러 개의 권한을 그룹화한 것으로 특정 사용자나 사용자 그룹에 역할을 할당하면 해당 역할에 포함된 모든 권한이 그 사용자에게 부여됩니다. 이를 통해 권한 관리를 효율적으로 수행할 수 있습니다.
Role 관련 주요 명령어
- CREATE ROLE : 새로운 역할을 생성합니다.
- GRANT (Role) : 역할에 권한을 부여하거나 역할을 사용자에게 부여합니다.
- REVOKE (Role) : 사용자로부터 역할이나 역할에 포함된 권한을 취소합니다.
- DROP ROLE : 기존 역할을 삭제합니다.
CREATE ROLE
새로운 역할을 생성하는데 사용됩니다. 역할을 생성한 후 그 역할에 여러 권한을 부여할 수 있습니다.
기본 구문
CREATE ROLE role_name;
- role_name : 생성할 역할의 이름입니다.
GRANT (Role) 명령어의 두가지 용도
- 역할에 특정 권한을 부여하는 경우
- 역할 자체를 사용자나 다른 역할에 부여하는 경우
역할에 권한 부여
역할에 특정 권한을 부여하며 역할을 가진 사용자가 해당 권한을 사용할 수 있도록 합니다.
기본 구문
GRANT privilege ON object TO role_name;
- privilege : 부여할 권한의 유형입니다. 예를 들어 SELECT, INSERT, UPDATE, DELETE 등의 권한이 있습니다.
- object : 권한을 부여할 데이터베이스 객체입니다. 예를 들어 테이블이나 뷰의 이름이 여기에 들어갑니다.
- user : 권한을 부여받을 역할의 이름입니다.
REVOKE
역할에 대한 권한 철회
기본 구문
REVOKE privilege ON object FROM role_name;
- privilege : 취소할 권한
- object : 권한을 취소할 데이터베이스 객체
- user : 권한을 철회될 역할의 이름
'자격증' 카테고리의 다른 글
SQLD 자격증 정보 및 이론 학습 | 데이터 모델과 SQL(정규화, 반정규화) (2) | 2024.10.18 |
---|---|
SQLD 자격증 정보 및 이론 학습 | 데이터 모델링의 이해(엔터티, 인스턴스, 속성, ERD, 식별자) (2) | 2024.10.18 |