전체 글119 [SQL] Foreign Keys: Data Normalization / ON DELETE / One-To-Many / Many-To-Many Database Normalization(데이터베이스 정규화)의 목적 1. 데이터 중복 제거 (Redundancy Reduction): 같은 데이터가 여러 테이블에 중복 저장되지 않도록 방지2. 데이터 무결성 유지 (Integrity Preservation): 한 곳에서 데이터를 수정하면 모든 관련 데이터가 자동으로 반영되도록 함3. 이상(Anomaly) 방지 - 삽입 이상 (Insertion Anomaly): 불필요한 데이터를 추가해야만 원하는 데이터를 삽입할 수 있는 문제 - 삭제 이상 (Deletion Anomaly): 불필요한 데이터가 함께 삭제되는 문제 - 갱신 이상 (Update Anomaly): 데이터를 변경할 때 모든 중복된 데이터를 일일이 수정해야 하는 문제4. 데이터 저장 공간 .. 2025. 2. 20. [SQL] MySQL Beekeeper Studio -> MySQL 연결하기 Beekeeper Studio에서 File > New Window > New Connection Type:MySQL> Host에 연결된 MySQL 워크벤치의 호스트 입력 > MySQL의 User, Password 입력 > Default Database에 테이블 명 입력 > Connect MySQL 데이터 타입 MySQL 데이터 타입은 숫자, 문자열, 날짜/시간, JSON, BLOB으로 분류 가능 - 정수: TINYINT ~ BIGINT- 소수점 숫자: FLOAT, DECIMAL - 문자열: VARCHAR가 가변 길이, TEXT는 대용량 데이터 저장- 날짜와 시간은 DATE, DATETIME, TIMESTAMP를 필요에 따라 선택- JSON 데이터를.. 2025. 2. 10. [SQLite] INDEX - INDEX가 작동하는 방법 - 데이터베이스가 데이터를 저장하는 방법 - INDEX 잘 사용하기: 사용해야 할 때와 사용하지 말아야 할 때 Table Scan : 데이터베이스가 검색을 위해 한 행씩 찾아보는 것 Query Plan: 내부적으로 어떤 방법을 사용하여 데이터를 검색하는지 rowid- SQLite에서 데이터별로(by row) 자동으로 부여하는 고유 식별자(내부 칼럼) - 별도로 생성하지 않아도 저절로 만들어진다 - rowid를 사용하면 조회 속도가 빠르다 - MySQL: 'primary key가 없거나 AND 테이블에 unique column이 없는 경우' 생성된다 SQLite에서처럼 사용할 수는 없다(내부용으로만) SQLite의 INDEX- 검색 속도 향상을 위한 자료구조. 더 빨리.. 2025. 2. 10. [SQL] SUBQUERIES and CTEs Independent Subquery- 실행할 때마다 같은 값을 출력 - 그 값을 기억해뒀다가 반복해서 출력함(계산은 1번만 실행) cf) Correlated Subquery: 실행 위치에 따라 출력값이 달라짐 ex. 영화 전체의 평균: Independent Subquery 그 해(year)의 평균: Correlated Subquery -- 전체 영화들 중 평점이나 수익이 평균보다 높은 영화의 리스트 구하기 SELECT title FROM movies WHERE rating > AVG(rating);--- !!!에러에러!!! SELECT title, rating, (SELECT AVG(rating) FROM movies) AS avg_rating FROM movies WHERE ratin.. 2025. 2. 10. [SQL] DATA MANIPULATION LANGUAGE SELECT director, AVG(rating) AS avg_rating FROM movies WHERE rating IS NOT NULL AND director IS NOT NULL GROUP BY director HAVING COUNT(*) >= 5 ORDER BY avg_rating DESC;-- 작품이 5개 이상인 감독들을 평균 rating 순으로 정렬 SELECT genres, COUNT(*) AS number_of_movies FROM movies GROUP BY genres ORDER BY number_of_movies DESC;-- 각 장르에 몇 편의 영화가 있는지 SELECT COUNT(*) AS higher_than_six FROM movies WHERE rating.. 2025. 2. 6. [SQL] DATA DEFINITION LANGUAGE Data Definition Language: SQL의 하위언어 중 하나. 데이터베이스의 구조를 변경하는 명령어(데이터 조작이 X) ex. CREATE, ALTER, DROP, TRUNCATE 등 CREATE TABLE INSERT INTO(데이터 넣기) 데이터 타입 지정하여 테이블 생성 W/constraints - 조건이 더 많이 필요: rating, for_kids에 음수 입력 등이 가능 CHECK Constraint: 나만의 로직 만들기 원하는 조건을 추가 movie_id: surrogate primary key 생성(AUTOINCREMENT: 사용했던 id를 재사용 X) released: 양수 overview: 글자 길이 100 이하 rating: 0~10 범위.. 2025. 2. 4. 이전 1 2 3 4 5 6 ··· 20 다음