[MySQL/MariaDB] CRUD(1) | SQL과 CRUD란? SELECT, INSERT 쿼리 작성하는 법

Photo of author
Written By 완두콩

여러분야의 지식을 추구하고싶은
만 29세.
화이팅!

SQL(Structured Query Language)

  1. 데이터베이스(DB) 활용 시 데이터베이스에서 원하는 정보를 검색하거나 삽입, 수정, 삭제 등 자료를 처리하는 용도로 사용되는 구조적 데이터 질의 언어이다.
  2. 어느 데이터베이스에서나 기본으로 제공하기 때문에 배워두면 여러 곳에서 활용가능성이 있다. 다만, NoSQL 계열(MongoDB, Redis 등)에서는 SQL 문을 사용하지 않는다.
  3. 만약 당신이 MySQL, MariaDB, Oracle 등의 데이터베이스를 처음 접하게 된다면 가장 기초가 되는 CRUD(Create, Read, Update, Delete)를 다룰 줄 알아야 다양한 데이터베이스 질의를 응용할 수 있다.
  4. MySQL과 MariaDB는 기본적인 쿼리 문법은 동일하다. (MariaDB는 MySQL이 오라클에 인수된 이후 불확실한 라이선스 문제를 해결하려고 나온 오픈소스 RDBMS이기 때문.)

 

 

CRUD(Create, Read, Update, Delete)

요소 SQL 문 설명
CREATE INSERT 삽입
READ SELECT 조회
UPDATE UPDATE 수정
DELETE DELETE 삭제

CRUD란 SQL 문에서 가장 기초가 되는 4가지 요소를 가르킨다.

데이터베이스 관리자가 아니더라도 개발자라면 꼭 알고 있어야 하는 부분으로 데이터베이스 요소가 가미된 프로그래밍에서는 가장 기초적이며 중요한 상식이라고 할 수 있다.

이제 MySQL과 MariaDB에서 각 요소를 어떻게 쿼리로 작성하여 활용하는 지 알아보자.

이후 설명할 항목에서는 다음과 같은 테이블(STUDENT)을 예시로 활용한다.

ID NAME MATH ENGLISH
1001 철수 85 90
1002 영희 100 90
2000 길동 70 90
2001 진구 50 50
2002 미희 100 100

CREATE(INSERT)

STUDENT 테이블에서 새로운 인원이 추가되었다고 가정하였을 때에는 새로운 행을 추가하여야 할 것이다.

테이블에 행을 새로 추가하는 기본적인 INSERT문은 다음과 같다.

INSERT INTO 테이블이름(필드1, 필드2, 필드3, ...) VALUES (값1, 값2, 값3, ...)

따라서 현재 5명의 정보를 가지고 있는 STUDENT 테이블에 학생 한 명을 삽입하는 INSERT문과 그에 따른 결과 테이블은 다음과 같다.

INSERT INTO STUDENT(ID, NAME, MATH, ENGLISH) VALUES ('3000', '영미', 80, 80)
ID NAME MATH ENGLISH
1001 철수 85 90
1002 영희 100 90
2000 길동 70 90
2001 진구 50 50
2002 미희 100 100
3000 영미 80 80

앞서 설명한 쿼리 외에 조금 더 간단하게 행을 삽입할 수 있는 INSERT문도 존재한다. 다만, 별도로 필드를 정의하지 않았기 때문에 필드의 순서에 맞게 값을 정의할 필요가 있다.

INSERT INTO 테이블이름 VALUES (값1, 값2, 값3, ...)

마지막으로, 꼭 모든 필드의 값을 채워야 하는 것은 아니다. 만약 Schema를 정의할 때 따로 NOT NULL 속성을 부여한 필드가 아닐 경우 NULL값이 자동으로 채워질 것이다.


 

 

 

READ(SELECT)

데이터베이스 내 존재하는 테이블에서 모든 내용이나 내가 원하는 내용 등 값을 조회할 때 사용하는 쿼리문이다. 테이블 내 존재하는 모든 행에 대한 출력을 요청할 수도 있고, 조건을 걸어 조건에 부합하는 행에 대한 출력을 요청할 수도 있다. 심지어 다른 두 개의 테이블의 내용을 조합하여 추출할 수도 있다. 하지만 본 포스팅에선 하나의 테이블을 다루는 방법에 대해서만 설명하도록 한다.

가장 먼저 하나의 테이블 내 존재하는 모든 행을 조회하는 SELECT문은 다음과 같다.

SELECT * FROM 테이블이름

위에서 ‘영미’에 대한 정보를 추가한 STUDENT 테이블의 모든 내용을 조회해 보자.

SELECT * FROM STUDENT
ID NAME MATH ENGLISH
1001 철수 85 90
1002 영희 100 90
2000 길동 70 90
2001 진구 50 50
2002 미희 100 100
3000 영미 80 80

이제 해당 테이블에서 ID, NAME, MATH 필드에 대한 조회를 해보자.

SELECT ID, NAME, MATH FROM STUDENT
ID NAME MATH
1001 철수 85
1002 영희 100
2000 길동 70
2001 진구 50
2002 미희 100
3000 영미 80

이처럼 ‘*’ 대신 필드를 나열해주면 해당 필드들의 값만 출력을 하게 되는데, 모든 행을 조회할 때 사용한 *의 의미는 와일드카드이며, 와일드카드에 대해 궁금한 분을 위해 위키백과를 인용하니 참고하길 바란다.

와일드카드 문자

와일드카드 문자(wildcard character)는 컴퓨터에서 특정 명령어로 명령을 내릴 때, 여러 파일을 한꺼번에 지정할 목적으로 사용하는 기호를 가리킨다. 이 문자는 어느 곳에서 사용하느냐에 따라 약간의 차이를 보인다. 주로 특정한 패턴이 있는 문자열 혹은 파일을 찾거나, 긴 이름을 생략할 때 쓰인다.

이제 추가적으로 위 결과에서 MATH 값이 80이상인 행을 조회해보자. SELECT문에는 조건문을 다음과 같이 WHERE절로 추가할 수 있다.

SELECT ID, NAME, MATH FROM STUDENT WHERE MATH >= 80
ID NAME MATH
1001 철수 85
1002 영희 100
2000 길동 70
2001 진구 50
2002 미희 100
3000 영미 80

WHERE절에는 하나의 조건이 아닌 다수의 조건을 부여할 수 있는데 AND와 OR로 가능하며 이는 AND연산과 OR연산에 대한 이해가 필요하므로 문법적인 부분에 대해서만 설명한다.

SELECT * STUDENT WHERE MATH >= 80 AND ENGLISH >= 80
SELECT * STUDENT WHERE MATH >= 80 AND ENGLISH >= 90 OR ENGLISH = 50

등등 무궁무진한 조건으로 조건을 부여할 수 있다.

 

참고 자료

Leave a Comment