31. TIL (MySQL 쿼리문)

dream.log·2021년 7월 31일
0

TIL

목록 보기
30/42
post-thumbnail

오늘도 복습과제로 지정된 주제인 MySQL 쿼리문에 대해 공부를 해보았다!
MySQL 상에서 테이블을 만들고 조합하는 과정은 꽤 재미가 있었다!
오늘 배운 내용들을 잘 기록해두고, 나중에 필요할 때 꺼내보자!

✅ DDL (Data Define Language)

: 데이터베이스의 스키마(형태)를 정의할 수 있는 쿼리문!
Create, Alter, Drop 등이 대표적이다! 데이터를 구성하는 논리적인 구조(데이터베이스 or 테이블)을 추가, 수정, 삭제가 가능하다. 또한 메타데이터를 다루는 쿼리문이다.

🌱 mycli -u root 명령어를 활용해 mysql에서도 자동완성을 활용하자!

🌱 데이터베이스 생성, 확인, 사용

# 데이터베이스 생성하기
CREATE DATABASES my_favorite_artists;
# 데이터베이스 보기
SHOW DATABASES; 
# 데이터베이스 사용하기
USE my_favorite_artists;
# 테이블 보기
SHOW tables;

🌱 테이블 만들기
좋아하는 아티스트 (가수) 정보가 담긴 테이블과 노래의 정보가 담긴 테이블 총 두개로 구성되어 있으며, 이 테이블은 일대다 관계이다!

🌱 artist table 만들기

CREATE TABLE artists 
(
  id INT NOT NULL AUTO_INCREMENT, 
  # id 칼럼을 정수, NULL 을 허락하지 않으며 값을 자동증가하게 설정합니다.
  name VARCHAR(100) NOT NULL,
  # name 칼럼을 100의 크기를 가지는 문자열, NULL 을 허락하지 않습니다.
  PRIMARY KEY (id) 
  # 이 테이블의 Primary Key 를 id 로 설정합니다.
);
  # 쿼리문은 ; 로 구분되기 때문에 엔터를 쳐서 쿼리문을 멀티라인으로 작성할 수 있습니다.

: 해당 내용 입력시 mysql 상에서 들여쓰기를 잘 해주어야 오류가 나지 않는다!

  • desc artists; :
    description을 축약한 명령어로써 테이블의 정보를 보여준다!

🌱 song table 만들기
: song 테이블의 artist_id가 artist 테이블의 id를 참조하기 때문이다! 외래키를 사용할 때 FOREIGN KEY,REFERENCE 이 두가지 옵션을 활용해 원하는 카럼을 외래키로 만들고 참조하는 칼럼을 정의할 수 있다.

CREATE TABLE songs
(
id INT NOT NULL AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
lyrics VARCHAR(2000),
artist_id INT,
PRIMARY KEY (id),
FOREIGN KEY (artist_id) REFERENCES artists (id) 
# 외래키를 걸어줄 칼럼과 참조할 테이블과 칼럼을 순서대로 적어줍니다.
);

✔️ 잘 생성됐는지 확인해보면?

: 무사히 생성됐다!
artist_id 를 보면 key에 MUL이 들어가있는데, 이는 Multiple을 의미하며, 여러행이 동일한 값을 가질 수 있음을 의미한다!

✅ DML (Data Manipulation Language)

: 데이터를 조작하는 쿼리문을 의미한다!
Insert, Update, Delete가 대표적인 쿼리문이다!

INSERT INTO artists (name) VALUE ('가수이름')
: 넣을 테이블 값을 소괄호로 감싸며 value 뒤엔 실제로 넣을 값을 넣어준다!

넣고 나서 잘 만들어졌는지 조회하면?

: 요즘 핫한 이무진!과 방탄소년단, 짱테이시를 차례로 넣어주었다!

✔️ 입력한 값을 바꾸고 싶다면? update
: UPDATE artist SET name='장범준' WHERE id=1;
첫번째 입력한 '이무진'을 '장범준'으로 바꾸어주었다!
WHERE 을 활용해 method도 지정!

✔️ 입력한 값을 삭제하고 싶다면? delete
: DELETE FROM artists WHERE name = '장범준';
장범준을 삭제해주었다. 마찬가지로 WHERE 을 활용해 삭제할method도 지정!

✅ DQL (Data Query Language)

: 데이터를 쿼리하는데 사용되는 SQL문을 의미한다. 데이터베이스 서버에게 데이터를 달라고 요청하는 것이다! 실제로 프/백간 소통을 위한 api를 구현 할 때 데이터베이스에 저장된 데이터를 쿼리해서 가져온 데이터를 응답으로 보내주는 경우가 많다!
SELECT 가 대표적인 쿼리문이다!

🌱 artists ,songs에 각각 데이터 넣기

# artists에 들어갈 데이터  
INSERT INTO artists (name) VALUES ('방탄소년단')

# songs 테이블에 들어갈 데이터, artists 테이블과 1:N 관계!
INSERT INTO songs (title, artist_id, lyrics) VALUES ('ASAP',3,'ASAP 내 반쪽 아니 완전 카피')

: 일대다 관계인 songs 테이블에 들어갈 데이터들을 먼저 정의해주고, 순서대로 넣어준다!

✔️ 입력을 완료하면?

✔️ 노래 가사만 출력해서 보고 싶다면?
SELECT songs.lyrics FROM songs;

✔️ 노래 제목과 가사를 함께 보고싶다면?
SELECT songs.title, songs.lyrics FROM songs;

✔️ 원하는 가사가 담겨져 있는지 확인해보려면?
SELECT songs.lyrics FROM songs WHERE songs.title = 'asap';
: where 이후 조건을 걸어준다!

✔️ 가사의 일부를 활용해 노래의 제목을 찾는다면?
SELECT songs.title, songs.lyrics FROM songs WHERE songs.lyrics LIKE '%고민보다%';
: where 문은 = 연산자를 사용해 정확한 값으로 비교를 했지만, LIKE문을 사용하면 이처럼 원하는 가사가 있는 부분을 찾을 수 있다!

🌱 JOIN 활용하기
: 연관된 두개의 테이블을 결합시킬 때 활용한다!

SELECT artists.name, songs.title, songs.lyrics 
FROM artists 
JOIN songs 
ON artists.id = songs.artist_id; 

: select를 활용해 필요한 칼럼을 나열하고,
from artist테이블에 join을 활용해 songs 를 결합시키고,
on에 교집합, 연결성이 있는 부분을 적어준다!

✔️ 결과물은?

🔥 SQL 각종 쿼리문 추가 정리

  • WHERE : 필터를 기록하기 위해 사용. 지정된 레코드를 추출하는데 이용됨

  • BETWEEN 은 WHERE과 함께 이용하며, AND를 통해 범위를 지정해 원하는 값을 얻어낼 수 있다.

    SELECT * FROM Products
    WHERE Price BETWEEN 10 AND 20;

    : Products에서 값이 10에서 20 사이인 제품을 출력하라;
    NOT BETWEEN : 범위를 벗어난 부분 출력할 때 이용
    WHERE로 지정하는 범위에 따라 TEXT도 비교가 가능하다. 날짜도 비교 가능!

  • 숫자로 된 값을 조회할 때 유용하게 사용할 메소드
    COUNT : 지정된 기준과 일치하는 행의 수를 반환한다.
    AVG : 숫자열의 평균값 반환한다.
    SUM : 숫자들의 합을 반환한다.

    ex) 구문 예시

SELECT COUNT(AVG,SUM)(column_name)
FROM table_name
WHERE condition;

🟡 출처 : Mysql 공식자료 및 wecode mysql session (https://www.w3schools.com/sql/sql_like.asp)
profile
한 걸음, 한 걸음 포기하지 않고 발전하는 Backend-developer 👩🏻‍💻 노션 페이지를 통한 취업 준비 기록과 회고를 진행하고 있습니다. 계획과 기록의 힘을 믿고, 실천하고자 합니다.

0개의 댓글