본문 바로가기

WEB/MySQL

MySQL 사용법 및 관리, 명령어

해당 포스트는 윈도우 OS 기반으로 설치한 MySQL으로 설명하였음. (설치 과정 생략)

그리고 프롬프트에서 MySQL 모듈을 깔아야 한다.

> npm install mysql --save

 

1. MySQL 서비스 시작/종료 방법

일반적인 방법으로 MySQL을 설치하였다면, MySQL 접속 및 탈출 방법은 다음과 같다.

1-1. 서비스 시작

우선 MySQL에 접속하려면 MySQL이라는 이름으로 등록된 서비스를 시작해야한다.

> net start mysql80

설치 시 서비스 기본 이름을 mysql80이 아니라 mysql 등으로 설정해 놓았다면 해당 이름으로 실행하면 된다.

 

헷갈리니까 이후 이름은 그냥 mysql로 지정하여 쓰겠다.

1-2. 서비스 종료

> net stop mysql

 

2. MySQL 접속/나가는 방법 (CMD)

우선 CMD를 관리자 권한으로 실행해야 한다.

 

 또한 MySQL 접속은 서비스 시작 없이는 불가능하다.

2-1. MySQL 접속

> mysql -u root -p
> password : <YOUR_PASSWORD>

2-2. MySQL 나가기

> quit
bye

quit이라고 쳐주면 bye라고 해주며 종료된다.

 

3. MySQL DB 생성/삭제/선택/열람

3-1. DB 생성

mysql> create database <DATABASE_NAME>;

3-2. DB 삭제

mysql> drop database <DATABASE_NAME>;

3-3. DB 선택(사용)

mysql> use <DATABASE_NAME>;

3-4. DB 열람(조회)

mysql> show <DATABASE_NAME>;

 

4. CRUD 명령어

CRUD는 Create, Read, Update, Delete의 약자로 테이블 데이터를 조작하는 명령어들이다.

우선 DB 선택을 해야 해당 DB를 관리할 수 있다.

4-1. 테이블 생성 (Create)

mysql> CREATE TABLE <TABLE_NAME>(<TABLE_FIELD>);

테이블 생성은 위와 같은 명령어를 따르면 되는데, 예시는 다음과 같다.

mysql> CREATE TABLE person(
    -> name VARCHAR(30) NOT NULL,
    -> age INT(5) NOT NULL,
    -> id INT(11) NOT NULL AUTO_INCREMENT,
    -> PRIMARY KEY(id)
    -> );
Query 0K, 0 rows affected, 2 warning (0.11 sec)

위 예시에서 조건들이 몇 개 들어갔는데, 밑에 정리해두었다.

  • NOT NULL : 데이터 삽입 시 무조건 내용이 있어야 함.
  • AUTO_INCREMENT : 자동으로 1씩 증가시킴.
  • PRIMARY KEY : 해당 테이블에서 인자 Value가 고유값임을 선언함.
  • UNIQUE : PRIMARY KEY와 유사하지만 NULL을 허용함.
  • FOREIGN KEY : 하나의 테이블을 다른 테이블과 연결할 때 사용함.
  • DEFAULT : 기본값

4-2. 테이블/테이블 데이터 조회 (Read)

테이블 조회

mysql> show tables;

해당 DB의 모든 테이블 리스트를 보여준다.

 

위에서 추가한 person 테이블이 보인다.

 

테이블 데이터 조회

mysql> desc <TABLE_NAME>;

선택한 테이블의 선언문을 describe하는 명령어이다.

 

나의 경우에는 <TABLE_NAME>에 person이 들어갈 것이다.

 

4-3. 테이블 형식 수정/업데이트 (Update)

간단히 예를 들어 위의 person 테이블에 gender를 10자리 고정 String으로 추가해보겠다.

mysql> ALTER TABLE person ADD gender CHAR(10);

잘 추가된 모습이다.

 

추가(ADD) 말고도 2개의 명령어가 더 있는데, 정리해보았다.

  • ADD : 필드 추가
  • MODIFY : 필드 수정
  • DROP : 필드 삭제

 

4-4. 테이블 삭제 (Delete)

위에서는 테이블 내 필드를 삭제하는 것이고, 이 명령어는 테이블 자체를 삭제하는 것이다.

 

삭제 시 내부의 데이터 및 필드가 모두 삭제되므로 신중하게 사용해야하는 명령어 중 하나라고 볼 수 있겠다.

mysql> DROP TABLE <TABLE_NAME>;

 

 

5. 테이블 내 데이터 관리

5-1. 데이터 삽입

mysql> INSERT INTO person(name, age) VALUES("John", 15);
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO person(name, age, gender) VALUES("Franklin", 9, "MALE");
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO person(name, age, gender) VALUES("Katarina", 37, "FEMALE");
Query OK, 1 row affected (0.01 sec)

해당 명령어는 리터럴로 표현하기 힘들어서 그냥 예시로 들었다.

 

총 3명의 정보를 넣었고, 비교해보기 위해 형식은 일부러 gender를 뺀 것 하나를 넣었다.

 

5-2. 데이터 조회

테이블 내 모든 데이터 출력하려고 할 때 :

SELECT * FROM person;

5-1에서 추가한 데이터가 잘 저장되어 있다.

 

id는 auto_increment로 설정되어 있어 자동으로 1씩 올라가는 것도 보인다.

 

이렇게 SQL 쿼리 문에서  * 전체를 의미한다.

 

쿼리문에 조건을 넣을 수도 있는데, 해당 테이블에서 특정 조건을 만족하는 데이터만 뽑아올 수 있다.

 

예를 들어, person 테이블 내에 성별이 남성("MALE")인 사람 리스트를 뽑고 싶다고 하면,

mysql> SELECT * FROM person WHERE gender = "MALE";

이런 식으로 사용하면 된다.

 

테이블 내에 2명의 데이터를 추가한 후 테스트해 본 모습이다.

 

이렇듯 WHERE 문 뒤는 데이터를 select하는 조건을 뜻한다.

 

추가로 정렬된 데이터를 가져오는 방법도 있다.

mysql> SELECT * FROM person ORDER BY <FIELD_NAME> <FLAG>;

<FIELD_NAME>에는 필드 이름을, <FLAG>에는 옵션을 넣으면 된다.

 

FLAG에 아무것도 쓰지 않으면 오름차순, DESC를 넣으면 내림차순이 된다.

 

아래는 실제 실행 모습. ID 순으로 정렬되어 출력된 것을 확인할 수 있다.

 

 

5-3. 데이터 수정 및 삭제

데이터 수정

UPDATE <TABLE_NAME> SET <FIELD_NAME>=<MODIFIED_DATA>... WHERE <CONDITION>;

역시 리터럴로 보면 무슨 뜻인지 알기 힘들다.

 

예시로 확인해보자.

 

person 데이터 리스트 중 ID가 2인 사람의 이름을 Qiyana로 업데이트하여 성공적으로 변경된 것이 보인다.

 

데이터 삭제

mysql> DELETE FROM <TABLE_NAME> WHERE <CONDITION>;

오리지널 리스트에서 ID가 5인 사람을 삭제한 예시이다.

 

하지만 데이터 삭제를 할 때에는 조심해야 하는데, WHERE를 쓰지 않는다거나 하면 테이블 자체가 날아가거나 하는 대참사가 일어날 수도 있기 때문이다.

 

그러므로 무엇이든 수정이나 삭제를 할 때에는 신중해야 한다.

 

실제 서버 관리에서도 자주 일어나는 것이 데이터를 실수로 삭제하는 문제이므로, 주의하자.

 

 

 

추가로 MySQL에서 사용하는 자료형에 대해서는 아래 포스트를 참고하기 바란다.

 

2019/11/18 - [WEB/MySQL] - MySQL 필드 자료형 정리

 

MySQL 필드 자료형 정리

숫자형 Expression Byte Range (Unsigned/Signed) [Double은 Unsigned 설정 불가] BIT 1 1 ~ 64 TINYINT 1 -128 ~ 127 0 ~ 255 SMALLINT 2 -32768 ~ 32767 0 ~ 65535 MEDIUMINT 3 -8388608 ~ 8388607 0 ~ 16777215..

shyunku.tistory.com

 

 

 

참고한 링크 : https://medium.com/wasd/mysql-%EC%97%90%EC%84%9C%EC%9D%98-crud-6139d435e60a

'WEB > MySQL' 카테고리의 다른 글

MySQL 필드 자료형 정리  (0) 2019.11.18
Error: connect ECONNREFUSED 127.0.0.1:3306 오류  (1) 2019.11.18