SQL

[2장] 테이블에서 데이터 검색

오승미 2022. 10. 2. 08:40

04강 Hello World 실행하기


  • SELECT

SQL 문에서 print("Hello World") 같은 존재.

SELECT * FROM 테이블명

 

sample21 테이블이 조회된 것을 알 수 있다.

SELECT 명령(질의, 쿼리)으로 테이블을 읽어올 수 있다.

여기서 SELECT 는 명령 종류, * 는 모든 열, sample21 은 테이블명이다.

    - 애스터리스크 (*) 는 '모든 열' 을 의미하는 메타문자이다.

    - FROM은 처리 대상 테이블을 지정하는 키워드이다.

 

  • 예약어와 데이터베이스 객체명

SELECT, FROM, WHERE ... 등은 구를 결정하는 키워드이자 예약어이다.

테이블 외에 다양한 데이터를 저장하거나 관리하는 '어떤 것' 을 데이터베이스 객체라고 하고 이름을 붙여 관리한다.

    - SELECT 예제에서 조회한 테이블도 sample21 이름을 가진 데이터베이스 객체이다.

같은 이름으로 다른 데이터베이스 객체를 만들 수 없고 예약어와 동일한 이름을 사용할 수 없다.

 

  • Hello World 를 실행한 결과 = 테이블

SELECT 명령을 실행하면 행(레코드)과 열(컬럼/필드) 행과 열이 만나는 셀(하나의 데이터 값) 으로 이루어진 표 형식 데이터가 출력된다.

 

no name birth address
1 홍길동 NULL 서울특별시 마포구

    - no, name, birth, address 는 열 이름

    - 1, 홍길동, NULL, 서울특별시 마포구는 한 행(레코드)

    - 홍길동은 한 셀

 

숫자로 구성된 데이터를 수치형 데이터라고 하고 오른쪽 정렬된다.

문자로 구성된 데이터를 문자열형 데이터라 하고 왼쪽 정렬된다.

날짜와 시각을 나타내는 데이터를 날짜시간형 데이터라 하고 왼쪽 정렬된다.

    - 열은 하나의 자료형만 가질 수 있다.

 

  • 값이 없는 데이터 = NULL

아무 것도 저장되어 있지 않은 상태로 아직 정의되지 않은 미지의 값, 또는 현재 알 수 없는 값.

만약 회사 테이블에서 신입 사원 데이터가 추가되어야 하는데 이 사원의 부서가 정해지지 않은 경우 NULL 로 표기할 수 있다.

 


05강 테이블 구조 참조하기


  • DESC 명령

테이블 구조가 참조됨

 

SELECT 명령은 열을 지정하여 조건을 붙이거나 특정 열의 값을 읽어올 수 있다.

    - Field 열 이름

    - Type 자료형

    - Null NULL 값을 허용할 것인지 아닌지 나타내는 제약사항

    - Key 해당 열이 '키' 로 지정되어 있는지 (기본키, 외래키 ... )

    - Default 기본값, 생략했을 경우 채워지는 값.

 

  • 자료형
  1. INTEGER 형

수치형의 하나로 정수값을 저장할 수 있는 자료형이다.

 

    2. CHAR 형

 

문자열형의 하나로 문자열을 저장할 수 있는 자료형이다.

최대 길이를 지정해야 한다. CHAR(10) 으로 자료형을 저장하면 최대 10 문자로 된 문자열을 저장할 수 있고 11 문자는 저장할 수 없다.

VARCHAR 형은 저장할 문자열의 길이에 맞춰 저장공간을 가변적으로 사용한다.

반면 CHAR 형은 언제나 고정된 길이로 데이터가 저장된다.

    - CHAR 형은 길이가 고정되어 있으므로 최대 길이보다 작은 문자열을 저장할 경우 나머지는 공백 문자로 채워진다.

    - CHAR(4) 일때 'AA' 를 저장한다면 'AA  ' 로 저장되는 것이다.

    - CHAR(4) 일 때 'AA' 와 'AA  '를 비교 연산하면 true 가 나오는 반면, VARCHAR(4) 일 때 'AA' 와 'AA  '를 비교 연산하면 false 가 나온다. 저장공간이 가변적으로 사용되기 때문이다.

 

    3. VARCHAR 형

 

데이터 크기에 맞춰 저장 공간의 크기도 변경된다.

 

    4. DATE 형

 

날짜값을 저장할 수 있는 자료형이다.

 

    5. TIME 형

 

시간을 저장할 수 있는 자료형이다.

 

 


06강 검색 조건 지정하기


  • SELECT 구와 WHERE 구

SELECT 열1, 열2 .. FROM 테이블명 WHERE 조건식

 

검색 시, 행을 선택할 때는 WHERE 구를 열을 선택할 때는 SELECT 구를 사용한다.

 

  • SELECT 구에서 열 지정하기

no, name 열 데이타 검색

 

열을 전혀 지정하지 않거나, 존재하지 않는 열을 지정하면 에러가 발생한다.

열 지정 순서는 임의로 정할 수 있다.

    - SELECT name, no FROM sample21; 도 가능하다.

동일한 열을 중복해서 지정해도 상관 없다.

 

  • WHERE 구에서 행 지정하기

SELECT -> WHERE -> FROM 순으로 적으면 에러가 발생한다.

WHERE 구는 생략이 가능하다.

    - 생략하면 테이블 내 모든 행이 검색 대상이 된다.

 

WHERE 구로 no 열 값이 2인 행만 추출

'=' 는 연산자이다.

    - 연산자는 어떤 계산을 할 지 지정하는 것이다.

'=' 는 좌우 2개 항목이 필요한 이항 연산자이며 비교한 결괏값이 참인지 거짓인지를 반환하므로 비교 연산자이다.

 

no 열 값이 2가 아닌 행만 검색

 

= 연산자는 서로 같은 값인지를 비교하는 연산자인 반면 <> 연산자는 서로 다른 값인지를 비교하는 연산자이다.

 

  • 문자열형의 상수

name 열 값이 '박준용' 인 행만 검색

 

문자열형, 날짜시간형을 비교할 경우는 싱글쿼트('')로 둘러싸 표기해야 한다.

    - 연월일은 하이픈(-) 시각은 시분초를 콜론(:) 으로 구분하여 표기한다.

자료형에 맞게 표기한 상수값을 리터럴이라 부른다.

 

  • NULL 값 검색

= 연산자로 NULL 값을 검색했을 때

 

= 연산자로 NULL 을 검색할 수는 없습니다.

 

  • IS NULL

NULL 값을 검색할 때는 = 연산자가 아닌 'IS NULL' 을 사용한다.

 

IS NULL을 사용해 birthday가 NULL 인 행만 추출

 

NULL 값이 아닌 행을 검색하고 싶다면 'IS NOT NULL' 을 사용하면 된다.

 

 

  • 비교 연산자
  1.  = 연산자
  2. <> 연산자
  3. > 연산자
  4. < 연산자
  5. <= 연산

 


07강 조건 조합하기


  • AND

좌우에 항목이 필요한 이항 연산자

좌우 식 모두 참일 경우 참 반환

    -> 모든 조건식을 만족하는 경우 조건식은 참이 된다. (및)

    -> 논리곱

    -> 교집합

 

a 와 b 가 모두 0 이 아닌 경우

 

  • OR

좌우에 항목이 필요한 이항 연산자

좌우 어느 쪽이든 조건을 만족하면 참 반환

    -> 어느 쪽이든 하나만 참이 되면 조건식은 참이 된다. (또는)

    -> 논리합

    -> 합집합

 

a 와 b 중 하나라도 0이 아닌 경우

 

  • AND 와 OR 사용 시 주의할 점

모든 행이 반환됨

 

no=1 혹은 no=2 에 해당하는 행을 검색하고 싶었으나 2가 상수이므로 무조건 참을 반환하게 되어 모든 행이 조회된다.

 

no=1 혹은 no=2 에 해당하는 행 검색

 

  • 연산자 우선순위

 

OR 보다 AND 우선 순위가 높기 때문에

  1.  a=2 AND b=1
  2. a=1 OR (a=2 AND b=1) OR b=2

순으로 연산된다.

따라서 a=2 AND b=1 을 만족하는 행이 없으므로, a=1 이거나 b=2 인 행이 검색된 것이다.

 

괄호로 묶어 지정

 

  • NOT

오른쪽에만 항목을 지정하는 단항 연산자

오른쪽에 지정한 조건식의 반대 값을 반환

 

a가 0이 아니거나 b가 0이 아닌 행 외에 검색 (=a와 b 모두 0)

 


08강 패턴 매칭에 의한 검색


'LIKE' 술어 사용하면 문자열의 일부분을 비교하는 부분 검색이 가능하다.

= 연산자는 셀의 데이터 값이 완전히 동일한지를 비교하고 LIKE를 사용하면 특정 문자나 문자열이 포함되어 있는지를

검색하는 패턴 매칭이나 부분 검색이 가능하다.

 

  • LIKE

왼쪽에는 매칭 대상 오른쪽에는 패턴

패턴 매칭 시 %(임의의 문자열), _(임의의 문자 하나) 를 사용한다.

 

SQL 로 시작하는 문자열 검색

 

sample25 테이블에는 'SQL' 이 포함된 다른 행이 있으나, SQL 앞에도 문자열이 존재하기 때문에 검색되지 않았다.

 

SQL 이 포함된 모든 행 검색

 

% 는 빈 문자열과도 매치하기 때문에 첫 번째 행도 검색된다.

 

    1. 전방 일치

SQL 은 RDBMS 를 ~

= SQL%

 

    2. 중간 일치

LIKE는 SQL에서 사용 ~

= %SQL%

 

    3. 후방 일치

입문 SQL 

= %SQL

 

  • LIKE로 % 검색하기

이스케이프로 처리가 가능하다.

%\%%

= 메타문자 %, % 그 자체 문자, 메타문자 % 로 연결

 

  • ' 의 이스케이프

'를 2개 연속해서 기술하는 것으로 이스케이프를 처리할 수 있다.

'It's' (x) = ' ' ' (x)

'It''s' (o) = ' '' ' (o)