블링블링 범블링

Ch.02 - BASIC SELECT 구문 본문

Technology/데이터베이스

Ch.02 - BASIC SELECT 구문

뻠스키 2018. 7. 3. 10:12


Database 02 - oracle 11g



SQL (structured Query Language)

- 관계형 데이터베이스에서 데이터를 조작하기 위해 사용하는 표준 검색 언어 방식



SQL에서 관리할 수 있는 Value 종류

- 문자

- 숫자

- 날짜



DATA TYPE

- 해당 column에 포함되는데 데이터 종류에 따라 결정

- CHAR(고정 길이 - 2000 byte), VARCHAR2(가변 길이 - 4000 byte), LONG, DATE, INT

- 영문은 상관없지만, 한글 한 글자는 3 byte 메모리 공간을 사용함

- 한글을 사용하기 위해서는 넉넉하게 VARCHAR2 (가변 길이) 를 사용하자.

- LONG 은 테이블 당 하나의 column 만 가능하다.



< SDDT >

- SELECT : 데이터 검색 - select

- DML : 데이터 조작 - update, delete

- DDL : 데이터 정의

- TCL : 트랜잭션 제어





1. SELECT 구문 Setting


  • 데이터 조회 범위

    • 특정 컬럼 조회

    • 특정 해 조회

    • 특정 컬럼/행 조회

    • 여러 테이블의 특정 행/컬럼 조회(JOIN)


  • SELECT 구문 작성 시 고려사항 (주의사항)

    • 키워드, 테이블 이름, 컬럼 이름은 "대소문자" 구분을 하지 않는다.

    • 키워드, 테이블 이름, 컬럼 이름은 약자로 줄여 쓰거나 분리할 수 없다.

    • 그러나, Data에 대해서는 "대소문자"를 구분한다.

    • 대부분 키워드는 대문자로 하는 것을 권장한다 (현업에서)

    • 나누어쓰기/들여쓰기 를 하면 가독성이 좋아지고, 편집이 쉬워진다.

    • 단어와 단어 사이 공백

    • , 와 , 사이 공백 주기

    • 비교 연산자 앞 뒤 공백

    • 등..


  • 데이터 조회 결과 (= result set)

    • 데이터를 조회한 결과를 RESULT SET 이라고 부름

    • SELECT 구문에 의해 변화된 행들의 집합을 의미

    • RESULT SET에는 0개, 1개, N개(여러 개) 행이 포함될 수 있음

    • RESULT SET은 특정한 기준에 의해 정렬될 수 있음




2. SELECT 구문


 

  • 모든 정보 조회 방법 2가지
    • SELECT *  ---- 현업에서 이걸 쓰면 안 좋아한다.
    • SELECT table_name1, table_name2, .....     ----  이렇게 써야한다. 이유는 구분이 가능해야 수정도 쉽기 때문
  • 컬럼 값에 대한 산술 연산
    • SELECT EMP_NAME, SALARY*12, ( SALARY + ( SALARY * BONUS_PCT ) ) * 12 FROM EMPLOYEE ;
    • 이러면 HEADING이 이루어지기 때문에 가독성이 떨어지고, 이를 해결하기 위해 AS 를 통해 별칭을 사용한다.
  • 별칭 사용
    • AS 는 생략 가능
    • 별칭은 숫자로 시작하면 안된다
    • 별칭에 따음표 생략 가능 -- 대문자로 별칭 만들 때
    • 별칭에 따음표 생략 불가능
      • 별칭에 특수문자 포함 된 경우
      • 대소문자를 구분해서 별칭을 표시해야 하는 경우
      • 소문자를 별칭으로 사용하고 싶은 경우
      • 한글을 별칭으로 사용하고 싶은 경우
  • (중요) " " (큰따음표)는 일반 문자열로 보고, ' ' (작은 따음표) 는 데이터로 본다.
  • 리터널  (LITERAL)
    • 임의로 지정한 문자열
    • Select 절에 사용하면 테이블에 존재하는 데이터처럼 사용할 수 있다.
    • Dummy column을 사용해서 데이터를 출력할 수 있다.
  • DISTINCT
    • 하나의 유일한 값으로 출력하게 된다.
    • 두 개의 결과를 중복되지 않는 값으로 출력
  • WHERE 구문은 요구 사항을 처리한다.
  • AND, OR, NOT 연산 ---- (TIP) 요구사항이 주어지면, AND OR NOT 을 적어놓고 끊어가면서 문제를 해결하면 쉽다.
  • 연결 연산자 ( || ) 를 사용하면 여러 컬럼을 한 칼럼인 것처럼 연결하거나, 컬럼과 리터널을 연결할 수 있다.
  • AND OR NOT

 AND

TRUE

FALSE

NULL

TRUE

T

F

N

FALSE 

F

F

F

NULL

N

F

N

OR

TRUE

FALSE

NULL

TRUE

T

T

T

FALSE 

T

F

N

NULL

T

N

N





3. SQL 연산자


 OPERATOR

의미 

 =

같다 

 >, <

크다 / 작다 

 >= , <=

크거나 작다 / 작거나 같다 

 !=

같지 않다 

 BETWEEN AND

특정 벙위에 포함되는지 비교
(크거나 같다, 작거나 같다라는 의미를 포함한다)

+) AND 대신 사용가능 

 LIKE , NOT LIKE

문자 패턴을 비교 

 IS NULL , IS NOT NULL

NULL 여부 비교 

 IN

비교 값 목록에 포함되는지 여부 비교 


  • LIKE
    • 비교하려는 값이 지정한 특정 패턴 (PATTERN)을 만족시키면 TRUE를 반환하는 연산자
    • 패턴 지정을 위해 와일드 카드 (WILD CARD) 사용
    • % : % 부분에는 임의 문자열 (0개 이상의 임의의 문자) 이 있다는 의미
    • _ : _ 부분에는 문자 한개만 있다는 의미


  • ESCAPE
    • _ 혹은 % 가 패턴 비교를 위한 문자일지 모를 수 있는 경우가 있다.
    • 이 때 ESCAPE 구문을 사용해서 특정 문자를 설정하고 그 문자 뒤에 있는 문자를 '비교 문자' 로 취급한다.


  • IS NULL / IS NOT NULL
    • NULL 은 = 연산이 안되기 때문에 IS NULL 연산자를 쓴다.


  • IN
    • 비교하려는 값 목록에 일치하는 값이 있으면 TRUE를 반환하는 연산자
    • OR 대신 사용 가능


  • 연산자 우선순위
    • 알 필요 없음
    • 그냥 괄호 () 로 처리하는게 확실함


'Technology > 데이터베이스' 카테고리의 다른 글

ch05  (0) 2018.07.03
Ch.03 - SQL 함수  (0) 2018.07.03
Ch.01 - Database 의 기초 (DBMS)  (0) 2018.07.03
[DB 6장] SQL  (0) 2018.05.01
[DB 5장] 관계형 구조, 연산 기호  (0) 2018.05.01
Comments