해당 포스트는 윈도우 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 필드 자료형 정리
참고한 링크 : 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 |