CREATE TABLE movies(
title,
released,
overview,
rating,
director
);
DROP TABLE movies;
INSERT INTO movies VALUES (
'The Godfather',
1980,
'The best movie',
10,
'FFC'
);
CREATE TABLE movies(
title,
released,
overview,
rating,
director
);
INSERT INTO movies VALUES ('The Godfather', 1980, 'The best movie', 10, 'FFC'),
('1984', 10, 'gooood', 10, 'don`t know');
INSERT INTO movies (title) VALUES ('Thor');
CREATE TABLE movies(
title TEXT,
released INTEGER, -- 1,2,3...
overview TEXT,
rating REAL, -- 1.2, 0.45
director TEXT,
for_kids INTEGER,-- 0이면 false, 1이면 true를 의미, 0,1외 다른 정수는 못들어오게 제약조건 설정해야 함.
image BLOB -- DB에 이미지를 저장할 때 사용
) STRICT; -- SQLite가 타입 검사를 해서 오류를 반환토록
CREATE TABLE movies(
title TEXT UNIQUE NOT NUll
released INTEGER NOT NUll -- 1,2,3...
overview TEXT NOT NUll,
rating REAL NOT NUll, -- 1.2, 0.45
director TEXT,
for_kids INTEGER,-- 0이면 false, 1이면 true를 의미, 0,1외 다른 정수는 못들어오게 제약조건 설정해야 함.
image BLOB -- DB에 이미지를 저장할 때 사용
) STRICT; -- SQLite가 타입 검사를 해서 오류를 반환토록
CREATE TABLE movies(
title TEXT UNIQUE NOT NUll
released INTEGER NOT NUll -- 1,2,3...
overview TEXT NOT NUll,
rating REAL NOT NUll, -- 1.2, 0.45
director TEXT,
for_kids INTEGER NOT NULL DEFAULT 0,-- 0이면 false, 1이면 true를 의미, 0,1외 다른 정수는 못들어오게 제약조건 설정해야 함.
image BLOB -- DB에 이미지를 저장할 때 사용
) STRICT; -- SQLite가 타입 검사를 해서 오류를 반환토록
CREATE TABLE movies(
title TEXT UNIQUE NOT NUll
released INTEGER NOT NUll -- 1,2,3...
overview TEXT NOT NUll,
rating REAL NOT NUll, -- 1.2, 0.45
director TEXT,
for_kids INTEGER NOT NULL DEFAULT 0 CHECK (for_kids = 0 OR for_kids = 1),-- 0이면 false, 1이면 true를 의미, 0,1외 다른 정수는 못들어오게 제약조건 설정해야 함.
image BLOB -- DB에 이미지를 저장할 때 사용
) STRICT;
for_kids INTEGER NOT NULL DEFAULT 0 CHECK (for_kids BETWEEN 0 AND 1);
CREATE TABLE movies(
title TEXT UNIQUE NOT NUll
released INTEGER NOT NUll CHECK (released > 0)
overview TEXT NOT NUll,
rating REAL NOT NUll CHECK (rating BETWEEN 0 AND 10),
director TEXT,
for_kids INTEGER NOT NULL DEFAULT 0 CHECK (for_kids = 0 OR for_kids = 1),
) STRICT;
overview TEXT NOT NUll CHECK (LENGTH(overview) < 100),
title TEXT PRIMARY KEY NOT NUll UNIQUE,
CREATE TABLE movies(
movie_id INTEGER PRIMARY KEY
title TEXT NOT NUll UNIQUE,
...
) STRICT;
CREATE TABLE movies(
movie_id INTEGER PRIMARY KEY AUTOINCREMENT,
...
) STRICT;
-- UPDATE
UPDATE movies SET rating = 10; -- movies 테이블의 모든 rating을 10으로 바꾸는 불상사 발생..
UPDATE movies SET rating = 10 WHERE title = 'The Lord of The Rings'; -- where를 사용해서 범위를 좁힐 수 있음
UPDATE movies SET rating + 2 WHERE title = 'The Lord of The Rings'; -- 이런 식으로 행의 값을 참조할 수도 있음
UPDATE movies SET director = 'Unkown' WHERE director IS NULL; -- director = NUll 이라고 하면 항상 false 값을 반환하므로 동작하지 않음..왜냐면 Null은 value가 아니기때문.
-- DELETE
DELETE FROM movies; -- movies테이블의 모든 행을 삭제해버림..
DELETE FROM movies WHERE movie_id = 2 AND director IS NULL; -- where 조건 확장도 가능
SELECT 1+1, 2+2, 'hello';
SELECT * FROM movies; -- movies 테이블의 모든 column을 선택.
SELECT title, rating FROM movies; -- movies 테이블(source table)에서 title, rating 행만 선택
-- SELECT Expressions
SELECT title, rating, UPPER(overview) FROM movies; -- overview 컬럼의 데이터를 모두 대문자로.
SELECT title, rating * 2, UPPER(overview) AS overview_alias FROM movies; -- overview 컬럼에 AS로 별칭 지정
SELECT REPLACE(title, ': Part One', 'I') AS title, rating * 2, UPPER(overview) AS overview_alias FROM movies; -- replace를 활용해서 기존 데이터 중 표현방식을 내가 원하는대로 수정,
-- upper나 replace와 같이 함수를 사용하게 되면 결과 column명이 그 함수식으로 그대로 출력되니 as를 활용해서 별칭을 지어줌.
-- WHERE 절
SELECT
*
FROM
movies
WHERE
-- 조건이나 predicate
-- 동등 조건
director = 'Guy Ritchie';
-- 같지 않다
director != 'Guy Ritchie';
original_language <> 'en';
-- 비교(논리 연산자)
release_date > 2023;
release_date < 2023;
-- null은 다른 null과 동일하지 않음.
revenue = NULL; -- 아무런 데이터도 반환하지 못함.
revenue IS NULL; -- 이게 맞는 표현
revenue IS NOT NULL; -- revenue가 NULL이 아닌 행들을 조회
-- 논리연산자를 사용하여 여러 조건을 함께 연결하면 where 조건을 더 강력하게 만들 수 있음
status = 'Planned' AND budget <> 0 AND budget IS NOT NULL -- status가 planned이고 budget이 0이 아니며, NULL이 아닌 것들을 조회
-- AND가 사용되었으므로 모든 조건들이 true여야 함.
-- 평점이 9점을 넘는 영화이거나 개봉일이 2024년보다 큰 영화를 조회
rating > 9 OR release_date > 2024;
-- OR 는 모든 조건이 true일 필요가 없이 둘 중 true인 것들을 조회함.
-- 중첩 조건
rating > 9 OR (rating IS NULL AND genres = 'Documentary')
-- 평점이 9이상이거나 평점이 null이 아니고 종류가 다큐멘터리인 영화를 조회
이 링크를 통해 구매하시면 제가 수익을 받을 수 있어요. 🤗