목록DBMS (12)
su-tudy 님의 블로그
𖤐 SQL 심화 개념 맛보기 마지막 편에서는 서브쿼리, 집합 연산자, 인덱스, 정규화, ERD처럼 한 단계 더 나아간 개념들을 정리한다. 이번 편에서는 각 개념의 핵심과 사용 목적 위주로, 전체 흐름을 가볍게 맛보는 느낌으로 살펴본다. 𖤐 정리 노트 ✧ 서브쿼리 (Subquery)쿼리 안에 또 다른 쿼리를 넣는 것이다. 괄호 안의 쿼리가 먼저 실행되고 그 결과를 바깥 쿼리에서 사용한다.-- 평균 급여보다 높은 직원 조회SELECT name, salaryFROM employeesWHERE salary > (SELECT AVG(salary) FROM employees); ▸ EXISTS서브쿼리의 결과가 한 건이라도 존재하면 TRUE를 반환한다.-- 주문이 한 건이라도 있는 유저만 조회SELECT name..
𖤐 권한 관리와 트랜잭션 DCL은 누가 DB에 어떤 작업을 할 수 있는지 권한을 관리하는 명령어고, TCL은 데이터 변경 작업을 하나의 묶음으로 처리하는 트랜잭션을 제어하는 명령어다. 특히 트랜잭션은 데이터 안전성과 직결되기 때문에 실무에서 매우 중요하다. 𖤐 정리 노트 ✧ DCL - 데이터 제어어▸ GRANT - 권한 부여특정 유저에게 DB 작업 권한을 부여한다.-- 기본 문법GRANT 권한 ON 데이터베이스.테이블 TO '유저'@'호스트';-- 예시: user1에게 mydb의 모든 테이블에 SELECT, INSERT 권한 부여GRANT SELECT, INSERT ON mydb.* TO 'user1'@'localhost';-- 모든 권한 부여GRANT ALL PRIVILEGES ON mydb.* T..
𖤐 제약조건과 무결성 제약조건은 테이블에 잘못된 데이터가 들어오지 못하도록 규칙을 거는 것이다. 데이터 무결성을 지키기 위한 장치라고 보면 된다. 테이블 생성할 때 걸 수도 있고, 나중에 ALTER로 추가할 수도 있다. 𖤐 정리 노트 ✧ 제약조건 지정 방법-- 테이블 생성할 때CREATE TABLE table_name ( column1 datatype constraint, column2 datatype constraint);-- 테이블 수정할 때ALTER TABLE table_name MODIFY COLUMN column_name datatype constraint; ✧ NOT NULLNULL 값을 허용하지 않는다. 값이 반드시 입력돼야 하는 컬럼에 건다.-- 생성할 때CREATE..
𖤐 DDL 기본 명령어 이해하기 DDL은 데이터베이스와 테이블의 구조 자체를 만들고 바꾸고 지우는 명령어다. DML이 데이터를 다룬다면 DDL은 그 데이터를 담는 그릇을 다루는 것이다. 테이블을 만들 때 어떤 데이터 타입을 쓰는지도 같이 정리해 둔다. 𖤐 정리 노트 ✧ CREATE - 생성데이터베이스나 테이블을 새로 만들 때 사용한다.-- 데이터베이스 생성CREATE DATABASE database_name;-- 테이블 생성CREATE TABLE table_name ( column1 datatype, column2 datatype, ...);실제 예시로 보면 이렇다.CREATE TABLE users ( id INT NOT NULL, name VA..
𖤐 JOIN으로 데이터 연결하기 실무에서 데이터는 하나의 테이블에만 있지 않다. 여러 테이블에 나뉘어 저장된 데이터를 연결해서 조회할 때 JOIN을 쓴다. 어떤 JOIN을 쓰느냐에 따라 결과가 완전히 달라지기 때문에 각각의 동작 원리를 이해하는 게 중요하다. 𖤐 정리 노트 ✧ JOIN 동작 원리JOIN은 두 테이블에서 공통된 컬럼(키)을 기준으로 행을 연결한다. ON 절에서 어떤 컬럼을 기준으로 연결할지 지정한다.[orders 테이블] [users 테이블]order_id user_id item user_id name1 1 노트북 1 김철수2 2 마우스 2 이영희3 5 ..
𖤐 그룹화와 그룹 조건 집계함수만 쓰면 테이블 전체를 하나로 요약한 결과만 나온다. GROUP BY를 쓰면 특정 컬럼 기준으로 데이터를 묶어서 그룹별로 집계할 수 있다. HAVING은 그 그룹에 조건을 거는 역할이다. 𖤐 정리 노트 ✧ GROUP BY 없이 집계 vs GROUP BY 집계차이를 먼저 이해하는 게 중요하다. 아래처럼 GROUP BY는 "그룹별로 쪼개서 집계" 할 때 사용한다. -- GROUP BY 없이: 전체 직원의 평균 급여 하나만 반환SELECT AVG(salary)FROM employees;-- 결과: 350-- GROUP BY 사용: 부서별 평균 급여를 각각 반환SELECT dept, AVG(salary)FROM employeesGROUP BY dept;-- 결과:-- 개발팀 ..
𖤐 여러 데이터를 계산하기 집계함수는 여러 행의 데이터를 하나의 값으로 요약해 주는 함수다. 전체 건수, 합계, 평균, 최댓값, 최솟값 같은 걸 구할 때 사용하며 다음 편에서 배울 GROUP BY와 함께 쓰면 더 강력해진다. 𖤐 정리 노트 ✧ 집계함수집계함수는 SELECT 구문에서 사용하며 여러 행을 하나의 결과값으로 반환한다.SELECT 집계함수(column_name)FROM table_nameWHERE condition; ✧ COUNT - 행 개수조건에 맞는 행의 수를 반환한다.SELECT COUNT(column_name)FROM table_nameWHERE condition; ▸ COUNT(*) vs COUNT(column)둘의 차이가 중요하다.-- COUNT(*): NULL 포함 전체 행 수 ..
𖤐 데이터 정렬과 개수 제한 데이터를 조회할 때 원하는 순서로 정렬하거나 필요한 만큼만 잘라서 가져오는 게 필요할 때가 많다. ORDER BY로 정렬하고 LIMIT으로 개수를 제한하는 건 실무에서도 자주 쓰이는 조합이다. 𖤐 정리 노트 ✧ ORDER BY - 정렬조회 결과를 특정 컬럼 기준으로 정렬할 때 사용한다.-- 오름차순 정렬 (기본값, ASC 생략 가능)SELECT column1, column2FROM table_nameORDER BY column1 ASC;-- 내림차순 정렬SELECT column1, column2FROM table_nameORDER BY column1 DESC; ▸여러 컬럼 혼합 정렬컬럼을 여러 개 지정할 수 있고, 각각 다른 방향으로 정렬할 수 있다.-- column1은 ..