드디어 SQLD 내용정리를 끝내보려고 한다.
공부를 할 때 손으로 직접 적어 정리하니 보관도 힘들고 매번 찾아서 봐야한다는 점이 불편했는데 블로그나 노션을 통해 정리하니 좋은 것 같다. (진작 할걸,,)
그럼 관리 구문에 대해 알아보자.
관리 구문
DML
(1) INSERT
INSERT INTO 테이블명 VALUES(데이터1, 데이터2, ...);
테이블에 데이터를 입력하는 명령어
데이터 유형이 맞지 않거나 누락된 데이터 있으면 에러를 발생한다.
명시되지 않은 컬럼에는 NULL값 입력
PK나 NOT NULL 제약조건이 걸린 컬럼에는 NULL 입력 불가
(2) UPDATE
UPDATE 테이블명 SET 컬럼명 = 새로운 데이터(WHERE 수정할 데이터 조건);
이미 저장된 데이터를 수정하고 싶을 때 사용하는 명령어
WHERE 절이 없으면 테이블의 모든 Row가 변경됨
(3) DELETE
DELETE FROM 테이블명 (WHERE 수정할 데이터에 대한 조건);
이미 저장된 데이터를 삭제하고 싶을 때 사용하는 명령어
(4) MERGE
MERGE INTO 타겟테이블 USING 비교 테이블 ON 조건
WHEN MATCHED THEN UPDATE SET 컬럼명 = 새로운 데이터
WHEN NOT MATCHED THEN INSERT [(컬럼명1, 컬럼명2, ...)] VALUES (데이터1, 데이터2, ..);
테이블에 새로운 데이터를 입력하거나 이미 저장되어 있는 데이터에 대한 변경 작업을 한 번에 할 수 있도록 해주는 명령어
TCL
트랜잭션을 제어하는 명령어
(1) 트랜잭션의 특징 (암기)
- 원자성 : 모두 성공하거나 모두 실패
- 일관성 : 트랜잭션 이전 = 완료 후
- 고립성 : 하나의 트랜잭션은 고립되어 수행
- 지속성 : 트랜잭션 성공시 영구적으로 저장
(2) COMMIT
변경된 내용을 확정, 반영하는 명령어
(3) ROLLBACK
변경된 내용을 취소하는 명령어
(4) SAVEPOINT
전체 작업을 되돌리지 않고일부만 되돌릴 수 있게 하는 기능을 가진 명령어
DDL
(1) CREATE
테이블 생성하기 위한 명령어
CREATE TABLE 테이블명(컬럼명1 데이터 타입(DEFAULT / NULL 여부), ... );
제약조건의 종류
- PRIMARY KEY : 각각의 Row에 대한 고유성, NULL 불가
- UNIQUE KEY : 고유키, NULL 허용
- CHECK : 컬럼에 저장될 수 있는 범위 제한
- FOREIGN KEY : 다른 테이블 참조
참조 무결성 규정 관련 옵션
- CASCADE : Parent 값 삭제 -> Child 값 삭제
- SET NULL : Parent 값 삭제 -> Child의 해당 컬럼 NULL 처리
- SET DEFAULT : Parent 값 삭제 -> Child의 해당 컬럼 DEFAULT로 변경
- RESTRICT : Child 테이블에 해당 데이터가 PK로 존재 X -> Parent 값 삭제 및 수정 가능
- NO ACTION : 참조 무결성 제약이 걸려있는 경우 삭제 및 수정 불가
CTAS
기존 테이블 복사해서 생성
CREATE 테이블명 AS SELECT * FROM 복사할 테이블명;
(2) ALTER
- ADD COLUMN
- DROP COLUMN
- MODIFY COLUMN
- RENAME COLUMN
- ADD CONSTRAINT
- DROP TABLE : 테이블 삭제
- TRUNCATE TABLE : 데이터 모두 제거, 테이블은 삭제X
DCL
(1) USER 관련
- CREATE USER 사용자명 IDENTIFIED BY 패스워드;
- ALTER USER
- DROP USER
(2) 권한 관련 명령어
- GRANT 권한 TO 사용자명; -> 권한 부여
- REVOKE 권한 FROM 사용자명; -> 권한 회수
(3) ROLE 관련 명령어
CREATE ROLE 롤명; -> 롤 생성
GRANT 권한 TO 롤명; -> 롤에 권한 부여
GRANT 롤명 TO 사용자명; -> 롤을 사용자에게 부여
이렇게 SQLD 관련 내용정리가 끝이 났다.
나는 시험공부를 제대로 한 건 2주 정도인데 책 한 권을 다 빽빽이 쓰느라 더 오래 걸렸다..
ㅎㅎ... 나는 49회 시험을 봤고 그 결과는 합격!
퇴사하고 뭐라도 시작해야 할 것 같아 가벼운 마음으로 했지만 진심이 되어버린 시험,, 합격해서 너무 다행이었다ㅠ
사실 시험을 보기 전에도, 보고 난 후에도 합격도 합격이지만 고득점으로 합격했으면 좋겠다는 생각을 했다.
80 넘으면 좋겠다고 생각했는데 넘어서 너무 좋았고, 어떤 문제를 틀렸는지 모르는게 좀 아쉬웠다..
이 글을 보는 모든 수험생들이 합격했으면 좋겠다 ㅎㅎ 망망!
'학습' 카테고리의 다른 글
Invalid character found in the request target 에러 해결하기 (0) | 2023.09.08 |
---|---|
@RequestBody DTO에 Null 넘어오는 이슈 해결 (0) | 2023.09.07 |
SQLD 자격증 따기4 - SQL 활용 (0) | 2023.07.12 |
SQLD 자격증 따기3 - SQL 기본 (0) | 2023.07.10 |
SQLD 자격증 따기 2 - 데이터 모델링의 이해 (0) | 2023.07.06 |