[MySQL] MySQL 명령어

Jaehwan Lee·2021년 1월 14일
2

MySQL

목록 보기
1/1
post-thumbnail
본 글은 생활코딩 DATABASE 강의를 따라서 공부하며 정리한 글입니다. 글의 오류가 있다면 즉시 수정하겠습니다.

생활코딩 강의 링크 : 생활코딩 DATABASE2, 생활코딩 SQL JOIN



MySQL 기초 명령어

  • MySQL은 대소문자를 구별하지 않는다!

mysql(데이터베이스) 서버 접속

mysql -uroot -p

그 다음 비밀번호 입력 → 접속 완료

데이터베이스(=스키마) 생성

CREATE DATABASE name;
CREATE SCHEMA name;

기존에 있는 데이터베이스(=스키마) 삭제

DROP DATABASE name;

데이터베이스(=스키마) 보기

SHOW DATABASES;

데이터베이스(=스키마) 선택

USE name;


표(테이블) 생성

CREATE TABLE table_name(
c1 datatype(length)
c2 datatype(length)
c3 datatype(length)
...
PRIMARY KEY(c1)
);

PRIMARY KEY : 각각의 값들이 고유하게 존재하게 하기 위해 설정하는 값 (주로 index)

표(테이블) 보기

SHOW TABLES;

표(테이블)의 구조 보기

DESC table_name;


데이터베이스 핵심 명령어 : CRUD

Create(INSERT문)

INSERT INTO topic(c1, c2, c3, ...) VALUES(C1, C2, C3,...);

c1 ~ c3 : 열, 항목(Field)

C1 ~ C3 : 행, 정보

Read(SELECT문)

SELECT문 문법 자세히 알아보기 → GOOGLE에 "mysql select syntax" 검색

SELECT * FROM table_name;

Update(UPDATE문)

UPDATE table_name SET assignment_list WHERE where_condition;

assignment_list → col_name1 = value1, col_name2 = value2 ...

where_condition → 어떤 행을 삭제할 것인가? ex) id = 2

DELETE(DELETE문)

DELETE FROM table_name WHERE where_condition;

where_condition → 어떤 행을 삭제할 것인가? ex) id = 2



관계형 DB 핵심 명령어 : JOIN

  • JOIN문 문법 자세히 알아보기 → GOOGLE에 "mysql select syntax" 검색
  • SQL Joins Visualizer 을 참고하여 JOIN문 문법을 공부할 것!

SQL Joins Visualizer

1. LEFT JOIN

  • LEFT JOIN은 왼쪽 테이블에만 있는 데이터와 양쪽 테이블 모두에 있는 데이터를 합친다. 즉, 왼쪽 테이블에만 있는 데이터도 합친다.
SELECT * FROM table1 LEFT JOIN table2 ON table1.id1 = table2.id2;
  • 여러 개의 테이블을 LEFT JOIN 할 수 있다.
SELECT * FROM table1 LEFT JOIN table2 ON table1.id1 = table2.id2 
LEFT JOIN table3 ON table2.id2 = table3.id3;
  • JOIN된 테이블의 일부 열만 볼 수도 있다.
SELECT table1.id1,table1.topic1 FROM table1 LEFT JOIN table2 ON table1.id1 = table2.id2;

→ table1.id1과 table1.topic1 열만 출력된다.

  • JOIN된 테이블의 일부 행만 볼 수도 있다.
SELECT * FROM table1 LEFT JOIN table2 ON table1.id1 = table2.id2 WHERE table1.id1 = 1;

→ table1.id1이 1인 행만 출력된다.

2. INNER JOIN

  • INNER JOIN은 왼쪽과 오른쪽, 양쪽 테이블 모두에 있는 데이터(행)만을 합친다. 즉, 한 쪽에만 존재하는 행은 제거한다.
SELECT * FROM table1 INNER JOIN table2 ON table1.id1 = table.id2;
  • 여러 개의 테이블을 INNER JOIN 할 수 있다.
SELECT * FROM table1 INNER JOIN table2 ON table1.id1 = table2.id2 
INNER JOIN table3 ON table2.id2 = table3.id3;

3. FULL OUTER JOIN

  • FULL OUTER JOIN은 왼쪽 테이블과 오른쪽 테이블의 합집합으로 볼 수 있다. 즉, LEFT JOIN과 RIGHT JOIN의 합의 결과에서 중복되는 행만 제거되어 출력된다.
(SELECT * FROM table1 LEFT JOIN table2 ON table1.id1 = table.id2) UNION
(SELECT * FROM table1 RIGHT JOIN table2 ON table1.id1 = table.id2)

아쉽게도, 대부분의 관계형 데이터베이스에서 FULL OUTER JOIN이라는 문법을 지원하지 않는다.

대신 UNION이라는 문법을 사용하여 이를 수행할 수 있다.

  • UNION은 원래 합치고 중복된 것을 제거한다는 의미에서 UNION DISTINCT인데 DISTINCT를 생략해서 UNION으로만 적어도 된다. 아래의 코드도 같은 결과를 출력한다.
(SELECT * FROM table1 LEFT JOIN table2 ON table1.id1 = table.id2) UNION DISTINCT
(SELECT * FROM table1 RIGHT JOIN table2 ON table1.id1 = table.id2)

위의 코드에서 괄호는 생략해도 된다.

4. EXCLUSIVE JOIN

  • EXCLUSIVE JOIN은 한 쪽 표에만 있는 데이터(행)을 합성하는 방법이다.

  • 왼쪽 테이블에 있는 것만 출력

SELECT * FROM table1 LEFT JOIN table2 ON table1.id1 = table2.id2
WHERE table2.id2 is NULL;
  • 오른쪽 테이블에 있는 것만 출력
SELECT * FROM table1 RIGHT JOIN table2 ON table1.id1 = table2.id2
WHERE table1.id1 is NULL;


데이터베이스 심화

  1. Index (색인)
  2. Modeling (구조화)
  3. Backup → mysqldump, binary log
  4. Cloud → AWS RDS, Google Cloud SQL for MySQL, AZURE Database for MySQL
  5. Programming → Python mysql api, PHP mysql api, Java mysql api
profile
느리더라도 꾸준히 멈춤 없이

0개의 댓글