데이터베이스 공부/인프런 이고잉 DATABASE 1&2 - MySQL 노트정리

4. DATABASE 2 - MySQL CRUD

모항 2023. 3. 19. 00:48

MySQL CRUD

CRUD란 데이터베이스의 4가지 주기능인 Create(데이터 삽입), Read(데이터 조회), Update(데이터 수정), Delete(데이터 삭제)를 가리킨다.

이번 회차에서는 MySQL에서 직접 데이터 삽입, 조회, 수정, 삭제를 해보는 실습을 진행한다.

 

저번과 동일하게, 데이터베이스 로그인 및 opentutorials 데이터 지정을 완료해주고 빈 topic 테이블을 준비한 뒤 시작한다.

 

 


 

 

SQL의 INSERT 구문

SQL에서 새로운 데이터를 넣는 문장인 INSERT 구문은 다음과 같은 형식을 가진다.

 

INSERT INTO 테이블명 (컬럼1, 컬럼2, ... ) VALUES(컬럼1에 넣을 데이터, 컬럼2에 넣을 데이터, ...);

 

이 형식에 맞추어 우리의 topic 테이블에 데이터를 넣어보자.

이때, 주의할 점이 있다.

우리는 id 값이 오름차순으로 자동 할당되도록 설정해주었다.

따라서 id 값은 직접 적어넣지 않아도 된다. MySQL이 알아서 이전 id값보다 1 큰 값으로 할당해줄 것이다.

 

INSERT문을 적기 전, 우리 테이블의 구조를 다시 한 번 확인해보자.

 

 

DESC 구문을 사용하면 위와 같이 해당 테이블의 정보를 열람할 수 있다.

이것을 보면서 형식에 맞게 INSERT문을 적어보자.

INSERT문에 적는 컬럼의 순서는 꼭 id, title, description, ...의 순서를 따르지 않아도 된다. VALUES 이하에 적는 데이터들과 순서가 짝짝이로 잘 맞기만 하면 상관 없다. 그러나 헷갈리지 않도록 이번엔 그냥 DESC 구문의 결과에서 표시되는 순서대로 적겠다.

 

 

Rose라는 사람이 새 토픽을 추가하였다.

제목은 Hello이고, 설명글과 자신의 소개를 모두 입력하였다.

등록시간 값은 NOW() 함수를 이용하여 데이터 삽입 시의 시각을 받아와 지정하였다.

 

잘 들어갔는지 한 번 확인해보자.

 

 

방금 적은 내용이 테이블에 잘 들어가있다.

 

몇 개 더 넣어보자.

 

사과를 좋아하는 사람이 적은 topic이다.

자기소개를 생략하였다.

 

사과를 싫어하는 사람이 적은 topic이다.

이 사람도 자기소개를 생략하였다.

 

박애주의자가 적은 topic이다.

이 사람은 토픽 설명글을 생략하였다.

 

모든 topic이 잘 저장되었는지 확인하자.

 

잘 저장되었다.

※ 내가 id가 3인 데이터를 입력하기 전에 데이터 하나를 잘못 입력했다가 지운 상태라, id가 2인 데이터가 없다.

 

 


 

 

SQL의 SELECT 구문

MySQL SELECT 구문의 기본적인 형식은 다음과 같다.

SELECT 가져올내용 FROM 테이블명 WHERE 조건;

SELECT문으로 할 수 있는 일은 무궁무진하다.

위의 문장에서 일부를 생략할 수도 있고,

다른 내용을 덧붙여 더욱 복잡한 문장을 만들어낼 수도 있다.

 

 

이제 직접 사용해보자.

 

topic 테이블의 모든 데이터를 가져오려면 다음과 같이 적으면 된다.

 

모든 row의 모든 column이 나타난다.

 

모든 row의 제목과 작성자만 가져오려면 다음과 같이 적으면 된다.

 

 

 

제목이 Apple인 데이터만 가져오려면 다음과 같이 하면 된다.

 

 

이외에도

불러온 데이터의 표시 순서를 바꾸기(ORDER BY), 몇 개 이하의 데이터만 표시하기(LIMIT) 등 다른 조건도 부여할 수 있다.

이런 다양한 조건을 짜맞추어 상황에 알맞는 최고의 SELECT문을 짜는 것은 생각보다 어렵다.

SELECT 구문을 얼마나 잘 짜서 쓰느냐가 데이터 엔지니어의 능력을 드러낸다고 강사님께서 말할 정도이다.

창의적이고 효율적인 구문을 공부하고 만들어내서 잘 사용해보도록 하자.

 

 


 

 

SQL의 UPDATE 구문

다음은 존재하는 데이터의 값을 변경하는 UPDATE 구문이다.

 

UPDATE 구문의 기본적인 구조는 다음과 같다.

UPDATE 테이블명 SET 컬럼명1=바꿀데이터1, 컬럼명2=바꿀데이터2, ... WHERE 조건;

 

만약 WHERE문을 생략한다면, 해당 테이블의 모든 데이터의 값이 일괄적으로 변경되므로 주의하자.

 

현재 테이블에 저장되어있는 데이터는 위와 같다.

이 중 Rose가 Backend engineer에서 Frontend engineer로 커리어를 전향한 경우를 가정해보자.

그럼 다음과 같이 데이터를 수정해주면 된다.

 

 

SELECT문으로 확인해보자.

 

Rose의 profile만이 Frontend engineer로 잘 바뀌었다.

 

UPDATE문에도 ORDER BY, LIMIT 등의 표현을 덧붙일 수 있다.

 

 


 

 

SQL의 DELETE 구문

마지막으로, 데이터를 삭제하는 DELETE 구문이다.

 

DELETE 구문의 기본적인 형태는 다음과 같다.

 

DELETE FROM 테이블명 WHERE 조건;

 

DELETE문의 경우에도, WHERE문을 생략하면 해당 테이블의 모든 데이터가 삭제되고 빈 테이블만 남으므로 주의해야 한다.

참고로, 테이블 자체를 없애버리고 싶다면 DROP 구문을 사용하면 된다.

 

이제 직접 사용해보자.

사과를 싫어하던 사람이 생각을 바꾸어 자신의 토픽을 지웠다고 가정한다면,

다음과 같이 데이터를 삭제해주면 된다.

 

 

SELECT문으로 결과를 확인해보자.

 

 

잘 삭제되었다.

 

 


 

 

번외: 기타 참고사항

SQL 구문에서, 데이터값이나 테이블명 혹은 컬럼명 등 정해진 값 자체를 제외한 나머지 부분에서는 대소문자 구별이 없다.

또한 문자열 등의 데이터를 감싸는 따옴표는 작은따옴표와 큰따옴표 중 어느 것을 사용하든 상관이 없다.

 

따라서 다음과 같이 입력해도 문제가 없다.