설치:
Binami XAMP
실행:
cmd에서 cd C:\Bitnami\wamp\mysql\bin
※ Bit + Tab -> 자동완성
mysql -uroot -p
구조:
표 ⊂ 스키마=DB ⊂ DB서버=MySQL
효용:
보안 & 사람별로 CRUD 권한 지정 가능
SQL:
Structured - 관계형 DB는 표의 형식으로 정보를 정리정돈 = 구조화
Query - DB에게 요청/질의한다. (데이터를 넣어줘, 읽어줘, 수정해줘, 삭제해줘, 스키마를 만들어줘 등)
Language - 공통의 약속인 언어
스키마=DB:
생성 - CREATE DATABASE [스키마 이름];
삭제 - DROP DATABASE [스키마 이름];
확인 - SHOW DATABASES; = SHOW SCHEMAS;
선택 - USE [스키마 이름]; = 지금부터 내가 내리는 명령은 [스키마 이름]에 있는 표를 대상으로 한다.
테이블의 구조:
행 = row = record - 데이터 하나하나. 데이터 자체.
열 = column - 데이터의 타입/구조
테이블 만들기 (행 만들기):
USE [스키마 이름]; - 스키마 선택
CREATE TABLE [테이블 이름]( - 테이블 생성 (;를 붙이지 않고 엔터쳐서 이어서 쓴다.)
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));
숫자 | INT(m) | 2147483648 ~ 2147483647 의 정수 |
BIGINT(m) | -9223372036854775808 ~ 9223372036854775807 의 정수 | |
String | VARCHAR(size) | Variable Character(문자). ~255 characters |
TEXT(size) | ~65,535 characters | |
LONGTEXT(size) | ~4,294,967,295 characters | |
날짜/시간 | DATETIME | YYYY-MM-DD HH:MM:SS |
※ MySQL 데이터타입 www.techonthenet.com/mysql/datatypes.php
MySQL: Data Types
MySQL: Data Types The following is a list of datatypes available in MySQL, which includes string, numeric, date/time, and large object datatypes. String Datatypes The following are the String Datatypes in MySQL: Data Type Syntax Maximum Size Explanation CH
www.techonthenet.com
※ SQL 컨닝페이퍼 https://www.sqltutorial.org/sql-cheat-sheet/
SQL Cheat Sheet Download PDF it in PDF or PNG Format
This 3-page SQL Cheat Sheet provides you with the most commonly used SQL statements. Download the SQL cheat sheet, print it out, and stick to your desk.
www.sqltutorial.org
CRUD:
Create - INSERT
https://dev.mysql.com/doc/refman/8.0/en/insert.html
MySQL :: MySQL 8.0 Reference Manual :: 13.2.6 INSERT Statement
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [PARTITION (partition_name [, partition_name] ...)] [(col_name [, col_name] ...)] { {VALUES | VALUE} (value_list) [, (value_list)] ... | VALUES row_constructor_list } [AS row_alias[(c
dev.mysql.com
Read - SELECT
https://dev.mysql.com/doc/refman/8.0/en/select.html
MySQL :: MySQL 8.0 Reference Manual :: 13.2.10 SELECT Statement
13.2.10 SELECT Statement SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr] ... [into_option] [FROM table_referenc
dev.mysql.com
Update - UPDATE
https://dev.mysql.com/doc/refman/8.0/en/update.html
MySQL :: MySQL 8.0 Reference Manual :: 13.2.13 UPDATE Statement
MySQL 8.0 Reference Manual / ... / SQL Statements / Data Manipulation Statements / UPDATE Statement 13.2.13 UPDATE Statement UPDATE is a DML statement that modifies rows in a table. An UPDATE statement can start with a WITH clause to defin
dev.mysql.com
Delete - DELETE
https://dev.mysql.com/doc/refman/8.0/en/delete.html
MySQL :: MySQL 8.0 Reference Manual :: 13.2.2 DELETE Statement
MySQL 8.0 Reference Manual / ... / SQL Statements / Data Manipulation Statements / DELETE Statement DELETE is a DML statement that removes rows from a table. A DELETE statement can start with a WITH clause to define common table expressions
dev.mysql.com
※ SHOW TABLES;
※ DESC [테이블 이름];
CRUD - Create - INSERT ★★ (열 만들기 = 각 항목 채워넣기):
USE [스키마 이름];
INSERT INTO [테이블 이름] (title, description, created, author, profile) VALUES('MySQL', 'MySQL is ...', NOW(), 'egoing', 'developer');
※ id는 auto-increment되므로 쓰지 않았다.
이런 식으로 2~5행도 만든다.
CRUD - Read - SELECT ★★★ :
SELECT * FROM [테이블 이름];
특정 열들만 보고싶다면 - * 자리에 열 이름들을 쓴다.
ex) SELECT id, title, created, author FROM topic;
특정 값을 가진 행들만 보고싶다면 - WHERE [열이름]='값'
ex) SELECT id, title, created, author FROM topic WHERE author='egoing';
id가 큰 순서대로 보고싶다면 - 뒤에 ORDER BY id DESC;를 붙여준다.
ex) SELECT id, title, created, author FROM topic WHERE author='egoing' ORDER BY id DESC;
특정 갯수만 보고싶다면 - 뒤에 LIMIT [원하는 갯수];를 붗여준다.
ex) SELECT id, title, created, author FROM topic WHERE author='egoing' ORDER BY id DESC LIMIT 2;
CRUD - Update - UPDATE:
UPDATE [테이블 이름] SET [열 이름]='[무엇으로 바꿀지]', [열 이름2]='[무엇으로 바꿀지2]' WHERE id=[id 값];
※ WHERE문을 빼먹으면 전체가 바뀌어버리는 대재앙이 온다.
ex) UPDATE topic SET description='MongoDB is ...', title='MongoDB' WHERE id=2;
CRUD - Delete - DELETE:
DELETE FROM [테이블 이름] WHERE id=[id 값];
※ WHERE문을 빼먹으면 모든 행이 삭제되는 대재앙이 온다.
ex) DELETE FROM topic WHERE id = 2;
관계형 DB:
1번(topic_backup)을 2번(author)과 3번(topic)으로 나누어 저장한다.
→ 중복 제거 / 유지보수 용이 / 동명이인 구별 가능
※ 자동으로 테이블을 나눠주지는 않고, 일일이 만들어야 한다.
JOIN으로 두 테이블을 합쳐서 보기 쉽게 만들기
SELECT * FROM topic LEFT JOIN author ON topic.author_id = author_id;
= topic 테이블과 author 테이블을 결합하는데,
topic 테이블의 author_id 값과
author 테이블의 id 값이 같다는 것을 참조해줘.
author_id와 id는 안 나오게 해보자.
SELECT topic.id, title, description, created, name, profile FROM topic LEFT JOIN author ON topic.author_id = author_id;
※ 이 때 id가 두 개이므로 SELECT 바로 뒤의 id에 topic.을 붙여줘야 구별된다.
테이블에 id 대신 topic_id로 나오게 하고 싶다면 AS topic_id를 붙인다.
SELECT topic.id AS topic_id, title, description, created, name, profile FROM topic LEFT JOIN author ON topic.author_id = author_id;
MySQL 클라이언트:
지금까지 우리는 DB 서버를 직접 다룬 것이 아니라,
MySQL 모니터라는 DB(MySQL) 클라이언트를 사용한 것이다.
= 명령어를 통해서 DB를 제어하는 프로그램
MySQL 클라이언트의 종류:
MySQL Workbench - 맥, 윈도우, 리눅스
Sequel Pro - 맥
HeidiSQL - 윈도우(+맥, 리눅스_
phpMyAdmin - 웹 앱
MySQL Workbench 사용법 act-think.tistory.com/152
생활코딩 - MySQL - 20. MySQL Workbench
MySQL Workbench - MySQL에서 공식적으로 제공하는 GUI 기반의 MySQL 클라이언트 https://www.mysql.com/products/workbench/ MySQL :: MySQL Workbench MySQL Workbench is a unified visual tool for database a..
act-think.tistory.com
인덱스(색인), 모델링, 백업, api에 대하여 act-think.tistory.com/156
생활코딩 - MySQL - 21. 수업을 마치며
앞으로 공부할 것이 여러가지 있다. - SQL문 관계형 DB를 잘 다루는 사람은 SQL을 잘 이해하고 잘 쓸 줄 아는 사람이라고 할 수 있다. 특히 CRUD에서 R에 해당되는 SELECT 구문은 상당히 복잡하다. 그래�
act-think.tistory.com
'공부_정리☆★' 카테고리의 다른 글
정리_JavaScript/유튜브 fcc - 2. ES6_1차 정리 (0) | 2020.06.22 |
---|---|
정리_JavaScript/유튜브 fcc - 1. JavaScript_2차 정리 (0) | 2020.06.17 |
정리_JavaScript/유튜브 fcc - 1. JavaScript_1차 정리 (0) | 2020.06.17 |
정리_JavaScript/생활코딩 (0) | 2020.06.11 |
정리_CSS/생활코딩 (0) | 2020.06.11 |
댓글