SQL 첫걸음 2장
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 <> 0
과a=1 OR a=2 AND b=1 OR b=2
의 결과값은 다름
따라서(a=1 OR a=2) AND (b=1 OR b=2)
와 같이 괄호로 우선순위를 적절하게 변경하여 원하는 결과를 도출해야함
- AND와 OR 사용시 주의할점
- NOT :
NOT 조건식
의 형태로 사용
오른쪽에만 항목을 지정하는 단항 연산자로, 지정한 조건식의 반대 값을 반환
8. 패턴 매칭에 의한 검색
특정 문자나 문자열이 포함되어 있는지를 검색할 때 패턴 매칭을 사용
LIKE
열명 LIKE '패턴'
의 형태로 사용
LIKE
좌측에는 매칭 대상을 지정하고, 오른쪽에는 검색할 패턴을 문자열로 지정함
패턴에 수치형 상수는 지정할 수 없으며, 패턴 정의시에는 메타문자를 사용할 수 있음
- 메타문자(=와일드카드) : 패턴 매칭시 임의의 문자 또는 문자열에 매치하는 부분을 지정하기 위해 쓰이는 특수문자
%
: 임의의 문자열, 빈 문자열도 포함함
패턴%
은 전방일치,%패턴%
는 중간일치,%패턴
은 후방일치_
: 임의의 문자 하나LIKE
에*
와일드카드는 사용할 수 없음
LIKE로 메타문자 및 ‘ 검색
%
를 메타문자가 아닌 패턴 자체로 지정하여 검색하고싶은 경우 이스케이프를 활용하여 WHERE text LIKE '%\%%'
의 형태로 사용
_
역시 동일한 방법으로 검색 가능
작은따옴표 '
를 검색하고 싶은 경우 ''
와 같이 '
를 연속해서 2개 기술하는것으로 이스케이프 처리
간단한 패턴의 경우 LIKE
로도 가능하지만 복잡한 패턴의 경우는 정규 표현식(Regular Expression)을 사용하는 것이 권장됨