본문 바로가기
개인공부/SQL 첫걸음

2장 - 테이블에서 데이터 검색

by 하고싶은건많은놈 2023. 3. 29.

4. Hello World!

SELECT

DML에 속하는 명령, 데이터베이스의 데이터를 읽어와 출력함 - 질의나 쿼리라고 불리기도 함
SELECT * FROM 테이블명;

  • SELECT, *, FROM 테이블명 등의 단어들 사이에는 공백이 필요
  • SELECT 명령은 여러 개의 구로 구성됨 - SELECT *가 SELECT구, FROM sampe21은 FROM구에 속함
    • SELECT, FROM : 구를 결정하는 키워드 = 예약어
    • * : 모든 열을 의미하는 메타문자
    • FROM 이름 : 명령어로 처리하고자 하는 대상명 입력
      대상은 데이터베이스 객체로써 서로 다른 이름으로 존재하며 예약어는 데이터베이스 객체명으로 사용할 수 없음
      데이터베이스 객체명과 예약어는 대소문자를 구별하지 않음
    • ; : SQL 명령문의 마지막에는 세미콜론이 필요

테이블

표 형식의 데이터
행(레코드)열(컬럼/필드)로 구성
행은 모두 동일한 형태로 구성, 열은 각 열마다의 이름이 존재
행과 열이 교차하는 부분을 이라고 부르며 각각의 셀마다 하나의 데이터 값이 저장되어있음

  • 수치형 데이터 : 숫자만으로 구성, 오른쪽 정렬로 표시
  • 문자열형 데이터 : 임의의 문자로 구성, 왼쪽 정렬로 표시
  • 날짜시간형 데이터 : 날짜와 시각으로 구성, 왼쪽 정렬로 표시

하나의 열에는 동일한 자료형의 데이터만 존재할 수 있음
데이터가 저장되어있지 않는 경우 NULL로 표기


5. 테이블 구조 참조하기

DESC

테이블에 어떤 열이 정의되어있는지 확인

  • Filed : 열 이름
  • Type : 자료형, 괄호 안은 최대 길이
  • Null : NULL값을 허용하는지 여부
  • Key : 해당 열이 로 지정되어있는지 여부
  • Default : 해당 열에 주어진 기본값, 테이블에 행을 추가할 때 열의 데이터 값을 생략했을 시 기본값으로 채워짐

자료형

  • INTEGER : 정수형, 소수점 포함 불가
  • CHAR : 고정 길이 문자열형, 열의 최대 길이를 지정해야함
    최대 길이보다 작은 문자열 저장시 공백문자로 나머지를 채운 뒤 저장
  • VARCHAR : 가변 길이 문자열형, 최대 길이를 지정하긴 하나 데이터 크기에 맞춰 저장공간의 크기가 변경됨
  • DATE : 날짜값 저장 자료형, '2022년 8월 22일'과 같은 연월일
  • TIME : 시간값 저장 자료형, '12시 30분 20초'와 같은 시분초

6. 검색 조건 지정하기

SELECT / WHERE

SELECT 열 FROM 테이블명 WHERE 조건식

  • SELECT 구에서는 열 지정, SELECT 열1, 열2, ...
    열을 지정하지 않거나 테이블에 존재하지 않는 열 지정시 에러 발생
    출력 결과는 지정한 열의 순서대로 표시됨, 중복 지정도 가능
  • WHERE 구에서는 행 지정, FROM구의 뒤에 표기, 생략시 모든 행 표시
    WHERE no = 2 등의 형식으로 조건식 사용, 조건식에는 비교연산자 =, <> >= <=등이 사용되어 참 또는 거짓 반환
    • 문자열형 비교시 비교할 문자열을 작은따옴표로 둘러싸서 표기해야함
    • 날짜 자료형도 작은따옴표 사용, 연월일을 -(하이픈)으로 구분
    • 시간 자료형도 작은따옴표 사용, 시분초를 :(콜론)으로 구분
    • NULL 검색시 =연산자 대신 IS NULL 또는 IS NOT NULL을 사용

7. 조건 조합하기

조건식을 조합하여 사용할 경우 복수의 조건은 WHERE구로 지정
AND, OR, NOT의 3가지 방법을 사용할 수 있음

  • AND : 조건식1 AND 조건식2의 형태로 사용
    좌우에 항목이 모두 필요한 이항 연선자로, 좌우의 식 모두 참일 경우에 참을 반환
  • OR : 조건식1 OR 조건식2의 형태로 사용
    좌우에 항목이 모두 필요한 이항 연산자로, 좌우의 식 중 하나 이상 참일 경우에 참을 반환
    • AND와 OR 사용시 주의할점
      OR보다 AND 연산자가 우선 순위가 높기 때문에 a <> 0 AND b <> 0a=1 OR a=2 AND b=1 OR b=2의 결과값은 다름
      따라서 (a=1 OR a=2) AND (b=1 OR b=2)와 같이 괄호로 우선순위를 적절하게 변경하여 원하는 결과를 도출해야함
  • NOT : NOT 조건식의 형태로 사용
    오른쪽에만 항목을 지정하는 단항 연산자로, 지정한 조건식의 반대 값을 반환

8. 패턴 매칭에 의한 검색

특정 문자나 문자열이 포함되어 있는지를 검색할 때 패턴 매칭을 사용

LIKE

열명 LIKE '패턴'의 형태로 사용
LIKE 좌측에는 매칭 대상을 지정하고, 오른쪽에는 검색할 패턴을 문자열로 지정함
패턴에 수치형 상수는 지정할 수 없으며, 패턴 정의시에는 메타문자를 사용할 수 있음

  • 메타문자(=와일드카드) : 패턴 매칭시 임의의 문자 또는 문자열에 매치하는 부분을 지정하기 위해 쓰이는 특수문자
    • % : 임의의 문자열, 빈 문자열도 포함함
      패턴%은 전방일치, %패턴%는 중간일치, %패턴은 후방일치
    • _ : 임의의 문자 하나
    • LIKE* 와일드카드는 사용할 수 없음

LIKE로 메타문자 및 ' 검색

%를 메타문자가 아닌 패턴 자체로 지정하여 검색하고싶은 경우 이스케이프를 활용하여 WHERE text LIKE '%\%%'의 형태로 사용
_ 역시 동일한 방법으로 검색 가능
작은따옴표 '를 검색하고 싶은 경우 ''와 같이 '를 연속해서 2개 기술하는것으로 이스케이프 처리

간단한 패턴의 경우 LIKE로도 가능하지만 복잡한 패턴의 경우는 정규 표현식(Regular Expression)을 사용하는 것이 권장됨

댓글