본문 바로가기
SQL

[SQL] (필기 무료 공유) 메타코드M 비전공자 맞춤 SQLD 강의 (1) - DCL, DDL

by 모닥불🔥 2024. 1. 28.

2023년 11월 18일에 SQLD 시험을 쳤었다. 당해 빅분기 실기가 12월 2일에 있었다. 욕심이 많아 한 번에 다 준비하려고 했고, 퇴근 후에 총 5일 정도 공부해서 결과는 SQLD 58점 탈락...😨(심지어 하나 실수함) 쉽다 쉽다 하는 자격증이라 쉽게 봤는데 솔직히 시간이 부족해서 퇴근하고 울다시피 공부했다. 비전공자가 절대 일주일-이주일만에 끝낼 양은 아닌 것 같다.
 
차라리 무작정 외우는 이론 과목은 2주컷이 가능할지도 모르지만 SQLD는 실제로 SQL문을 보여주고 답을 고르게 하는 방식이 많아 SQL문에 대한 이해가 어느정도 있어야 한다. 비전공자는 적어도 3주 정도, 유명한 노랑이 책을 잘 풀 수 있을 정도로 준비하고 치면 좋을 것 같다. 이번 시험에서 시간이 부족하다는 사람도 많았으니 더더욱, 기출문제 꼭 풀어볼 것! (https://yunamom.tistory.com/354 Study with yuna 라는 블로그다. 기출문제 엄청 잘 정리해두심)


떨어지고 나서, 제대로 공부할 기회구나. 라고 생각하고 다시 공부하기로 했다. 첫 SQLD를 공부하던 당시 가장 도움이 되었던 것을 꼽으라면 메타코드 SQLD 강의와 김강민 SQLD 총정리, 그리고 위에 링크 첨부한 yuna 기출문제 블로그였다.
 
특히 좋았던 메타코드m의 SQLD 강의를 정리하려고 한다. (진짜 소장하고 싶은 강의!인데 2시간밖에 무료로 안 풀려 있어 슬프다ㅠㅠㅠ) 아래에 링크를 달아 놓았음!
 
메타코드M SQLD 자격증 문제 풀이 2시간 - 비전공자 맞춤형 [대기업 데이터분석 현직자 강의]
https://www.youtube.com/watch?v=8uP_E6SyiuM


강의 커리큘럼은 이렇게 되어 있다. 다 무료로 해주시면 너무 좋을 것 같은데 ㅠㅠ 유료라서 저기 1-2회차에 해당하는 부분만 무료로 들을 수 있다. 솔직히 돈 아낄 생각 안하고 결제해서 듣고 기출 풀었으면 바로 합격했을 듯... (물론 다 들을 시간도 없었지만) 그치만 무료강의도 충분히 좋음..


 
SQL의 가치 한 줄 요약
: 요즘은 거의 모든 기업에서 데이터베이스를 다루기 때문에 SQL을 통해 데이터를 끌어오고 관리할 수 있어야 한다!
취업 공고만 찾아봐도 SQL 다룰 수 있는 사람이라고 많이 적혀 있는 걸 볼 수 있다.


이렇게 딱 정리해준 부분이 참 좋다.
 
- DCL은 권한을 부여하거나 회수하는 SQL문
- DDL은 데이터 '구조'를 정의하는 SQL문. 표를 만들고 관리한다고 생각하면 된다.
- DML은 '데이터' 자체를 변형하는 SQL문. 표 안의 데이터들을 입력, 수정, 저장 한다.
- TCL은 변형한 내용을 저장할지, 되돌릴지 이런 걸 정하는 구문

🔥 다른 강의(인프런, 파이썬 기초 강의)에서 자료형을 공부하다가 본 건데, "CRUD"만 알면 기본적인 구조가 보인다고 했다. Create(생성), Read(읽기), Update(갱신), Delete(삭제). SQL도 마찬가지로 테이블을 어떻게 만들지, 어떻게 읽어오고, 어떻게 수정하지? 그리고 삭제는 어떻게 할까? 라는 관점에서 보면 이해하기 쉽다.

🔥 데이터 제어어(DCL: Data Control Language)

 
DCL은 데이터베이스 사용자에게 접근 권한을 부여하고 회수하는 언어다.
- GRANT는 권한을 부여하고 (GRANT ~ TO)
- REVOKE는 권한을 회수한다 (REVOKE ~ FROM)
 
영어랑 비슷하다. GRANT는 ~에게 권한을 부여하니까 to, REVOKE는 ~로부터 권한을 가져오니까 from

GRANT의 기본형

GRANT 권한

ON 테이블
TO 유저;

 
아, 참고로 SQL은 구문 끝에 늘 ;(세미콜론)을 붙여 주어야 한다.
처음 배울 때 대문자로 된 구문을 소문자로 쓰면 안되는지 궁금했는데 나중에 해보니 상관 없었다.ㅋㅋ

REVOKE의 기본형

REVOKE 권한
ON 테이블
FROM 유저

 
부여하거나 회수할 수 있는 권한의 종류는 엄청 많음! 전체 권한을 넘길 수도, 일부만 넘길 수도 있다.
 
(말장난 같지만) 권한을 넘기는 권한을 넘길 수도 있는데, 끝에 with grant option;을 붙이면 된다.

GRANT 권한
ON 테이블
TO 유저
with grant option;

 
이렇게 쓰면 "권한을 부여할 수 있는 권한"을 특정 유저에게 주는 것! 권한을 회수하면 해당 유저가 부여한 하위 권한들도 모두 회수된다.
 
만약에 끝에 with admin option;을 붙이면 테이블에 대한 모든 권한을 주는 것이고, 이 권한이 회수되어도 변경사항이 취소되진 않는다.
 
추가로, '다양한 권한을 그룹으로 묶어서 관리한다'는 문제가 나오면 답은 'ROLE'이다.
- 묶여진 권한 집합을 롤이라고 부른다.
- 여러 사용자에게 동일한 권한들을 부여할 수도 있다.
- CREATE ROLE이라는 권한을 가지고 있는 유저가 ROLE을 만들 수 있다.
 
+) 실제 강의에서는 연습문제도 같이 나오니까, 강의의 연습문제를 함께 풀어보는 것을 추천!


🔥 데이터 정의어(DDL: Data Definition Language)

 
DDL은 데이터 구조(데이터를 담는 틀, 표)를 만들고 관리하는 언어이다.
CREATE(구조 생성), ALTER(구조 변경), DROP(구조 삭제), RENAME(이름변경), TRUNCATE(테이블 초기화)는 데이터 정의어에 해당한다. 
 

🔥 [DDL] 1. CREATE

CREATE문 기본 구조

CREATE TABLE
표이름 (

열이름1 데이터타입(길이),
열이름2 데이터타입(길이)
);

 
- CREATE TABLE 표이름 뒤에 괄호()를 넣고, 마지막은 세미콜론(;)으로 끝나도록 한다.
- 열 이름은 문자(영어, 한글), 숫자 모두 가능하지만 시작은 문자로 해야 한다.
- 열 하나의 정보를 다 입력한 다음에는 콤마(,)를 찍어 다음 열과 구분한다.

CREATE문 예시

CREATE TABLE
C_INFO (

   이름          varchar2(10),
   생년          number(4) default 9999,
   phone       varchar2(15) not null,
   첫방문일   date,
   고객번호   varchar2(10) primary key
); 
  • 데이터타입은 이후 배우겠지만, varchar2는 문자열, number는 숫자, date는 날짜를 의미한다.
  • 파란색 글씨로 써 놓은 부분은 '제약조건(constraint)'이다.
    • default 9999: 만약에 아무 값도 입력하지 않으면 기본 값을 9999로 하겠다는 뜻
    • not null: 해당 열에서는 null(빈칸/모르는값)을 허용하지 않는다는 뜻
    • primary key: 해당 열을 기본키(식별자)로 지정한다는 뜻

기본키(primary key)의 특징
기본키는 식별자로서의 기능을 하기 때문에 반드시 값이 있어야 하고, 다른 값과 중복되면 안된다. (ID 같은 개념)
1) not null
2) unique (중복x)
 
외래키(foreign key)의 특징
외부 참조 키, 다른 테이블에서 정보를 참조한다. 테이블 당 여러개 가능


Null의 정확한 의미
- 모르는 값 혹은 값이 없음(부재)을 의미한다.
- 공백 != null
- 숫자 0 != null


🔥 [DDL] 2. ALTER

ALTER문은 테이블과 칼럼의 이름, 속성을 변경하거나 추가/삭제한다. 구조 자체를 바꾸는 것이므로 DDL에 해당!
 

ALTER문: RENAME

테이블명 변경
ALTER TABLE  테이블명 RENAME TO 새테이블명;

열(칼럼) 이름 변경
ALTER TABLE 테이블명 RENAME COLUMN 열이름 TO 새열이름;
ALTER문: MODIFY, ADD

칼럼 속성 변경
ALTER TABLE 테이블명 MODIFY(열이름 데이터타입(길이) 제약조건);

새로운 칼럼 추가
ALTER TABLE 테이블명 ADD(추가할 열이름 데이터타입(길이));
테이블 전체의 제약조건 추가/삭제
ALTER TABLE 테이블명 ADD CONSTRAINT;
ALTER TABLE 테이블명 DROP CONSTRAINT;

오라클에만 있는 옵션
DROP TABLE 테이블명 CASCADE CONSTRAINT;

 
테이블명을 정하거나 변경할 때 주의할 점
1) 반드시 문자로 시작해야 한다.
2) A-Z, a-z, #, $, _ 만 사용할 수 있다.
3) 다른 테이블명과 중복되지 않아야 한다.
4) 칼럼을 추가할 때 데이터타입을 반드시 지정해야 한다.


🔥 [DDL] 3. RENAME

표나 열의 이름을 변경하는 SQL문

RENAME 기본 구조

RENAME TABLE 테이블명 TO 새이름;

 
ALTER TABLE 테이블명 RENAME TO 새이름;
위 구문도 사용 가능하지만 ALTER는 지정한 테이블의 이름을, RENAME은 여러 테이블의 이름을 변경한다.


🔥 [DDL] 4. DROP / 5. TRUNCATE

표 또는 칼럼을 삭제하는 SQL문

DROP 기본 구조

표 삭제
DROP TABLE 테이블명;

칼럼 삭제
ALTER TABLE
 테이블명 DROP COLUMN 열이름;
TRUNCATE 기본 구조

TRUNCATE TABLE 테이블명;

 
둘 다 삭제하는 기능인데 뭐가 다를까?
 

 
🔥꼭 나와! DROP, TRUNCATE, DELTE 뭐가 다를까? (위 그림 참조)

  • DROP: 테이블 완전 삭제(0 bite) → DDL에 해당
  • TRUNCATE: 테이블 초기화(표의 첫행 머리글만 남음) → DDL에 해당
  • DELETE: 데이터 삭제(표 형태 그대로 데이터만 쏙 사라짐) → DML에 해당

 
👍🏻 이번 글에서는 SQL의 DCL과 DDL을 배워봤습니다. 다음에는 DML과 TCL을 배울 거예요!
그럼 다음 글에서 만나요~ 화르륵 🔥


 🔥 모닥불의 강의노트를 아래에 공유해 드립니다. 자유롭게 다운 받아 사용하세요! 

* 다음에 배울 DML과 TCL 정리본도 포함되어 있습니다.