2025/04 9

#15 서브쿼리(Subquery)

목차서브쿼리(Subquery)서브쿼리는 말 그대로 메인이 아닌 보조(서브) 역할을 하는 쿼리를 뜻한다.즉, 하나의 메인 SQL문 안에 포함되어 실행되는 SELECT 문을 말한다.보통 메인 쿼리가 실행되기 전에서브쿼리가 먼저 실행되어 그 결과가 조건, 조회 값, 테이블처럼 사용된다.그래서 서브쿼리는 SELECT, FROM, WHERE, HAVING 절 등 다양한 위치에 들어갈 수 있다. 예를들어,SELECT nameFROM studentsWHERE score > (SELECT AVG(score) FROM students);→ 이때 괄호 안의 SELECT AVG(score)... 부분이 바로 서브쿼리이다.메인 쿼리는 이름을 가져오는 역할이고,서브쿼리는 평균 점수를 구해서 메인 쿼리의 조건으로 사용되는 것이다..

SQL/SQLD 2025.04.13

#14 JOIN

목차 JOINJOIN은 두 개 이상의 테이블을 특정 조건으로 연결하여,마치 하나의 테이블처럼 데이터를 조회하는 방법이다.현실에서 사용하는 데이터는 보통 하나의 테이블에 모든 정보를 담지 않는다.왜냐하면 데이터의 중복을 줄이고, 효율적으로 관리하기 위해 정규화라는 과정을 거치기 때문이다.정규화를 거치면 학생 정보, 수강 정보, 성적 정보처럼 논리적으로 나눠진 여러 테이블이 생기게 된다.그래서 우리가 데이터를 조회할 때는이렇게 분리된 테이블들을 연결(JOIN) 해서필요한 정보를 하나의 결과처럼 조합해서 사용하는 게 일반적이다.예를 들어 학생 테이블에는 학번, 이름, 생년월일이 있고,성적 테이블에는 학번, 과목명, 점수가 있을 때,학번을 기준으로 두 테이블을 JOIN하면각 학생의 이름과 과목별 점수를 한 번에..

SQL/SQLD 2025.04.13

#13 ORDER BY

목차ORDER BY 절ORDER BY는 SELECT 문의 결과를 정렬할 때 사용하는 절이다.  지정한 컬럼(또는 표현식)을 기준으로 오름차순(ASC) 또는 내림차순( DESC) 정렬이 가능하다.책에서는 뭐 논리적으로 맨 마지막으로 수행된다하는데 왜 말을 그렇게 어렵게 적는지 모르겠다. 그냥 결과 나오기 전에 정렬할 때 사용한다 하면 쉽게 이해가 더 가지 않을가 생각이 된다.뭐 논리적 순서상 마지막이라고 하는 이유는 SQL 문장은 우리가 위에서 아래로 작성하지만, DBMS는 논리적 실행 순서에 따라 밑에 처럼 처리한다.SELECTFROMWHEREGROUP BYHAVINGORDER BY ← ❗ 여기서 마지막 실제로 실행 순서를 보면 밑과 같다.SELECT -> 5FROM -> 1WHERE ..

SQL/SQLD 2025.04.13

#12 GROUP BY, HAVING 절

목차GROUP BYGROUP BY는 특정 컬럼의 값에 따라 데이터를 그룹으로 묶고, 각 그룹에 대해 집계 함수(Aggregate Function)를 적용할 때 사용된다."같은 값끼리 묶고 -> 집계(합계, 평균, 개수 등)하자"는 개념으로 이해하자 집계 함수함수의미COUNT(*)테이블 전체 행(Row) 수를 반환* NULL 포함 모든 행 계산 COUNT(컬럼)해당 컬럼의 NULL이 아닌 행만 세어서 반환COUNT(DISTINCT 컬럼)해당 컬러멩서 중복을 제거와 NULL을 제외한 개수 반환SUM(컬럼)해당 컬럼 값들의 합계를 반환AVG(컬럼)해당 컬럼 값들의 평균값을 반환MIN(컬럼)해당 컬럼 값들 중 최소값을 반환MAX(컬럼)해당 컬럼 값들 중 최대값을 반환SUM, AVG, MIN, MAX는 숫자형 컬..

SQL/SQLD 2025.04.13

#11 WHERE 절

목차WHERE 절WHERE 절은 테이블에서 조건에 맞는 행(row)만 필터링하는 구문이다.SELECT, UPDATE, DELETE 문에서 사용되며, 조건을 만족하는 데이터만 결과에 포함되거나, 수정 또는 삭제 대상으로 지정된다. ✅ 기본 문법SELECT 컬럼명FROM 테이블명WHERE 조건; ✅ 사용 가능한 조건 종류비교 연산자조건 유형예시설명비교 연산자=, !=, >, =, 숫자, 문자열, 날짜 비교논리 연산자AND, OR, NOT조건 여러 개 조합범위 조건BETWEEN a AND ba 이상 b 이하 범휘집합 조건IN(a, b, c)여러 값 중 하나 포함 여부패턴 조건LIKE '%abc%'문자열 패턴 검색NULL 조건IS NULL, IS NOT NULL값 존재 여부 판단 ✅ WHERE 예제 모음-- 1..

SQL/SQLD 2025.04.10

#10 함수

목차함수수학에서 함수는 다음과 같이 표현할 수 있다.:f(x) = 3x + 2이 식에서 x에 1을 넣으면 결과는 5가 된다.즉, 입력(input)이 주어졌을 때 고정된 방식으로 결과(output)이 결정되는 것이 함수의 핵심이다.프로그래밍에서도 함수는 입력값에 따라 결과값을 반환하는 구조이며, SQL에서도 이와 비슷한 개념의 내장 함수들이 존재한다. SQL 함수란?SQL에서의 함수는 컬럼 값이나 표현식을 입력으로 받아, 그에 따른 결과를 반환하는 도구이다.SQL 함수는 데이터를 조회하거나 가공할 때 자주 사용되며, 특정 조건이나 형식에 따라 결과를 다르게 만들 수 있다. 대표적으로 UPPER(), LOWER(), CONCAT(), SUBSTRING()등이 있다.문자 함수CHR(ASCII코드)/ CHAR(..

SQL/SQLD 2025.04.10

#9 SQL

목차데이터베이스우리가 살아가는 세상에는 상상할 수 없을 만큼 방대한 양의 데이터가 존재하며, 지금 이 순간에도 끊임없이 새로운 데이터가 생겨나고 있다.예를들어, 아침마다 타는 지하철이 몇 시 몇 분에 어느역으로 도착하는지, 오늘 학교 식당의 메뉴는 무엇인지 같은 정보들도 모두 데이터다.이처럼 일상 속에서 생성되는 수많은 정보들을 효율적으로 저장하고 관리하는 공간이 바로 데이터베이스이다. 관계형 데이터베이스 (RDB: Relational Database)모든 데이터를 행(Row)과 열(Column)로 이루어진 테이블(Table) 형태로 저장하는 방식을 말한다.서로 다른 테이블끼리도 관계(Relation)를 맺어 데이터를 조합해서 활용이 가능하다. 이러한 RDB를 관리, 감독하기 위한 시스템을 RDBMS(R..

SQL/SQLD 2025.04.07

#8 트랜잭션과 NULL

목차트랜잭션(Transaction)트랜잭션은 데이터베이스에서 하나의 작업 단위를 말한다.여러 개의 데이터 처리 작업들을 하나로 묶어서, 전부 성공하거나 실패하도록 만드는 것이다. 왜 트랜잭션이 필요할까?데이터베이스는 정합성과 일관성을 지켜야 한다.하지만 여러 작업을 하다가 중간에 실패하면 데이터가 꼬일 수 있다. 예를 들어:은행계좌 이체 로직- "A 계좌에서 10만 원 출금"-"B 계좌에 10만원 입금" 이 둘은 항상 함께 이루어져야 한다. 하지만 출금은 됐는데 입금이 실패한다면?...-> 돈이 사라진다이는 정합성 붕괴를 말하며, 이를 방지하기 위해 트랜잭션이 필요하다. 트랜잭션의 특징A- 원자성 (Atomicity) : 트랜잭션은 전부 실행되거나 전혀 실행되지 않아야 한다.C- 일관성 (Consiste..

SQL/SQLD 2025.04.07

#7 반정규화(De-Normalization)

목차  반정규화데이터의 조회 성능을 향상시키기 위해 데이터의 중복을 허용하거나 데이터를 그룹핑하는 과정이다.반정규화 과정은 거치면 조회 성능은 향상될 수 있으나 입력, 수정, 삭제 성능은 저하될 수 있으며 데이터 정합성 이슈가 발생할 수 있다는 점이다. 정합성(整合性, Data Integrity)데이터가 일관성 있고, 정확하며 신뢰할 수 있는 상태를 유지하는 것을 말한다.즉, 데이터베이스에 저장된 데이터들이 논리적으로 모순 없이 서로 잘 들어맞고, 데이터의 상태가 시스템이 기대하는 규칙과 조건들을 잘 만족하고 있다는 뜻이다.만약 정합성이 무너진다면???- 고객의 계좌 잔액이 실제보다 더 많거나 적게 표시됨.- 주문 내역은 있는데 사용자 정보가 없음.- 중복 데이터, 누락된 데이터 발생.- 잘못된 통계를 ..

SQL/SQLD 2025.04.06
728x90