Web

[ MySQL ] mysql 사용법 총정리 기본 명령어 ( cheat sheet )

핏짜보이 2022. 4. 25. 01:21
반응형

<목차>

1. MySQL 설치 및 사용 예제

2. MySQL 기본 명령어 정리

3. MySQL 데이터 타입 정리


MySQL 사용법

여기서는 터미널(CLI)환경에서 MySQL을 사용하는 방법에 대해 알아볼 것이다. 

 

MySQL(관계형 데이터베이스)과 MongoDB(비관계형 데이터베이스)의 차이점이 궁금한 분들은 

아래의 포스팅을 참고바란다.

https://dev-coderkim.tistory.com/62

 

SQL vs NoSQL (MySQL vs MongoDB)

**해당 포스팅은 academind의 포스팅을 번역한 포스팅입니다.** https://academind.com/tutorials/sql-vs-nosql [ 개요 ] 웹 어플리케이션 개발을 위한 첫 걸음을 내딛은 이후 한 가지 선택사항을 마주하게 됩니다

dev-coderkim.tistory.com

 


1. MySQL 설치 및 사용 예제

먼저 MySQL을 아래 링크에서 각자의 컴퓨터 환경에 맞게 설치한다.

(구글에 'mysql community edition download' 라는 키워드로 검색하면 나온다.)

https://dev.mysql.com/downloads/mysql/ 

 

MySQL :: Download MySQL Community Server

Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Debian Linux SUSE Linux Enterprise Server Red Hat Enterprise Linux / Oracle Linux Fedora Linux - Generic Oracle Solaris macOS Source Code Select OS Version: All Windows (x86

dev.mysql.com

*주의할 점*

MySQL을 다운받을 때 비밀번호를 설정하는데, 이 비밀번호는 이후에 MySQL에 접속할때 필요하기 때문에 기억해두어야한다.


터미널 / git bash/ iterms를 열고 아래와 같이 경로를 이동한다.

*주의할 점*

여기서 경로를 입력할때는 /user 가 아니라 /usr 로 입력해야 한다! (습관성으로 user로 입력했다가 삽질을 했다..)


해당 경로에서 아래와 같이 mysql을 관리자 계정으로 실행한다.

*주의할 점*

하지만 실제로 root의 권한으로 DB를 직접 다루는 것은 부담이 따른다.

따라서 중요한 시스템이라면 별도의 사용자를 만들어서 평소에는 해당 계정으로 작업을 하다가

중요한 작업을 할때만 root로 접근하는 것이 권장된다.

 

비밀번호를 입력하고 나면 아래 그림과 같이 MySQL로 접속된다.


 

이제 데이터 구조를 설계할 차례이다.

먼저 DB와 테이블을 만들어야 한다.

아래의 그림이 오늘 만들어볼 데이터 구조이다.


먼저 users 라는 DB(Schema)를 만들어야 한다.

아래와 같이 명령어를 입력해서 users DB를 생성하고 확인한다.

DB(스키마) 생성 명령어 : create database 000(DB이름);
DB(스키마) 삭제 명령어 : drop database 000(DB이름);

 

*주의할 점*

MySQL에서는 반드시 명령어를 입력한 후에 마지막에  ; (세미콜론)을 붙여야 명령어가 인식된다.

 


 

위의 명령어로 DB가 생성이 되었으면, 해당 DB로 이동을 해야 데이터를 넣고 뺄수 있다.

DB 이동 명령어 : use 000(DB이름)

DB를 이동했다면 이제 실제로 데이터를 담을 테이블을 만들어줄 차례이다.

위의 예제를 다시 한번 보면, 우리가 만들어야할 테이블의 이름은 'userData'이다.

위의 같이 각각의 칼럼 이름과 데이터 형태(보여줄 데이터 갯수) 공백 유무(null : 공백 가능/ not null : 공백 불가능)등을 입력한다.

 칼럼 이름과 데이터 형태(보여줄 데이터 갯수) 공백 유무(null : 공백 가능/ not null : 공백 불가능)
 auto_increment : 자동 증가 적용
 primary key-중복 방지 측면(유일한 값을 지정해줄 필요가 있는 경우)

지금까지 DB와 table을 만들었다. 

아래의 명령어로 내가 만든 DB와 table을 확인할 수 있다.

DB 확인 명령어 : show databases;
table 확인 명령어 : show tables;

*주의할 점*

'복수형(-s/-es)'으로 명령어를 작성해야 한다.


그리고 내가 만든 테이블의 데이터 구조를 확인하려면 아래의 명령어로 가능하다.

테이블 데이터 구조 확인 명령어 : desc 000(테이블 이름)

그럼 이제 테이블에 데이터 값을 집어넣을 차례이다.

아래의 명령어로 데이터를 추가(Create)할 수 있다.

클릭하여 확대 가능합니다.

*주의할 점*

여기서 중요한 점은 각각의 컬럼과 데이터순서가 맞아야 한다는 점이다.


우리가 하나의 데이터를 userData 테이블에 추가(Create)했다.

그럼 우리가 추가한 데이터를 읽어(Read)오려면 어떻게 해야할까?

아래 명령어로 가능하다.

특정 테이블의 데이터 읽어오는 명령어 : select * from 000(테이블 이름)

(여기서는 기본적인 형태만 사용핬지만, 데이터 CRUD 중에서

Read에 해당하는 부분은 문법이 다양하게 존재하고 사용방법도 다양해서 구글링을 추천한다.)

 

그럼 우리가 처음에 만들고자 했던대로 데이터가 잘 들어간 것을 확인할 수 있다!!!


그럼 위의 형태처럼 데이터를 입력해주고 테이블의 테이터를 확인해보면 아래와 같다.

 

이렇게 우리가 처음에 만들고자 했던 테이블의 모습을 간단하게 만들어 보았다.

 

간단한 예제와 함께 MySQL의 명령어를 살펴보았는데 실제로는 더 다양한 명령어가 존재하고, 데이터 타입도 다양하게 존재한다.


2. MySQL 기본 명령어 정리

 

DB 생성
CREATE DATABASE `데이터베이스명`;

DB 삭제
DROP DATABASE `데이터베이스명`;

DB 열람
SHOW DATABASES; 

DB 선택
USE `데이터베이스명`

명령어는 대문자든 소문자든 상관없음(데이터베이스와 테이블 이름은 대소문자를 구별함)

테이블 생성
mysql> create table userData(
    ->   userId int(11) not null auto_increment,
    ->   userPw varchar(20) not null,
    ->   userNick varchar(20) not null,
    ->   userAge int(5) not null,
    ->   userAddress varchar(100) null,
    ->   primary key(userId)
    -> );


테이블 스키마 열람
DESC `테이블명`

테이블 제거
DROP TABLE `테이블명`

데이터 삽입
insert into userData (userPw,userNick,userAge,userAddress) values('abcd1234','pizzaboy','30','서울시 마포구 연희로123');

데이터 변경
UPDATE `userData` SET userNick='pizzalover' WHERE id=1;

데이터 삭제
DELETE FROM student WHERE id = 2;
TRUNCATE student; (테이블의 전체 데이터 삭제)

데이터 조회
SELECT 칼럼명1, 칼럼명2 
    [FROM 테이블명 ] 
    [GROUP BY 칼럼명] 
    [ORDER BY 칼럼명 [ASC | DESC]] 
    [LIMIT offset, 조회 할 행의 수]


primary key
중복 X, 가장 고속, 한 개만 선언 가능
unique key
중복 X, 고속, 여러 개 선언 가능
normal
중복 O, 느림, 여러 개 선언 가능
foreign : 다른 테이블과의 관계성을 부여하는 키

3. MySQL 데이터 타입 정리

 

1. 숫자형 데이터 타입

    타입               정의                                                                         범위                                                                           UNSIGNED

                                                                                                                                                                                           사용가능 여부

 

TINYINT(n) 정수형 데이터 타입 - 1 Byte(2^8)
- 128 ~ + 127 또는 0 ~ 255 수 표현 가능
- 1Byte(2^8)
- 128 ~ + 127 또는 0 ~ 255 수 표현 가능
O
SMALLINT(n) 정수형 데이터 타입 - 2 Byte(2^16)
- 32,768 ~ 32,167 또는 0 ~ 65536수 표현 가능
O
MEDIUMINT(n) 정수형 데이터 타입 - 3 Byte
- 8,388,608 ~ 8,388,607 또는 0 ~ 16,777,215 수 표현 가능
O
INT(n) 정수형 데이터 타입 - 4 Byte
- 2,147,483,648 ~ 2,147,483,647 또는 0 4,294,967,295 수 표현 가능
O
BIGINT(n) 정수형 데이터 타입(LONG) - 8 byte
- 2^64 - 1 표현 가능(무한 수 표현 가능이라고도 함)
O
DECIMAL(m, d) - 고정 소수형 데이터 타입고정(길이+1 byte)
- 화폐 데이터와 같이 데이터의 정확도를 요하는 경우에 주로 사용
- M의 최대값은 65, D는 소수 자릿수이며 0이면 소수점 가지지 않음
- 소수점을 사용한 형태
- Default: m ⇒ 10
X
FLOAT(n) 부동 소수형 데이터 타입 - 4 byte
- 부동 소수점을 사용한 형태
X
DOUBLE(n) 부동 소수형 데이터 타입 - 8 byte
- DOUBLE을 문자열로 저장
X

 

 

2. 문자형 데이터 타입

 타입                 정의                                                                                                                                                     길이

CHAR(n) - 고정 길이 데이터 타입
- 지정된 길이보다 짧은 데이터 입력 시 나머지 길이는 공백으로 채워짐
- 검색시, PAD_CHAR_TO_FULL_LENGTH 모드를 설정하지 않으면 공백은 제거됨
0 ~ 255 (byte)
VACHAR(n) - 가변 길이 데이터 타입
- 지정된 길이보다 짧은 데이터 입력시 공백으로 채우지 않음
-저장시 1-byte 혹은 2-byte 길이 Prefix 데이터를 저장. 이 Prefix 데이터는 값의 바이트 수에 대한 정보를 담는다.(https://dev.mysql.com/doc/refman/8.0/en/char.html)
0 ~ 65,535 (byte)
TINYTEXT(n) - 문자열 데이터 타입(최대 255 byte)
- TINYBLOB와 같은 길이값을 저장 가능(단 차이점은 저장 될때 nonbinary string으로 저장)
https://dev.mysql.com/doc/refman/8.0/en/blob.html
0 ~ 255 (byte)
TEXT(n) - 문자열 데이터 타입(최대 65,535 byte)
- BLOB와 같은 길이값을 저장 가능(단 차이점은 저장 될때 nonbinary string으로 저장)
0 ~ 65,535 (byte)
MEDIUMTEXT(n) - 문자열 데이터 타입(최대 16,777,215 byte)
- MEDIRMBLOB와 같은 길이값을 저장 가능(단 차이점은 저장 될때 nonbinary string으로 저장)
0 ~ 16,777,215 (byte)
LONGTEXT(n) - 문자열 데이터 타입(최대 4,294,967,295 byte)
- LONGBLOB와 같은 길이값을 저장 가능(단 차이점은 저장 될때 nonbinary string으로 저장)
0 ~ 4,294,967,295 (byte)

 

 

 

3. 날짜형 데이터 타입

 타입         정의                                                             길이    형식                                             길이

 

DATE 날짜(년도, 월, 일) 형태의 기간 표현 데이터 3 byte 0000-00-00 (YYYY-MM-DD) 1000-01-01 ~ 9999-12-31
TIME 시간(시, 분, 초) 형태의 기간 표현 데이터 3 byte 00:00:00 .
DATETIME 날짜와 시간 형태의 기간 표현 데이터 8 byte 0000-00-00 00:00:00 (YYYY-MM-DD hh:mm:ss) 1000-01-01 00:00:00.000000 ~ 9999-12-31 23:59:59.999999
TIMESTAMP 날짜와 시간 형태의 기간 표현 데이터 타입 시스템 변경 시 자동으로 그 날짜와 시간이 저장 4 byte Integer .
YEAR 년도 표현 데이터 타입 1 byte 0000 .

 

4. 이진 데이터 타입

 타입                                                      정의                                                                           길이

 

BINARY(n) & BYTE(n) CHAR 형태의 이진 데이터 타입 최대 255 byte
VARBINARY(n) VARCHAR 형태의 이진 데이터 타입 최대 65,535 byte
TINYBLOB(n) 이진 데이터 타입 최대 255 byte
BLOB(n) 이진 데이터 타입 최대 65,535 byte
MEDIUMBLOB(n) 이진 데이터 타입 최대 16,777,215 byte
LONGBLOB(n) 이진 데이터 타입 최대 4,294,967,295 byte

 

 

 

지금까지 제가 공부하면서 이해한 내용을 바탕으로 MySQL에 대한 내용을 정리해 보았습니다.

긴글 읽어주셔서 감사합니다.

질문과 지적은 댓글로 환영합니다!

오늘도 즐코하세요!!! :)

 

 

 

참고자료

https://blog.martinwork.co.kr/mysql/2020/01/17/mysql-data-type.html

https://shipp.tistory.com/34

https://kyoe.tistory.com/47

https://www.youtube.com/watch?v=75LHpeOQiOs&list=PLuHgQVnccGMCgrP_9HL3dAcvdt8qOZxjW&index=16 

https://ko.wikipedia.org/wiki/MySQL

728x90