노드숙련_6

·2022년 12월 20일
0

SQL
생성, 삽입, 조회 명령문을 SQL(Structured Query Language)이라고 함

SQL 종류

1. DDL(데이터 정의어; Data Definition Language)

데이터를 정의할 때 사용하는 언어로 테이블이나 데이터베이스를 생성, 수정, 삭제와 같은 행위를 할 때 사용합니다.

  • CREATE
    • DATABASE, TABLE, VIEW, INDEX 등을 생성할 때 사용합니다.
  • DROP
    • DATABASE, TABLE, VIEW, INDEX 등을 삭제할 때 사용합니다.
  • ALTER
    • TABLE의 속성변경할 때 사용합니다.

2. DML(데이터 관리어; Data Manopulation Language)

DML은 데이터베이스에 데이터를 조작할 때 사용하는 언어로 데이터의 저장, 삭제, 수정, 조회와 같은 행위를 합니다.

  • SELECT
    • 일반적으로 TABLE에서 원하는 데이터들을 조회할 때 사용합니다.
    • 🔥 DB를 관리하면서 가장 많이 사용하는 명령어 이기도 합니다!
  • INSERT
    • 테이블에 새로운 데이터들을 삽입할 때 사용합니다.
  • DELETE
    • 테이블에서 특정한 조건에 맞는 데이터들을 삭제할 때 사용합니다.
  • UPDATE
    • 테이블에서 특정한 조건에 맞는 데이터들을 수정할 때 사용합니다.

3. DCL(데이터 제어어; Data Control Language)

DQL은 데이터베이스에 대한 권한과 관련된 문법으로 특정 유저가 DB에 접근할 수 있는 권한을 설정할 때 사용합니다.

  • COMMIT
    • 데이터베이스의 작업이 정상적으로 완료되었음을 관리자에게 알려줄 때 사용합니다.
    • 💡 트랜잭션에 대한 개념을 알고 있다면 더욱 확실한 이해가 가능할거에요! 참고 자료
  • ROLLBACK
    • 데이터베이스의 작업이 비정상적으로 완료되었음을 관리자에게 알려줄 때 사용합니다.
    • 💡 트랜잭션에 대한 개념을 알고 있다면 더욱 확실한 이해가 가능할거에요! 참고 자료
  • GRANT
    • 데이터베이스의 특정한 유저에게 사용 권한을 부여할 때 사용합니다.
  • REVOKE
    • 데이터베이스의 특정한 유저에게 사용 권한을 취소할 때 사용합니다.

준비하기

  • VSCode에서 연결된 MySQL을 우클릭하여 New Query버튼을 누르고 새로운 Query 파일을 생성합니다.

주의
생성한 Query 파일은 MySQL을 우클릭한 기준으로 데이터베이스를 바라보고 있습니다. 즉, 자료와 같은 127.0.0.1을 우클릭하여 실행한 경우 No database selected 에러가 발생 할 수 있으니 생성한 데이터베이스를 기준으로 쿼리파일을 생성해주세요 !

데이터베이스 생성

CREATE DATABASE NodeJS;
  1. 테이블 생성
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)
);
  1. 데이터 삽입
INSERT INTO courses (title, tutor) VALUES
    ('Node.js 숙련반', '이용우'), ('웹개발 종합반', '이범규');
  1. 데이터 조회
SELECT * FROM courses;

음식 주문앱 DB 설계 예제

  1. 각 주체의 테이블 설계
  2. 연관 관계 고민
  • 회원 1명은 주문 N개를 할 수 있다.
    • 회원 : 주문 = 1 : N 관계
  • 음식 1개는 주문 N개에 포함될 수 있다.
    • 음식 : 주문 = 1 : N 관계
  • 결론적으로
    • 회원 : 음식 = N : N 관계
  1. ERD
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
);
profile
개발자가 되는 과정

0개의 댓글