SQL 첫걸음 8-9강 정리
29 Oct 2019책을 보면서 공부한 내용 복습 및 정리
8강
기본설정
- Mysql 서버 켜기
- Mysql 실행하기
- sample database 사용 설정하기
$ mysql.server start
$ sudo mysql
mysql> use sample;
특정 문자나 문자열이 포함된 데이터를 검색하고 싶을 때 LIKE
를 사용할 수 있다. 컬럼명 LIKE '패턴'
으로 검색하는데 패턴을 정의할 때 %
와 _
, 두 메타문자를 사용할 수 있다. 퍼센트는 임의의 문자열을, 언더스코어는 임의의 문자 하나를 의미한다. 메타문자는 여러 개 사용할 수 있으며 *
은 사용할 수 없다.
두번째 명령어는 text 열에서 ‘SQL’을 포함하는 행을 검색한다. 3번째 행에도 SQL이 있지만 결과에 포함되지 않았다. SQL%
패턴으로 인해 SQL로 시작하는 문자열이 포함된 데이터만 검색되기 때문이다.
mysql> SELECT * FROM sample25;
mysql> SELECT * FROM sample25 WHERE text LIKE 'SQL%';
이번에는 %SQL%
으로 검색해 SQL 문자열의 위치에 상관없이 패턴에 매치하는 모든 데이터를 확인할 수 있다. %
는 임의의 문자열 뿐만 아니라 빈 문자열도 매치하기 때문이다.
mysql> SELECT * FROM sample25 WHERE text LIKE '%SQL%';
% 문자열 자체를 검색하고 싶을 때는 \
을 앞에 붙이면 된다. 위치에 상관없이 %를 포함한 문자열을 검색하고 싶을 때는 %\%%
로 검색할 수 있다. 또 다른 메타문자인 _를 검색할 때에도 두번째 명령어처럼 적용할 수 있다.
mysql> SELECT * FROM sample25 WHERE text LIKE '%\%%';
mysql> SELECT * FROM sample25 WHERE text LIKE '%\_%';
문자열 '
를 검색하고 싶을 때는 2개를 연속하여 사용한다. It's
라는 문자열은 It''s
로 작성하는 식으로 한다. '
하나만 문자열 데이터일 경우는 ''''
4개를 연속하여 작성한다.
9강
SELECT 문으로 데이터를 검색할 때는 기존 데이터베이스에 저장된 순서로 반환되지만 ORDER BY를 사용하면 검색 결과의 순서를 바꿀 수 있다.
아래 예제에서는 age 열의 값을 오름차순으로 정렬한 결과를 반환한다.
mysql> SELECT * FROM sample31;
mysql> SELECT * FROM sample31 ORDER BY age;
ORDER BY는 기본적으로 오름차순이다. 내림차순으로 정렬하고 싶을 때는 ORDER BY 컬럼명 DESC
를 사용한다. 기본적으로 오름차순이지만 ASC
로도 지정할 수 있다.
mysql> SELECT * FROM sample31 ORDER BY age DESC;
mysql> SELECT * FROM sample31 ORDER BY age ASC;
ORDER BY를 사용할 때 숫자나 날짜시간형 데이터는 대소 관계를 판별하기 쉽다. 문자열의 경우는 알파벳 또는 한글순인 사전식 순서로 결정된다.
아래 예제에서 a 컬럼은 문자열형, b 컬럼은 정수형으로 이루어졌다. 각 행의 열은 동일한 값을 가지고 있지만 정렬을 할 때는 다른 결과를 반환하게 된다. a 컬럼에선 숫자의 대소 관계가 아닌 사전식 순서로 정렬하므로 2가 가장 마지막에 오게 된다. 문자열형에 숫자 데이터를 넣을 때는 ORDER BY를 사용할 때 주의하도록 한다.
mysql> SELECT * FROM sample311;
mysql> SELECT * FROM sample311 ORDER BY a;