정의: 전자적으로 체계적으로 저장된 데이터의 집합
설명: 데이터 그 자체를 의미하며, 파일이나 표 형태로 조직화되어 있음
예시: 회원 테이블, 주문 기록, 재고 목록
정의: 데이터베이스를 생성, 관리, 검색, 수정, 삭제하는 소프트웨어
설명: 데이터에 접근하고 조작할 수 있도록 API와 쿼리 언어(SQL 등)를 제공
예시: MySQL, PostgreSQL, Oracle DB, MongoDB
정의: 데이터베이스(DB) + DBMS + 이를 운용하는 하드웨어·소프트웨어 환경 전체
설명: DB와 DBMS를 모두 포함하는 더 넓은 개념. 실제 운영 환경까지 아우름
예시: 서버 하드웨어 + MySQL DBMS + 회사의 고객 데이터.
데이터베이스는 데이터 그 자체의 집합이고,
DBMS는 그 데이터를 생성·조회·수정·삭제할 수 있는 소프트웨어.
데이터베이스 시스템은 데이터베이스와 DBMS, 그리고 이를 구동하는 전체 환경을 통틀어 말함.
비유 : DB는 ‘책장 속 책’, DBMS는 ‘사서’, DB 시스템은 ‘도서관 전체’
정의: 가공되지 않은 사실이나 값, 관찰 결과.
특징: 그 자체로는 의미가 명확하지 않음.
예시:
정의: 데이터를 분석·정리·가공하여 의미를 부여한 결과
특징: 의사결정에 활용 가능
예시:
INSERT 문은 테이블에 새로운 데이터를 추가하는 명령어이다.
하나의 행을 추가할 수도 있고, 서브쿼리를 통해 여러 행을 삽입할 수도 있다.
문법
INSERT INTO 테이블명 (컬럼1, 컬럼2, ...)
VALUES (값1, 값2, ...);
예시
INSERT INTO book (BOOKNO, BOOKNAME, BOOKAUTHOR, BOOKPRICE, PUBNO, BOOKSTOCK)
VALUES (101, '데이터베이스 기초', '홍길동', 25000, 1, 10);



서브쿼리로 여러 행 삽입
INSERT INTO bestseller (BOOKNO, BOOKNAME, BOOKPRICE)
SELECT BOOKNO, BOOKNAME, BOOKPRICE
FROM book
WHERE BOOKPRICE >= 30000;
DELETE 문은 테이블의 데이터를 삭제하는 명령어이다.
조건절을 생략하면 모든 데이터가 삭제되므로 주의해야 한다.
문법
DELETE FROM 테이블명
WHERE 조건;
예시
DELETE FROM book
WHERE BOOKNO = 101;



UPDATE 문은 기존 데이터를 수정하는 명령어이다.
문법
UPDATE 테이블명
SET 컬럼1 = 값1, 컬럼2 = 값2, ...
WHERE 조건;
예시
UPDATE book
SET BOOKPRICE = 27000, BOOKSTOCK = BOOKSTOCK + 5
WHERE BOOKNAME = '자료구조';



SELECT 문은 데이터를 조회하는 명령어로, 조건, 정렬, 그룹화 등을 통해 원하는 데이터를 출력할 수 있다.
기본 문법
SELECT 컬럼1, 컬럼2, ...
FROM 테이블명
[WHERE 조건]
[GROUP BY 컬럼]
[HAVING 그룹조건]
[ORDER BY 컬럼 ASC|DESC];
예시 1 — 가격 순 내림차순, 동일 가격 시 저자 오름차순
SELECT BOOKNAME, BOOKAUTHOR, BOOKPRICE
FROM book
ORDER BY BOOKPRICE DESC, BOOKAUTHOR ASC;

예시 2 — 저자명에 '길동'이 포함된 도서의 총 재고 수량
SELECT SUM(BOOKSTOCK) AS "총 재고 수량"
FROM book
WHERE BOOKAUTHOR LIKE '%길동%';

예시 3 — '서울 출판사' 도서 중 최고가와 최저가
SELECT MAX(BOOKPRICE) AS "최고가", MIN(BOOKPRICE) AS "최저가"
FROM book
WHERE PUBNO = (SELECT PUBNO FROM publisher WHERE PUBNAME = '서울 출판사');

예시 4 — 출판사별 총 재고 수량과 평균 재고 수량 (총 재고 수량 내림차순)
SELECT SUM(BOOKSTOCK) AS "총 재고 수량", AVG(BOOKSTOCK) AS "평균 재고 수량"
FROM book
GROUP BY PUBNO
ORDER BY SUM(BOOKSTOCK) DESC;

예시 5 — 고객별 총 주문 수량, 총 주문 건수 (주문 건수 2 이상)
SELECT CLIENTNO, SUM(BSQTY) AS "총 주문 수량", COUNT(*) AS "총 주문 건수"
FROM booksale
GROUP BY CLIENTNO
HAVING COUNT(*) >= 2;

JOIN은 여러 테이블의 데이터를 연결하여 하나의 결과로 조회하는 기능이다.
두 테이블 이상에서 관련된 데이터를 한 번에 가져올 때 사용한다.
두 테이블에서 조건이 일치하는 데이터만 조회한다.
SELECT b.BOOKNAME, bs.bookno
FROM book b
INNER JOIN booksale bs
ON bs.bookno = b.bookno;

왼쪽 테이블의 모든 데이터와, 조건에 맞는 오른쪽 테이블의 데이터만 조회한다.
SELECT b.BOOKNAME, bs.bookno
FROM book b
LEFT OUTER JOIN booksale bs
ON bs.bookno = b.bookno;

오른쪽 테이블의 모든 데이터와, 조건에 맞는 왼쪽 테이블의 데이터만 조회한다.
SELECT b.BOOKNAME, p.PUBNAME
FROM book b
RIGHT JOIN publisher p
ON b.PUBNO = p.PUBNO
WHERE p.PUBNO=1;

두 테이블의 모든 데이터를 출력하고, 매칭되지 않는 경우 NULL을 채운다.
SELECT b.BOOKNAME, bs.bookno
FROM book b
FULL OUTER JOIN booksale bs
ON bs.bookno = b.bookno;

상관 서브쿼리는 외부 쿼리의 각 행에 대해 서브쿼리가 반복 실행되는 형태이다.
즉, 서브쿼리가 독립적으로 실행되지 않고, 외부 쿼리의 컬럼 값을 참조한다.
예시 — 각 도서보다 가격이 높은 도서 수
SELECT b1.BOOKNAME, b1.BOOKPRICE,
(SELECT COUNT(*)
FROM book b2
WHERE b2.BOOKPRICE > b1.BOOKPRICE) AS "더 비싼 도서 수"
FROM book b1;

예시 — 출판사별 최고가 도서
SELECT b1.BOOKNAME, b1.BOOKPRICE, b1.PUBNO
FROM book b1
WHERE b1.BOOKPRICE = (
SELECT MAX(b2.BOOKPRICE)
FROM book b2
WHERE b2.PUBNO = b1.PUBNO
);
INSERT → 새로운 데이터 추가DELETE → 데이터 삭제UPDATE → 데이터 수정SELECT → 데이터 조회 (정렬, 그룹화 가능)JOIN → 여러 테이블 결합