본문 바로가기

카테고리 없음

[MySQL] Sakila 데이터 실습 - DB, table 확인

Sakila 데이터베이스는 MySQL에서 제공하는 sample데이터이다. 데이터를 추출, 조작하기에 좋다.

먼저 간단히 Sakila 스키마와 테이블 정보를 확인해보자.

 

SHOW - 스키마 혹은 테이블 정보 확인

설치된 데이터 베이스 확인

SHOW DATABASES;

 

USE - 사용할 스키마(schema)를 선택한다.

USE sakila;

 

사용할 수 있는 테이블 확인

SHOW TABLES;

 

DESC - 테이블 정보 확인

가장 상단에 actor 라는 테이블이 보인다. 테이블의 열을 확인할 수 있다.

  • field : 열(column) 이름
  • type : 데이터 타입
  • null : null 타입이 들어갈 수 있는지. NO는 허용하지 않는다는 의미
  • key : PK(primary key), FK(foreign key) 등 키값
  • default : 값이 주어지지 않는 경우 디폴트 값
  • extra : 자동증가 등 정보
DESCRIBE actor;
DESC actor;	-- 짧게 줄여써도 된다

 

SELECT - 데이터 조회

actor 테이블의 모든 데이터 조회

테이블 명 앞에  '스키마이름.' 를 붙여서도 접근할 수 있다.

SELECT * FROM actor;
SELECT * FROM sakila.actor;	-- 동일한 결과 조회

 

 

actor 테이블의 모든 데이터 조회

SELECT * FROM actor;

 

LIMIT - 결과값 개수 제한

actor 테이블의 데이터 중 3건만 조회

SELECT * FROM actor
LIMIT 3;

 

 

ORDER BY - 결과값 정렬하기

-ASC (ascending) 는 오름차순, DESC (descending) 내림차순 정렬이다.

-ASC 키워드를 붙이지 않으면 자동으로 오름차순 정렬된다.

-참고로 테이블 정보를 확인하는 DESC(ribe) 명령어와 내림차순 DESC(ending) 은 철자는 같지만 용법이 다르다.

 

actor 테이블 first_name으로 정렬하기

SELECT * FROM actor
ORDER BY first_name ASC;	-- 오름차순 정렬

SELECT * FROM actor
ORDER BY first_name DESC;	-- 내림차순 정렬

 

Alias

Alias 는 별칭이다. 열(column) 에 다른 이름을 사용하는 것을 의미하는데, * 와 같이 모든 데이터를 조회하는 기호와 함께 쓰일 수 없다. AS 는 생략 가능하다. 아래 예시에서는 혼용해서 사용했는데, 실무에서는 가독성을 위해 통일하는게 좋다

(참고로 * 는 asterisk 이다. '애스터리스크' 등으로 발음하면 되겠다)

SELECT actor_id AS 아이디
, last_name AS 성
, first_name 이름	-- AS 생략가능
, last_update
FROM actor

 

 

WHERE - 조건에 만족하는 행(row) 선택

특정 last_name 만 조회하기

SELECT actor_id actorId
, first_name fName
, last_name lName
, last_update
FROM actor
WHERE first_name = 'zero';

결과가 나오지 않는다. 쿼리문은 대소문자를 가리지 않지만 결과값은 대소문자를 가리기 때문이다.

apple 과 APPLE를 다르게 취급한다.

 

쿼리문을 수정해보자

SELECT actor_id actorId
, first_name fName
, last_name lName
, last_update
FROM actor
WHERE first_name = 'ZERO';

 

 

 

특정 번호대의 actor 만 조회하기

SELECT actor_id actorId
, first_name fName
, last_name lName
, last_update
FROM actor
WHERE actor_id >= 20 && actor_id < 30;

= 기호는 부등호의 뒤에 붙는다. 앞에 붙으면 오류가 발생한다.

'크거나 같은', '작거나 같은' 이라고 정해져 있기 때문이다.

  • 올바른 부등호 : >= (~보다 크거나 같은), <= (~보다 작거나 같은)
  • 틀린 부등호 : =>, =<

 

 

2개 이상의 조건 걸기

SELECT actor_id actorId
, first_name fName
, last_name lName
, last_update
FROM actor
WHERE 1=1
AND last_name = 'KILMER'
AND actor_id < 100;

WHERE 절에 AND, OR 등 키워드를 사용해 다수의 조건을 걸 수 있다.

참고로 1=1 은 관용적으로 사용되는 표현이다. 주석처리를 용이하게 하거나 코드를 관리하기 편하게 하려는 등의 이유가 있다. 1=1 결과는 TRUE 이기 때문에 항상 수행되며, 아래 where 절에 의해서만 조건이 걸린다.

 

꼭 1=1만 써야한다는 법은 없지만 1=1을 많이 쓴다. 가령 아래와 같은 쿼리의 조건은 항상 참이다.

SELECT * 
FROM actor
WHERE TRUE
AND 1=1
AND 2=2
AND 3=3
AND 5 = (2+3)
AND 'iloveyou' = 'i'+'love'+'you'
;