SQL 첫걸음 8-9강 정리

책을 보면서 공부한 내용 복습 및 정리

8강

기본설정

  1. Mysql 서버 켜기
  2. Mysql 실행하기
  3. 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%';

like_ex1

이번에는 %SQL%으로 검색해 SQL 문자열의 위치에 상관없이 패턴에 매치하는 모든 데이터를 확인할 수 있다. %는 임의의 문자열 뿐만 아니라 빈 문자열도 매치하기 때문이다.

mysql> SELECT * FROM sample25 WHERE text LIKE '%SQL%';

like_ex2

% 문자열 자체를 검색하고 싶을 때는 \을 앞에 붙이면 된다. 위치에 상관없이 %를 포함한 문자열을 검색하고 싶을 때는 %\%%로 검색할 수 있다. 또 다른 메타문자인 _를 검색할 때에도 두번째 명령어처럼 적용할 수 있다.

mysql> SELECT * FROM sample25 WHERE text LIKE '%\%%';
mysql> SELECT * FROM sample25 WHERE text LIKE '%\_%';

like_ex3

문자열 '를 검색하고 싶을 때는 2개를 연속하여 사용한다. It's 라는 문자열은 It''s로 작성하는 식으로 한다. '하나만 문자열 데이터일 경우는 '''' 4개를 연속하여 작성한다.

9강

SELECT 문으로 데이터를 검색할 때는 기존 데이터베이스에 저장된 순서로 반환되지만 ORDER BY를 사용하면 검색 결과의 순서를 바꿀 수 있다.

아래 예제에서는 age 열의 값을 오름차순으로 정렬한 결과를 반환한다.

mysql> SELECT * FROM sample31;
mysql> SELECT * FROM sample31 ORDER BY age;

order_ex1

ORDER BY는 기본적으로 오름차순이다. 내림차순으로 정렬하고 싶을 때는 ORDER BY 컬럼명 DESC를 사용한다. 기본적으로 오름차순이지만 ASC로도 지정할 수 있다.

mysql> SELECT * FROM sample31 ORDER BY age DESC;
mysql> SELECT * FROM sample31 ORDER BY age ASC;

order_ex2

ORDER BY를 사용할 때 숫자나 날짜시간형 데이터는 대소 관계를 판별하기 쉽다. 문자열의 경우는 알파벳 또는 한글순인 사전식 순서로 결정된다.

아래 예제에서 a 컬럼은 문자열형, b 컬럼은 정수형으로 이루어졌다. 각 행의 열은 동일한 값을 가지고 있지만 정렬을 할 때는 다른 결과를 반환하게 된다. a 컬럼에선 숫자의 대소 관계가 아닌 사전식 순서로 정렬하므로 2가 가장 마지막에 오게 된다. 문자열형에 숫자 데이터를 넣을 때는 ORDER BY를 사용할 때 주의하도록 한다.

mysql> SELECT * FROM sample311;
mysql> SELECT * FROM sample311 ORDER BY a;

order_ex3