SQL은 비절차적 언어로,
절차적 언어 (JAVE,C 등등)과는 다르다.
SQLD에서 나오는 핵심 개념들은 요약정리 해보자 🐸
(최소한 이것만은 외우고 가자는 마인드 !)
처음보는 용어이면, 익숙해지고
한번 봤던 용어면 상기하며 외워보자🧐
빠르게 핵심만 공부해서 벼락치기로 합격까지 !!
📌모델링
1. 현실 세계 데이터를 약속된 표기법으로 표현
2. 가시화, 명세화 필요
3. 데이터 분석하여 추상화 (단순화,요약)
모델링은 시스템 분석 + 업무 분석 + 업무 형상화 등을 위해 진행된다.
또한 명칭은 복합명사를 사용하여 유일성을 확보한다.
📌모델링의 특징
1. 추상화
2. 단순화
3. 명확화
📌모델링 시 유의사항
1. 중복 최소화
2. 비유연성 최소화
3. 비일관성 최소화
(중복,비유연성,비일관성 되게 하지 말자 !)
스키마와 프로세스는 최대한 느슨하게 결합해야 시스템 유지보수성을 높힘 !
📌모델링 단계
1. 개념적 데이터 모델링 :
- 포괄적인 수준에서 모델링을 수행
- 엔터티,속성 도출
2. 논리적 데이터 모델링 :
- 키,속성,관계 등 표현
- 정규화로 중복 데이터 최소화
- 높은 재사용성
3. 물리적 데이터 모델링 :
특정 DBMS에 맞 춰 구현 가능 수준
(추상화 수준 : 개념적 > 논리적 > 물리적)
(구체화 수준 : 개념적 < 논리적 < 물리적)
개논물 개논물 !!
📌 모델링의 관점
1. 데이터 관점
2. 프로세스 관점
3. 데이터와 프로세스의 상관 관점
📌 ERD 순서
엔터티 도출 → 엔터티 배치 → 엔터티 관계 설정 → 엔터티 관계명 기술
엔터티 배치할 때 중요한 엔터티를 좌측 상단에 배치
📌스키마 :
DB 구조와 제약조건에 관해 전박적인 명세 기술
📌스키마 구조
1. 외부 스키마 :
- 외부 단계에서 사용자에게 필요한 DB 정의
- 한 DB에 여러 개의 외부스키마 존재 가능
- 하나의 외부스키마 공용 가능
- 서로 다른 관점을 정의할 수 있음
2. 개념 스키마 :
- 통합 뷰 / 전체적인 뷰 (조직체 전체를 관장하는 입장)
- DB의 전체적인 논리적 구조
- DBA(데이터베이스 관리자)에 의해 구성
- DB 당 하나만 존재
통합이라는 단어가 나오면 자동으로 개념 스키마 !
3. 내부 스키마 :
- DB의 물리적 저장구조 정의
- 시스템 설계자 (개발자) 관점의 스키마
외개내 외개내 !!
📌엔터티 :
- 데이터 베이스 구성 요소 중 독립적으로 식별 가능한 객체
ex) 회원 엔티티 : 회원명, 회원 구분 코드 , 주소
📌엔터티의 특징
1. 업무에 필요로 하는 정보여야 함
2. 식별 가능하도록 유일한 식별자 필요
3. 인스턴스가 두개 이상인 집합을 이뤄야 함
4. 하위 요소로 반드시 속성 필요
5. 다른 엔터티와 한개 이상의 관계를 가져야 함
(인덱스 최적화 경우 equal, 부등호 순으로 생각 !)
📌발생 시점에 따른 엔터티 유형
1. 기본 엔터티 :
고유한 주식별자를 가지고 있음
2. 중심 엔터티 :
기본 엔터티 상속 받아 중심적인 역할
3. 행위 엔터티 :
- 자주 내용이 바뀌거나 데이터량이 증가
- 분석 초기 단계에서는 잘 나타나지 않음
📌인스턴스 :
정의된 스키마에 따라 DB에 실제로 저장된 값
📌속성
1. 엔터티에 대한 자세하고 구체적인 정보
2. 의미상 분리되지 않는 최소의 데이터 단위
3. 꼭 필요한 것 위주로 최소화 필요
📌속성 값 :
각각의 속성은 하나의 속성만을 지님
📌속성 특성 분류
1. 기본 속성 : 본래부터 가져야 하는 속성
2. 설계 속성 : 설계에 본래부터 가진 속성은 아니지만 필요에 의해 도출
3. 파생 속성 : 다른 속성으로부터 계산되거나 변형되어 만들어짐
📌속성 구성방식에 따른 분류
1. PK
2. FK
3. 일반 속성
- 한개의 엔터티는 두개 이상의 인스턴스를 가진다,
- 한개의 엔터티는 두개 이상의 속성을 가진다.
- 한개의 속성은 한개의 속성값만 가진다.
📌도메인 :
속성이 가질 수 있는 값의 범위 (데이터 타입, 크기 등의 조건)
📌 관계
- 엔터티 간의 관련성을 의미
📌 관계의 표기법
1. 관계 명 :
- 동사로부터는 관계를, 명사로부터는 엔터티를 도출
2. 관계 차수
3. 관계 선택 사양
관계 표기법 3개 (관계 명, 차수, 선택 사양)을 기억하자 !
보통 문제에서는 ERD 표기를 IE 표기법으로 한다.
📌 식별자
1. 대표성
- 주식별자 :
유일성, 속성 최소의 수, 자주 변하지 않는 것, 반드시 값 존재
- 보조 식별자
2. 스스로 생성 여부
- 내부 식별자
- 외부 식별자 : 타 엔터티로 부터 받아오는 식별자
3. 속성의 수
- 단일 식별자
- 복합 식별자
5. 대체 여부
- 본질 식별자 : 업무에 의해 생성 / 비즈니스 프로세스에의해서 생성
- 인조 식별자
(인조 식별자는 꼭 필요한 경우에만 사용)
📌식별자 관계 :
1. 엔터티간의 강한 연결 관계 표현
2. ERD에서 실선 표현
3. 부모 엔터티 인스턴스 소멸 시 자식 엔터티 인스턴스 같이 소멸
4. 조인 최소화를 위해서는 식별자 관계로 연결
📌비식별자 관계 :
1. 엔터티 간의 약한 연결 관계
2. ERD에서 점선 표현
3. 부모 엔터티 인스턴스 참 값이 없어도, 자식 엔터티 인스턴스 생성 될 수 있을 때 적합.
PK가 식별자로 들어가는지, 일반 속성으로 들어가는지를 확인 해준다.
📌키 종류 :
1. 슈퍼키 :
- 각 행을 유일하게 식별할 수 있는 하나 또는 그 이상의 속성들의 집합
- 유일성을 만족하는 것
- 고유한 데이터 속성
2. 후보키 :
- 각 행을 유일하게 식별할 수 있는 최소한의 속성들의 집합
3. 기본키 :
- 후보키 중 하나를 기본키로 선택
- DB에서 고유하게 식별하는 용도로 기본키 사용
4. 대체키 :
- 기본키가 아닌 후보키
5. 외래키 :
- 다른 테이블에 있는 기본키 참조
📌정규화 :
DB의 이상현상을 막기위해, 중복최소화와 테이블을 보다 잘 조직된 상태로 분해
1. 데이터 입력/수정/삭제 성능 향상
2. 조인의 횟수가 증가함에 따라 조회 성능 하락
→ 조회성능이 저하될 경우 반정규화
(반정규화 기법은 파티셔닝 (수직분할) 기억해두기)
3. 정보 손실 방지
4. 무결성 보장
정규형은 정규화의 결과
(보안 관련 사항은 뷰)
제1 정규화 :
- 하나의 속성이 여러 속성값을 갖거나 하나의 테이블에 유사한 속성이 반복될 떄 이를 별도 테이블로 분리
- 속성의 속성 값이 모두 원자값만으로 구성
제 2 정규화 :
- 일반 속성이 주식별자의 일부에만 종속성을 갖는 부분 함수 종속성 제거
- 기본키에 속하지 않은 속성 모두가 기본키에 완전 함수 종속인 정규형
- 2차 정규화에서는 1: M 관계 성립
제 3 정규화 :
- 주 식별자가 아닌 일반 속성 간에 함수 종속성이 존재하는 이행 함수종속성 제거
- 주식별자와 관련성이 제일 낮은 정규화 단계
이행함수 :
학번이 지도교수를 결정하고, 지도교수가 학과를 결정 (A → B → C)
📌슈퍼타입/서브타입 관계 테이블 병합
1. One to One Type :
슈퍼타입, 서브타입 테이블들을 각각 개별 테이블로 구성
2. Plus Type :
각각의 서브타입에 슈퍼타입을 합하여 슈퍼타입 + 서브타입 테이블로 구성
3. Single Type :
전체를 하나의 테이블로 통합
📌NULL :
정해지지 않은 값 (공백과는 다름)
1. 단일행 연산 수행 결과는 NULL
2. 다중행 연산 수행시 행 제외하고 수행
(Oracle이든 SQL Server든 NULL은 NULL로 취급)
📌본질(원조) 식별자 :
업무에 존재하는 원래의 식별자
→ 데이터 정확성이 깨지지 않음
📌인조(인위) 식별자 :
업무에 존재하지 않으나, 원래 식별자의 복잡합 때문에 인위적으로 만듬
→ 데이터의 중복이 발생할 수도 있고, 별도의 인덱스 생성이 필요하지만, 주식별자를 생성하여 개발 편의성이 향상
📌SQL 구문 실행순서 :
FROM → WHERE → GROUPBY → HAVING → SELECT → ORDER BY
(외우는 방법 : Fu*k ! 왜 구했어)
📌TRIM 함수 :
- LEADING : 앞부분의 문자만 제거
ex) SELECT TRIM (LEADING '가' FROM '가나다라')
- TRAILING : 뒷부분의 문자만 제거
ex) SELECT TRIM (TRAILING '라' FROM '가나다라')
- BOTH: 앞,뒷 부분의 문자 제거
ex) SELECT TRIM (BOTH '가' FROM '가나다라가')
📌조건문 :
1. DECODE 함수
ex) DECODE(컬럼,조건1,결과1,조건2,결과2, ...)
2. CASE WHEN 함수
ex) CASE WHEN 조건식 THEN 반환값 ELSE "" END
- 단순 표현식
ex) CASE "표현1" WHEN "값1" THEN "결과1" ELSE " " END
📌문자열을 다루는 함수 :
1. LTRIM ( = TRIM LEADING)
2. RTRIM ( = TRIM TRAILING)
3. SUBSTR : 일부분만 추출
4. REPLACE : 특정 문자열 교체
ex)
- REPLACE(컬럼,"문자") → "문자" 삭제
- REPLACE(컬럼,"문자1","문자2") → "문자1"을 "문자2"로 대체
5. LENGTH
6. UPPER (소문자 → 대문자)
7. LOWER (대문자 → 소문자)
문자열 타입에서 VARCHAR2는 가변길이, CHAR는 고정길이 이다.
📌NULL 관련 함수 :
1. NVL : Null 인 데이터를 특정 값으로 변환
ex) NVL(COMM,0) : COMM 컬럼에서 Null 값은 0으로 변환
2. NULLIF : 특정 값을 Null로 치환
NULLIF 함수의 값들이 같으면 NULL 반환, 다른 경우 첫번째 값 반환
ex) NULLIF(MGR, 7698) : 7698 값만 Null 값으로
3. COALESCE
COALESCE(A,B,C) : A,B,C 컬럼 순으로 읽어 Null이 아닌 첫 번쨰 값 반환
ex ) COALESCE(NULL,NULL,3 )의 경우 3을 리턴한다.
📌기타 함수:
1. NTILE(n) : 전체를 n 등분
📌순수 관계 연산자 :
- SELECT / PROJECT / JOIN / DIVIDE
📌연산자 우선 순위 :
산술 (*,/,+,-) → 연결 (||) → 비교 (<,>,<=,>= 등) → IS NULL/LIKE/IN → BETWEEN → NOT → AND → OR
📌WHERE 절 :
- 특정 조건을 만족하는 행만을 대상으로 연산 수행
- 집계 함수 사용 불가
- SELECT, UPDATE, DELETE에 사용가능 / INSERT에는 불가능
- NULL과의 동등 / 비교는 IS NULL 또는 IS NOT NULL만 가능
- SELECT 절의 별명 사용 불가능 (WHERE절이 먼저 실행 되기 때문에)
📌GROUPBY 절 :
- 특정 값을 기준으로데이터 그룹핑에 사용
- 집계합수 : COUNT, SUM, AVG, MIN, MAX
- 칼럼명 앞에 DISTINCT를 붙히면 중복 제거
GROUPBY 한 결과에 대해서 SELECT절에서 SUM(COUNT(*)) 연산을 하게 되면 1건의 결과가 된다.
(이렇게 하면 에러 발생)
📌HAVING 절 :
- GROUP BY 연산이 끝난 결과에 HAVING 절에 만족하는 그룹 추출
- WHERE 절 먼저 실행되어 필터링하고 GROUP BY 실행
- 연산부하가 높아서 WHERE 절 먼저 필터링
- HAVING 절에서는 집계합수 사용가능하나, WHERE절에서는 사용 불가능
- GROUP BY 및 집계 함수를 사용하지 않아도 문장 오류 생기지는 않음
📌JOIN 절 :
여러 테이블로 부터 원하는 데이터 조회하기 위해서 최소 N-1만큼의 JOIN 조건 필요
1. EQUI JOIN : 등식을 조건으로 사용 할 때
2. NON EQUI JOIN : 부등식을 사용해 범위를 나타내는 조건
때로는 설계상의 이유로 NON EQUI JOIN 수행 불가능
1. INNER : 교집합으로 존재하는 것만 병합
2. OUTER : 합집합 개념 (LEFT OUTER / RIGHT OUTER / FULL OUTER)
3. NATURAL : 대상이 되는 두 테이블에서 같은 이름 컬럼에 동일한 컬럼 값을 가지는 행
(NATURAL JOIN은 ON 기준키가 필요 없음)
4. CROSS : 각 테이블의 모든 행의 대응을 조합 (M * N) / 카타시안 곱
5. SELF JOIN : 동일한 테이블 내 연관된 두개의 컬럼간에 조인을 수행
JOIN은 서로 다른 스키마 병합 / UNION은 합집합
📌서브쿼리
서브쿼리에서는 자체적인 ORDER BY절을 사용 할 수 없다.
또한, 서브쿼리에서 메인쿼리를 참조 할수 있지만, 반대는 불가능하다.
1. 스칼라 서브쿼리 : SELECT문의 칼럼 입력 위치
→ 칼럼의 수가 1개
2. 인라인 뷰 : FROM 절의 테이블 입력 위치
→ 컬럼수가 2개 이상
3. 중첨서브쿼리 : WHERE,HAVING 절의 컬럼 또는 테이블 입력 위치
- 단일행 : 반환 값이 단일 행 (<,<=,>,>= 등 사용 가능)
- 다중행 : 반환 값이 다중행 ( IN, ALL, ANY, SOME, EXISTS 사용 가능)
비교 연산자를 단일행에 사용 가능 (역은 불가능)
- 다중 컬럼 : 반환 값이 여러 칼럼을 가진 테이블
SQL Server.에서는 현재 지원하지 않는 기능
연관 서브쿼리 : 메인쿼리의 칼럼을 서브쿼리에 사용
비연관 서브쿼리 : 메인쿼리 칼럼을 서브쿼리에 사용 안함
주로 메인 쿼리 값 제공을 위해 사용
메인쿼리의 결과를 서브쿼리로 제공될 수 있고, 서브쿼리의 결과가 메인쿼리로 제공될 수도 있음
📌뷰 사용의 장점
1. 독립성 :
- 테이블 구조가 변경되어도 뷰를 사용하는 응용 프로그램은 변경하지 않음
2. 편리성
- 복잡한 질의를 뷰로 단순하게 작성 가능
3. 보안성
- 숨기고 싶은 정보를 뷰 생성 시 해당 칼럼 빼고 생성
📌그룹 함수 :
GROUP BY절의 연산 결과에 대해 그룹별 연산 수행
ex) 집계함수, ROLLUP, CUBE
1. ROLLUP : 컬럼 대상으로 하위 그룹핑 수행
ex) GROUP BY ROLLUP (날짜,이름)
(날짜,이름) → 날짜 → 전체 순서로 하위 그룹핑 (ROLLUP은 앞에 것만 신경씀)
2. CUBE : 조합 가능한 모든 경우로 그룹핑
ex) GROUP BY CUBE (날짜,이름)
(날짜,이름) → 날짜 → 이름 → 전체 순서로 하위 그룹핑
ROLLUP과 CUBE의 인자가 1개인 경우 결과가 같음
3. GROUPING SETS :
각 소그룹별 합계만 간단하게 보여줌
ex) CUBE(A.부서번호, B.비품코드) 와 GROUPING SETS(A.부서번호, B.비품코드, (A.부서번호, B.비품코드),())와 같음
📌SET OPERATOR:
1. UNION (합집합) :
- UNION 연잔자는 합집합 결과에서 중복된 행을 하나로 만듬
- UNION ALL 연산자는 중복 행도 그대로 결과도 표시
2. INTERSECT (교집합)
3. MINUS / EXCEPT (차집합)
📌GROUPING :
- SELECT 절에 사용되어 소계에 해당하는 행과 그렇지 않은 행 구분
- CASE 문을 사용하여 의미에 맞는 텍스트를 값으로 지정
- 소계에 해당되는 경우 1 반환, 이외의 경우 0 반환
📌윈도우 함수 :
OVER 키워드와 함께 사용
1. 순위함수 :
- RANK ex) 1,2,2,4,4,4,7
- DENSE_RANK : ex) 1,2,2,3,3,3
- ROW_NUMBER : ex) 1,2,3,4,5
2. 집계 함수 :
→ 집계함수 같은 경우 PARTITION BY 사용
- 윈도우 함수는 결과에 대한 함수 처리로 건수가 줄지 않음
- PARTITION BY 절이 없으면 전체 집합을 하나의 Partition으로 정의한 것과 동일
- 윈도우 함수 적용 범위는 Partition을 넘을 수 없다.
📌행 순서함수:
- FIRST_VALUE : 파티션별로 그룹핑하여 가장 처음 값 반환
- LAST_VALUE : 파티션별로 그룹핑하여 가장 마지막 값 반환
- LAG : 입력된 인자의 값만큼 이전 행의 값을 반환
- LEAD: 입력된 인자의 값만큼 이후 행의 값을 반환
📌TOP N 쿼리 :
1. ROWNUM :
- 각행에 순차적 번호 부여
- 테이블 차례대로 순회하며 값 반환 (중간에 건너뛰기 불가능)
- 조건식 FALSE 되면 순회 멈추고 결과 반환
- ORDER BY를 쓰는 경우 ROWNUM이 꼬여버림 (서브쿼리를 사용해야 함)
2. 윈도우 함수의 순위함수
TOP WITH TIES 쿼리 :
TOP과 동일하게 상위 N 개의 데이터를 조회하지만, 동일한 데이터가 있을 경우 함께 출력된다.
(ORDER BY 절이 반드시 와야 한다.)
📌계층형 질의
일단 트리를 그리고 시작하기 !
ex)
SELECT *
FROM EMP
START WITH MGRNO IS NULL
CONNECT BY PRIOR EMPNO=MGRNO
ORDER SIBLINGS BY EMPNO DESC;
프자부순 (프라이머리 - 자식 - 부모 - 순방향)
프부자역 (프라이머리 - 부모 - 자식 - 역방향)
오라클 계층형 질의에서 루트 노드의 LEVEL 값은 1이다.
CONNECT BY절에 작성된 조건절은 START WITH절에서 필터링된 시작 데이터 포함
ORDER SIBLING BY절은 전체를 정렬하는게 아닌 같은 레벨의 형제 노드끼리 정렬
📌PIVOT :
- 행을 열로 바꿈
- 데이터를 요약하여 다양한 차원에서 분석
- 사람이 읽기 편하게 만듬
📌UNPIVOT :
- 열을 행으로 바꿈
- 원본 형식으로 저장하여 상세하게 표현
- 컴퓨터가 읽기 편하게 만듬
📌정규 표현식
(애플리케이션에서 정규화된 데이터를 SQL에 넘기고, 그 결과에 대해서만 애플리케이션에서 처리하여 DB 간의 의존성을 끊을 수 있다.)
1. 메타 문자
- ₩ : 줄 바꿈
- ^ : ^THE → THE로 (시작하는 문자열)
- $ : ing$ → ing로 (끝나는 문자열)
- . : a.b → acb,a-b 같이 (임의의 한 문자)
- ? : no? → n, no (선행 문자 0 또는 1개)
- * : no* → n,no,noo (선행 문자 0개 이상)
- + : no+ → no,noo (선행문자 1개 이상)
- | : a|b → a,b (선택적 일치)
- [ ] : [abc] → a,b,c 대괄호 (문자열 중 하나 일치)
- [-] : [a-z] → a부터 z까지 연속 문자열 범위 (연속 문자열 범위)
- [^] : [^abc] → a,b,c 제외한 문자 (대괄호 제외한 문자)
- (ab) : ab → 묶인 표현식을 한 단위로 취급
ex) ^[A-Z].*[0-9]$ : A~Z로 시작 + 임의의 문자 0개 이상 + 0~9로 끝나는 것
→ ABCD123 / A!@#@#9 등등
2. 리터럴 문자 : 문자 그 자체의 의미
📌트랜잭션의 특징 (ACID)
1. 원자성 (Atomicity) :
더 이상 쪼개질 수 없음
2. 일관성 (Consistency) :
트랜잭션의 결과는 데이터의 정합성을 깨지 않음
(트랜잭션 이전에 DB 문제가 없으면, 트랜잭션 이후도 오류 없음)
3. 고립성 (Isolation) :
트랜잭션은 독립적으로 수행되며, 실행 중 간섭하거나 영향을 미치지 않음
4. 영속성 (Durability) :
트랜잭션의 결과는 영구적으로 저장
📌테이블 생성 시 주의사항
1. 테이블명은 가능한 단수형을 권고한다.
2. 컬럼명은 중복되게 지정할 수 없다.
3. 컬럼 뒤에 데이터 유형이 지정되어야 한다.
📌DCL (Data Control Language)
1. Grant : 특정 사용자에게 특정 작업 수행 권환 부여
2. Revoke : 특정 사용자에게 특정 작업에 대한 수행 권한 박탈
📌DML (Date Manipulation Language) : 데이터 조작어
1. Select
2. Insert
3. Delete
4. Update
→ DB 사용자와 관리 시스템 간의 인터페이스 제공
📌DDL (Date Definition Language) : 데이터 정의어
1. Create (디폴트 옵션은 NULL)
2. Alter
3. Drop
4. Truncate
5. Rename
→ DB 관리자나 설계자가 사용
DDL 명령어는 자동커밋이 된다
📌TCL (Transaction Control Language) : 트랜잭션 제어어
1. Commit
2. Rollback
3. Savepoint
SQL Server에서 DML은 자동 커밋 되므로 BEGING TRANSACTION으로 롤백 가능하게 만든다.
📌DROP vs TRUNCATE vs DELETE
1. DROP :
- DDL
- 테이블의 스키마까지 삭제
- 자동 커밋 O
- 디스크 공간 릴리스 O
- UNDO 불가능
2. TRUNCATE:
- DDL
- 데이터는 삭제하고 스키마는 남김
- 자동 커밋 O
- 디스크 공간 릴리스 O
- UNDO 불가능
1. DELETE :
- DDM
- 스키마는 남겨두고 데이터만 삭제
(WHERE 절을 사용하여 특정 행만 삭제 가능)
- 자동 커밋 X
- 디스크 공간 릴리스 X
- UNDO 가능
📌참조 무결성 제약 조건 :
데이터 입력,수정,삭제 과정에서 데이터의 일관성이 깨지는 것을 DBMS 차원에서 관리
- DELETE / MODIFY ACTION
1. CASCADE : 부모값 삭제시 자식값도 삭제
2. SET NULL : 부모값 삭제시 자식 해당 칼럼 NULL 값
3. SET DEFAULT : 부모값 삭제시 해당 칼럼 기본값으로 변경
4. RESTRICT : 자식테이블에서 해당 데이터가 PK로 지정되지 않은 경우에만 삭제 및 수정 가능
5. NO ACTION : 제약 조건 위배시 아무런 액션 취하지 않음
-INSERT ACTION
1. AUTOMATIC : 부모 테이블에 PK가 없는 경우 PK 생성후 자식테이블에 값 입력
2. SET NULL : 부모 테이블에 PK가 없는 경우 자식 테이블에 NULL 값 입력
3. SET DEFAULT : 부모 테이블에 PK가 없는 경우 자식 테이블에 기본값 입력
4. DEPENDENT : 부모 테이블에 PK가 존재할때만 자식 테이블에 값 입력
5. NO ACTION : 제약 조건 위배시 아무런 액션 취하지 않음
삽입 명시 안한 경우, 모든 칼럼을 삽입해야 한다.
이 정도의 개념이면 왠만한 노랭이 문제는 풀어 볼 만하다 !
쿼리문 중에 어려운 것들이 꽤 많은데,
문제에서 묻고자하는 바를 잘 찾고 너무 어려운 문제는 넘어가자 ...
어짜피 이 시험은 60점만 넘기면 되니까, 전략적으로 시험에 접근해보자 😀
다들 SQLD 시험 통과하시길 !!!
'SQL' 카테고리의 다른 글
RDBMS NoSQL MongoDB (0) | 2024.07.08 |
---|