Database와 SQL의 차이
Table
대분류 테이블과 아이템 테이블
아이템 테이블의 “대분류_id” = 필드(FK)
아이템 테이블의 대분류_id가 → 대분류 테이블의 id를 참조
DDL(Data Definition Language)
데이터 정의어를 말한다.
테이블을 만들거나, 삭제하거나, 수정하는 명령어
-- 대분류 테이블 만들기
CREATE TABLE "대분류"(
id integer primary key,
이름 char(30),
);
-- 대분류 테이블 삭제하기
DROP TABLE "대분류";
DML(Data Manipulation Language)
데이터 조작어를 말한다.
데이터를 조회/삽입/삭제/수정 하는데에 사용한다.
-- 대분류 테이블의 데이터 모두 조회
SELECT * FROM "대분류";
-- 대분류 테이블의 데이터 중 id가 3번인것만 조회
SELECT * FROM "대분류" WHERE id=3;
-- 대분류 테이블에 6번 아이디로 프로그래밍언어 삽입
INSERT INTO "대분류"(
id, 이름
) VALUES (
6, 프로그래밍언어
)
-- 대분류 테이블의 데이터 중 id가 3번인것을 삭제
DELETE FROM "대분류" WHERE id=3;
-- 대분류 테이브르이 데이터 중 id가 3번인것의 이름을 마이크로 변경
UPDATE "대분류" SET 이름="마이크" WHERE id=3;
DCL(Data Control Language)
데이터베이스의 권한 설정 명렁어를 말한다.
옵션 : GRANT(권한제공), REVOKE(권한해제)
TCL(Transaction Control Language)
하나의 트랜잭션을 반영하기 위한 명령어를 말한다.
옵션 : COMMIT(작업결과 반영), ROLLBACK(마지막 커밋 전으로 복원)
-- 대분류 테이블에 6번 아이디로 프로그래밍 언어 삽입
INSERT INTO "대분류"(
id, 이름
) VALUES (
6, 프로그래밍언어
);
COMMIT; -- 적용
SQL의 기본 개념들은 조금씩 알고 있었지만, 생각보다 명령어를 정말 많이 잊어버린 게 실감됐던 강의였다.
학부때 데이터베이스라는 강의를 수강하면서 프로젝트도 진행했었는데..3개월간 정말 열심히 했었던 기억은 있는데 지식에 대한 기억을 깔끔히 증발된 것 같은 기분이다.
백엔드 개발을 할 때에도 JPA를 쓰거나 QueryDSL을 쓰다보니 쿼리를 안쓰게 되기도 하고 이 모든 것들을 쓰지 않는다고 해도 MySQL Workbench를 주로 사용하다보니 자동완성에 너무 익숙해져 버렸다.
이대로 두면 정말 잊어버릴 것 같으니..
책장에 고이 모셔둔 책을 다시 가져와서 개념부터 잘 채우고, 자꾸 쓰면서 다시 익혀야 할 것 같다!!