SQL 26

#26 DCL

목차DCL(Data Control Language) - 데이터 제어어DCL은 사용자에게 데이터베이스에 대한 권한을 부여하거나 회수하는 SQL 명령어다.즉, 누가 어떤 테이블을 보고, 수정하고, 삭제할 수 있는지를 제어하는 명령어들이며, DB 보안과 접근 권한 관리에서 중요하다. 실무에서는 DBA나 보안 담당자가 자주 사용하는 영역이며, DML/DDL을 누가 할 수 있는지 설정하는 것이라고 이해하면 쉽다.회사로 따지면,CREATE USER는 직원 채용GRANT는 사무실 출입카드 부여REVOKE는 퇴사 시 출입카드 회수이런 개념이다.CREATE USER - 사용자 생성CREATE USER ugi IDENTIFIED BY pw01234; 설명: 새 사용자를 생성하고 로그인 비밀번호를 설정기본적으로 아무 권한도..

SQL/SQLD 2025.04.17

#25 DDL

목차✅ DDL (Data Definition Language) – 데이터 정의어DDL은 테이블, 컬럼, 인덱스, 제약조건 등 데이터 구조 자체를 정의하거나 변경하는 SQL 명령어 모음이다.명령어설명예시CREATE테이블, 뷰, 인덱스, 사용자 등을 생성CREATE TABLE, CREATE VIEW 등ALTER기존 객체(테이블 등)의 구조 변경컬럼 추가, 수정, 삭제 등DROP객체 삭제 (테이블, 뷰, 인덱스 등)DROP TABLE students;TRUNCATE데이터만 전부 삭제하고 구조는 유지TRUNCATE TABLE students;RENAME객체 이름 변경RENAME old_name TO new_name;COMMENT테이블이나 컬럼에 설명 주석 추가COMMENT ON COLUMN students.na..

SQL/SQLD 2025.04.16

#24 TCL

목차✅ TCL (Transaction Control Language) – 트랜잭션 제어어TCL은 말 그대로 트랜잭션을 제어하는 SQL 명령어 모음이다.즉, 데이터 조작 작업(INSERT, UPDATE, DELETE 등)을 확정(commit)하거나 취소(rollback)하거나, 중간 저장점(savepoint)을 관리할 수 있다.✅트랜잭션이란?데이터베이스에서 하나의 논리적 작업 단위로 묶인 연산들을 의미한다.예를들어 "A 계좌에서 10만 원 출금 → B 계좌로 입금"은 하나의 트랜잭션이다.출금만 되고 입금이 안되거나 출금은 되지 않았는데 입금이 된다면 상상만해도 끔찍하다..즉, 출금 → 입금은 반드시 모두 성공하거나, 전부 실패해야 하는 하나의 묶음인 것. 원자성트랜잭션으로 묶인 작업은 모두 성공하거나 모두..

SQL/SQLD 2025.04.16

#23 DML

목차DML(Data Manipulation Language)DML은 데이터를 "조회하고, 추가하고, 수정하고, 삭제"하는 데 사용하는 SQL 명령어야.즉, 테이블 안의 데이터를 조작하는 모든 작업을 담당한다. 📌 DML 종류명령어설명SELECT테이블에서 데이터 조회INSERT새 데이터 삽입UPDATE기존 데이터를 수정DELETE기존 데이터를 삭제MERGE존재하면 UPDATE, 없으면 INSERT (조건부 조작)사실 DML에 CALL, EXPLAIN PLAN, LOCK TABLE도 있다...SELECT - 데이터 조회모두가 처음 DB를 배울 때 가장 쉽게 이해가 가능한 DML이다..SELECT: 조회할 컬럼 지정FROM: 테이블 지정WHERE: 조건ORDER BY: 정렬 기준INSERT - 데이터 삽입..

SQL/SQLD 2025.04.15

#22 계층 쿼리

목차계층 쿼리란계층 쿼리는 자기 자신을 부모/자식으로 참조하는 트리 구조를 탐색할 때 사용하는 쿼리다.예를 들어 회사의 조직도(CEO → 팀장 → 사원), 댓글의 답글 구조, 분류체계 등**"상위-하위 관계를 가진 데이터"**에서 필수적으로 사용됨. employeesidnamepositionmanager_id1철수CEONULL2영희CTO13민수팀장24지수대리35나리사원4 manager_id가 NULL이면 최상위 (CEO)각 직원은 manager_id를 통해 상사를 참조함LEVEL현재의 DEPTH를 반환한다. 루트 노드는 1이 된다.SYS_CONNECT_BY_PATH (컬럼, 구분자)루트 노드부터 현재 노드까지의 경로를 출력해주는 함수이다.START WITH경로가 시작되는 루트 노드를 생성해주는 절이다.C..

SQL/SQLD 2025.04.15

#20 Top-N 쿼리

목차정해진 개수의 상위 N개 행만 조회하는 쿼리로, 실무에서 매우 자주 사용이 된다. (예: 상위 5위, 최신 10건, 점수 Top 3 등).Top-N 쿼리Top-N 쿼리는 정렬된 결과 중 일정 개수(N개)만 추출하고 싶을 때 사용한다.DBMS마다 문법 차이는 있지만, 정렬 + 제한이라는 구조는 동일하다.-- 예제 쿼리 MySQL / PostgreSQLSELECT name, scoreFROM studentsORDER BY score DESCLIMIT 3;-- Oracle 구버전SELECT name, scoreFROM ( SELECT name, score FROM students ORDER BY score DESC)WHERE ROWNUM ✅ 기타 DBMS별 방식DBMS사용 문법 예시MySQLLIMI..

SQL/SQLD 2025.04.15

#19 윈도우 함수

목차✅ 윈도우 함수란?OVER 키워드와 함께 사용되는 함수로,그룹 함수와 비슷하지만 모든 행에 대해 값을 계산하면서도 다른 행들과의 관계를 고려할 수 있는 함수이다.GROUP BY 없이도 그룹 내 집계, 순위, 누적 계산 등을 가능하게 해준다. SELECT 컬럼1, 윈도우_함수(컬럼2) OVER ( PARTITION BY 컬럼3 ORDER BY 컬럼4 ROWS BETWEEN ... -- 윈도우 프레임 ) AS 별칭FROM 테이블명; 윈도우 함수: SUM, AVG, RANK, ROW_NUMBER, LAG, LEAD 등OVER 절: 윈도우 함수의 범위를 지정PARTITION BY: 데이터를 그룹화ORDER BY: 정렬 기준ROWS BETWEEN: 윈도우 프레임을 지정 윈도우 함수 ..

SQL/SQLD 2025.04.15

#18 그룹 함수

목차🧩그룹 함수란?그룹 함수(Aggregate Function)는 여러 행(Row)에 대해 하나의 값을 반환하는 함수다.예를 들어 총합, 평균, 개수, 최대값, 최소값 등을 구할 때 사용한다.단독으로도 쓰고, GROUP BY 절과 함께 사용하면 그룹별로 계산할 수도 있다. 대표적인 그룹 함수 목록함수 이름역할COUNT()개수 세기SUM()합계AVG()평균MAX()최대값MIN()최소값GROUP_CONCAT()여러 값을 연결(MySQL 전용)STDDEV()표준편차(오라클/PGSQL 등)VARIANCE()분산MEDIAN()중앙값(오라클 등 일부 지원)COUNT() - 개수세기SELECT COUNT(*) FROM students; -- 전체 행 수SELECT COUNT(score..

SQL/SQLD 2025.04.14

#17 집합 연산자

목차 🧩집합 연산자란?SQL에서 두 개 이상의 SELECT 결과를 하나로 조합하거나 비교하는 연산자즉, "SELECT + SELECT" → 하나의 결과로 만드는 기술 ✅ 기본 조건 (공통 전제)집합 연산자를 쓰려면 아래 조건을 반드시 충족해야 함:조건 항목설명컬럼 수두 SELECT 문의 컬럼 수가 같아야함컬럼 순서컬럼 위치별 타입이 호환되어야함컬럼명결과는 첫 번째 SELECT의 컬럼명 기준으로 표시됨students1 students2철수영희영희민수민수지수✅ 1. UNION두 SELECT 결과를 합친 후 중복 제거📌 문법SELECT 컬럼1 FROM 테이블AUNIONSELECT 컬럼1 FROM 테이블B;✅ 중복 제거된 결과만 보여줌 SELECT name FROM students1UNIONSELECT na..

SQL/SQLD 2025.04.14

#16 뷰(View)

목차🧩 뷰(View)란?뷰(View)는 하나 이상의 테이블을 기반으로 만들어진 가상의 테이블이다.실제 데이터를 저장하지 않고, 미리 정의한 SELECT 쿼리의 결과를 보여주는 창문 같은 역할을 한다.즉, 복잡한 SELECT 쿼리를 미리 만들어두고, 그걸 마치 테이블처럼 사용할 수 있게 만드는 것이 뷰다. 저장 방식 : 실제 데이터를 저장하지 않음 (SELECT 쿼리만 저장됨)호출 방식 : 일반 테이블처럼 "SELECT * FROM 뷰이름"으로 사용쓰는 이유 : 쿼리 재사용, 보안(컬럼 제한), 복잡한 쿼리 단순화유지 방식 : 뷰는 항상 최신 원본 테이블 데이터를 반영함 ✅ 뷰의 장점복잡한 SQL을 단순하게 재사용 가능컬럼 제한으로 보안 기능 대체 가능(예: 직원 테이블에서 급여는 제외)테이블처럼 사..

SQL/SQLD 2025.04.14
728x90