본문 바로가기
공부_정리☆★

정리_MySQL/생활코딩

by SKim입니다 2020. 6. 9.

설치:

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

 

댓글