본문 바로가기
경일/DATABASE

[mySQL] mySQL 기본 사용법, CRUD(Create, Read, Update, Delete)

by dev_kong 2022. 2. 3.
728x90
728x90

0.목차

1. 개요

2. CREATE DATABASE

3. CREATE TABLE

4. CRUD

1. 개요

https://kong-dev.tistory.com/122?category=998366 

 

[nodejs]todoApp 만들기(express, nunjucks, mongodb,body-parser)

0. 목차 1. 개요 2. 기본세팅 3. HTML & CSS 4. CRUD 5. 정리 1. 개요 가장 기본이 되는 CRUD 만들어볼거다. 사용할 라이브러리는, express, nunjucks, body-parser(exprss 내장 객체 대체가능)이며, 데이터 베이..

kong-dev.tistory.com

이거  mongoDB Atlas로 만들었던거 mySQL로 만들려고

mySQL 공부함.

어려울줄 알았는데 생각보다 어렵지 않게 할 수 있었음

2. CREATE DATABASE

일단 iTerm(terminal) 키고, mySQL에 접속.

 

 

여기서 DATABASE를 만들어야 된다.

$ CREATE DATABASE 데이터베이스이름;

 

 

semi-colon 꼭 찍어야함.

 

Query OK 라는 문구가 뜨면 ㅇㅋ 잘 됐구나 하면 된다.

근데  저 문구로는 신뢰가 안간다

나는 내 눈으로 꼭 봐야겠다 싶으면,

 

$ SHOW DATABASES;

입력하면

이렇게 나옴!

맨 밑에 방금 만든 todotodo를 확인 할 수 있음.

 

혹시 오타가 났거다 더이상 사용하지 않을 데이터 베이스라면....

사실 지울 수도 있는데 사실 그럴일은 거의 없을듯 싶다..

뭐 무튼..

지울때는 

$ DROP DATABASE 지우고싶은데이터베이스이름;

방금 만든 todotodo를 지운다면

 

이렇게 하면 된다.

 

이제 데이터베이스 내에서 작업을 할건지 정해줘야한다.

나는 todo_db내에서 작업을 해보려함.

특정 데이터베이스 내에서 작업을 하려면은

$ USE 작업할데이터베이스명;


해주면됨

이렇게 뜨면 된다.

3. CREATE TABLE

이제 저 데이터베이스(todo_db) 안에서 table을 만들어줘야 된다.

table을 표를 의미하는데,

mySQL 을 포함한 모든 관계형 데이터베이스는 이러한 표의 형태를 취하고 있다.

음.. 엑셀의 스프레드시트와 비슷하다고 생각하면 된다.

 

그런데 스프레드 시트와 큰 차이점이 한가지 있는데,

데이터베이스의 테이블은

어떤 데이터 타입이 입력될지를 미리 정해줘야 한다는 점이다.

 

무슨 말인지 모를때는 코드를 보자..

$  CREATE TABLE test (
    _id INT(11) PRIMARY KEY AUTO_INCREMENT,
    title VARCHAR(32) NOT NULL,
    dueDate VARCHAR(32) NOT NULL
    );

뭐 이런식인데, 일단 CREATE TABLE 이란 명령어로 test라는 테이블을 만들었다.

그리고 저 () 안의 내용이 중요한데,

 

가장 중요한 부분은  () 안 세 줄의 첫 단어들인 _id, title, dueDate

이 세 단어의 의미는

총 이렇게 세가지의 항목을 만들겠다라는 뜻이다.

 

그리고 그 다음 INT, VARCHAR 의 뜻은 데이터 타입을 지정해 주는 것이다.

_Id sms INTEGER 즉 정수를 의미하고,

VARCHAR 는 VARIABLE CHARACTER, 대충 그냥 스트링이라고 보면된다.

 

그리고 id INT 옆의 PRIMARY KEY 는 _id 의 값을 PRIMARY KEY 로 정하겠다는 의미이고

그옆의 AUTO_INCREMENT 는 값을 입력하지 않아도 자동으로 숫자를 1씩 증가시켜서 입력하겠다는 의미이다.

 

title과 dueDate 옆의 NOT NULL 은 값이 NULL 즉 입력되지않는 것을 허용하지 않겠다는 의미이다.

 

이렇게 만들어진 table의 틀은 

$ DESC 테이블이름;

으로 확인할 수 있다.

 

4. CRUD

이제 쿼리문이 나온다.

처음엔 뭔가 또 새로운 문법을 배워야 되는건가 싶어서 좀 그랬는데,

이건 그냥 영어다 영어.

쫄지말고 하나씩 해보자.

 

4-1. CREATE

말그대로 데이터를 만드는 거다.

데이터를 만들때 사용되는 명령어는

 

$ INSERT INTO 데이터베이스명 (카테고리) VALUES('값');

해주면 된다.

그러니까.. 위에서 만든 test 테이블에 데이터를 삽입하고 싶다면,

 

$ INSERT INTO test (title, dueDate)
   VALUES ('blog posting about mySQL','2022-02-03');

요렇게 입력해주면 된다.

주의 할점은 values 안에는 전부 quote 로 감싸 줘야한다는것.

4-2. READ

그럼 이제 삽입한 데이터를 확인해보자.

$ SELECT * FROM test

이렇게 이쁜 표로 나온걸 확인 할 수 있다.

_id 값이 2인이유는 테스트해본다고 데이터 입력했다 삭제 했기 때문임. .ㅎ

 

그리고 _id 는 값을 따로 입력해주지 않아도 auto_increment 의 영향을 받아

자동으로 값이 입력된다.

 

특정 조건을 만족하는 값만 골라서 보는 것도 가능한데,

그걸 위해 데이터를 몇개 더 삽입해보겠다.

대충 몇개 집어넣었음..

 

여기서 만약 dueDate 가 2022-02-03 인 것만 확인하고 싶다면,

WHERE 을 쓰면된다.

 

$ SELECT * FROM test WHERE dueDate = '2022-02-03';

요렇게.

그러면 dueDate 가 2022-02-03 인것만 확인할 수가 있다.

 

그리고 select 옆에 * 은 모든 항목을 다 보겠다는 뜻인데 저기서 보고싶은 것만 지정하는 것도 가능하다.

$ SELECT _id, title FROM test;

이런 식으로,

그리고 이걸 보고 어 5번 책반납하는거 며칠 까지더라?

$ SELECT dueDate FROM test WHERE _id = '5';

오 기가 맥힘..

근데 저 title 이 뭔가 잘 와닿질 않는데..

난 저거 이름 todo 로 보면 더 와닿을거 같은데..

 

$ SELECT _id, title AS todo, dueDate FROM test;

 

라고 하면 이렇게 입력해주면 된다.

title AS todo 로 해주니까 title 이 todo 로 바뀌어서 출력되었다.

근데 이건 임시로 딱 한번 이렇게 바뀐거지

아예 바뀐건 아니다.

 

다시 조건 없이 출력해보면

title 로 나온다.

 

WHERE 에는 연산자도 사용가능하다.

이런식으로 _id 가 3보다 큰 것만 출력 해봤다.

 

진짜 더 많은 기능들이 있는데 당장 필요한건 이정도 인듯?

4-3. UPDATE

이번엔 내용을 수정 즉, 업데이트를 해보자,

 

$ UPDATE 테이블명 SET 카테고리명 = '변경할내용' (WHERE 카테고리명 = '검색할 값')

이런 형식으로 하면 되는데,

 

예를 들어 _id 6 의 clean up home 부분을

clean up only my room 으로 수정하고 

dueDate an hour later 로 수정하고 싶다면,

$ UPDATE 
	test 
SET 
	title = 'clean up only my room', 
	dueDate = 'an hour later' 
WHERE
	_id = '6';

요렇게 입력하면 된다.

그러고 나서 결과를 보면

 

요렇게 바뀐걸 확인할 수 있다.

4-4. DELETE

삭제다.

삭제는 매우 간단하다.

 

$ DELETE FROM 테이블명
	WHERE 카테고리명 = '검색할값';

 

예를들어 6번 방청소를 끝내서 todo 목록에서 지우고 싶다면,

 

$ DELETE FROM test WHERE _id = '6';

이렇게 입력해주면 된다.

입력후 결과를 출력해보면

6번이 지워진 것을 확인할 수 있다.

 

728x90
728x90

댓글