MySQL 에서의 CRUD

관계형 데이터베이스로 대표적인 MySQL에 대해 알아보겠습니다.

김승엽
Berkbach
Published in
7 min readSep 25, 2018

--

https://www.slon.pics/shop/data-protection-squad/

DATABASE

먼저 데이터베이스를 생성해보겠습니다.

  1. 생성: CREATE DATABASE <생성할 DB명>;
  2. 조회: SHOW DATABASES;
  3. 사용: USE <사용할 DB명>;
  4. 삭제: DROP DATABASE <삭제할 DB명>;

Query OK라는 문구가 나오면 성공한겁니다. 다시 example 데이터베이스를 만들어서 데이터베이스 안에 table을 만들어 보겠습니다.

TABLE

테이블이란 실제 데이터를 모아둔 곳이라 할 수 있습니다.

위 사진은 스프레드시트에서 표를 만든것입니다. MySQL의 table과 매우 유사해서 사람들이 table을 설명할 때 많이 사용합니다. 보시면 id, name, age라는 필드에서 “1, Tony, 25” 라는 정보를 채웁니다. 이제 MySQL에서 Table을 생성해보겠습니다.

생성

테이블 생성은 CREATE TABLE <생성할 table> (<VALUES>); 입니다.

CREATE TABLE person(…);

VALUES에 이름과 자료형, 옵션들을 넣으면 됩니다. 자료형에 자세한 내용은 여기 에서 확인하세요. VALUES 에는 몇가지 제약 조건이 있습니다.

  • NOT NULL : 데이터를 넣을 때 무조건 내용이 있어야 합니다.
  • AUTO_INCREMENT : 자동으로 1씩 증가 시켜 줍니다.
  • PRIMARY KEY : 예시에서는 id를 넣었습니다. 그게 무슨 뜻이냐면
    “이 table에서 id는 고유 값이다.” 입니다.
  • UNIQUE : PRIMARY KEY와 비슷하지만 NULL을 허용합니다.
  • FOREIGN KEY : 하나의 테이블을 다른 테이블과 연결할 때 사용합니다. 이 부분은 다음에 자세히 알아보겠습니다.
  • DEFAULT : 기본 값을 지정해줍니다.

조회

조회는 table목록 자체를 불러오는 것과 특정 table의 필드의 타입 등 을 불러오는 것으로 방법 두가지가 있습니다. table 목록을 불러오는 방법은 SHOW TABLES; 입니다.

다음은 person table의 필드를 불러오겠습니다.

명령어는 DESC <table명>; 입니다.

수정

ALTER TABLE을 사용하면 테이플에 필드를 추가나 삭제 뿐만 아니라 필드의 타입을 변경할 수 있습니다. 순서대로 추가 → 변경 → 삭제 명령어와 실행 결과입니다.

ALTER TABLE person ADD phone_number INT;
ALTER TABLE person MODIFY COLUMN phone_number VARCHAR(20);
ALTER TABLE person DROP phone_number;

삭제

위에서는 테이블 내의 필드를 삭제를 해봤다면 테이블 자체를 삭제 해보도록 하겠습니다. 테이블을 삭제하면 테이블의 모든 데이터도 삭제 된다는 점을 주의 하세요. 명령어는 DROP TABLE <table명>; 입니다.

person 테이블이 완전히 삭제가 되었습니다. 하지만 예제를 위해서 저는 다시 만들었습니다.

Row

MySQL에 들어갈 실제 데이터를 row, record 또는 행 이라고 부릅니다.

이제 실제 데이터를 넣어봅시다.

생성

행을 추가 할 때는 INSERT INTO <table 명> (field1, field2, …) VALUES (데이터1, 데이터2, …); 입니다. 표 대로 데이터를 추가해보겠습니다.

INSERT INTO person(name, age) VALUES(“Tony”, 25);

field에 id값을 주지 않았지만, 성공적으로 데이터가 들어갔습니다. 왜 그럴까요? 그 이유는 id field의 조건 중에 AUTO_INCREMENT 에 있습니다. AUTO_INCREMENT가 있어서 특정 값을 주지 않아도 알아서 1씩 증가시켜 값을 대입해줍니다. 물론 특정 값을 직접 줘도 상관은 없지만 여기서는 id가 PRIMARY KEY 라서 중복 값은 안됩니다.

조회

개인적으로 조회라기 보다는 선택이 더 맞는 표현 같습니다. table의 모든 데이터를 화면에 출력하고 싶다면SELECT * FROM <table명>; 을 쓰시면 됩니다.

SELECT * FROM person;

저는 편의상 데이터를 미리 넣었습니다. 명령어에서 *은 “전체”를 의미하는데요, 특정 필드만 출력하고 싶다면 *을 필드명으로 바꿔주면 됩니다. 예를 들어서 id와 name만 출력해보겠습니다.

그럼 만약 name이 “Peter”인 행만 선택하려면 어떻게 해야 할까요? 바로 WHERE이라는 키워드를 사용하면 됩니다. WHERE은 C언어에서 if문과 비슷한 역할을 합니다. WHERESELECT문에서 <table명> 뒤에 써주면 됩니다.

SELECT * FROM person WHERE name = “Peter”;

이번엔 정렬을 하는 ORDER BY 키워드 입니다. ORDER BY는 기본 오름차순 이며, ASC 키워드를 사용하면 오름차순, DESC 키워드는 내림차순 입니다. 문법은 <table 명> ORDER BY <기준>; 입니다. id를 기준으로 내림차순 정렬을 해보겠습니다.

SELECT * FROM person ORDER BY id DESC;

수정 & 삭제

수정과 삭제는 간단해서 하나로 묶었습니다. 일단 수정은

UPDATE <table 명> SET field1=데이터1, … WHERE <조건>; 

입니다. 예제에서는 “Peter”를 “Logan”으로 바꿔보겠습니다.

UPDATE person SET name=“Logan” WHERE id=3;

삭제는 수정보다 훨씬 쉽지만 조심해야 합니다. 실수로 데이터를 다 없앨 수 있어요. DELETE FROM <table 명> WHERE <조건>; 입니다. 여기서 WHERE 을 안쓴다면 해당 table의 데이터가 다 날라가겠죠? Parker를 삭제해보겠습니다.

DELETE FROM person WHERE id=4;

삭제수정 둘 다 WHERE문을 주의 해서 작성 해야 합니다! WHERE문을 사용할때 중복값이 있을 경우가 생기기 때문에 고유값으로 지정된 field를 사용하는게 안전할 것 같습니다. 감사합니다.

--

--