query 문

?·2021년 8월 24일
0

MySQL
관계형 데이터베이스 중 하나인 MySQL을 사용하여 SQL 쿼리문을 정리해보겠다.
쿼리문은 크게 3가지 종류로 나뉘게 된다. 간략히 보면

DDL (Data Define Language) :
데이터베이스의 Schema를 정의할 수 있는 쿼리문
DML (Data Manipulation Language) :
데이터를 조작하는 쿼리문
DQL (Data Query Language) :
데이터를 쿼리하는데(데이터베이스 서버에게 데이터를 달라고 요청하는 것) 사용되는 SQL문
으로 정리 할 수 있다. 이제 위 쿼리문들의 사용법을 확인해보자.

참고 ) MySQL에서 키워드와 구문, 문자열은 대소문자를 구분하지 않는다. 그래도 되도록이면 대문자 혹은 소문자로 일관되게 사용하는 것이 좋다. 또한 테이블 명과 필드의 이름은 대소문자를 구분하므로, 주의해서 사용해야 한다. 또한 쿼리문 작성 후 ; 를 붙여야 한다.

DDL (Data Define Language)
DDL 에 속하는 쿼리문의 이름에서도 알 수 있듯 데이터를 구성하는 논리적인 구조(데이터베이스 또는 테이블)을 추가하고 수정하고 삭제할 수 있다. 또한 메타데이터(데이터에 대한 데이터)를 다루는 쿼리문이다.

  • CREATE DATABASE
    CREATE DATABASE 데이터베이스명; # DATABASE를 생성하는 명령어

CREATE DATABASE 데이터베이스명 character set utf8mb4 collate utf8mb4_general_ci;

utf8mb4로 셋팅할때, 한글,이모티콘 등을 쓰기위해선 하는게 좋음

SHOW DATABASES; # MySQL에 저장되어있는 데이터베이스 확인가능

USE 데이터베이스명; # 해당 데이터베이스 활성화

SHOW TABLES; # 현재 데이터베이스 내 테이블을 보는 명령어

  • CREATE 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 로 설정
    ); # artists table 생성

    DESC artists; # DESCRIBE 도 같은 명령어로, 테이블의 정보를 보여줌

    DML (Data Manipulation Language)
    데이터를 조작하는 쿼리문들로 INSERT, UPDATE, DELETE 문이 대표적이다.

  • INSERT INTO
    INSERT INTO 테이블이름(필드이름1, 필드이름2, 필드이름3, ...)
    VALUES (데이터값1, 데이터값2, 데이터값3, ...);
    INSERT INTO 테이블이름
    VALUES (데이터값1, 데이터값2, 데이터값3, ...);
    1번 방법)
    INSERT INTO songs (title, artist_id, lyrics)
    VALUES ('All I need', 1, 'I\'m the next act\nWaiting in the wings');

    2번 방법)
    INSERT INTO songs
    VALUES (2,'All I need', 'I\'m the next act\nWaiting in the wings',1);

    # 테이블 뒤 필드명을 생략할 수 있으나 생략할 경우 table의 필드 순서대로 모든 값을 넣어주어야 insert 된다.
  • UPDATE (table) SET (column)=바꿀값 WHERE (조건)
    UPDATE artists SET name='Pink Floyd' WHERE id=2;

id= 2 인 row 의 name을 변경해줌

WHERE 로 조건을 주지 않는다면 arists 의 모든 name 값이 변경되므로 조건을 꼭 넣자

  • DELETE FROM (table) WHERE (조건)
    DELETE FROM artists WHERE name='새소년';

name='새소년' 인 row 를 찾아 데이터 삭제

DQL (Data Query Language)
데이터를 쿼리하는데(데이터베이스 서버에게 데이터를 달라고 요청하는 것) 사용되는 SQL문으로 SELECT 문이 대표적

  • SELECT
    SELECT * FROM artists; # artists 테이블의 전체 데이터 선택
    SELECT songs.title FROM songs; # songs 테이블의 title column의 데이터만 선택
    SELECT songs.lyrics FROM songs WHERE songs.title = '파도';

songs 테이블의 title= '파도' 인 row 의 lyrics column 만 선택

SELECT songs.title, songs.lyrics FROM songs WHERE songs.lyrics LIKE '%넘실넘실%';

% 에 어떠한 값이 들어가도 상관없이 해당 값을 가지는 row 선택

  • JOIN
    SELECT artists.name, songs.title, songs.lyrics # 필요한 column을 나열
    FROM artists # artists 테이블에
    JOIN songs # songs 테이블을 결합
    ON artists.id = songs.artist_id; # ON 뒤에는 교집합, 즉 연결성이 있는 부분(칼럼)을 입력

artists 와 songs 테이블에서 on 조건을 만족하는 부분이 나옴

profile
?

0개의 댓글