본문 바로가기
IT Study/SQL

[생활코딩 SQL][10~13] MYSQL의 CRUD

by 하람 Haram 2022. 11. 14.
728x90

CRUD (데이터베이스가 무엇이든 반드시 가지고 있는 작업)

Create : 생성(필수)

Read : 읽기(필수)

Update : 수정

Delete : 삭제

 

=> ex) 어떤 정보는 Update , Delete를 막음 (회계나 역사 같은거)

 

 

확인 하고 싶을 떄

SHOW DATABASES;
SHOW TABLES;

 

1. [Create Part] Insert

INSERT INTO table_name (columns1, columns2, columns3, ...)
VALUES (value1, value2, value3, ...)

나 근데 내 Table의 columns가 뭐였는지 헷갈려...

이때 사용하는 코드 : DESC (describe)

DESC Table명;

다음과 같이 구조를 파악할 수 있다

id -> 입력 안하면 auto_increment 된다. (그래서 안써도 됨)

 

* Columns 과 Value의 순서가 같아야 한다. *

INSERT INTO topic(title,description) VALUES('MySQL','MySQL..')

이렇기에 Columns의 이름을 Values가 무엇인지를 나타나게 설정하는 것이 좋다.

 

현재 시간을 가져오고 싶으면 NOW( )사용

INSERT INTO topic(title,description,created,author,profile) VALUES('MySQL','MySQL..',NOW(),'egoing','developer');

1개의 행이 영향을 받았다

 

2. [Read Part] SELECT

SELECT * FROM table명;

table에 있는 모든 데이터(*)를 가져와라

SELECT * FROM topic;

데이터가 추가된 것을 확인할 수 있다.

 

다음에 또 다 적어야 할까??? -> 노노 윗방향 방향키를 이용하자

이런식으로 진행


자 실습을 이어 나가 보자

 

저번까지 하다가 다른날에 실행하므로 내 스키마부터 가져와 주자 

USE tutorial;

Table 명을 확인해주고

SHOW TABLES;

 

 

topic table의 모든 정보를 가져오고 싶을 때

SHOW * FROM topic;

table의 일부 정보를 가져오고 싶을 때

SELECT id,title,author FROM topic;

즉, 공식 Document를 확인 해보면

https://dev.mysql.com/doc/refman/8.0/en/select.html

1. 대괄호로 묶여있는 건 생략이 가능하다는 것이다

2. select_expr => 표현되어야할 column들

 

위에를 참고해보면 추가적인 옵션들을 확인할 수 있다.

 

조건에 해당되는 행만 보고 싶을 때 (where)

SELECT id,title,author 
    FROM topic 
    WHERE author='egoing';

순서도 지켜 줘야한다 (FROM -> WHERE)

정렬을 하고 싶을 때 싶을 때 (order by)

SELECT id,title,author 
    FROM topic 
    WHERE author='egoing'
    ORDER BY id;

FROM -> WHERE -> ORDER BY

나 id 큰거 부터 볼래 -> (DESC)

SELECT id,title,author 
    FROM topic 
    WHERE author='egoing'
    ORDER BY id DESC;

DB는 무지성으로 넣을 수 있어서 출력을 제한하는 경우가 많음 (limit)

SELECT id,title,author 
    FROM topic 
    WHERE author='egoing'
    ORDER BY id DESC LIMIT 2;

Limit -> 2개만 출력해줘

 

"데이터 베이스를 잘한다 = SELECT 문을 잘쓴다"

 

3. [Update Part] UPDATE

궁금한 거 이쓰으면 이런 식으로 검색해 보기

MySQL 공식 문서를 확인해 보면

이란다

설명을 보면 

assignment 는 col_name = value 으로 적어 주면 된다고 한다

 

당황하지 말고 selete가 아니라 select입니다
Oracle is .. -> ORACLE is ... ,  Oracle -> ORACLE로 바꿔보자

UPDATE table이름
    SET column이름 = 넣을 값;
UPDATE topic
    SET description = "ORACLE is... ", title = "ORACLE";

이거 이대로 실행하면 큰일납니다~~!!

이러면 모든 description하고 title이 이걸로 바껴버림

"누구에게(WHERE) 를 지정해 줘야한다" (이거 빼면 재앙임 ㅋㅋㅋ)

 

UPDATE topic
    SET description = "ORACLE is... ", title = "ORACLE"
    WHERE id = 2;

짠! 정상적으로 바뀐 걸 확인할 수 있다

 

4. [Delete Part] DELETE

 

모르면 구글링 ㄱㄱ

FROM table 이름이 필수인 것을 확인할 수 있고

옵션이지만 WHERE 문도 필수임 ㅇㅇ(혼나기 싫으면 뭐라도 적어)

아니면 다 삭제됨 ㅇㅇㅇ

 

MongoDB를 없애 보자

DELETE FROM topic;

** 이러면 인생 나락가는 거임 ** (where 꼭 붙이기)

DELETE FROM topic
    id = 5;

잘 삭제된 거 확인 가능

 

728x90