본문 바로가기
Certificate/SQLD

[SQLD] 2과목 - 1장. SQL 기본 / 2장. WHERE

by Istj_eff 2022. 11. 7.

1장. SQL 기본

1절. 관계형 DB 개요

DB : 데이터를 일정한 형태로 저장해 놓은 것, DBMS를 이용하여 효율적인 데이터 관리와 데이터 손상 복구 가능

 

1-1. 종류

  • 계층형 DB: 트리 형태의 자료구조에 데이터 저장, 1:N 관계 표현
  • 네트워크형 DB: 오너와 멤버 형태로 데이터 저장, M:N 관계 표현
  • 관계형 DB: 릴레이션에 데이터 저장, 집합 연산과 관계 연산 가능

1-2. 관계형 DB (RDB; Relational Database)

  • 장점
    • 정규화를 통해 이상현상 및 중복 제거
    • 동시성 관리와 병행 제어를 통해 데이터 동시 조작 가능
    • 데이터의 표현방법 등 체계화 가능, 데이터 표준화, 품질 확보
    • 보안, 데이터 무결성 보장, 데이터 회복/복구
  • 단점
    • 동시 입력/수정/삭제 불가능으로 정보관리 어려움
    • 복사본 파일 만들어 사용할 경우 데이터 불일치성 발생
  • 집합 연산
    • 합집합(Union) / 차집합(Difference) / 교집합(Intersection)
    • 곱집합(Cartesian Product) : 각 릴레이션에 존재하는 모든 데이터를 조합
  • 관계 연산
    • 선택 연산(Selection): 조건에 맞는 행(튜플) 조회
    • 투영 연산(Projection): 조건에 맞는 칼럼(속성) 조회
    • 결합 연산(Join): 공통 속성을 사용하여 새로운 릴레이션 생성
    • 나누기 연산(Division): 공통요소를 추출하고 분모 릴레이션의 속성을 삭제한 후 중복된 행 제거

 

1-3. SQL(Structured Query Language)

: RDB에서 사용하는 언어, 데이터 조회 및 신규 데이터 입력/수정/삭제 기능 제공

 

종류 ★★★

DML (Data Manipulation Language, 데이터 조작어, 부속어) SUID
  • SELECT : 데이터 조회 명령어
  • INSERT
  • UPDATE
  • DELETE(데이터만 삭제, 로그남김) : 데이터 변형 명령어
    EX) DELETE FROM 테이블명;EX) 손흥민이 속한 팀의 포지션을 FW 로 업데이트?UPDATE 테이블명 SET POSITION='FW' WHERE TEAM_ID IN (SELECT TEAM_ID FROM T2 WHERE MEMBER='손흥민‘)

 

DDL (Data Definition Language, 데이터 정의어) : 데이터 구조 관련 명령어
  • CREATE
  • ALTER
  • RENAME
  • TRUNCATE(테이블 초기화)
  • DROP(테이블 정의 자체) (로그 안남김,롤백 불가능)
    EX) DROP TABLE 테이블명
DCL (Data Control Language, 데이터 제어어): DB 접근 권한 부여 및 회수 명령어
  • GRANT 권한 ON 테이블 TO 유저
  • REVOKE 권한 ON 테이블 FROM 유저
TCL (트랜잭션 제어어) : DML로 조작한 결과를 논리적인 작업단위 별로 제어, 데이터 무결성 보장 목적
  • COMMIT
  • ROLLBACK
  • SAVEPOINT

1-4. 테이블(Table)

: 데이터를 저장하는 객체로서 관계형 데이터베이스의 기본 단위, 칼럼과 행의 2차원 구조

 

1-5. 테이블 분할

: 데이터의 불필요한 중복을 줄이는 것이 정규화, 이상현상 방지, 기본키(PK), 외래키(FK)

 

1-6. ERD (Entity Relationship Diagram)구성요소 : 엔티티(Entity), 관계(Relationship), 속성(Attribute) 3가지

 

1-7. 표기법 : IE, Baker 표기법

 


2절. DDL

2-1. 데이터 타입 (앞은 Oracle 뒤는 SQL Server)

  • CHAR(L) : 고정 길이 문자열, 할당된 변수 값의 길이가 L 이하일 때 차이는 공백으로 채워짐
  • VARCHAR2(L), VARCHAR(L) : 가변 길이 문자열, 할당되는 변수값 길이의 최대값이 L, 문자열은 가능한 최대 길이로 설정
  • NUMBER(L,D) : 숫자형 (L은 전체 자리 수 D는 소수점 자리 수)
    • SQL Server은 NUMERIC DECIMAL FLOAT REAL 등
  • DATE, DATETIME : 날짜형, 데이터 크기 지정이 필요하지 않음(Oracle은 1초, SQLserver는 3.33ms 단위)

 

2-2. CREATE TABLE

CREATE TABLE 테이블명 (칼럼명 데이터타입 제약조건, …);
CREATE INDEX 인덱스명 ON 테이블명(컬럼명);
  • 테이블 및 칼럼 명명 규칙★
    • 알파벳
    • 숫자
    • _(언더바)
    • $’(달러)
    • #’() 사용
    • 대소문자 구분하지 않고, 단수형 권고, 중복 금지, 칼럼들은 괄호로 묶어서, 숫자로 시작하면 안됨
  • 제약조건(constraint) : 데이터 무결성 유지가 목적, 복제 테이블에는 기존 테이블 제약조건 중 NOT NULL만 적용
  • PRIMARY KEY : 테이블당 하나만 정의가능, 기본키 생성시 자동으로 인덱스 생성, NULL 불가, UNIQUE 특징
  • FOREIGN KEY : 테이블간의 관계를 정의. 다른 테이블의 기본키를 외래키로 지정, 참조 무결성 제약조건
    ALTER TABLE 테이블명 ADD CONSTRAINT 칼럼명 FOREIGN KEY (칼럼명) REFERENCES 테이블명(칼럼명);

 

  • UNIQUE KEY : 행 데이터를 식별하기 위해 생성함, NULL 가능 ★

 

  • DEFAULT 설정할 때
    ALTER 테이블명 MODIFY COLUMN 컬럼이름 타입 DEFAULT 기본값;
    ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 DEFAULT 기본값;

 

  • NOT NULL 설정할 때
    ALTER TABLE 테이블명 ALTER COLUMN 컬럼명 데이터타입 NOT NULL;
    • NULL: 아직 정의되지 않은 값, 모르는값 또는 데이터를 입력하지 못하는 값, 모든 비교는 알수없음 반환
    • 가로로 연산할 때 NULL포함되있으면 무조건 NULL출력, 세로로 연산할땐 NULL제외하고 연산함

 

  • CHECK : 입력값의 종류 및 범위 제한, 데이터의 무결성을 유지하기 위해 테이블의 특정 컬럼에 설정하는 제약
  • ON DELETE CASCADE : CASCADE는 부모 row에 delete, update 하면 자동으로 자식 row도 적용됨
  • [ORACLE] DESCRIBE 테이블명, [SQL server] exec sp_help ‘dbo.테이블명’ : 테이블 구조 확인

 

2-3. ALTER TABLE : 테이블의 칼럼 관련 변경 명령어

칼럼 추가 ALTER TABLE 테이블명 ADD 칼럼명 데이터타입;
마지막 칼럼으로 추가됨 (칼럼 위치 지정 불가)
칼럼 삭제(복구 불가)  ALTER TABLE 테이블명 DROP COLUMN 칼럼명;
칼럼 설정 변경 ALTER TABLE 테이블명 MODIFY (칼럼명 데이터타입 제약조건); 
ALTER COLUMN 컬럼명 데이터타입 NOT NULL; 
ALTER (컬럼명 데이터타입 디폴트식 NOT NULL, ..);
- SQLserver는 여러개의 컬럼을 동시에 수정 불가능
- NULL만 있거나 행이 없는 경우에만 칼럼 크기 축소 가능 
  (NULL만 있을 때는 데이터 유형도 변경 가능)

- NULL없으면 NOT NULL 추가 가능
  ALTER TABLE 테이블명 MODIFY(컬럼명 데이터타입 NOT NULL);
- 기본값 변경 작업 이후 발생하는 데이터에 대해서만 기본값이 변경됨
칼럼명 변경 ALTER TABLE 테이블명 RENAME COLUMN 칼럼명;
제약조건 추가  ALTER TABLE 테이블명 ADD CONSTRAINT 제약명 제약조건 (컬럼명);
제약조건 제거  ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건 (컬럼명);

 

2-4. RENAME TABLE

RENAME 테이블명 TO 테이블명; (ANSI/ISO 표준)
ALTER TABLE 테이블명 RENAME TO 테이블명; (TO 주의!)

 

2-5. DROP TABLE

DROP TABLE 테이블명; DROP COLUMN 컬럼명; (DROP 다음 꼭 적기)

테이블의 데이터와 구조 삭제, 로그기록 안함, 복구 ROLLBACK 불가, Auto commit

CASCADE CONSTRAINT 옵션으로 관련 테이블의 참조 제약조건도 삭제하여 참조 무결성을 준수할 수 있음

 

2-6. TRUNCATE TABLE

TRUNCATE TABLE 테이블명;

테이블의 전체 데이터 삭제 (DROP TABLE은 테이블 자체를 제거함)

로그기록 안함, 복구 ROLLBACK 불가, DELETE 보다 빠름, Auto commit

PL/SQL에서는 DDL문장을 실행할 때 EXECUTE IMMEDIATE를 사용해야한다.

 


3절. DML

3-1. INSERT : 데이터 입력 

INSERT INTO 테이블명 (칼럼명, ) VALUES (필드값, );

  • DEPENDENT : 마스터테이블에 PK가 존재할때만 Child 입력 허용
  • AUTOMATIC : 마스터테이블에 PK가 없는 경우 마스터 PK 생성 후 Child 입력

3-2. UPDATE: 데이터 수정

UPDATE 테이블명 SET 칼럼명=필드값;

 

3-3. DELETE: 데이터 삭제

DELETE FROM 테이블명 WHERE 조건절;

  • DELETE로 데이터를 삭제해도 테이블 용량은 초기화되지 않음. 로그 남김, 복구 가능 ★ 사용자 COMMIT
  • CASCADE : 마스터 삭제시 Child 같이 삭제 ★
  • RESTRICT : Child 테이블에 PK값이 없는 경우만 마스터 삭제 허용

3-4. SELECT

  • 칼럼 별 데이터 선택 SQL>> SELECT 칼럼명 FROM 테이블명;
  • 데이터 중복 없이 선택 SQL>> SELECT DISTINCT 칼럼명 FROM 테이블명;

앨리어스(Alias)

SELECT 칼럼명 AS 별명

FROM 테이블명 별명 : 쿼리내에서 사용할 테이블명 설정, 칼럼명이 중복될 경우 SELECT절에서 AS 필수

 

3-5. 문자열의 합성 연산자

+(플러스), CONCAT 함수, Oracle에서 ||

SELECT CONCAT(str1, str2, ..);

ORACLE >> SELECT CONCAT(CONCAT(컬럼명, str1), str2) AS 별명; 또는 SELECT str1 || str2 || str3 AS 별명;

 

3-6. DUAL

: Oracle의 기본 더미 테이블, 연산 수행을 위해 사용됨

 


4절. TCL

4-1. 트랜잭션 : 변화가 발생하는 과정, DB논리적 연산 단위, 하나 이상의 SQL문을 포함

 

4-2. 특성 (영 일 고 영) ★★★

  • 원자성(Atomicity): 전부 실행되거나 전혀 실행되지 않음 (All or Nothing)
  • 일관성(Consistency): 트랜잭션 발생 전 데이터베이스 내용에 틀린게 없다면 수행후에도 틀린게 있으면 안됨
  • 고립성(Isolation): 실행되는 동안 다른 트랜잭션 영향을 받으면 안됨, LOCKING으로 고립성 보장
  • 영속성(Durability): 트랜잭션의 결과는 영구적으로 저장됨 (지속성)

 

4-3. 문제점

  • Dirty Read : 다른 트랜잭션에 의해 수정됐지만 아직 커밋되지 않음
  • Non-Repreatable Read : 한 트랜잭션에 같은 쿼리 두번 수행했는데, 그 사이에 값을 수정, 삭제해서 두 쿼리 결과가 다르게 나타남
  • Phantom Read : 한 트랜잭션 내에서 같은 쿼리 두번 수행했는데, 첫 번째 쿼리에 없던 유령코드가 두번째 쿼리에 나타남

4-4. TCL : 데이터 무결성 보장 목적으로 함, 영구 변경 전 확인과 연관 작업 동시처리 가능

  • Oracle은 SQL 문장을 실행하면 트랜잭션이 시작되고, TCL을 실행하면 트랜잭션이 종료됨
  • Oracle은 DDL을 실행하면 자동 커밋 (SQLServer은 DDL이후 자동 커밋 안함)
  • DB를 정상적으로 종료하면 자동 커밋, 애플리케이션 등의 이상으로 DB 접속이 단절되면 자동 롤백

4-5. COMMIT

: 데이터를 DB에 영구적으로 반영하는 명령어, 커밋시 LOCKING이 해제됨, SQL Server은 기본적으로 자동

  • COMMIT 전
    • 복구 가능 (NOLOGGING 옵션 사용 시 버퍼 캐시의 기록을 생략하여 입력 성능이 향상됨)
    • 사용자는 SELECT절로 결과를 확인할 수 있으나 다른 사용자는 현재 결과를 볼 수 없음
    • 변경된 행에 LOCKING이 설정되어 다른 사용자가 변경할 수 없음 (LOCKING이 안 걸린 상태일 때 여러 사용자가 데이터를 변경하면 상관없음)
  • COMMIT
    • 변경 사항이 DB에 반영되고 이전 데이터는 복구(ROLLBACK) 불가
    • 모든 사용자가 결과를 볼 수 있음
    • LOCKING이 해제되어 다른 사용자가 행을 조작할 수 있음
  • ROLLBACK : 트랜잭션 시작 이전, COMMIT이전의 상태로 되돌리는 명령어, ROLLBACK 시 LOCKING이 해제됨
    • SAVEPOINT : 트랜잭션 일부만 롤백 할 수 있도록 중간상태를 저장하는 명령어
      ‘ROLLBACK TO 저장점명 (동일한 저장점명이 있으면 나중 저장점이 유효함)
    • SQL Server에서는 BEGIN TRAN으로 명시해야 가능함

 


2장. WHERE

1절. WHERE 절

1-1. WHERE

SQL>> SELECT 칼럼명 FROM 테이블명 WHERE 조건절;

 

1-2. 연산자

  • 부정 비교 연산자: ‘NOT 칼럼명 비교연산자’ 와 동일
    • 부등호: !=, ^=, <> (ISO 표준)
  • 비교 연산자: =, >, >=, <, <=
    • 비교 대상 데이터 타입에 따라 자동으로 형 변환되는 경우도 있음
  • SQL 연산자 : 입력값을 비교하여 논리값 출력
    • BETWEEN A AND B : A B 사잇값
    • IN (리스트) : 리스트 내의 값
    • LIKE 문자열’ : 문자열의 형태와 일치하는 값
  • 와일드카드
    • %’(퍼센트)는 0개 이상의 문자 
    • ‘_’(언더바)는 1개의 단일문자
    • S% : 첫글자가 S로 시작 
    • _M% : 두 번째 글자가 M
    • %T : T로 끝남
    • %A% : A가 들어감
  • IS NULL : =null은 불가능!! (어떤 상황에서도)
    ex) '' 로 입력되는 경우 오라클은 null로 입력되고 조회시 IS NULL로 조회, SQLServer는 ='' 로 조회한다.

  • NOT BETWEEN A AND B,
    NOT IN (리스트)
    IS NOT NULL

  • 논리 연산자 : AND, OR, NOT

  • 우선순위 : 부정 연산자 > 비교 연산자 > SQL연산자 > 논리 연산자
    1. ()’(괄호
    2. NOT
    3. 비교 연산자 및 SQL 연산자
    4. AND
    5. OR

  • 문자열 비교방법
    • CHAR vs CHAR : 서로 다른 문자열 값으로 비교 (뒤 순서가 더 큰 값)
      길이가 다를 때 공백(space)을 추가하여 길이 맞춤 (공백 수만 다르면 같은 값)
    • CHAR vs VARCHAR : 서로 다른 문자열 값으로 비교
      VARCHAR 공백도 문자로 판단(TRIM 함수로 VARCHAR의 공백 제거하고 판단할 수 있음)
      길이가 같고 다른 것이 없다면 같다고 판단한다.
      서로 다른 문자가 나올 때 까지 비교한다.
      길이가 다르다면 짧은 것이 끝날때까지만 비교한 후에 길이가 긴 것이 크다고 판단한다.
    • CHAR vs 상수 : 상수를 변수 타입으로 바꿔 비교

 

1-3. 부분 범위 처리

  • ROWNUM (Oracle)
    : SQL 처리 결과 집합의 각 행에 임시로 부여되는 번호 조건절 내에서 행의 개수를 제한하는 목적으로 사용함
  • TOP (SQL Server)
    : 출력 행의 수 제한 함수, ’TOP (N)’로 N개 행 출력, 개수 대신 비율로도 제한 가능
    • ORDER BY절이 없으면 ROWNUM TOP의 기능이 같음

2절. 함수

2-1. 단일 행 함수

  • SELECT절
  • WHERE절
  • ORDER BY절
  • UPDATE의 SET절에 사용 가능 각 행에 개별적으로 작용
  • 여러 인자를 입력해도 단 하나의 결과만 출력

2-2. 문자형 함수: 문자열 입력 시 문자열이나 숫자 반환

  • LOWER, UPPER, LENGTH
  • CONCAT : 문자열 결합
  • SUBSTR(문자, 시작지점, 몇개) : 문자열 부분 추출
  • LTRIM, RTRIM(문자, 제거할값): 지정 문자 또는 공백 제거
  • TRIM  : 양쪽 공백 제거
  • ASCII : 아스키 코드값 출력
  • REPLACE(컬럼명, 값1, 값2) : 컬럼의 값1을 값2로 변경

 

2-3. 숫자형 함수

  • ABS, SIGN : 절대값 출력, 양수면 1, 음수면 -1, 0이면 0 반환
  • MOD : 나머지, 연산자 ’%’로 대체 가능함
  • ROUND : 반올림
  • CEIL, FLOOR : 올림, 버림 ex) ‘함수(E,N)’으로 소수점 이후 N번째 자리까지 출력
  • TRUNC(숫자, 소수점자리) : 숫자형 부분 추출

 

2-4. 날짜형 함수

  • SYSDATE : 현재 시각 출력 (년, 월, 일, 시, 분, 초)
  • EXTRACT : 날짜형 부분 추출
    SELECT EXTRACT(부분 FROM SYSDATE) FROM DUAL;
    ex) SELECT EXTRACT (YEAR FROM date'2022-08-30')
          → 2022반환 = TO_NUMBER (TO_CHAR( SYSDATE, 'YYYY'))
  • ±숫자, ±숫자/24 : 일자 연산, 시간 연산
  • NEXT_DAY : 지정된 요일 첫 날짜 출력

 

2-5. 변환형 함수: 데이터 타입 변환, 명시적 형 변환 방식

  • TO_NUMBER, TO_CHAR, TO_DATE (Oracle): 문자열을 숫자로, 숫자나 날짜를 문자열로, 문자열을 날짜로
  • CAST, CONVERT (SQL Server)

 

2-6. NULL 관련 함수 ★★

  • NVL(칼럼, 값1) : 컬럼의 값이 NULL이면 값1 출력
  • NVL2(칼럼, 값1, 값2) : NULL이면 값1 아니면 값2 출력
  • NULLIF(값1, 값2) : 값1, 값2가 같으면 NULL출력, 다르면 값1을 출력
  • COALESCE(값,값,…) : NULL이 아닌 첫 값 출력
  • ISNULL(칼럼, 값) : NULL이면 값으로 대치 아니면 칼럼 값 출력

 

2-7. 데이터 변환

  • 명시적 형 변환: 변환형 함수를 이용하여 데이터 타입 변환
  • 암시적 형 변환: DBMS가 자동으로 데이터 타입 변환

 

2-8. 조건문: IF-THEN-ELSE 형태 ★★★

SELECT 칼럼명, CASE WHEN 조건절1 THEN 출력값1 … ELSE 기본값 END AS 별명 FROM 테이블명;
(ELSE 생략 시 NULL 출력)
  • SIMPLE CASE EXPRESSION
    SELECT 칼럼명, CASE 칼럼명 WHEN 조건 THEN 출력값1 ELSE 출력값2 END AS 별명 FROM 테이블명;
  • SEARCHED CASE EXPRESSION
    SELECT 칼럼명, CASE WHEN 칼럼명=조건 THEN 출력값1 ELSE 출력값2 END AS 별명 FROM 테이블명;
  • ‘CASE WHEN NULL THEN 출력값 ELSE 기본값은 조건이 없으므로 모든 행에서 기본값 출력
    (일반적으로 ‘WHEN 칼럼 IS NULL’로 수정 필)
DECODE (칼럼, 조건, 참일때 출력값, 거짓일때 출력값); (Oracle 함수, 기준값n이면 출력값n 출력)

ex) DECODE(gender, 'M', ‘남자’, ‘F', '여자’, ‘기타’)

 


3절. 다중 행 함수

단일행, 다중행 함수 둘다 여러개의 인수가 입력되어도 단일값만을 반환한다.

 

3-1. 집계 함수(Aggregate Function)

: 그룹별 결과 출력, 다중 행 함수 중 하나, 공집합에서도 연산 수행GROUP BY절 없으면 에러 발생(그룹핑 대상이 존재하지 않아서), WHERE절에 사용 불가

 

  • ALL, DISTINCT : 전체 출력, 중복 제외 출력 ★
  • SUM, AVG, MAX, MIN : (세로)NULL 제외하고 연산 ↔ 숫자 연산(가로)은 무조건 NULL 출력
  • VARIAN(분산), STDDEV(표준편차)
  • COUNT : 행 수 출력
    • COUNT(*) : NULL 포함 ★
    • COUNT(표현식) : NULL 제외 ★
  • GROUP BY : 그룹핑 기준 설정, 앨리어스 사용 불가, NULL 값을 가진 행을 제외하고 수행
  • HAVING : GROUP BY절에 의한 집계 데이터에 출력 조건을 걺, 일반적으로 GROUP BY 뒤에 위치함 WHERE 절에는 집계 함수를 사용할 수 없음

ex) 9명 이상이 있는 직급 중 최고 나이를 출력하는 SQL 로 알맞은 것은? 

     SELECT MAX(AGE) FROM DEPT GROUP BY GRADE HAVING COUNT(*) >= 9

 


4 ORDER BY

4-1. ORDER BY

: 특정 칼럼을 기준으로 정렬, 기본 정렬기준은 오름차순

1) 칼럼명 2) 앨리어스 3) 칼럼의 SELECT에서 순서로 칼럼 지정 가능

SELECT절에 없는 칼럼도 지정 가능

GROUP BY절이 있으면 GROUP BY 대상 칼럼만 지정 가능

 

  • Oracle은 NULL을 최대값으로 판단함 (회장님은 상사가 없음) (↔ SQL Server은 최소값으로 판단함)
  • GROUP BY절을 사용하는 경우 ORDER BY절에 집계함수를 사용할 수 있다.

4-2. SELECT 실행 순서 ★

SELECT 칼럼명 AS “별명”  계산 및 출력하고
FROM 테이블명  테이블에서
WHERE 조건식   출력 대상이 아닌 것은 제거하고
GROUP BY 칼럼/표현식  그룹핑해서
HAVING 조건식  그룹핑된 값이 조건에 맞는 데이터를
ORDER BY 칼럼 ACS, DESC  정렬함
ACS(내림차순-큰값부터), 
DESC(오름차순-작은값부), 날짜형은 오름차순시 빠른날부터 출력
  • ROWNUM
    SELECT * FROM 테이블명 WHERE ROWNUM <= 10;

 

  • TOP()
    SELECT TOP 3 FROM 테이블명 ORDER BY 컬럼명 DESC;
    TOP N에서 N에 해당하는 값이 동일한 경우 함께 출력하려면 WITH TIES 옵션을 ORDER BY절과 사용해야한다.

5절 조인

5-1. 조인

: 여러 테이블을 연결 또는 결합하여 데이터를 출력하는 것, 일반적으로 PK FK의 연관성에 의해 성립

  • EQUI 조인(등가) : 두 테이블의 칼럼 값이 정확히 일치하는 경우, 대부분 PK와 FK 관계를 기반으로 함. = 사용
SELECT 칼럼s FROM 테이블1 A, 테이블2 B WHERE A.칼럼명=B.칼럼명;
SELECT 칼럼s FROM 테이블1 A INNER JOIN 테이블2 B ON A.칼럼명=B.칼럼명;

SELECT 대상 칼럼이 두 테이블 모두에 있는 경우 앨리어스(AS)를 지정해야 함 (양쪽 앨리어스 모두 무관)

 

  • NON-EQUI 조인(비등가)
    : 두 테이블의 칼럼 값이 정확하게 일치하지 않는 경우, 부등호나 BETWEEN 사용
SELECT 테이블1.칼럼명, 테이블2.칼럼명 FROM 테이블1, 테이블2
WHERE 테이블1.칼럼명1 BETWEEN 테이블2.칼럼명1 AND 테이블2.칼럼명2;

댓글