본문 바로가기
ETC/LEARN

SQL 실습 따라하기 01

by 아이엠제니 2024. 5. 6.

 


SQL전문가 정미나 유튜브
2024.05.04~05.05
https://youtube.com/playlist?list=PLyQR2NzLKOCa5UujnJIFR7wOVOD0lS6EB&si=O0HWWYcZSxqXCyk3

 

 

 

Chapter 1

STEP 1. 데이터베이스란?


  • 데이터베이스: 데이터를 저장하는 공간
  • SQL: 데이터를 다루는데 사용되는 언어

 

STEP 2. 테이블이란?


  • 테이블: entity
    • ID, PW, NAME, MOBILE, EMAIL
  • column (attribute)
  • row

 

 

 

Chapter 2

STEP 1. CREATE


  • VARCHAR
  • NUMBER
  • DATE

 

💡 초급

CREATE 테이블명 (
    컬럼1 데이터 타입(SIZE),
    컬럼2 데이터 타입(SIZE),
    ......
);

 

💡 중급

CREATE 테이블명 (
    컬럼1 데이터 타입(SIZE) NOT NULL,
    컬럼2 데티어 타입(SIZE DEFAULT '기본값',
    ......
);

 

💡 고급

CREATE 테이블명 (
    컬럼1 데이터 타입(SIZE) NOT NULL,
    컬럼2 데이터 타입(SIZE) DEFAULT '기본값',
    ......
);
CONSTRAINT PK명 PRIMARY KEY (PK컬럼명);
COMMENT ON TABLE 테이블명 IS '나의테이블';
COMMENT ON COLUMN 테이블명.컬럼1 IS '코멘트';

 

 

👉 실습

CREATE TABLE NETFLIX (
	VIDEO_NAME VARCHAR2(50),
	CATEGORY VARCHAR2(30),
	VIEW_CNT NUMBER(7),
	REG_DATE DATE
);

 

 

 

STEP 2. ALTER


-- 컬럼 추가
ALTER TABLE NETFLIX ADD (CAST_MEMBER VARCHAR2(20));

-- 컬럼 size 수정
ALTER TABLE NETFLIX MODIFY (CAST_MEMBER VARCHAR2(50));

-- 컬럼 type 변경
ALTER TABLE NETFLIX MODIFY (CAST_MEMBER NUMBER(2));

-- 컬럼 삭제
ALTER TABLE NETFLIX DROP (CAST_MEMBER);

 

컬럼 생성
컬럼 삭제

 

 

STEP 3. DROP / TRUNCATE


  • DROP TABLE: 테이블을 삭제
  • TRUNCATE TABLE: 테이블 초기화

 

👉 테스트 테이블 생성

CREATE TABLE CODELION (
	COL1 VARCHAR2(3),
	COL2 VARCHAR2(3)
);

SELECT * FROM CODELION;

INSERT INTO CODELION c VALUES('AAA','BBB');
INSERT INTO CODELION c VALUES('CCC','DDD');

COMMIT;

 

👉 DROP 테이블 실습

DROP TABLE CODELION ;

 

👉 TRUNCATE 테이블 실습

TRUNCATE TABLE CODELION ;

 

 

 

Chapter 3

STEP 1. INSERT


  • INSERT: 테이블에 데이터를 삽입

 

INSERT INTO NETFLIX VALUES('어게인 마이 라이프', '드라마', 50, SYSDATE);
INSERT INTO NETFLIX n (VIDEO_NAME, VIEW_CNT) VALUES ('시그널', 42);
INSERT INTO NETFLIX n VALUES ('멜로가 체질', '드라마',30, SYSDATE-30);
INSERT INTO NETFLIX n VALUES ('모범택시', '드라마', 30, SYSDATE-40);
INSERT INTO NETFLIX n VALUES ('낭만닥터 김사부', '드라마', 20, SYSDATE-300);

 

 

 

STEP 2. UPDATE


  • UPDATE: 데이터 변경

 

UPDATE NETFLIX SET VIEW_CNT = 70 WHERE VIDEO_NAME = '어게인 마이 라이프';

변경 전
변경 후

 

UPDATE NETFLIX SET CATEGORY='드라마', REG_DATE=TO_DATE('20210101','YYYYMMDD') WHERE VIDEO_NAME='시그널';

변경 전

 

변경 후

 

 

STEP 3. DELETE


  • DELETE : 데이터 삭제

 

👉 DELETE VS TRUNCATE 차이

  1. TRUNCATE가 모든 데이터를 날림. DELETE는 내가 원하는 데이터만 선택하여 삭제할 수 있음
  2. TRUNCATE는 한번 실행하면 되돌릴 수 없음. DELETE는 ROLLBACK을 이용하여 되돌릴 수 있음
  3. 모든 데이터를 삭제하는 경우, DELETE 보다는 TURNCATE가 빠름

 

DELETE FROM NETFLIX WHERE VIDEO_NAME = '낭만닥터 김사부';

삭제 전
삭제 후

 

DELETE FROM NETFLIX WHERE CATEGORY = '드라마' AND VIEW_CNT < 35;

삭제 전
삭제 후

 

DELETE FROM NETFLIX n WHERE VIDEO_NAME IN ('시그널','멜로가 체질');

삭제 전
삭제 후

 

DELETE FROM NETFLIX n ;

테이블 내 데이터 전체 삭제

 

 

STEP 4. SELECT


  • SELECT문: 데이터를 조회하는 쿼리

 

👉 전체 조회

SELECT * FROM NETFLIX n ;

SELECT VIDEO_NAME, CATEGORY, VIEW_CNT, REG_DATE FROM NETFLIX n ;

 

 

👉 equal 조건

SELECT * FROM NETFLIX WHERE VIDEO_NAME = '모범택시';

 

 

 

👉 VIDEO_NAME이 모범택시가 아닌 것 조회

SELECT * FROM NETFLIX WHERE NOT VIDEO_NAME ='모범택시';
SELECT * FROM NETFLIX WHERE VIDEO_NAME <> '모범택시';

 

👉 VIEW_CNT가 30인 것 조회

SELECT * FROM NETFLIX WHERE VIEW_CNT = 30;

 

 

👉 REG_DATE가 최근 한 달 이내인 데이터 출력 

SELECT * FROM NETFLIX WHERE REG_DATE > SYSDATE-30;

 

 

👉 중복되는 건을 하나로

적용 전

 

SELECT DISTINCT CATEGORY FROM NETFLIX;

DISTINCT 적용 후

 

 

STEP 5. WHERE(1)


  • WHERE: 쿼리문에 조건을 부여함

 

👉 조건 

SELECT * FROM NETFLIX WHERE CATEGORY = '애니메이션';

 

 

SELECT * FROM NETFLIX WHERE CATEGORY IN ('애니메이션', '영화');

 

 

SELECT * FROM NETFLIX WHERE CATEGORY NOT IN ('애니메이션', '영화');

 

 

👉 범위 조건

SELECT * FROM NETFLIX WHERE VIEW_CNT < 70;

 

 

SELECT * FROM NETFLIX WHERE VIEW_CNT <= 70;

 

 

SELECT * FROM NETFLIX WHERE REG_DATE < TO_DATE('20211231','YYYYMMDD');

 

 

STEP 6. WHERE(2)


  • 여러 조건

 

SELECT * FROM NETFLIX WHERE CATEGORY = '애니메이션' AND VIEW_CNT < 70;

 

 

SELECT * FROM NETFLIX WHERE CATEGORY = '애니메이션' AND REG_DATE < TO_DATE('20240401','YYYYMMDD');

 

 

SELECT * FROM NETFLIX WHERE CATEGORY='애니메이션' OR VIEW_CNT < 20;

 

 

SELECT * FROM NETFLIX WHERE CATEGORY = '애니메이션' OR CATEGORY = '영화';

 

 

👉 LIKE 조건

SELECT * FROM NETFLIX WHERE VIDEO_NAME LIKE '미%';

 

 

SELECT * FROM NETFLIX WHERE VIDEO_NAME LIKE '%구';

 

 

SELECT * FROM NETFLIX WHERE VIDEO_NAME LIKE '%의%';

 

SELECT * FROM NETFLIX WHERE VIEW_CNT >= 60  AND VIEW_CNT <= 70;
SELECT * FROM NETFLIX WHERE VIEW_CNT BETWEEN 60 AND 70;

 

 

STEP 7. ORDER BY


  • 데이터를 정렬시킴

 

SELECT * FROM NETFLIX WHERE CATEGORY = '드라마' ORDER BY REG_DATE ASC;

ASC 생략 가능

 

 

SELECT * FROM NETFLIX WHERE CATEGORY = '드라마' ORDER BY REG_DATE DESC;

 

 

STEP 8. GROUP BY


  • 데이터 그룹을 묶음
  • 그룹핑하는 이유는 집계를 하기 위해서

 

SELECT CATEGORY, COUNT(*) FROM NETFLIX GROUP BY CATEGORY;

 

 

SELECT CATEGORY, SUM(VIEW_CNT) FROM NETFLIX GROUP BY CATEGORY;

 

 

SELECT CATEGORY, MAX(VIEW_CNT) FROM NETFLIX GROUP BY CATEGORY;

 

 

SELECT CATEGORY, MAX(VIEW_CNT) FROM NETFLIX GROUP BY CATEGORY ORDER BY MAX(VIEW_CNT) DESC;

 

 

SELECT CATEGORY, MIN(VIEW_CNT) FROM NETFLIX GROUP BY CATEGORY;

 

 

SELECT CATEGORY, MAX(VIEW_CNT), MIN(VIEW_CNT) FROM NETFLIX GROUP BY CATEGORY;

 

 

SELECT CATEGORY, AVG(VIEW_CNT) FROM NETFLIX GROUP BY CATEGORY;

 

 

 

300x250