본문 바로가기

분류 전체보기

JOIN 테이블이 만들어 지는 순서 이 SQL 문에서 조인과 WHERE 절의 필터링 순서는 데이터베이스의 쿼리 최적화 엔진에 의해 결정되지만, 일반적인 SQL 실행 순서를 기준으로 예제 SQL문을 가지고 설명할게.select e.id,e.name,e.position from company.employee as e,company.project as pwhere p.id=2002 and p.leader_id=e.id; 🔍 SQL 실행 순서SQL의 논리적 실행 순서는 다음과 같아:FROM 절: 테이블을 결정 (company.employee, company.project)WHERE 절: 필터링 수행SELECT 절: 필요한 컬럼 선택✨ 이 쿼리에서 실행 순서 분석1. FROM 절 (명시적 조인이 아닌 암시적 조인)FROM company.emplo.. 더보기
JOIN 테이블에 대한 UPDATE문 동작 원리 1. 예제 테이블 준비employees (직원 정보) 테이블id name salary1홍길동500만원2김철수550만원3이영희600만원projects (프로젝트 정보) 테이블project_id employee_id status1011진행 중1021진행 중1032진행 중1043완료됨위 테이블에서 employees와 projects를 JOIN해서 진행 중(status = '진행 중')인 직원들의 급여를 100만 원 올리는 UPDATE 쿼리를 실행한다고 해보자.2. 문제의 쿼리UPDATE employees eJOIN projects p ON e.id = p.employee_idSET e.salary = e.salary + 100000WHERE p.status = '진행 중';이 UPDATE 문이 실행되면 JOI.. 더보기
create database vs create schema CREATE DATABASE와 CREATE SCHEMA의 차이점은 데이터베이스 시스템에 따라 다르게 적용됩니다.1️⃣ 일반적인 차이점구분 CREATE DATABASE vs CREATE SCHEMA개념물리적인 데이터베이스 생성논리적인 네임스페이스(스키마) 생성사용 목적새로운 데이터베이스를 만들 때기존 데이터베이스 내에서 논리적인 그룹을 만들 때적용 범위독립적인 데이터베이스 단위하나의 데이터베이스 내에서 관리권한새로운 데이터베이스를 만들 수 있는 권한 필요현재 사용 중인 데이터베이스 내에서 사용 가H2 데이터베이스에서는?H2에서는 CREATE DATABASE 명령을 지원하지 않습니다.스키마를 생성하여 데이터베이스처럼 사용CREATE SCHEMA company;SET SCHEMA company;CREATE T.. 더보기
SQL은 tuple의 중복을 허락한다! 엥??? relational data model에서의 implicit constraints에서 분명히 "tuple"은 중복을 허락하지 않는다고 하였는디??일단 SQL이 어떻게 tuple의 중복을 허락하는 지 예시로 살펴보자. 📌 예제아래 예제는 동일한 데이터를 여러 번 삽입하고, 중복이 허용되는지를 확인하는 것입니다.1️⃣ 테이블 생성CREATE TABLE employees ( id INT, // 이 column을 Pk로 명시적 설정하지 않음을 기억하자 name VARCHAR(50), department VARCHAR(50));2️⃣ 중복 데이터 삽입INSERT INTO employees (id, name, department) VALUES (1, 'Alice', 'HR');INSER.. 더보기
constraints(Feat. implicit constraints,explicit constraints) constraints : relational database의 relation들이 항상/무조건 지켜줘야 하는 제약사항. constraints는 크게 implicit constraints(내포된/묵시적 제약사항)와 explicit constraints(명시적 제약사항)로 나뉜다. implicit constraintsrelational data model 자체가 가지는 constraints로써 아래 2가지 예시가 있다. 1] relation은 중복되는 tuple을 가질 수 없다. 2] relation 내에 같은 이름의 attribute를 가질 수 없다.  explicit constraints( schema-based constraints )주로 DDL을 통해 Schema에 직접 명시할 수 있는 constra.. 더보기
key(Feat. superKey, candidate key, foreign key) super key : relation에서 tuple을 unique하게 식별할 수 있는 attribute SET . candidate key : super key 중 어느 한 attribute라도 제거하면 unique하게 tuple을 식별할 수 있는 attribute set. primary key : candidate key 중 실제로 선택된 key. unique key(alternative key) : primary key가 아닌 candidate key.foreign key : 다른 relation의 Primary Key를 참조하는 attribute Set 더보기
DB에서 NULL은 되도록 사용하지 말자 결론부터 말하면"NULL은 여러 의미로 해석될 수 있기 때문에 사용을 되도록 하지 말아야 한다"(개인적인 생각이지만 만약 NULL을 사용한다면 프로젝트 개발자들과 NULL의 용도를 1개로 통일해서 사용해야 함)-> 아래에서 위 내용을 자세히 알아보자. DB에서 NULL의 의미1. 값이 존재하지 않는다. 2. 값이 존재하지만 아직 그 값이 무엇인지 알지 못한다(업데이트가 안 된 상항)3. 해당 사항과 관련 없다. -> 아래의 예시를 통해 NULL의 문제점을 알아 보자.  toeic_score=NULL의 의미는 과연 무엇일까?1. 토익을 안 쳐서 점수가 없는 경우2. 토익을 쳤지만 아직 점수 발표가 안 난 경우3. 해당 학생은 토익과는 전혀 관련이 없는 경우-> 위와 같이 여러 해석이 존재하기에 어떤 용도로.. 더보기
RDBMS(Feat. 관계형 데이터베이스, relation, set, list etc) 관계형 DB, 즉 "Relational" DB의 Relation은 수학에서의 Relation에서 유래함Relation in Mathematics의 2가지 정의1] subset of Catesian Product2] set of tuples-> 위 내용을 아래에서 자세히 알아 보자.  setset : 중복 없는 elements를 가지는 collection이며, 순서는 중요하지 않다. e.g.{1,3,4,5} == {1,5,4,3}Cartesian Product Catesian Procut의 수학적 표기 : X_1 x  X_2 x .... X_n = {(x_1,x_2,...x_n) | x_1 -> Set X_1,Set X_2,Set X_n, 즉 n개의 Set에서 하나씩의 elements를 골라 만들 수 있는.. 더보기