본문 바로가기

SQL20

[SQL] Functions and Procedures 자주 사용하는 작업을 수행하는 SQL 구문을 세트로 capsulize -> 나중에 필요할 때 호출해서 사용가능! 코드를 반복해서 작성할 필요가 없다  Function: 결과값을 반환하는 경우 Procedure: 결과값 반환 없이 데이터 변경을 수행하는 경우 Function - 연산 후 하나의 값(value)을 반환- 데이터베이스 값을 변경할 필요가 없는 경우 - SELECT 구문 내에서 사용 가능 ex) 고객의 나이를 계산하는 함수 -- 함수 만들기 CREATE FUNCTION hello_world() -- 'hello_world'라는 함수 생성 RETURNS TEXT AS $$ SELECT 'hello world'; -- 'hello world' 문자열을 반환$$ LANGUAGE S.. 2025. 3. 9.
[SQL] PostgreSQL PostgreSQL의 데이터 타입 기본 타입 TEXT, VARCHAR...  사용자 정의 타입 ex) gender_type  TOAST (The Oversized-Attribute Storage Technique)- 긴 데이터(Large Object)를 효율적으로 저장하기 위한 기술 - 기본적으로 압축을 사용하여 공간을 절약 - 긴 내용이 들어가는 경우 'TEXT' 타입으로 선언 -> 데이터베이스가 알아서 압축 or 별도의 테이블로 이동  CREATE TYPE gender_type AS ENUM ('male', 'female'); -- 타입을 먼저 선언 CREATE TABLE users ( username CHAR(10) NOT NULL UNIQUE, -- ex) 'dodo'를 입력하면 나머지 6칸은.. 2025. 3. 7.
[SQL] FULLTEXT INDEX FULLTEXT INDEX- 텍스트 검색을 빠르게 수행하기 위해 사용되는 특수 인덱스 - 일반적으로 긴 텍스트에서 특정 단어를 검색할 때 성능이 크게 향상 - 자연어(Natural Language) 검색 가능Natural Language SearchLIKE: 단순 검색FULLTEXT INDEX: 연관도 반영한 검색 CREATE FULLTEXT INDEX idx_overview ON movies (overview); -- movies 테이블의 overview 칼럼에 대해 FULLTEXT INDEX를 생성('idx_overview') -- overview 전체 내용을 인덱싱SELECT title, overview FROM movies WHERE MATCH(overview) AGAINST ('the foo.. 2025. 3. 3.
[SQL] 자동실행 기능: Events / Triggers Event 데이터베이스가 해야 할 작업들을 스케줄링(일정한 주기로 자동으로 실행) 미래의 특정 시간에 실행 ex) 매주 수요일 오후 3시에 특정 조건에 해당되는 row를 삭제 CREATE EVENT event_name ON SCHEDULE EVERY 1 DAY - 매일 1번씩 실행 DO DELETE FROM logs WHERE created_at CREATE EVENT backup_eventON SCHEDULE EVERY 1 DAY STARTS TIMESTAMP(CURRENT_DATE, '00:00:00')DO INSERT INTO backup_table SELECT * FROM main_table;-- 매일 자정에 main_table을 backup_table로 복사(백업) CREATE .. 2025. 3. 3.
[SQL] Normalization / Union - 데이터의 중복을 최소화하고 데이터의 일관성을 유지하기 위해 데이터를 구조화하는 과정- 주로 새로운 테이블을 만들거나 기존 테이블을 분리 예) Join: 두 테이블을 수평으로 연결(확장) Union: 두 테이블을 수직으로 연결(stack up)       여러 테이블에서 같은 형식의 데이터를 가져와 하나의 결과로 만들 때 2025. 2. 24.
[SQL] JOIN JOIN: 여러 테이블에서 동시에 데이터 가져오기  Cross Join실제 사용 많지 않음 ex. dogs와 owners 사이의 모든 조합을 알아보고 싶을 때 SELECT * FROM dogs CROSS JOIN owners;-- dogs 테이블과 owners 테이블의 모든 행을 결합하여 결과를 반환-- dogs 테이블의 각 행은 owners 테이블의 모든 행과 한 번씩 결합   Inner Join 가장 많이 사용 어떤 row 끼리 연결시킬지 선택할 수 있음 ex. 각 dog가 실제 owner, breed와 연결       owner, breed가 없는 강아지는 제외하고 반환  SELECT dogs.name AS dog_name, owners.name AS owner_name, breeds.name AS.. 2025. 2. 23.