필수 DDL 및 DML 명령어: 생성, 선택, 업데이트, 삭제
핵심 MySQL DDL 및 DML 명령어인 CREATE TABLE, INSERT, SELECT, UPDATE, DELETE를 학습합니다.
필수 DDL 및 DML 명령어: 생성, 선택, 업데이트, 삭제
MySQL 작업은 일반적으로 테이블 정의와 그 안의 행 작업이라는 두 가지 작업으로 시작됩니다. 필수 DDL 및 DML 명령어는 이를 안전하게 수행하는 방법입니다.
DDL 명령어는 테이블과 같은 데이터베이스 객체를 정의합니다. DML 명령어는 테이블 데이터를 삽입, 읽기, 업데이트 및 삭제합니다. 아래 예제는 작은 products 테이블을 사용하여 명령어를 상황에 맞게 보여줍니다.
데이터 정의 언어(DDL): 테이블 생성
DDL 명령어는 데이터베이스 객체의 스키마와 구조와 관련됩니다. 데이터 저장을 위한 가장 기본적인 DDL 명령어는 데이터의 청사진을 정의할 수 있는 CREATE TABLE입니다.
CREATE TABLE 구문
테이블 생성의 기본 구문은 테이블 이름을 지정하고 열, 데이터 유형 및 제약 조건을 정의하는 것입니다.
CREATE TABLE table_name (
column1 datatype constraints,
column2 datatype constraints,
column3 datatype constraints,
...
);
table_name은 현재 데이터베이스 내에서 고유해야 합니다. 각 열에는 이름, 데이터 유형 및 NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY 또는 DEFAULT value와 같은 선택적 제약 조건이 필요합니다.
CREATE TABLE 예제
인벤토리의 항목에 대한 정보를 저장하는 간단한 products 테이블을 만들어 보겠습니다.
CREATE TABLE products (
product_id INT AUTO_INCREMENT PRIMARY KEY,
product_name VARCHAR(100) NOT NULL UNIQUE,
category VARCHAR(50),
price DECIMAL(10, 2) NOT NULL,
stock_quantity INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
이 예제에서:
product_id는 자동으로 증가하고 기본 키 역할을 하는 정수입니다.product_name은 고유해야 하는 필수 문자열입니다.price는 필수 십진수입니다.stock_quantity는 지정하지 않으면 기본값 0입니다.created_at은 행이 생성된 타임스탬프를 기록합니다.
데이터 조작 언어(DML): 데이터 작업
DML 명령어는 데이터베이스 테이블 내의 레코드(행)를 관리하는 데 사용됩니다. 일상적인 데이터베이스 작업에서 가장 자주 사용되는 명령어입니다.
INSERT 명령어: 새 데이터 추가
INSERT 명령어는 테이블에 새 데이터 행을 추가하는 데 사용됩니다.
INSERT 구문
INSERT를 사용하는 방법에는 몇 가지가 있습니다.
모든 열에 대한 값 지정:
INSERT INTO table_name VALUES (value1, value2, value3, ...);값의 순서는 테이블 정의의 열 순서와 일치해야 합니다.
특정 열에 대한 값 지정:
INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);일반적으로 더 읽기 쉽고 테이블 구조가 변경될 때 오류가 발생할 가능성이 적기 때문에 이 방법이 선호됩니다.
INSERT 예제
products 테이블 사용:
-- 모든 열에 대한 값 삽입 (product_id에 AUTO_INCREMENT 가정)
INSERT INTO products (product_name, category, price, stock_quantity)
VALUES ('Laptop Pro', 'Electronics', 1200.50, 50);
-- 특정 열에 대한 값 삽입
INSERT INTO products (product_name, price)
VALUES ('Mechanical Keyboard', 75.99);
-- 한 번에 여러 행 삽입
INSERT INTO products (product_name, category, price, stock_quantity)
VALUES
('Ergonomic Mouse', 'Electronics', 25.00, 120),
('Desk Lamp', 'Home Goods', 45.00, 75);
SELECT 명령어: 데이터 검색
SELECT 명령어는 데이터 검색의 초석입니다. 이를 통해 데이터베이스를 쿼리하고 다양한 기준에 따라 특정 데이터를 가져올 수 있습니다.
SELECT 구문
SELECT column1, column2, ...
FROM table_name
WHERE condition
ORDER BY column_name [ASC|DESC]
LIMIT number;
column1, column2, ...: 검색하려는 열입니다. 모든 열을 선택하려면*를 사용하십시오.FROM table_name: 쿼리하는 테이블입니다.WHERE condition: (선택 사항) 지정된 조건에 따라 행을 필터링합니다. 조건에는 비교 연산자(=,!=,>,<,>=,<=), 논리 연산자(AND,OR,NOT) 및 패턴 일치(LIKE)가 포함될 수 있습니다.ORDER BY column_name [ASC|DESC]: (선택 사항) 하나 이상의 열로 결과 집합을 정렬합니다.ASC는 오름차순(기본값),DESC는 내림차순입니다.LIMIT number: (선택 사항) 반환되는 행 수를 제한합니다.
SELECT 예제
-- 모든 제품의 모든 열 선택
SELECT *
FROM products;
-- 제품의 이름과 가격만 선택
SELECT product_name, price
FROM products;
-- 'Electronics' 카테고리의 제품 선택
SELECT *
FROM products
WHERE category = 'Electronics';
-- 가격이 100보다 큰 제품을 가격 내림차순으로 선택
SELECT product_name, price
FROM products
WHERE price > 100
ORDER BY price DESC;
-- 가장 비싼 상위 5개 제품 선택
SELECT product_name, price
FROM products
ORDER BY price DESC
LIMIT 5;
-- 이름이 'L'로 시작하는 제품 선택
SELECT *
FROM products
WHERE product_name LIKE 'L%';
UPDATE 명령어: 기존 데이터 수정
UPDATE 명령어를 사용하면 테이블의 기존 레코드를 변경할 수 있습니다.
UPDATE 구문
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
table_name: 업데이트할 레코드가 포함된 테이블입니다.SET column1 = value1, ...: 업데이트할 열과 새 값을 지정합니다.WHERE condition: 중요! 이 절은 업데이트할 행을 결정합니다. 생략하면 테이블의 모든 행이 업데이트됩니다.
UPDATE 예제
-- 'Laptop Pro'의 가격을 50만큼 인상
UPDATE products
SET price = price + 50.00
WHERE product_name = 'Laptop Pro';
-- 'Mechanical Keyboard'의 카테고리와 재고 업데이트
UPDATE products
SET category = 'Accessories', stock_quantity = 100
WHERE product_name = 'Mechanical Keyboard';
-- **경고**: 이렇게 하면 모든 제품의 가격이 10.00으로 업데이트됩니다.
-- UPDATE products
-- SET price = 10.00;
팁: 업데이트 시 항상 WHERE 절을 사용하여 의도한 레코드만 수정하십시오. 먼저 SELECT 문으로 WHERE 절을 테스트하여 올바른 행을 대상으로 하는지 확인하십시오.
DELETE 명령어: 데이터 제거
DELETE 명령어는 테이블에서 행을 제거하는 데 사용됩니다.
DELETE 구문
DELETE FROM table_name
WHERE condition;
table_name: 행을 제거할 테이블입니다.WHERE condition: 중요! 이 절은 삭제할 행을 지정합니다. 생략하면 테이블의 모든 행이 삭제됩니다.
DELETE 예제
-- 'Desk Lamp'라는 이름의 제품 삭제
DELETE FROM products
WHERE product_name = 'Desk Lamp';
-- 재고가 0인 모든 제품 삭제
DELETE FROM products
WHERE stock_quantity = 0;
-- **경고**: 이렇게 하면 'products' 테이블의 모든 레코드가 삭제됩니다!
-- DELETE FROM products;
경고: UPDATE와 마찬가지로 DELETE 문에서 WHERE 절을 생략하면 테이블에서 모든 데이터가 제거되는 파괴적인 작업이 됩니다. 극도로 주의해서 사용하십시오.
핵심 요점
DDL 및 DML 명령어를 이해하고 효과적으로 사용하는 것은 데이터베이스 관리의 기본입니다. CREATE TABLE을 사용하면 데이터 구조를 정의할 수 있고, INSERT, SELECT, UPDATE, DELETE를 사용하면 데이터를 채우고, 쿼리하고, 수정하고, 관리할 수 있습니다.
특히 UPDATE 및 DELETE의 경우 명확한 WHERE 절을 사용하여 이러한 명령어를 연습하면 MySQL 데이터베이스 작업을 위한 견고한 기반을 구축하고 데이터의 무결성과 정확성을 보장할 수 있습니다. 잠재적으로 파괴적인 작업을 수행하기 전에 항상 데이터를 백업하는 것을 잊지 마십시오.