SQL Server

🌱 ROLLUP 함수 - 소그룹 간의 소계를 계산하는 함수 - ROLLUP의 인수는 계층 구조이므로 인수 순서가 바뀌면 수행 결과도 바뀌게 됨 SELECT DNAME, JOB, COUNT(*) “Total Empl”, SUM(SAL) “Total Sal” FROM EMP, DEPT WHERE DEPT.DEPTNO = EMP.DEPTNO GROUP BY ROLLUP (DNAME, JOB); 🌱 CUBE 함수 - GROUP BY 항목들 간 다차원적인 소계를 계산할 수 있는 함수 - 결합 가능한 모든 값에 대하여 다차원 집계를 생성하므로 ROLLUP에 비해 다양한 데이터를 얻을 수 있음 - 계층 구조인 ROLLUP과 달리 평등한 관계이므로 인수의 순서가 바뀌어도 데이터 결과는 같음 🌱 GROUPING SETS..
🌱 서브쿼리 (Subquery) - 하나의 SQL 문 안에 포함되어 있는 또 다른 SQL 문 (괄호로 감싸서 사용) - 서브쿼리는 메인쿼리의 칼럼을 모두 사용할 수 있지만 메인쿼리는 서브쿼리의 칼럼을 사용할 수 없음 - 단일 행(Single Row) 또는 복수 행(Multiple Row) 비교 연산자와 함께 사용 가능 - 서브쿼리에서는 ORDER BY 사용 불가 (ORDER BY 절은 메인쿼리의 마지막 문장에 위치해야 함) 🌱 단일 행 서브쿼리 - 서브쿼리가 단일 행 비교 연산자(=, =, )와 함께 사용할 때는 결과 건수가 반드시 1건 이하여야 함 🌱 다중 행 서브쿼리 - 서브쿼리의 결과가 2건 이상 반환될 수 있다면 반드시 다중 행 비교 연산자(IN, ALL, ANY, SOME)와 함께 사용 🌱 다중..
🌱 계층형 질의 - 테이블에 계층형 데이터가 존재하는 경우 데이터를 조회하기 위해서 계층형 질의를 사용 - 계층형 데이터 : 동일 테이블에 계층적으로 상위와 하위 데이터가 포함된 데이터 1) Oracle 계층형 질의 SELECT … FROM 테이블 WHERE condition AND condition … START WITH condition CONNECT BY [NOCYCLE] condition AND condition … [ORDER SIBLINGS BY column, column, …] - START WITH 절 : 계층 구조 전개의 시작 위치를 지정하는 구문 - CONNECT BY 절 : 다음에 전개될 자식 데이터를 지정하는 구문 - PRIOR : 현재 읽을 칼럼을 지정 (CONNECT BY 절에 ..
🌱 집합 연산자 - 두 개 이상의 테이블에서 조인을 사용하지 않고 연관된 데이터를 조회하는 방법 - 집합 연산자를 사용하기 위한 제약조건 1) SELECT 절의 칼럼 수가 동일 2) SELECT 절의 동일 위치에 존재하는 칼럼의 데이터 타입이 상호 호환 가능 - UNION : 합집합 - UNION ALL : 합집합 (중복된 행도 그대로 결과로 표시) - INTERSECT : 교집합 - EXCEPT : 차집합 (일부 데이터베이스는 MINUS 사용)
🌱 STANDARD SQL 1) 일반 집합 연산자 - UNION 연산 → UNION 기능 : 합집합 (공통 교집합의 중복을 없앰) - INTERSECTION 연산 → INTERSECT 기능 : 교집합 (공통집합 추출) - DIFFERENCE 연산 → EXCEPT(Oracle은 MINUS) 기능 : 차집합 (공통집합 제외) - PRODUCT 연산 → CROSS JOIN 기능 : 곱집합 (JOIN 조건이 없는 경우 생길 수 있는 모든 데이터의 조합) 2) 순수 관계 연산자 - SELECT 연산 → WHERE 절의 조건절 기능 (SELECT 연산 ≠ SELECT 절) - PROJECT 연산 → SELECT 절의 칼럼 선택 기능 - (NATURAL) JOIN 연산 → WHERE 절의 INNER JOIN 조건, ..
🌱 JOIN 개요 - 다른 정보가 들어있는 두 개 이상의 테이블과 연결 또는 결합하여 데이터를 출력하는 것 🌱 EQUI JOIN - 두 개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하는 경우에 사용되는 방법 (대부분 PK ↔ FK 관계 기반) SELECT 테이블1.칼럼명, 테이블2.칼럼명, ... FROM 테이블1, 테이블2 WHERE 테이블1.칼럼명1 = 테이블2.칼럼명2; 🌱 Non EQUI JOIN - 두 개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하지 않는 경우에 사용되는 방법 - “=” 연산자가 아닌 다른(Between, >, >=,
🌱 ORDER BY 정렬 SELECT 칼럼명 [ALIAS] FROM 테이블명 [WHERE 조건식] [GROUP BY 칼럼이나 표현식] [HAVING 그룹 조건식] [ORDER BY 칼럼이나 표현식 [ASC 또는 DESC]]; - ASC(Ascending) : 오름차순 정렬 / DESC(Descending) : 내림차순 정렬 (기본적인 정렬 순서는 오름차순) - Oracle에서는 NULL 값을 가장 큰 값으로 간주하여 오름차순으로 정렬했을 경우 가장 마지막에 위치한다. - 반면, SQL Server에서는 NULL 값을 가장 작은 값으로 간주하여 오름차순으로 정렬했을 경우 가장 먼저 위치한다. 🌱 SELECT 문장 실행 순서 - FROM → WHERE → GROUP BY → HAVING → SELECT → ..
🌱 집계 함수 - 여러 행들의 그룹이 모여서 그룹당 단 하나의 결과를 돌려주는 함수 - GROUP BY 절은 행들을 소그룹화한다. - SELECT 절, HAVING 절, ORDER BY 절에 사용할 수 있다. - 집계 함수의 종류 º DISTINCT : 같은 값을 하나의 데이터로 간주할 때 사용하는 옵션 🌱 GROUP BY 절, HAVING 절 SELECT [DISTINCT] 칼럼명 [ALIAS] FROM 테이블명 [WHERE 조건식] [GROUP BY 칼럼이나 표현식] [HAVING 그룹 조건식]; - GROUP BY 절을 통해 소그룹별 기준을 정한 후, SELECT 절에 집계 함수를 사용한다. - 집계 함수의 통계 정보는 NULL 값을 가진 행을 제외하고 수행한다. - GROUP BY 절에서는 SEL..
🌱 내장 함수 (BUILT-IN FUNCTION) - 단일행 함수 (Single-Row Function) : 문자형, 숫자형, 날짜형, 변환형, NULL 관련 함수 - 다중행 함수 (Group Function) : 집계 함수, 그룹 함수, 윈도우 함수 🌱 문자형 함수 - 문자 데이터를 매개 변수로 받아들여서 문자나 숫자 값의 결과를 돌려주는 함수 º 주 : Oracle 함수 / SQL Server 함수 표시, ‘/’ 없는 것은 공통 함수 문자형 함수 함수 설명 문자형 함수 사용 결과값 LOWER(문자열) 문자열의 알파벳 문자 → 소문자 LOWER (‘SQL Expert’) ‘sql expert’ UPPER(문자열) 문자열의 알파벳 문자 → 대문자 UPPER (‘SQL Expert’) ‘SQL EXPERT..
🌱 연산자의 종류 - 비교 연산자 : =, >, >=, : ~보다 크지 않다. 2) 부정 SQL 연산자 - NOT BETWEEN a AND b : a와 b의 값 사이에 있지 않다. (a와 b의 값을 포함하지 않는다.) - NOT IN (list) : list 값과 일치하지 않는다. - IS NOT NULL : NULL 값을 갖지 않는다. 🌱 ROWNUM (Oracle) - 처리 결과 집합의 각 행에 대해 임시로 부여되는 일련번호 - 테이블이나 집합에서 원하는 만큼의 행만 가져오고 싶을 때 WHERE 절에서 행의 개수를 제한하는 목적 🌱 TOP (SQL Server) - 결과 집합으로 출력되는 행의 수를 제한 TOP (Expression) [PERCENT] [WITH TIES] - Expression : ..