예제용 데이터베이스 구축
여기에서 예제용 데이터베이스를 다운로드한다.
압축을 풀어서 "c:\USER\사용자명"
경로에 저장한다(다른 위치에 저장해도 무관)
명령 프롬프트를 실행해 cd
커맨드로 파일이 저장된 위치로 이동
mysql -uroot -p <sample.dump
를 명령해 암호를 입력하면 데이터베이스가 import 된다
하지만 바로 select
를 시도하면 위와 같은 에러가 뜬다
SQL을 사용할 때는 사용할 데이터를 구체적으로 결정해 줘야 하기 때문이다
따라서 use
커맨드로 sample 데이터베이스를 선택해준다
4-1 SELECT * FROM 실행하기
SELECT * FROM 테이블명;
=명령어 열 대상 테이블명;
=SELECT 구 + FROM 구;
SQL 명령어를 입력할 때는 space로 구분하고, 세미콜론(;)을 붙여야 실행된다
4-2 SELECT 명령 구문
4-3 예약어와 데이터베이스 객체명
데이터베이스 객체명을 만들 때 SELECT, FROM과 같은 예약어나 기존에 존재하는 객체명은 사용할 수 없으며, 대소문자를 구분하지 않는다
4-4 Hello World를 실행한 결과=테이블
SELECT 명령을 실행하면 행(레코드)와 열(컬럼/필드)로 구성된 표 형식의 데이터가 출력된다. 열에는 이름이 지정되어있고, 하나의 데이터 값이 저장되는 공간을 "셀" 이라고 부른다.
5-1 DESC 명령
DESC 테이블명
명령으로 테이블에 정의되어 있는 열을 확인할 수 있다.
5-2 자료형
e.g. '2021-01-20'
6-1 SELECT 구에서 열 지정하기
SELECT 열1, 열2... FROM 테이블명
SELECT 구에 열명을 지정해서 열을 한정할 수 있다.
6-2 WHERE 구에서 행 지정하기
SELECT 열 FROM 테이블명 WHERE 조건식
WHERE 조건식으로 조건에 일치하는 행만 결과로 반환이 가능하다.
WHERE 구처럼 생략이 가능한 구는 있지만, SELECT - WHERE - FROM
처럼 구의 순서를 바꾸는 것은 불가능하다.
조건식은 "열과 연산자, 상수로" 구성되는 식이다.
7-1 AND 조합 (교집합)
조건식1 AND 조건식2
좌우식 모두 참인 경우 TRUE 반환
SELECT * FROM sample24 WHERE a<>0 AND b<>0;
a열과 b열 모두 0이 아닌 행
7-2 OR 조합 (합집합)
조건식1 OR 조건식2
어느 쪽이든 하나만 참이 되면 TRUE 반환
SELECT * FROM sample24 WHERE a<>0 OR b<>0;
a열이 0이 아니거나 b열 0이 아닌 행
7-3 주의점❗❗
a가 1이거나 2인 행을 추출하고 싶을 경우
SELECT * FROM sample24 WHERE a=1 OR 2;
를 사용하면 상수 2가 항상 TRUE이기 때문에 모든 행을 반환한다.
따라서SELECT * FROM sample24 WHERE a=1 OR a=2;
라고 입력해야한다.
또 AND가 OR보다 우선순위가 높기 때문에
a열이 1 또는 2이고 b열이 1 또는 2인 행을 추출할 때
SELECT * FROM sample24 WHERE a=1 OR a=2 AND b=1 OR b=2;
가 아닌
SELECT * FROM sample24 WHERE (a=1 OR a=2) AND (b=1 OR b=2);
와 같이 괄호를 통해 우선순위를 변경해야 한다.
7-4 NOT 조합
NOT 조건식
조건식에 FALSE인 값을 반환
a열이 0이 아니거나 b열이 0이 아닌 행을 제외한 나머지 행 추출
SELECT * FROM sample24 WHERE NOT (a<>0 OR b<>0);
= 연산자로 검색하는 경우 셀의 데이터값이 완전히 동일할 때만 반환한다. 이와 다르게 "특정 문자열이 포함되어 있는" 데이터를 찾고싶을 때 사용하는 것이 "패턴 매칭(부분 검색)"이다.
8-1 LIKE로 패턴 매칭
열명 LIKE 패턴
LIKE 술어의 왼쪽에는 매칭 대상, 오른쪽에는 패턴을 문자열로 지정한다. 수치형 상수는 사용할 수 없고 %,_ 메타 문자(aka 와일드카드)가 사용 가능하다.
전방일치
SELECT * FROM sample25 WHERE text LIKE 'SQL%';
중간일치 - %는 빈문자열과도 매칭(1행)
SELECT * FROM sample25 WHERE text LIKE '%SQL%';
후방일치
SELECT * FROM sample25 WHERE text LIKE '%SQL';
8-2 LIKE로 % 검색하기
sample25의 2행처럼 데이터 안에 메타문자(%, _)를 포함한 데이터를 검색하고 싶을 때는
WHERE text LIKE '%\%%';
처럼 \을 앞에 붙여 이스케이프 해준다.
8-3 문자열 상수 ' 의 이스케이프
상수를 검색할 때도 ''로 둘러쌓인 데이터를 검색할 때엔
WHERE text LIKE 'IT''S';
처럼 ''를 연속해서 기술하는 것으로 이스케이프 처리한다.
' 하나의 문자열 데이터를 검색할 땐 WHERE text LIKE ''''
라고 입력하면 된다.