[Beyond SW] 20250924

이경민·2025년 9월 24일

한화시스템 Beyond SW

목록 보기
9/40

복습

database 설치 -> 계정생성
-> root -> swcamp - 권한부여

select 조회

SELECT
		컬럼명
FROM 테이블명;
ORDER BY 순서 ASC(오름차순, default)
			 DESC(내림차순)
SELECT
           컬럼명
        ,  컬럼명
        ....            (3)
    FROM 테이블명    (1)
  WHERE 컬럼명 (조건식) 값 (2)
  ORDER BY 컬럼명 ASC(DESC), ...;(4)

Database 실습

-- 1. 'ott_admin'이라는 이름의 사용자를 생성. 
CREATE USER 'ott_admin'@'%' IDENTIFIED BY 'admin';


-- 2. 'ott_admin' 사용자에게 'ott_platform' 데이터베이스에 대한 모든 권한을 부여합니다.
GRANT ALL PRIVILEGES ON ott_platform.* TO 'ott_admin'@'localhost';


-- 3. 변경된 권한을 즉시 시스템에 적용합니다.
FLUSH PRIVILEGES;


-- 데이터베이스가 존재하지 않으면 생성 (필요에 따라 사용)
CREATE DATABASE IF NOT EXISTS ott_platform CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 생성한 데이터베이스 사용
USE ott_platform;

-- 1. 사용자(Users) 테이블
-- 데이터베이스가 존재하지 않으면 생성 (필요에 따라 사용)
CREATE DATABASE IF NOT EXISTS ott_platform CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 생성한 데이터베이스 사용
USE ott_platform;

-- 1. 사용자(users) 테이블
CREATE TABLE users (
    user_id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(100) NOT NULL UNIQUE,
    registration_date DATETIME DEFAULT CURRENT_TIMESTAMP,
    country VARCHAR(50)
) ENGINE=InnoDB;

-- 2. 크리에이터/채널(creators) 테이블
CREATE TABLE creators (
    creator_id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL UNIQUE,
    channel_name VARCHAR(100) NOT NULL,
    channel_description TEXT,
    creation_date DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(user_id)
) ENGINE=InnoDB;

-- 3. 비디오(videos) 테이블
CREATE TABLE videos (
    video_id INT AUTO_INCREMENT PRIMARY KEY,
    creator_id INT NOT NULL,
    title VARCHAR(255) NOT NULL,
    description TEXT,
    category VARCHAR(50),
    duration_seconds INT,
    upload_date DATETIME DEFAULT CURRENT_TIMESTAMP,
    view_count BIGINT DEFAULT 0,
    FOREIGN KEY (creator_id) REFERENCES creators(creator_id)
) ENGINE=InnoDB;

-- 4. 구독(subscriptions) 테이블
CREATE TABLE subscriptions (
    subscription_id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    creator_id INT NOT NULL,
    subscription_date DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(user_id),
    FOREIGN KEY (creator_id) REFERENCES creators(creator_id),
    UNIQUE KEY user_creator_unique (user_id, creator_id)
) ENGINE=InnoDB;

-- 5. 시청 기록(watch_histories) 테이블
CREATE TABLE watch_histories (
    history_id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    video_id INT NOT NULL,
    watch_datetime DATETIME DEFAULT CURRENT_TIMESTAMP,
    watched_seconds INT,
    FOREIGN KEY (user_id) REFERENCES users(user_id),
    FOREIGN KEY (video_id) REFERENCES videos(video_id)
) ENGINE=InnoDB;

-- 6. 좋아요(video_likes) 테이블
CREATE TABLE video_likes (
    like_id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    video_id INT NOT NULL,
    like_datetime DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(user_id),
    FOREIGN KEY (video_id) REFERENCES videos(video_id),
    UNIQUE KEY user_video_unique (user_id, video_id)
) ENGINE=InnoDB;

🧐헷갈리는 개념

LIMIT : 조회 결과의 행 수를 제한할 때 사용

SELECT 컬럼명
FROM 테이블명
LIMIT N;

N : 최대 몇 건까지만 가져올지 지정
예) LIMIT 5 → 결과의 앞에서 5건만 가져옴

SELECT 컬럼명
FROM 테이블명
LIMIT 20, 10;

20 : OFFSET (앞에서 20개 건너뛰기)
10 : LIMIT (그 뒤로 10개 가져오기)
즉, 21번째부터 30번째까지 가져오기

0개의 댓글