SQL 첫걸음 - 2장 테이블에서 데이터 검색

강경훈·2020년 12월 16일
0
post-thumbnail

4강 Hello World 실행하기

sql의 print("Hello World")같은 SELECT 문

SELECT * FROM <table_name>;

  • SELECT : 데이터베이스의 데이터를 읽어 오는 명령어
  • * : 모든 열을 선택하겠다는 메타문자
  • FROM: 처리 대상 테이블 지정
  • 모든 명령어의 끝은 세미콜론(;)으로 끝나야 한다.

SELECT * FROM sample21;

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

예약어: sql에서 미리 지정해 놓은 키워드 (SELECT, FROM, IS, NULL, WHERE 등)
데이터베이스 객체명: 데이터베이스에서 관리하는 것들의 이름 (table의 이름 등)

  • 예약어와 개체명은 같을 수 없다. 즉, 예약어와 같은 table은 만들 수 없다
  • 예약어와 개체명은 대소문자 구분이 없다. 그러나 일반적으로 명령어는 대문자로 객체명은 소문자로 구분하여 사용한다.

5강 테이블 구조 참조하기

DESC 명령어로 데이블 구조 참조하기

DESC <table_name>

  • Type: 해당 열의 자료형을 나타낸다.
  • NULL: 해당 열의 NULL 허용 여부를 나타낸다.
  • Key: 해당 열이 key로 지정되어 있는지 나타내다. (PRI, MUL, UNI 등)
  • Default: 해당 열에 기본적으로 주어지는 기본값. 즉 특별히 지정해 값을 지정해 주지 않으면 적용되는 값이다.

자료형

table의 열에는 몇가지 속성을 지정할 수 있는데 그중 가장 중요한 속성이 자료형이다.

  • INT: 수치형으 하나로 정수값을 저장한다.
  • CHAR(#): 문자열을 저장할 수 있으며 ()의 숫자만큼 문자열을 저장할 수 있다. 데이터의 저장 공간은 항상 고정적이다.
  • VARCHAR(#): 문자열을 저장할 수 있으면 ()의 숫자만큼 문자열을 저장 할 수 있다. 또 한 데이터의 길이에 따라 저장 공간이 가변적이다.
  • DATE: 날짜값을 저장한다.
  • TIME: 시간을 저장한다.

6강 검색 조건 지정하기

열과 행을 지정하여 검색하기

SELECT 열1, 열2 ... FROM <table_name> WHERE <행에 대한 조건식>;

1. SELECT로 열 지정

2. WHERE로 행 지정

3. 열과 행 모두 지정

조건식

1. 수치형 검색

  • 비교할 숫자를 그대로 조건식에 표기 한다.

2. 문자열형 검색

  • 비교할 문자열을 싱글쿼트('')으로 감싸줘야 한다.

3. 날짜 또는 시간 검색

  • 싱글쿼트로 감싼다.
  • 날짜는 연월일 구분을 하이픈(-)으로 한다.
  • 시간은 시분초 구분을 콜론(:)으로 한다.

4. NULL 값 검색

NULL 값은 IS NULL로 찾는다.

비교 연산자

  • =: 좌변과 우변의 값이 같을 경우 참
  • <>: 좌변과 우변의 값이 다를 경우 참
  • >: 좌변의 값이 우변의 값보다 클 경우 참
  • >=: 좌변의 값이 우변의 값보다 크거나 같을 경우 참
  • <: 좌변의 값이 우변의 값보다 작을 경우 참
  • <=: 좌변의 값이 우변의 값보다 작거나 같을 경우 참

7강 조건 조합하기

데이터베이스에서 데이터를 검색할 때 단순한 조건식을 넣는 것 보다는 2개 이상의 조건식을 논리 연산자로 조합하여 검색하는 경우가 더 많다.

sample table

AND 연산자

조건식 1과 조건식2 모두를 만족하는 행을 반환한다

WHERE 조건식1 AND 조건식2

a가 0이 아니고 b가 0이 아닌 행

  • a가 0이 아닌 조건 : a<>0
  • b가 0이 아닌 조건 : b<>0

OR 연산자

조건식 1과 조건식2 중 하나라도 만족하는 행을 반환한다

WHERE 조건식1 OR 조건식2

  • a가 0이 아닌 행 검색
  • b가 0이 아닌 행 검색
  • a,b 모두 0이 아닌 행 검색

AND와 OR 주의할 점

  1. AND나 OR 옆에는 조건식을 지정
    • 열이나 상수를 지정해도 에러는 안 나지만 원하는 결과는 못 얻음
    • WHERE no=1 OR 2 가 아닌 WHERE no=1 or no=2 로 지정해야 한다.
  2. AND와 OR를 조합해서 표현 가능
  3. AND와 OR 연산자 중 AND의 우선 순위가 더 높다.
  4. ()을 통해 우선 순위를 먼저 줄 수 있다.

NOT 연산자

연산자 오른쪽에만 항목을 지정하는 단항 연산자이며, 오른쪽 항목의 반댓값을 반환한다

WHERE NOT 조건식

  • a<>0 OR b<>0의 결과가 아닌 값을 반환
  • OR 연산자 예제에서 반환되지 않았던 no=3인 행만 반환

8강 패턴 매칭에 의한 검색

문자열의 완전 일치가 아닌 부분검색을 할 수 있다

sample table

1. LIKE로 패턴 매칭하기

열 LIKE 패턴(검색어)

  • %: 임의의 문자열을 의미하는 메타문자
  • _: 임의의 문자 하나를 의미하는 메타문자
  • '{문자열}%': 해당 문자열로 시작하는 문자열 반환
  • '%{문자열}%': 해당 문자열을 포함하는 문자열 반환
  • '%{문자열}': 해당 문자열로 끝나는 문자열 반환

2. LIKE로 %검색

  • %은 검색을 위한 메타문자이지만 검색하고 싶은 문자열에 포함 될 수 있다.
  • \을 %앞에 붙여 메타문자로 인식하지 못하게 한다.
  • 이러한 방법을 '이스케이프'라고 한다.

3. ' 의 이스케이프

  • 문자열을 나타내기 위해 싱글쿼트로 감싸는데, 그 안에 ' 가 포함되어 있을 때 문제 발생
  • 싱글쿼트 두개로 이스케이프 ' -> ''
profile
방랑하는 개발자

0개의 댓글