[Database] MySQL 기초

관계형 데이터베이스?

  • 데이터를 표의 형태로 정리한 것
  • 정렬, 검색 등을 편리하고 안전하게 할 수 있다.

🍔 항상 root로 작업을 하면 위험할 수 있기 때문에,
평소엔 일반 사용자를 등록해 그 사용자로 작업을 하다가 중요한 일이 있을때만 root로 작업하는 걸 권장.


SQL (Structured Query Language)

특징1. 쉽다!
특징2. 중요하다!

*관계형 데이터베이스들이 공통적으로 데이터베이스 서버를 제어할때 사용하는, 표준화된 언어이다.


CRUD (Create Read Update Delete)

CRUD는 DATABASE의 본질이다.


데이터베이스 생성하기

1. 데이터베이스 생성하기

CREATE DATABASE 데이터베이스이름;

2. 데이터베이스 확인해보기(가지고 있는 데이터베이스 전부 보여줌)

SHOW DATABASES;

3. 자, 이제 데이터베이스 사용하기

지금부터 실행하는 모든 명령들을 이 데이터베이스에 적용하겠다.

USE 데이터베이스이름;

테이블 생성하기

sql은 스프레드시트와 달리, 데이터 타입을 정할 수 있다.

CREATE TABLE topic(
    id INT(11) NOT NULL AUTO_INCREMENT,
    title VARCHAR(100) NOT NULL,
    description TEXT NULL,
    created DATETIME NOT NULL,
    author VARCHAR(30) NULL,
    profile VARCHAR(100) NULL,
    PRIMARY KEY(id));
CREATE TABLE 테이블이름(
    속성이름 데이터타입(길이) NOT NULL AUTO_INCREMENT,
    속성이름 데이터타입(길이) NULL,
    .
    .
    .
    PRIMARY KEY(속성이름));
    
    # NULL: NULL 값을 허용한다
    # NOT NULL: NULL값을 허용하지 않는다
    # AUTO_INCREMENT: 자동으로 1씩 증가하도록.
    # PRIMARY KEY: 가장 중요한 column이자, 각각의 값들을 고유하도록(중복되지 않도록) 하는 속성

테이블 채우기 (INSERT SELECT DELETE UPDATE)

# 테이블 구조 보여줌
DESC topic;

# 데이터 삽입 (row)
INSERT INTO topic (title, description, created, author, profile) 
    VALUES('MySQL', 'MySQL is ...', NOW(), 'egoing', 'developer');
    # NOW() 현재시간

# 데이터 읽기
SELECT * FROM topic;

# 원하는 데이터 골라 읽기
SELECT id, title, created FROM topic;

# 조건에 맞는 데이터만 읽기 (author가 'egoing'인 행만 읽기)
SELECT id, title, created, author FROM topic 
    WHERE author='egoing';

# 정렬하기 ORDER BY (ASC 오름차순, DESC 내림차순)
SELECT id, title, created, author FROM topic 
    WHERE author='egoing' ORDER BY id DESC;

# 개수 제한하기 LIMIT (위에서 행 두개만 보여줌) > 나중에 페이징기능에 사용 가능
SELECT id, title, created, author FROM topic 
    WHERE author='egoing' ORDER BY id DESC LIMIT 2;

# 데이터 update
UPDATE topic SET description='Oracle is ...', title='Oracle' WHERE id=2;

#데이터 삭제 (*delete 잘못하면 인생이 바뀔 수 있다,, 항상 조심!)
DELETE FROM topic WHERE id = 5;

관계형 데이터베이스의 필요성

중요한 것은 중복제거
테이블을 분리함으로서, JOIN을 통해 다른 테이블과 얼마든지 관계맺기가 가능하다.
하나만 바꾸면, 관계를 맺고있는 모든 테이블의 내용까지 적용이 가능하다.


author 테이블과 topic 테이블을 JOIN하는 과정은 아래와 같다.

# author 테이블 가져오기
SELECT * FROM author; 

# topic 테이블 가져오기
SELECT * FROM topic; 

# author 테이블과 topic 테이블 JOIN (두개의 테이블을 하나로 합성)
SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.id;

# 테이블 이름 바꾸기 (topic -> topic_backup)
RENAME TABLE topic TO topic_backup;

SELECT topic.id AS topic_id, title, description, created, name, profile 
	FROM topic LEFT JOIN author
	ON topic.author_id = author.id;

# topic, author 테이블 모두 id 컬럼이 있으니, topic.id(topic테이블의 id)라고 명시해주기
# JOIN한 테이블에서 id를 다른 이름으로 저장하고 싶다면, 'topic.id AS 새로운이름'



본 포스트는 생활코딩 DATABASE2 - MySQL 강의를 토대로 정리한 내용이다.
https://opentutorials.org/course/3161

좋은 웹페이지 즐겨찾기