데이터 CRUD
데이터 CRUD란 데이터베이스의 데이터를 관리하기 위한 기본적인 네 가지 동작을 의미합니다. CRUD는 데이터의 생성(Create), 조회(Read), 수정(Update), 삭제(Delete)의 앞 글자를 조합한 용어입니다.

- Create(생성): 새로운 데이터를 데이터베이스에 추가합니다.
- Read(조회): 저장된 데이터를 검색하거나 확인합니다.
- Update(수정): 기존에 저장된 데이터를 변경합니다.
- Delete(삭제): 더 이상 필요 없는 데이터를 데이터베이스에서 제거합니다.
이 네 가지 작업은 데이터베이스 관리 시스템(DBMS)이 반드시 제공해야 하는 핵심 기능이며, 대부분의 데이터 처리는 이러한 CRUD 동작의 조합으로 이루어집니다. 데이터 CRUD는 SQL 명령어를 통해 수행되며, 데이터베이스 기반 시스템의 기본적인 동작 원리를 구성합니다.
데이터베이스 만들기
쿼리(query)란 ‘문의하다’, ‘질문하다’라는 의미로, 데이터베이스에 사용자가 원하는 특정 데이터를 보여 달라고 요청하는 명령을 말합니다. 쿼리는 SQL을 사용해 작성하는 명령문이며, 데이터베이스에 대한 조회, 삽입, 수정, 삭제 등의 작업을 수행합니다.
일반적으로 하나의 쿼리는 하나의 SQL 명령문으로 구성되며, 각 쿼리는 세미콜론(;)으로 구분합니다. 세미콜론은 DBMS에 해당 명령이 끝났음을 알리는 역할을 합니다.
예를 들어, MySQL 서버에 저장된 데이터베이스 목록을 조회하는 쿼리는 다음과 같습니다.
SHOW DATABASES;

시스템 데이터베이스(system database)란 MySQL 서버가 정상적으로 동작하고 관리되기 위해 자동으로 생성·관리하는 내부용 데이터베이스를 의미합니다. 사용자가 직접 데이터를 저장하기 위한 용도가 아니라, 서버 설정, 권한 관리, 성능 정보 수집 등을 담당합니다.SHOW DATABASES; 실행 결과에 표시되는 대표적인 시스템 데이터베이스의 역할은 다음과 같습니다.
- information_schema
데이터베이스, 테이블, 컬럼, 인덱스 등 메타데이터(구조 정보)를 저장합니다. 실제 데이터가 아니라 데이터베이스의 구조와 속성을 조회하는 데 사용됩니다. - mysql
사용자 계정, 권한 정보, 서버 설정 등 MySQL의 핵심 관리 정보를 저장합니다. 로그인 인증과 권한 제어에 중요한 역할을 합니다. - performance_schema
쿼리 실행, 잠금, 스레드 등 MySQL 서버의 성능 관련 정보를 수집하고 저장합니다. 성능 분석과 튜닝에 활용됩니다. - sys
performance_schema와 information_schema의 데이터를 사람이 이해하기 쉬운 형태로 가공해 제공하는 데이터베이스입니다. 관리 및 모니터링을 간편하게 하기 위한 용도로 사용됩니다.
이러한 시스템 데이터베이스는 MySQL 내부 동작에 필수적이므로, 임의로 수정하거나 삭제해서는 안 됩니다.
새 데이터베이스를 생성하기 위한 쿼리 형식은 다음과 같습니다.
CREATE DATABASE 데이터베이스명;
CREATE DATABASE는 새로운 데이터베이스를 생성하는 SQL 명령어이며, 뒤에 생성할 데이터베이스 이름을 지정합니다. 각 쿼리는 세미콜론(;)으로 끝나야 합니다.
MySQL은 기본적으로 SQL 명령어의 대소문자를 구분하지 않으므로, CREATE DATABASE, create database, Create Database는 모두 동일하게 인식됩니다. 다만, 가독성과 관리를 위해 일관된 표기 규칙을 사용하는 것이 권장됩니다.

화면 왼쪽의 스키마탭에서 새로고침 버튼을 클릭해 보면 mapdonalds DB가 보입니다.
새로 만든 데이터베이스에 진입한다는 것은 해당 데이터베이스를 사용하겠다는 의미이므로, MySQL에서는 USE 문을 사용합니다.
USE 데이터베이스명;
진입에 성공하면 스키마 탭에 mapdonalds DB가 볼드로 표시되며 펼쳐집니다.

SELECT DATABASE();는 현재 사용 중인 데이터베이스 이름을 확인하기 위한 쿼리입니다.
SELECT DATABASE();
이 쿼리를 실행하면 USE 문을 통해 선택된 데이터베이스가 결과로 출력되며, 아직 데이터베이스를 선택하지 않은 경우에는 NULL이 반환됩니다. 이를 통해 현재 어떤 데이터베이스를 기준으로 작업하고 있는지 확인할 수 있습니다.

DROP DATABASE 데이터베이스명;은 데이터베이스를 삭제하는 쿼리입니다.
이 명령을 실행하면 지정한 데이터베이스와 그 안에 포함된 모든 테이블과 데이터가 함께 삭제되며, 삭제된 데이터는 복구할 수 없습니다. 따라서 사용 시에는 데이터베이스 이름을 정확히 확인하고 신중하게 실행해야 합니다.
DROP DATABASE 데이터베이스명;
일반적으로 데이터베이스 삭제는 테스트용 데이터베이스이거나 더 이상 사용하지 않는 경우에만 수행하는 것이 바람직합니다.
특정 데이터베이스가 정상적으로 삭제되었는지 여부는 데이터베이스 목록을 조회하는 명령인 SHOW DATABASES;를 통해 확인할 수 있습니다. 해당 명령을 실행했을 때 삭제한 데이터베이스 이름이 목록에 나타나지 않는다면, 데이터베이스가 정상적으로 삭제된 것입니다.
주석(comment)이란 SQL 쿼리에 대한 설명이나 메모를 작성하기 위한 것으로, 실행 결과에는 아무런 영향을 미치지 않습니다. 주석은 쿼리의 의미를 설명하거나, 임시로 코드를 비활성화할 때 사용됩니다.
SQL에서 사용하는 주석은 다음과 같이 두 가지가 있습니다.
- 한 줄 주석
연속된 하이픈 두 개(–)로 작성하며, 한 줄 전체를 주석으로 처리할 때 사용합니다. - 블록 주석
/*로 열고 */로 닫는 형식으로 작성하며, 여러 줄을 한 번에 주석으로 처리할 때 사용합니다.
테이블 만들기
테이블을 생성하기 위한 기본 쿼리 형식은 다음과 같습니다.
CREATE TABLE 테이블명 (
칼럼명1 자료형1,
칼럼명2 자료형2,
...
PRIMARY KEY (칼럼명)
);
CREATE TABLE은 데이터베이스에 새로운 테이블을 생성하는 명령이며, 테이블 안에는 칼럼 이름과 각 칼럼의 자료형을 정의합니다. 주요 구성 요소의 의미는 다음과 같습니다.
- PRIMARY KEY
테이블에서 각 행을 고유하게 식별하는 칼럼을 지정합니다. 기본 키로 지정된 칼럼은 중복될 수 없으며,NULL값을 가질 수 없습니다. - INTEGER
정수형 데이터를 저장하는 자료형입니다. 숫자 계산이나 수량, 번호 등을 저장할 때 사용됩니다. - VARCHAR
가변 길이 문자열을 저장하는 자료형입니다.VARCHAR(길이)형태로 사용하며, 지정한 길이만큼의 문자 데이터를 저장할 수 있습니다.

기본키는 앞의 쿼리처럼 PRIMARY KEY 키워드를 사용해 별도의 행에서 지정하는 방법이 있으며, 다음과 같이 칼럼을 정의할 때 함께 지정하는 방법도 있습니다.
CREATE TABLE 테이블명 (
id INTEGER PRIMARY KEY,
name VARCHAR(50)
);
이와 같이 칼럼 정의 시 PRIMARY KEY를 함께 작성하면 해당 칼럼이 테이블의 기본키로 지정되며, 테이블의 각 행을 고유하게 식별하는 역할을 합니다.
테이블의 구조 조회하기
DESC 테이블명;
- Field(필드) : 테이블의 칼럼을 나타냅니다.
- Type(타입) : 칼럼의 자료형을 나타냅니다.
- Null(널) : 칼럼에 값을 넣어야 하는지 넣지 않아도 되는지를 나타냅니다.
NO라면 반드시 값을 입력해야 합니다. - Key(키) : 칼럼이 테이블의 기본키, 외래키, 고유키 등 특별한 키로 사용되는지를 나타냅니다.
- Default(디폴트) : 칼럼의 기본값을 나타냅니다.
- Extra(엑스트라) : 칼럼에 적용된 추가 속성을 나타냅니다.
데이터 삽입 및 조회하기
INSERT INTO 테이블명 (칼럼명1, 칼럼명2, ...)
VALUES (입력값1, 입력값2, ...);
지금은 burgers 테이블에 데이터를 삽입한 것이므로 결과 창에 아무런 결과도 나오지 않습니다. 정보가 잘 삽입됐는지 조회하려면 SELECT 문을 사용합니다.
SELECT 칼럼명1, 칼럼명2, ...
FROM 테이블명
WHERE 조건;
*(asterisk, 애스터리스크) 는 ‘모든’을 의미합니다.
VALUES 뒤의 괄호를 ,(쉼표)로 구분하면 한번에 여러 데이터를 삽입할 수 있습니다.
데이터 수정하기
UPDATE 테이블명
SET 칼럼명 = 입력값
WHERE 조건;
MySQL은 실수로 대량의 데이터를 수정하는 것을 방지하기 위해 안전모드가 설정돼 있습니다. 안전모드를 해제하지 않고 수정하면 에러가 발생합니다.
-- 안전모드 해제
SET SQL_SAFE_UPDATES = 0;
안전모드를 유지하는 것이 좋으니 안전모드를 유지한 채 해결하는 방법을 소개하겠습니다.
Error Code: 1175 는 키가 아닌 칼럼으로 수정을 시도했기 때문에 발생합니다. UPDATE 문은 반드시 키를 조건으로 대상을 찾아야 합니다.
데이터 삭제하기
DELETE FROM 테이블명
WHERE 조건;
테이블 삭제하기
DROP TABLE 테이블명;
마무리
- 데이터 CRUD : 데이터 생성(Create), 조회(Read), 수정(Update), 삭제(Delete)
- 쿼리 : 데이터베이스에 사용자가 원하는 특정 데이터를 보여 달라고 요청하는 것
- 데이터베이스 목록 조회
SHOW DATABASES;
- 새 데이터베이스 만들고 집입하기
CREATE DATABASE 데이터베이스명;
USE 데이터베이스명;
- 주석
-- 한 줄 주석 : 연속된 하이픈 두 개(--)로 시작해 해당 줄을 모두 주석 처리
/*
블록 주석:
시작과 끝을 열고 닫음으로써
여러 줄에 걸쳐 주석 작성 가능
*/
- 테이블 만들기
CREATE TABLE 테이블명 (
칼럼명1 자료형1,
칼럼명2 자료형2,
...
PRIMARY KEY (칼럼명)
);
- 기본키 : 테이블의 모든 튜플을 구분하는 칼럼으로 중복되지 않는 유일한 겂을 가집니다. 기본키는 테이블을 생성할 때 PRIMARY KEY 명령으로 지정합니다.
- 자료형 : 칼럼이 가질 수 있는 값의 형태를 말하는 것
- 테이블 구조 조회
DESC 테이블명;
- 데이터 삽입
INSERT INTO 테이블명 (칼럼명1, 칼럼명2, ...)
VALUES (입력값1, 입력값2, ...);
- 데이터 조회
SELECT 칼럼명1, 칼럼명2, ...
FROM 테이블명
WHERE 조건;
- 데이터 수정
UPDATE 테이블명
SET 칼럼명 = 입력값
WHERE 조건;
- 데이터 삭제
DELETE FROM 테이블명
WHERE 조건;
- 테이블/데이터베이스 삭제
DROP TABLE 테이블명;
DROP DATABASE 데이터베이스명;
