[TIL] # 25 SQL문

ddalkigum·2020년 12월 23일
4

TIL

목록 보기
25/50
post-thumbnail
post-custom-banner

mysql로 진행되었습니다

DDL

Database Define Language의 약자

Schema를 정의 하는 역할을 합니다

CREATE ALTER DROP

세가지가 대표적이며, 데이터베이스를 만들고, 없애고, 수정할 수 있습니다

메타데이터를 다루는 쿼리문입니다

CREATE

CREATE DATABASE

CREATE DATABASE # Database_name;
SHOW DATABASES;
USE # Database_name;

만들고 난뒤에 들어가게 되면

Database changed 라는 문구를 볼 수 있습니다

아직 테이블을 생성하지 않아 비어있습니다

CREATE TABLE

CREATE TABLE # table_name;
( # datatype );

우선 가수와 음악 테이블을 만들어 줬습니다

ALTER

테이블 명을 수정하거나, 컬럼을 추가 삭제, 수정 등을 할 때 사용합니다

ADD

ALTER TABLE # table_name
ADD # column_name datatype ;

MODIFY

column의 속성을 변경할 때 사용합니다

ALTER TABLE # table_name
MODIFY COLUMN # 바꿀 column_name datatype;

CHANGE

속성만 바꾸는게 아닌 column의 이름도 바꿔줄 때 사용 합니다

ALTER TABLE # table_name
CHANGE COLUMN # 바꿀 column_name 바꾸려는 column_name datatype;

DROP

컬럼을 삭제할 때 사용합니다

ALTER TABLE # table_name
DROP COLUMN # column_name;

RENAME

테이블의 이름을 변경할 때 사용합니다

ALTER TABLE # table_name
RANAME # 바꿔줄 table_name

TRUNCATE

지금까지는 예시를 들기 위한 데이터를 넣는 방법이었고,
이제부터 제대로 진행해 보겠습니다

그전에 이미 넣어 놓은 데이터가 있어 삭제를 할건데

아예 초기화를 해서 사용하겠습니다

이떄 사용하는게 TRUNCATE이며 DELETE와 작동하는 방식이 다릅니다
지금의 경우는 artists 와 songs가 ForeignKey로 연결이 되어있기 때문에

foreignkey 설정을 해준뒤 삭제 해주겠습니다

SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE TABLE table_name;
SET FOREIGN_KEY_CHECKS = 1;

데이터를 삭제


DML

Data Manipulation Language

데이터를 조작하는 쿼리문 입니다

INSERT UPDATE DELETE

위 세가지가 대표적으로 사용하는 명령어 입니다

가수에 관한 데이터를 넣어 주겠습니다

INSERT

데이터를 넣어줄 때 사용합니다

INSERT INTO # table_name (column_name)
VALUES (data);

총 3가지의 가수이름에 대한 데이터를 넣고

UPDATE

데이터의 정보를 수정할 때 사용합니다

Pink Floid의 이름을 Pink Floyd로 변경할건데
이때 이름을 바꿔주는 것이 UPDATE 입니다

UPDATE # table_name
SET # 바꿔줄 내용 
WHERE # 어느 부분을 바꿔줄지 

DELETE

데이터를 삭제해 줄때 사용합니다

DELETE FROM # table_name
WHERE # 삭제할 데이터 


DQL

Data Query Language의 약자로
데이터베이스 서버에서 데이터를 달라고 요청을 해주는 쿼리문 입니다

프론트와 백엔드간의 소통을 위한 API를 구현할 때, DB에 저장된 쿼리에서
가지고온 데이터를 응답으로 보내주는 경우가 많다

SELECT

데이터는 만들었고, 내가 만든 데이터를 가지고 오겠습니다

SELECT # column_name
FROM # table_name;

한번에 가지고 오기

"*" 을 사용해주게 되면 모든 걸 가지고 오겠다는 뜻입니다

가지고 오고 싶은 column만 가지고 오기

column 이름을 설정해주어 가지고 오면 됩니다

WHERE, LIKE

내가 원하는 데이터를 가지오 올때 사용 하는 WHERE 입니다
WHERE 에서 찾은 데이터 중에서 내가 원하는 걸 가지고 올때 사용

LIKE를 통해서 무언가 찾고 싶을때 사용하는 명령어 관련해서는
아래 w3c에서 확인 가능 합니다

https://www.w3schools.com/sql/sql_like.asp

이런식으로 단어로 찾는 것도 가능합니다

JOIN

둘의 공통 부분이 있을때, 두 개의 테이블을 결합할 수 있습니다
지금 만든 DB의 경우를 보면, artist_id로 연결이 되어있습니다

이 부분을 이용해서 가지고 오겠습니다

SELECT # column_name
FROM # table1_name
JOIN # table2_name
ON # 조건, 연결성이 있는 부분 column

반대로 해주어도 같은 결과를 가지고 올 수 있습니다

JOIN, WHERE을 이용해서 조건부로 가지고 오기

이렇게 연결이 되어있는 부분에서
내가 원하는 특정 가수만의 데이터를 가지고 오고 싶을때는

WHERE 문을 사용해서 가지고 오면 됩니다

JOIN, WHERE, LIKE

더 자세한 데이터 가지고 오기

LIKE를 붙여 내가 원하는 데이터를 가지고 오게되면 됩니다


TRUNCATE는 DDL인 이유

DDL ( Data Definition Language)
DML ( Data Manipulation Language )

DDL은 데이터를 정의하는 언어
DB, Table을 생성, 변경, 삭제 할때 사용하는 SQL문

DML은 데이터를 조작하는 언어
객체를 가공하는 역할 즉, row에 관련된 SQL문

TRUNCATAE의 삭제 범위

DELETE의 삭제 범위

TRUNCATE는 DELETE에 비해 붙일 수 있는 조건이 적습니다

TRUNCATE - 삭제시 id 초기화되서 다시 생성시 1부터 시작
DELETE - 삭제시 id값을 그대로 진행

정리를 너무 잘해 주신분이 계서서 참고 했습니다

https://pointnet.tistory.com/334


SQL문을 사용해서 해주는 일을 Django에서 매니저를 통해 해결이 가능하지만
그래도 어떻게 사용하는지는 알아야 하지 않을까... 싶네여 😁

profile
딸기검 -본캐🐒 , 김준형 - 현실 본캐 🐒
post-custom-banner

0개의 댓글