TIL [Database] 쿼리문 튜토리얼

finelinefe·2020년 9월 12일
0

DATABASE

목록 보기
2/12
post-thumbnail

가독성을 위해 자동완성, syntax highlighting 기능을 지원하는 cli 툴 설치
MacOS
$ brew update && brew install mycli
Ubuntu
$ sudo apt-get install mycli
실행 명령어
$ mycli -u root

DDL = Data Define Language, 데이터 정의어

종류 : Create / Alter / Drop

DML = Data Manipulation Languate, 데이터 조작어

종류 : Insert / Update / Delete

DQL = Data Query Language, 데이터 쿼리

종류 : Select / Join / Like / Where 등의 조건

create문을 사용하여 테이블을 생성했다.
이어 테이블에 데이터를 insert 했고 아티스트 테이블에 들어간 가수 목록을 확인했다.
수정을 할 경우 update를 사용하는데, 가수 샘스미스의 이름이 틀렸으므로 이부분을 수정했다. 뿐만 아니라 수정에 이어 삭제도 시행했다.
songs 테이블에 각 아티스트에 맞는 노래 제목과 가사 데이터를 insert.

SELECT songs.title, songs.lyrics FROM songs WHERE songs.lyrics LIKE '노래1%';
# 위에서의 WHERE문은 = 연산자를 사용해서 정확한 값으로 비교를 했지만
# LIKE 문을 사용하면 이 처럼 노래1이 포함된 데이터를 쿼리할 수 있습니다. 
  1. select songs.lyrics from songs where songs.title = '노래1'; -> where 절을 활용해 songs 테이블에서 노래 제목인 '노래1'인 노래의 lyrics 를 도출하는 식을 입력했다 = > '노래 1 가사' 출력
SELECT songs.title, songs.lyrics FROM songs WHERE songs.title LIKE 'All%';
# songs.title의 값이 All 로 시작하면 쿼리문에 의해 데이터가 조회됩니다.

SELECT songs.title, songs.lyrics FROM songs WHERE songs.lyrics LIKE '%가져가도 돼요';
# songs.lyrics의 값이 가져가도 돼요로 끝나면 쿼리문에 의해 데이터가 조회됩니다.
  1. where 절 조건 뿐만 아니라 like 조건까지 포함하여 작성.
    select songs.title, songs.lyrics from songs where songs.lyrics like '노래1 %'; => songs 테이블에서 노래 제목과 가사를 출력하는데, 조건이 노래 1 로 시작하는 것만 출력하는 것이다.
    % 기호의 위치에 따라 해석이 갈리는데,
  • 앞에 있고 뒤에 조건이 있을 경우= 뒤에서 해당 조건으로 끝나는 경우
  • 뒤에 %가 있는 경우 = 앞의 해당 조건으로 시작하는 경우

따라서 결과는 songs 테이블에서 노래 1로 시작하는 모든 노래의 제목과 가사를 출력
join의 경우 각각 songs 테이블과 artist 테이블을 묶는것인데 이때는 외래키인 artist_id로 묶을 수 있다.

한 아티스트는 여러 노래를 가질 수 있으므로 1:다 관계가 성립한다.

SELECT artists.name, songs.title, songs.lyrics # 필요한 칼럼을 나열 합니다.
FROM artists # artists 테이블에
JOIN songs # songs 테이블을 결합시킵니다.
ON artists.id = songs.artist_id; # ON 뒤에는 교집합, 즉 연결성이 있는 부분(칼럼)을 적어줍니다.

0개의 댓글