이번 정차 역은 'DDL'입니다.
오늘은 데이터베이스 구축의 핵심 개념인 DDL(Data Definition Language)과 테이블 생성, 데이터 입력 및 활용에 대해 알아보자.
오늘의 배움 |
|
DDL(Data Definition Language)
DDL은 데이터베이스의 구조를 정의하는 명령어들이다. 주로 테이블, 인덱스, 뷰 등의 객체를 생성, 수정, 삭제하는 역할.
따라서,
- 데이터베이스의 기본 구조를 설계하는 데 필수적인 부분
- SQL을 사용하여 테이블을 생성하거나 삭제할 때 사용됨
마치 디자인의 기본 구조를 잡는 것과 비슷한 것 같다.
- 초기 디자인에서 레이아웃을 정하는 과정처럼
- DDL은 데이터베이스의 뼈대를 만드는 단
CREATE (테이블)
새로운 테이블이나 뷰를 생성할 때 사용
IF NOT EXISTS를 적용하면 기존에 존재하는 테이블이라도 에러가 발생하지 않는다.
테이블의 컬럼 설정 방법
column_name data_type(length) [NOT NULL] [DEFAULT value] [AUTO_INCREMENT] column_constraint;
- AUTO_INCREMENT: 프라이머리 키에게 붙여줌
- 제약조건들을 뛰어씀 (아래와 같이)
tb1 테이블 생성
- 테이블 생성하는 명령어
- 이 코드는 상품이라는 테이블을 생성하며, 각 속성의 데이터 타입을 정의한다. 마치 디자인에서 각 요소의 크기와 위치를 정하는 것과 비슷.
CREATE TABLE 상품 (
상품ID INT PRIMARY KEY,
상품명 VARCHAR(100),
가격 DECIMAL(10, 2),
재고수량 INT
);
CREATE TABLE IF NOT EXISTS tb1 (
pk INT PRIMARY KEY,
fk INT,
col1 VARCHAR(255),
CHECK(col1 IN ('Y', 'N'))
) ENGINE=INNODB;
# check 제약조건(컬럼에 제약조건을 걸어줌)
# 엔진뒤에 이노비가 오는 구나 하고 그냥 외우기
- 생성한 데이터베이스 사용하는 명령어
use 데이터베이스명;
위의 코드 결과 확인
테이블 구조 확인
DESCRIBE tb1;
실행결과
INSERT 명령어
- 테이블에 데이터 입력하는 명령어
INSERT INTO 상품 (상품ID, 상품명, 가격, 재고수량) VALUES (1, '티셔츠', 19.99, 100);
INSERT INTO tb1 VALUES (1, 10, 'Y');
SELECT * FROM tb1; # 데이터 활용 명령어 SELECT FROM
AUTO_INCREMENT
AUTO_INCREMENT는 데이터베이스에서 새로운 행이 추가될 때, 특정 속성(주로 기본 키)의 값을 자동으로 증가시키는 기능이다. 이 속성은 주로 숫자형 데이터 타입에 사용되며, 주로 ID 필드에 설정된다.
INSERT 시 PRIMARY키에 해당하는 컬럼에 자동으로 번호를 발생(중복되지 않게)시켜 저장할 수 있다.
CREATE TABLE 상품 (
상품ID INT AUTO_INCREMENT PRIMARY KEY,
상품명 VARCHAR(100),
가격 DECIMAL(10, 2)
);
-> 상품 ID가 자동으로 증가하도록 설정한 예시
ALTER
ALTER 명령어는 기존 테이블의 구조를 변경한다. 이를 통해 테이블에 새로운 컬럼을 추가하거나, 기존 컬럼의 속성을 변경할 수 있다.
(종류가 너무 많고 복잡하여 자주 사용하지 않고, 잘못되었다면 모두 drop 한 다음에 새로 한다고 한다)
DROP
테이블을 삭제하기 위한 구문
tb3 테이블 생성 후 삭제
-- tb3 테이블 생성
CREATE TABLE IF NOT EXISTS tb3 (
pk INT AUTO_INCREMENT PRIMARY KEY,
fk INT,
col1 VARCHAR(255),
CHECK(col1 IN ('Y', 'N'))
) ENGINE=INNODB;
-- tb3 테이블 삭제
DROP TABLE IF EXISTS tb3;
# if, exists 를 사용하여
TRUNCATE
논리적으로는 WHERE절이 없는 DELETE 구문과 큰 차이가 없어 보인다. 하지만 어차피 데이터를 다 삭제할 경우 행마다 하나씩 지워지는 DELETE보다 DROP이후 바로 테이블을 재 생성 해주는 TRUNCATE가 훨씬 효율적으로 한 번에 테이블을 초기화시켜준다. 또한 AUTO_INCREMENT 컬럼이 있는 경우 시작 값도 0으로 초기화가 된다.
싹 다 없어지기에,,,, 조심.....
-- tb6 테이블 생성
CREATE TABLE IF NOT EXISTS tb6 (
pk INT AUTO_INCREMENT PRIMARY KEY,
fk INT,
col1 VARCHAR(255),
CHECK(col1 IN ('Y', 'N'))
) ENGINE=INNODB;
-- 4개 행 데이터 INSERT
INSERT INTO tb6 VALUES (null, 10, 'Y');
INSERT INTO tb6 VALUES (null, 20, 'Y');
INSERT INTO tb6 VALUES (null, 30, 'Y');
INSERT INTO tb6 VALUES (null, 40, 'Y');
-- 제대로 INSERT 되었는지 확인
SELECT * FROM tb6;
-- 테이블 초기화 하기
-- TRUNCATE TABLE tb6;
TRUNCATE tb6; -- TABLE 키워드 생략 가능
데이터베이스의 관리와 구조 변경에 대해 배웠다.
디자인에서도 요소를 추가하거나 삭제하는 과정이 중요하듯이, 데이터베이스에서도 마찬가지였다.
다음에는 테이블 생성 제약 조건인, 'CONSTRAINTS'를 배워보자.
'Develop > Database' 카테고리의 다른 글
VIEW / STORED PROCEDURE 를 알아보자. (0) | 2024.12.31 |
---|---|
CONSTRAINTS / INDEX 를 알아보자. (3) | 2024.12.31 |
데이터베이스 모델링(5) - 물리 모델 (0) | 2024.12.31 |
데이터베이스 모델링(4) - 논리 모델 (이상, 정규화) (5) | 2024.12.31 |
데이터베이스 모델링(3) - 개념 모델 (0) | 2024.12.30 |