| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
- SQL
- docker network
- PHP
- 객체지향
- 디자인패턴
- SQL기초
- 매직메서드
- OOP
- mcp server
- 데코레이터패턴
- 인덱스
- mcp client
- Tool Calling
- PHP객체지향
- docker
- Laravel
- dhgrp
- MySQL
- 어댑터패턴
- 데이터베이스
- Agent Loop
- LLM
- 소프트웨어설계
- 객체복제
- linux 권한
- 라라벨
- ai agent
- ai 에이전트
- MCP
- SQL문법
- Today
- Total
목록STUDY/SQL (18)
개발블로그
개념 개념트랜잭션은 여러 SQL 작업을 하나의 작업 단위로 묶어서 처리하는 기능 (일부만 반영되는 상황을 막는다) EX] 사용 예시계좌이체 - 출금과 입금주문 처리 - 주문 생성, 재고 감소, 결제 기록회원 탈퇴 - 회원 상태 변경, 관련 데이터 처리예약 처리 - 예약 생성, 좌석 수 감소포인트 사용 - 포인트 차감, 사용 기록 생성 문법START TRANSACTION; -- 트랜잭션 시작SQL문1;SQL문2;SQL문3;COMMIT | ROLLBACK ; -- 작업 내용 최종 반영 | 작업 내용 취소하고 이전 상태로 복구명령어역할COMMIT트랜잭션에서 실행한 변경 내용을 최종 반영ROLLBACK트랜잭션에서 실행한 변경 내용을 모두 취소 트랜잭션의 특성 : ACID 구분영문의미원자성Atomicity작업..
VIEW의 기본 개념개념SELECT문의 내용을 데이터베이스에 이름과 함께 저장해 두고, 테이블처럼 조회할 수 있게 만든 객체복잡한 SELECT문 ↓ 이름을 붙여 저장 ↓ 테이블처럼 간단하게 조회 사용하는 이유복잡한 조회문을 단순하게 재사용하고, 조회 규칙을 통일하며, 필요한 데이터만 제한적으로 제공하기 위해 사용복잡한 조회문을 간단하게 사용할 수 있음같은 조회 규칙을 재사용 할 수 있음필요한 컬럼만 제공할 수 있음원본 테이블의 구조를 직접 노출하지 않을 수 있음자주 사용하는 집계 결과를 공통으로 제공할 수 있음 저장되는 것조회 결과 데이터가 별도로 복사되어 저장되는 것이 아니라주로 저장되는 것은 VIEW를 구성하는 SELECT문의 정의 따라서 원본 테이블의 데이터가 바뀌면 ..
개념각 행을 그대로 유지하면서, 여러 행을 함께 비교하거나 계산하는 함수 비교 : GROUP BY구분GROUP BY윈도우 함수행 개수여러 행이 하나로 합쳐질 수 있음원래 행을 유지개별 행 정보사라질 수 있음유지됨계산 결과그룹별 한 행각 행 옆에 표시주요 용도그룹별 요약순위, 누적 합계, 행 비교 문법윈도우_함수() OVER ( -- 원래 행을 유지하면서 계산 결과를 각 행 옆에 표시-- 어떤 행들을 기준으로 계산할지 정하는 부분 [PARTITION BY 그룹_컬럼] -- 같은 그룹_컬럼끼리 나누어 계산 [ORDER BY 정렬_컬럼] -- 정렬_컬럼 순서에 따라 누적해서 계산 ) EX] 회원별 주문 금액을 주문 순서대로 누적/**orders)| id | user_id | total_price..
개념개념조회 결과에 임시 이름을 붙여, 같은 SQL문 안에서 테이블처럼 사용하는 기능조회 결과 작성→ 결과에 임시 이름 지정→ 뒤의 SQL문에서 테이블처럼 사용 실제 테이블로 저장되는 것은 아니고, 작성한 SQL문이 실행되는 동안에만 사용할 수 있음. 사용 의의복잡한 조회 과정을 의미 있는 단계로 나눌 수 있음=> 복잡한 서브쿼리를 여러 단계로 중첩하는 대신, 각 조회 결과에 이름을 붙여 위에서부터 읽을 수 있다. EX]-- 원본 데이터 조회 → 필요한 데이터 필터링 → 집계 → 최종 결과 조회WITH 필터링_결과 AS ( SELECT 그룹_컬럼, 숫자_컬럼 FROM 테이블명 WHERE 조건),집계_결과 AS ( SELECT 그룹_컬럼, ..
개념 계산하거나 평가한 결과로 하나의 값을 반환ex) 컬럼명, 숫자_컬럼 * 수량_컬럼, 함수명(컬럼명), CASE ... END, COALESCE(컬럼명,기본값) 종류종류기본형태반환값 기본값을 나타내는 표현식 리터럴 표현식값직접 작성한 값컬럼 표현식컬럼명현재 행의 컬럼값 연산자로 구성한 표현식 산술 표현식표현식 산술연산자 표현식계산된 숫자값 비교 표현식 표현식 비교연산자 표현식조건 평가 결과 논리 표현식 조건 논리연산자 조건여러 조건의 평가 결과 함수·특수 문법으로 구성한 표현식 함수 호출함수명(표현식)함수가 처리한 값CASE 표현식CASE WHEN 조건1 THEN 결과값1 WHEN 조건2 THEN 결과값2 ... ELSE 기본_결과값 END-- 하나의 기준값을 비교CA..
개념 컬럼 구성이 같은 여러 SELECT문의 결과 행을 하나의 결과로 합치거나 비교하는 연산 문법SELECT 컬럼1 AS 결과_컬럼1, 컬럼2 AS 결과_컬럼2, ...FROM 첫_번째_테이블[WHERE 조건]집합_연산자SELECT 컬럼1, 컬럼2, ...FROM 두_번째_테이블[WHERE 조건][ORDER BY 결과_컬럼1] -- 전체 정렬시, 마지막 SELECT문에 ORDER BY를 한 번 작성 ;-- 최종 결과의 컬럼명 => 일반적으로 첫 번째 SELECT문의 컬럼명이나 별칭을 사용함-- 결과_컬럼1-- 결과_컬럼2 종류연산자결과UNION두 결과를 합치고 중복 행 제거UNION ALL두 결과를 합치고 중복 행 유지INTERSECT두 결과에 공통으로 존재하는 행E..
CREATE TABLE개념데이터베이스에 새로운 테이블을 생성할 때 사용하는 구문 문법CREATE TABLE [IF NOT EXISTS] 테이블명 ( -- 컬럼 정의를 쉼표로 구분 컬럼명1 자료형 [컬럼_제약조건 ...], 컬럼명2 자료형 [컬럼_제약조건 ...], ... 컬럼명N 자료형 [컬럼_제약조건 ...], -- 아래와 같이 제약조건 추가 가능 [테이블_제약조건1], [테이블_제약조건2], ... [테이블_제약조건N]);-- 조회 결과로 테이블 생성-- 기본키, 외래키, 인덱스, 기본값 등의 설정은 그대로 복사되지 않을 수 있으므로 별도 확인 필요CREATE TABLE 새로운_테이블명 ASSELECT 컬럼1, 컬럼2, ...FROM 원본..
INSERT개념테이블에 새로운 행을 추가할 때 사용하는 구문 문법-- 기본 문법 INSERT INTO 테이블명 ( 컬럼1, 컬럼2, 컬럼3)VALUES ( 값1, 값2, 값3);-- 여러 행 추가INSERT INTO 테이블명 ( 컬럼1, 컬럼2, 컬럼3)VALUES (첫_번째_행의_값1, 첫_번째_행의_값2, 첫_번째_행의_값3), (두_번째_행의_값1, 두_번째_행의_값2, 두_번째_행의_값3), (세_번째_행의_값1, 세_번째_행의_값2, 세_번째_행의_값3);-- 일부 컬럼만 입력 : 작성하지 않은 컬럼은 해당 컬럼의 설정에 따라 처리됨/**| 생략한 컬럼의 설정 | 처리 || ------------..
기본 개념개념다른 SQL 문 안에 포함된 SQL문 한 번의 조회만으로 필요한 조건값을 알 수 없을 때, 안쪽 SQL로 값을 구한 뒤 그 결과를 바깥쪽 SQL에서 사용 바깥쪽 SQL → 최종 데이터를 조회 => 메인쿼리안쪽 SQL → 바깥쪽 SQL에 필요한 값이나 데이터를 조회 => 서브쿼리 사용 이유다른 조회를 통해 조건값을 구해야 하는 경우 문법SELECT 조회할_컬럼FROM 테이블WHERE 컬럼 연산자 ( SELECT 조회할_컬럼 FROM 다른_테이블 WHERE 조건); 서브쿼리 결과의 형태서브쿼리 결과주로 사용하는 형태예시값 하나=, >, SELECT id, name, priceFROM productsWHERE price > ( SELECT AVG(price) FROM p..
JOIN의 기본 개념 개념서로 관련된 여러 테이블의 행을 연결하여 하나의 조회 결과로 만드는 구문 EX]users 회원정보 + orders 주문정보=> 두 테이블을 JOIN :주문 정보와 주문한 회원 정보를 함께 조회 문법SELECT 기준_별칭.컬럼, 연결_별칭.컬럼FROM 기준_테이블 AS 기준_별칭JOIN 연결할_테이블 AS 연결_별칭 ON 기준_별칭.연결_컬럼 = 연결_별칭.연결_컬럼; EX]usersidname1김개발2이개발 ordersiduser_idtotal_price101130000102150000103220000 SELECT o.id, u.name, o.total_priceFROM orders AS oJOIN users AS u ON u.id = o..