본문 바로가기

언어 기초/DBMS

[SQL 첫걸음 | 2장 테이블에서 데이터 검색] 데이터검색

1. 학습목표

SELECT 명령을 이해할 수 있다.

테이블 구조를 이해하고 검색조건에 대해 이해할 수 있다

 

2.필요 개념 문장정리

SELECT

  • SELECT*FROM 테이블명은 개발언어의 Hellow World라 할 수 있는 기본명령어이다. 쿼리나 질의로 불리기도 한다.
  • 명령을 실행하세요라는 의미로 *(에스터리스크)는 모든 열을 의미하는 메타문자이다. 모든열을 지정할 수 있다.
  • SELECT명령은 여러 개의 구로 구성됩니다.
  • SELECT와 FROM은 구를 결정하는 키워드이자 예약어이다.
  • 통상적으로 데이터베이스 객체명에는 예약어와 동일한 이름을 사용할 수 없다.
  • 예약어와 데이터베이스 객체명은 대소문자를 구별하지 않는다.
  • SQL명령과 달리 데이터베이스 제품들은 대소문자를 구별하고 예약어는 대문자로 데이터베이스 객체명은 소문자로 표기한다.
  • 데이터는 행(레코드)과 열(컬럼/필드)로 구성된다. 행과 열이 만나는 부분을 셀이라고 부른다. 셀에는 하나의 데이터 값이 저장되어 있다.
  • 숫자만으로 구성된 데이터를 수치형데이터라고 한다. 수치형 데이터는 오른쪽 정렬로 표시된다.
  • 임의의 문자로 구성된 데이터를 분자열형데이터라 한다. 문자형은 왼쪽으로 정렬되어 표시된다.
  • 날짜와 시각을 나타내는 데이터를 날짜시간형데이터라고 하고 왼쪽으로 정렬되어 표시된다.
  • NULL은 아무것도 저장되어 있지 않은 상태를 말한다

 

테이블 구조

  • DESC명령으로 테이블에 어떤 열이 정의되어 있는지 알 수 있다. DESC는 SQL명령이 아니다.
  • 열에는 몇 가지 속성을 지정할 수 있는데 자료형에는 INTEGER형, CHAR형, VARCHAR형, DATE형, TIME형 등이 있다.
  • 행을 선택할 때에는 WHERE 구를 사용하며, 열을 선택할 때는 SELECT구를 사용한다.
  • 열을 한정하기 위해서는 *부분에 열명을 지정한다.
  • WHERE구는 FROM구의 뒤에 표기된다. 
  • WHERE구의 조건식은 열과 연산자, 상수로 구성되는 식이다.
  • 문자열형을 비교할 경우는 싱글쿼트''로 둘러싸 표기한다.
  • 자료형에 맞게 표기한 상수값을 리터럴이라 부른다.
  • 연산자 =로 NULL값을 검색할 수는 없다. NULL값을 검색할 때에는 IS NULL을 사용한다.
  • NULL값이 아닌 행을 검색하고 싶다면 IS NOT NULL을 사용한다.

 

조건조합

  • 통상적으로 2개 이상의 조건식을 조합해 검색하는 경우가 많다. 복수의 조건을 WHERE구로 지정하고 AND,OR,NOT의 3가지 방법이 있다.
  • 모든조건을 만족하는 경우 조건식은 참이 된다고 할 때 AND연산자로 조건식을 조합한다.
  • AND 연산은 조건을 만족하는 행을 집합으로 표현했을 때 논리곱을 계산하는 교집합으로 계산할 수 있다.
  • 어느쪽이든 하나만 참이 되면 조건식은 참이된다고 할 경우에는 OR로 조건식을 연결한다.
  • OR 연산은 조건을 만족하는 행을 집합으로 표현했을 때 논리합을 계산하는 합집합으로 계산할 수 있다.
  • OR보다 AND쪽이 우선순위가 높다.
  • NOT연산자는 오른쪽에만 항목을 지정하는 단항연산자이다.
  • 주로 복수의 조건식에 대해 ~아닌,~외에,~를 제외한 나머지 등의 조건을 지정할 경우 사용된다.

 

패턴매칭

  •  특정문자나 문자열이 포함되어 있는지를 검색하고 싶은경우 사용하는 방법을 패턴매칭 또는 부분검색이라고 한다.
  • LIKE 왼쪽에는 매칭 대상을 지정하고 오른쪽에는 패텅을 문자열로 지정한다. 수치형 상수는 지정할 수 없다. 메타문자를 사용할 수 있다.
  • %는 임의의 문자열을 의미하며, _는 임의의 문자 하나를 의미한다.
  • %는 임의의 문자열과 매치하며 빈 문자열에도 매치한다.
  • LIKE로 %를 검색하는 경우 \로 이스케이프하여 사용한다.
  • '를 문자열 상수 안에 포함할 경우는 '를 두개 연속해서 쓴다.

 

3. 마무리

테이블구조를 이해하고 데이터를 검색할 수 있었다.SELECT명령에 대해 이해할 수 있었다.