🍔 항상 root로 작업을 하면 위험할 수 있기 때문에,
평소엔 일반 사용자를 등록해 그 사용자로 작업을 하다가 중요한 일이 있을때만 root로 작업하는 걸 권장.
특징1. 쉽다!
특징2. 중요하다!
*관계형 데이터베이스들이 공통적으로 데이터베이스 서버를 제어할때 사용하는, 표준화된 언어이다.
CRUD는 DATABASE의 본질이다.
CREATE DATABASE 데이터베이스이름;
SHOW DATABASES;
지금부터 실행하는 모든 명령들을 이 데이터베이스에 적용하겠다.
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이자, 각각의 값들을 고유하도록(중복되지 않도록) 하는 속성
# 테이블 구조 보여줌
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