sql(29)
-
[SQLD] 2-16. DCL
DCL (유저를 생성 + 권한 제어) Oracle에서의 DB 접속 방식 - 유저를 통해 DB에 접속 - 즉, 아이디와 비밀번호방식으로 인스턴스에 접속하고 해당 스키마에 권한을 부여 SQL Server에서의 DB 접속 방식 - 인스턴스에 접속하기 위해 로그인이라는 것을 생성하여 접속 SQL Server 로그인 1. Window 인증 방식 - 윈도우에 로그인한 정보를 가지고 SQL Server에 접속 2. 혼합모드 인증 방식 - 윈도우 인증/SQL 인증 방식으로 접속 - Oracle의 인증과 같은 방식으로 접속 Oracle 1. DB 연결 CONN SCOTT/TIGER 2. 권한 부여 GRANT CREATE USER TO SCOTT; 3. 유저 생성 CREATE USER 아이디 IDENTIFIED BY 비밀..
2021.11.06 -
[SQLD] 2-15. 윈도우함수
윈도우 함수 (Window Function) - 중첩해서 사용 X / 서브쿼리에서는 사용 O 종류 - 그룹 내 순위 함수 : RANK() / DENSE_RANK() / ROW_NUMBER() - 그룹 내 집계 함수 : SUM / MAX / MIN / AVG / COUNT - 그룹 내 행 순서 함수 : FIRST_VALUE(컬럼) / LAST_VALUE(컬럼) / LAG(컬럼, [n1, n2]) / LEAD(컬럼, [n1, n2]) - 그룹 내 비율 함수 : CUME_DIST() / PERCENT_RANK() / NTILE(n) / RATIO_TO_REPORT(컬럼) - 선형 분석 포함한 통계 분석 함수 구문 SELECT 컬럼명1, 컬럼명2,... 윈도우함수(인수) OVER ([PARTITION BY 컬럼..
2021.11.06 -
[SQLD] 2-14. 그룹함수
그룹함수 (Group Function) - 하나의 SQL로 테이블을 1번만 읽어서 빠르게 원하는 자료 작성 가능 - 소계/합계 표시를 위한 GROUPING함수/CASE함수를 통해 쉽게 원하는 포맷의 보고서 작성 가능 ROLLUP 함수 : 집계 함수를 제외하고, 소그룹 간의 소계 계산 CUBE 함수 : GROUP BY 항목들 간 다차원적인 소계 계산 GROUPING SETS 함수 : 특정 항목에 대한 소계 계산 ROLLUP 함수 - 집계 함수를 제외하고, 소그룹 간의 소계 계산 - 병렬로 수행이 가능하기 때문에 매우 효과적 - 시간/지역처럼 계층적 분류를 포함하고 있는 데이터의 집계에 적합 - GROUP BY절과 같이 사용 - ROLLUP 인수 순서가 바뀌면 결과도 바뀐다 / 소계와 합계를 순서에 맞게 반..
2021.11.06 -
[SQLD] 2-13. 서브쿼리
서브쿼리 - 하나의 SQL문에 포함된 또 다른 SQL문 (중첩) - 알려지지 않은 기준을 이용한 검색을 위해 사용 - 괄호로 감싸서 사용 - 단일 행/복수 행 비교 연산자와 함께 사용 가능 - 단일 행 비교연산자 서브 쿼리의 결과는 반드시 1건 이하 - ORDER BY 사용 X - SELECT / FROM / WHERE / HAVING / ORDER BY / INSERT(VALUES) / UPDATE(SET)절에서 사용 가능 ※ 메인 쿼리 / 서브 쿼리 - 메인쿼리 서브쿼리의 컬럼 사용 X - 서브쿼리 메인쿼리의 컬럼 사용 O 항상 메인쿼리 레벨로 결과 집합 생성 -> 조직(1), 사원(M) -> 결과 집합 (1) ※ 질의결과(SELECT 메인)에 서브쿼리 컬럼 표시 방법 - 조인 방식으로 변환 - 함수..
2021.11.02 -
[SQLD] 2-12. 계층형 질의
계층형 질의 구문 SELECT ~ FROM 테이블명 [WHERE 조건] START WITH (최상위 조건) (IS NULL) CONNECT BY [NOCYCLE] (PRIOR 계층형 구조 조건) [ORDER SIBLINGS BY 컬럼1, 컬럼2,...] -----실행 순서----- START WITH -> CONNECT BY -> WHERE ≫ START WITH 계층 구조 전개의 시작위치 지정 -> 루트 데이터 지정 (Excess) 최상위 노드의 부모 노드는 NULL값 이므로 IS NULL 조건 추가 서브 쿼리 사용 O 지정된 컬럼은 WHERE조건과 상관없이 무조건 리턴 ≫ CONNECT BY [NOCYCLE] [PRIOR ~] 다음에 전개될 자식 데이터 지정 서브 쿼리 사용 X NOCYCLE : 동일..
2021.11.02 -
[SQLD] 2-11. 집합연산자
집합 연산자 종류 집합 연산자 의미 UNION - 합집합 - 중복된 행을 하나의 행으로 만듦 UNION ALL - 합집합 + 중복된 행도 그대로 표시 - 단순히 결과만 합쳐놓은 것 - 여러 질의 결과가 베타적일 때 사용 - 개별 SQL문의 결과가 중복되지 않을 경우, UNION과 결과가 동일 (정렬 순서에는 차이가 있을 수도 있음) INTERSECT - 교집합 - 중복된 행을 하나의 행으로 만듦 MINUS/EXCEPT - 차집합 - 중복된 행을 하나의 행으로 만듦 ≫ UNION - SELECT ~ UNION SELECT ~ / 두 SELECT절 연결 (합집합) - WHERE 절에 IN/OR 연산자로 변환 가능 - 중복이 존재할 경우, 중복을 제외 SELECT TEAM_ID 팀코드, PLAYER_NAME ..
2021.11.01 -
[SQLD] 2-10. 표준조인
Standard SQL 일반 집합 연산자 - UNION(Union 연산), INTERSECT(Intersection 연산), MINUS/EXCEPT(Difference 연산), CROSS JOIN(Product 연산) - UNION ALL : 공통집합을 중복해서 그대로 리턴 -> 정렬 작업이 일어나지 않는 장점 ※ UNION / UNION ALL - 출력 결과가 같다면 -> 응답속도 향상, 자원 효율과 측면에서 정렬 작업이 발생하지 않는 UNION ALL이 효과적 ※ CROSS JOIN (CARTESIAN PRODUCT) - JOIN 조건이 없는 경우 생길 수 있는 모든 데이터의 조합 순수 관계 연산자 - SELECT / PROJECT / JOIN / DIVISION - 관계형 DB를 구현하기 위해 새롭..
2021.11.01 -
[SQLD] 2-9. Join
Join - 2개 이상의 테이블을 연결/결합하여 데이터를 출력하는 것 - PK나 FK값의 연관에 의해 Join 성립 - FROM절에 여러 테이블이 나열되더라도 단 2개의 집합 간에만 조인이 일어난다 -> 앞에서부터 조인해서 최종적으로 2개의 테이블 간의 조인을 실행 -> (((A JOIN D) JOIN C) JOIN B) - 테이블의 조인 순서는 옵티마이저에 의해 결정 EQUI JOIN - 2개의 테이블 간에 컬럼 값들이 서로 정확하게 일치하는 경우에 사용 (등가 조인) - '=' 연산자를 사용해서 표현 - PK ↔ FK의 관계를 기반 SELECT P.PLAYER_NAME 선수명, T.TEAM_NAME 소속팀명 FROM PLAYER P, TEAM T WHERE P.TEAM_ID = T.TEAM_ID; -..
2021.10.30 -
[SQLD] 2-8. Order By
Order By 절 - 특정 컬럼을 기준으로 정렬해서 출력 - ROWNUM 함수가 있을 경우, ROWNUM을 먼저 하고 정렬을 수행 - ASC(오름차순) / DESC(내림차순) - Default = ASC(오름차순) - SELECT 목록에 나타나지 않은 컬럼을 사용할 수 있다 Oracle / SQL Server - Oracle NULL값을 가장 큰 값으로 취급 - SQL Server NULL값을 가장 작은 값으로 취급
2021.10.30 -
[SQLD] 2-7. Group By / Having
집계 함수(Aggregate Function) - 다중행 함수 - 여러 행들의 그룹이 모여서 그룹당 하나의 결과만 리턴 - Group By 절은 행들을 소그룹화 - SELECT, HAVING, ORDER BY 절에서 사용 집계 함수 종류 집계 함수 설명 COUNT(*) NULL값을 포함한 행의 수 출력 COUNT(표현식) NULL값을 제외한 행의 수 출력 SUM([DISTINCT | ALL] 표현식) NULL값을 제외한 합계 출력 AVG([DISTINCT | ALL] 표현식) NULL값을 제외한 평균 출력 MAX([DISTINCT | ALL] 표현식) 표현식의 최댓값 출력 (문자/날짜 데이터 타입도 가능) MIN([DISTINCT | ALL] 표현식) 표현식의 최솟값 출력 (문자/날짜 데이터 타입도 가능..
2021.10.30 -
[SQLD] 2-6. Function
내장 함수 (Built-In Funtion) 단일행 함수 SELECT, WHERE, ORDER BY, UPDATE(Set) 절에 사용 각 행들에 대해 개별적으로 작용 여러 인자를 입력해도 단 하나의 결과만 리턴 - 다중행 함수 (집계 함수 / 그룹 함수 / 윈도우 함수) 단일행 함수 종류 종류 내용 함수 문자열 함수 문자를 입력하면 문자/숫자 값을 반환 - LOWER(s), UPPER(s) - SUBSTR(s, m, n) / SUBSTRING(s, m, n) - LENGTH(s) / LEN(s) - LTRIM(s, 지정문자), RTRIM(s, 지정문자) - TRIM( [leading|trailing|both] 지정문자 from s) - ASCII(c), CHR(아스키n) / CHAR(아스키n) 숫자형 함..
2021.10.30 -
[SQLD] 2-5. WHERE
WHERE (조건) 연산자 종류 구분 연산자 비교 연산자 =, >, >=, , >=, = 80) ORDER BY HEIGHT DESC, WEIGHT DESC; ≫ IN (list) - 리스트에 있는 값 중, 어느 하나라도 일치하면 된다 SELECT PLAYER_NAME 선수이름, TEAM_ID 소속팀, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키, WEIGHT 몸무게 FROM PLAYER WHERE (TEAM_ID IN('K02','K07')) AND (HEIGHT >= 185) ORDER BY TEAM_ID, HEIGHT DESC; ≫ LIKE '비교 문자열' - 비교 문자열과 형태가 일치하면 된다 SELECT PLAYER_NAME 선수이름, TEAM_ID 소속팀, POSITION ..
2021.10.29