생성, 삽입, 조회 명령문을 SQL(Structured Query Language)이라고 합니다.
데이터를 아무리 많이 모아놓더라도 활용하지 않으면 가치가 없습니다. 조건에 맞는 데이터를 활용할 수 있어야 하고, 끊임없이 변하는 내용을 지속적으로 삽입, 수정, 삭제, 조회가 가능해야합니다.
그런상황에서 데이터를 어떻게 관리해야할 지 고민한 결과 모든 데이터들을 공통적으로 관리할 수 있는 표준 언어인 SQL이 탄생하게 되었습니다.
SQL의 종류들
- DDL (Data Definition Language)
- DML (Data Manopulation Language)
- DCL (Data Control Language)
DDL은 데이터를 정의할 때 사용하는 언어로 테이블이나 데이터베이스를 생성, 수정, 삭제와 같은 행위를 할 때 사용합니다.
CREATE
DROP
ALTER
DML은 데이터베이스에 데이터를 조작할 때 사용하는 언어로 데이터의 저장, 삭제, 수정, 조회와 같은 행위를 합니다.
SELECT
INSERT
DELETE
UPDATE
DCL은 데이터베이스에 대한 권한과 관련된 문법으로 특정 유저가 DB에 접근할 수 있는 권한을 설정할 때 사용합니다.
COMMIT
ROLLBACK
GRANT
REVOKE
데이터베이스는 매우 고도화된 엑셀입니다.
엑셀 파일 하나가 "데이터베이스"라면,
엑셀 시트 하나는 "테이블"이라고 부르고,
엑셀 행 하나는 "데이터"라고 부릅니다.
CREATE DATABASE NodeJS;
CREATE TABLE IF NOT EXISTS courses (
id bigint(5) NOT NULL AUTO_INCREMENT,
title varchar(255) NOT NULL,
tutor varchar(255) NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO courses (title, tutor) VALUES
('Node.js 숙련반', '이용우'), ('웹개발 종합반', '이범규');
SELECT * FROM courses;
예를 들어, 우리가 음식 주문앱 DB를 설계한다고 가정해볼게요! 일단 "고객이 1개의 음식을 주문할 수 있다"라는 요구사항을 받았다고 해봅시다.
CREATE TABLE User( userId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, name varchar(255) NOT NULL UNIQUE ); CREATE TABLE Food( foodId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, name varchar(255), price int(11) ); CREATE TABLE Order( orderId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, userId int(11) NOT NULL, foodId int(11) NOT NULL, createdAt datetime NOT NULL DEFAULT NOW(), FOREIGN KEY (foodId) REFERENCES Food(foodId) ON DELETE CASCADE, FOREIGN KEY (userId) REFERENCES User(userId) ON DELETE CASCADE );
name, age 라는 열을 가진 users 라는 테이블을 만들고,
나의 이름과 나이 데이터를 삽입해보세요.
그 다음에 users 테이블을 조회해보세요.