[DB] 테이블에서 데이터 검색
예제용 데이터베이스 구축
- 예제코드에서 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'
- 연월일은 하이픈(-)으로 구분하여 표기 -> ex)
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 '%\_%';
- ex)
8-3. 문자열 상수 ‘의 이스케이프
- 문자열 상수 안에 ‘를 포함한 데이터를 검색하려면 앞에 ‘을 붙여 이스케이프 해줘야함
- ex)
WHERE text LIKE 'It''s';
- ex)
- ‘ 하나만 문자열 데이터를 검색할 경우
- ex)
WHERE text LIKE '''';
- ex)