예제용 데이터베이스 구축

  • 예제코드에서 source.zip을 다운받고 압축해제 하면 sample.dump가 생성됨
  • sample.dump 파일이 저장된 위치에서 mysql -uroot -p <sample.dump 명령어 입력
    • Download에 파일을 저장했습니다 -> 원하는 경로에 저장해도됨
> cd ./Download
> myslq -uroot -p <sample.dump

4. Hello World 실행하기

‘SELECT * FROM 테이블명’ 실행

SELECT * FROM 테이블명
  • mysql 클라이언트에 SQL 명령을 입력하면 서버에 전달되고, 서버는 이를 실행한 후 결과를 반환
  • SELECT와 * 그리고 FROM 사이를 스페이스로 구분
    • 붙여쓰면 error 발생
  • 명령의 마지막에는 세미콜론(;)을 붙임

SELECT 명령 구문

  • SELECT : 데이터베이스의 데이터 읽기 가능
    • 질의 or 쿼리로 불리기도 함
  • 애스터리스크(*) : 모든 열을 의미하는 메타문자
  • FROM : 처리 대상 테이블을 지정하는 키워드
    • FROM 뒤에 테이블명 지정
  • 테이블은 행(record)과 열(column/field)로 구성된 표 형식의 데이터
    • 행과 열이 만나는 부분을 셀
  • 수치형 데이터 : 숫자로만 구성된 데이터
    • 오른쪽 정렬로 표시
  • 문자열형 데이터 : 문자로 구성된 데이터
    • 왼쪽 정렬로 표시
  • 날짜시간형 데이터 : 날짜와 시각으로 구성된 데이터
    • 왼쪽 정렬로 표시
  • 데이터는 자료형으로 분류
  • 열은 하나의 자료형만 갖음

  • NULL : 데이터가 들어있지 않은 것을 의미하는 특별한 값

5. 테이블 구조 참조하기

DESC 명령

DESC 테이블명;

  • DESC : 테이블에 어떤 열이 정의되어 있는지 참조 가능
    • SQL 명령어 아님
  • Field : 열 이름
  • Type : 해당 열의 자료형
  • Null : NULL 값 허용 여부 -> 제약사항
    • Yes로 지정하면 NULL 값 허용
  • Key : 해당 열이 키로 지정되어 있는지
  • Default : 그 열에 주어진 기본값
    • 테이블에 행 추가 시 열의 데이터 값을 생략하면 기본값으로 채워짐

자료형

  • INTEGER : 정수값을 저장하는 자료형
    • 소수점 포함X
  • CHAR : 문자열을 저장하는 자료형
    • 문자열의 최대 길이를 지정해야 함
    • 고정된 길이로 데이터가 저장 -> 고정 길이 문자열
      • ex) CHAR(10)
  • VARCHAR : 문자열을 저장하는 자료형
    • 문자열의 최대 길이를 지정해야 함
    • 문자열의 길에 맞춰 저장공간이 가변적으로 저장됨 -> 가변 길이 문자열
  • DATE : 날짜값을 저장하는 자료형
    • 2021년 9월 28일 같은 연월일의 데이터 저장하는 형식
  • TIME : 시간을 저장하는 자료형
    • 12시 30분 20초 같은 시분초의 데이터를 저장하는 형식

6. 검색 조건 지정하기

SELECT 1, 2 FROM 테이블명 WHERE 조건식
  • SELECT 구 : 을 선택할 때 사용
  • WHERE 구 : 을 선택할 때 사용

SELECT 구에서 열 지정

SELECT 1, 2 FROM 테이블명

  • 콤마(,)로 구분 지어 여러 개 열 지정가능
  • 열을 지정하지 않거나, 테이블에 존재하지 않은 열 지정하면 error
  • 테이블에 지정된 순서와 다르게 열을 지정해도 무관
    • 지정한 열의 순서대로 표시됨
  • 중복 지정해도 무관
    • 지정한 내로 표시됨

WHERE 구에서 행 지정

  • 많은 행 중에서 필요한 데이터만 검색하기 위해 사용
SELECT  FROM 테이블명 WHERE 조건식
  • SQL에는 구의 순서가 정해져 있음 -> SELECT - WHERE - FROM
    • WHERE 구 처럼 생략이 가능한 구는 있지만 순서 변경해서 적으면 error
  • WHERE 구를 생략하면 테이블 내의 모든 행이 표시됨

조건식 : 열 이름과 연산자, 상수로 구성되는 식

리터럴(literal) : 자료형에 맞게 표시한 상수값

  • 수치형 상수 : 숫자로 표기 -> ex) 1, 100
  • 문자열형 상수 : 싱글쿼트(‘‘)로 둘러싸 표기 -> ex) 'ABC', '박준용'
  • 날짜시간형 상수 : 싱글쿼트로 둘러싸 표기
    • 연월일은 하이픈(-)으로 구분하여 표기 -> ex) '2021-09-28'
    • 시분초는 콜론(:)으로 구분하여 표기 -> ex) '10:21:00'

NULL값 검색

  • = 연산자로 NULL 검색 불가능
  • IS NULL로 검색 가능
    • 좌변 항목의 값이 NULL인 경우 참을 반환
  • IS NOT NULL로 NULL 값이 아닌 행 검색 가능

비교연산자

  • = 연산자
    • 좌변과 우변의 값이 같을 경우 참
  • <> 연산자
    • 좌변과 우변의 값이 같지 않을 경우 참
  • > 연산자
    • 좌변이 우변 값보다 클 경우 참
  • >= 연산자
    • 좌변이 우변 값보다 크거나 같을 경우 참
  • < 연산자
    • 좌변이 우변 값보다 작은경우 참
  • <= 연산자
    • 좌변이 우변 값보다 작거나 같을 경우 참

7. 조건 조합하기

조건식1 AND 조건식2
조건식1 OR 조건식2
NOT 조건식
  • 2개 이상의 조건식을 조합할 때는 AND, OR, NOT의 3가지 논리연산자를 사용

논리연산자

  • AND : 좌우의 식 모두 참일 경우 참을 반환 -> 교집합
조건식1 AND 조건식2

a 열과 b 열이 모두 0이 아닌 행 검색

  • OR : 좌우 어느 쪽이든 하나만 참이면 참을 반환 -> 합칩합
조건식1 OR 조건식2

a 열이 0이 아니거나 b 열이 0이 아닌 행 검색

  • 논리연산자에는 우선순위가 있어서 괄호로 조건을 명확히 해줄 필요성이 있음
    • AND는 OR보다 우선순위 높음
  • NOT : 오른쪽에 지정한 조건식의 반대 값을 반환
NOT 조건식

a 열이 0이 아니거나 b열이 0이 아닌 행을 제외한 나머지 행 검색

8. 패턴 매칭에 의한 검색

  • = 연산자 : 셀의 데이터 값이 완전히 동일한지 비교
  • 패턴 매칭(부분 검색) : 특정 문자나 문자열이 포함되어 있는지 검색

8-1. LIKE로 패턴 매칭

  • 문자열의 일부분을 비교하는 부분 검색 or 패턴 매칭
 LIKE 패턴
  • 왼쪽에는 매칭 대상을 오른쪽에는 패턴을 문자열로 지정
  • 메타문자
    • 퍼센트(%) : 임의의 문자열 매치, 빈 문자열도 매치함
    • 언더스코어(_) : 임의의 문자 하나 매치
  • 수치형 상수는 지정할 수 없음
  • *는 LIKE에서 사용 못함

8-2. LIKE로 % 검색

  • 데이터 안에 메타문자(%, _)를 포함한 데이터를 검색하려면 앞에 \를 붙여 이스케이프 해줘야함
    • ex) WHERE text LIKE '%\%%';
    • ex) WHERE text LIKE '%\_%';

8-3. 문자열 상수 ‘의 이스케이프

  • 문자열 상수 안에 ‘를 포함한 데이터를 검색하려면 앞에 을 붙여 이스케이프 해줘야함
    • ex) WHERE text LIKE 'It''s';
  • 하나만 문자열 데이터를 검색할 경우
    • ex) WHERE text LIKE '''';

reference

SQL 첫걸음
한빛출판네트워크
SQL 첫걸음: 2장