분류 전체보기 74

서브쿼리(비연관/연관 서브쿼리, 스칼라 서브쿼리, 인라인 뷰 서브쿼리, 중첩 서브쿼리, 단일 행 서브쿼리, 다중 행 서브쿼리, 다중 칼럼 서브쿼리)

서브쿼리 하나의 SQL문에 포함된 또 하나의 SQL문. 알려지지 않은 기준을 이용한 검색을 위해 사용. - 메인 쿼리가 서브 쿼리를 포함하는 종속적인 관계. → 서브쿼리는 메인쿼리의 칼럼을 모두 사용할 수 있지만, 메인 쿼리는 서브 쿼리의 칼럼을 사용할 수 없다. 서브쿼리 주의사항 ① 서브쿼리를 괄호로 감싸서 사용한다. ② 서브쿼리는 단일 행(Single Row) 또는 복수 행(Multiple Row) 비교 연산자와 함께 사용 가능하다. → 단일 행 비교연산자는 서브 쿼리의 결과가 반드시 1건 이하. → 복수 행 비교연산자는 서브 쿼리의 결과 건수와 상관 없음. ③ 서브쿼리에서는 ORDER BY를 사용하지 못한다. → ORDER BY절은 SELECT 절에서 오직 한 개만 올 수 있기 때문에 메인쿼리의 마..

절차형 SQL (PL/SQL, 저장 모듈, 프로시저, 사용자 정의 함수, 트리거)

절차형 SQL 절차지향적인 프로그램이 가능하도록 하는 SQL. → 연속적인 실행, 분기, 반복 등의 제어 가능 오라클에서는 PL(Procedual Language)/SQL의 절차형 SQL을 제공한다. 1) PL/SQL : 절차적 프로그래밍을 가능하게 하는 트랜잭션 언어. → PL/SQL로 다양한 저장 모듈(프로시저, 사용자 정의 함수, 트리거) 개발 가능. - PL/SQL 특징 1. Block 구조로 되어있어 각 기능별로 모듈화 가능. 2. 변수, 상수 등을 선언하여 SQL 문장 간 값 교환. 3. IF, LOOP 등의 절차형 언어를 사용하여 절차적인 프로그램이 가능. 4. 오라클에 내장되어 있음. 5. PL/SQL로 작성된 프로시저, 사용자 정의 함수는 작성자의 기준으로 트랜젝션 분할 가능. - Sto..

[ORACLE] 계층형 쿼리(START WITH, CONNECT BY, PRIOR, ORDER SIBLINGS BY)

계층형 쿼리 테이블의 레코드들이 부모, 자식 관계(상하 관계)를 이룰 때, 레코드를 수직적 구조로 가져오기 위해 사용되는 SQL 1) START WITH ... CONNECT BY 절 SELECT [컬럼] FROM [테이블] START WITH [최상위 조건] CONNECT BY [NOCYCLE][PRIOR 계층형 구조 조건]; - START WITH 계층 구조 전개의 시작위치[부모(루트) 노드] 지정. → 루트 노드의 LEVEL 값은 1. - CONNECT BY 부모와 자식노드들 간의 관계 명시. CONNECT BY 실행 순서 START WITH → CONNECT BY → WHERE - PRIOR - CONNECT BY PRIOR 자식 = 부모: 부모 → 자식으로 전개하는 순방향 전개. - CONNEC..

SQL CONSTRAINT 절(CONSTRAINT, 단일필드 제약조건, 다중필드 제약조건)

CONSTRAINT 절 ALTER TABLE 및 CREATE TABLE 문에 사용하여 제약 조건을 만들거나 삭제. 단일필드 제약조건 CONSTRAINT name(제약 조건의 이름) {PRIMARY KEY | UNIQUE | NOT NULL | REFERENCES foreigntable(외래 테이블 이름) [{foreignfield1, foreignfield2)] [ON UPDATE CASCADE | SET NULL] [ON DELETE CASCADE | SET NULL]} - UNIQUE: 고유키 다중필드 제약조건 CONSTRAINT name(제약 조건의 이름) {PRIMARY KEY (primary1[, primary2 [, ...]]) | UNIQUE (unique1[, unique2 [, ...]]..

순수 관계 연산자(SELECT, PROJECT, JOIN, DIVIDE)

순수 관계 연산자 릴레이션의 구조와 특성을 이용하는 연산자로, 관계 데이터 모델에서 제시되었다. 순수 관계 연산자의 종류 - SELECT - PROJECT - JOIN - DIVIDE 1. SELECT 수학적 표현: σ_조건식(릴레이션) 데이터 언어 형식: 릴레이션 where 조건식 - 하나의 릴레이션을 대상으로 수행함. - 조건식은 비교 연산자(>, ≥, <, ≤, =, ≠)를 이용해 구성함. → SELECT 연산은 SQL 문장에서 WHERE 절의 조건절 기능으로 구현된다. - SELECT 연산과 SELECT 절의 의미가 다름 - 2. PROJECT 수학적 표현: π_속성리스트(릴레이션) 데이터 언어 형식: 릴레이션[속성리스트] - 릴레이션에서 선택한 속성에 해당하는 값으로 결과 릴레이션을 구성함. →..

조인(Join)의 종류(내부 조인, 왼쪽 조인, 오른쪽 조인, 합집합 조인)

조인 하나의 테이블이 아닌 두 개 이상의 테이블을 묶어서 하나의 결과물을 만드는 것. - MySQL에서는 JOIN이라는 쿼리로, MongoDB에서는 lookup이라는 쿼리로 처리할 수 있다. - 여러 테이블을 조인하는 작업이 많을 경우 관계형 데이터베이스를 쓴다. → MongoDB는 관계형 데이터베이스보다 조인 연산에 대해 성능이 떨어지기 때문에 lookup은 되도록 사용하지 않는다. 조인의 종류 - 내부 조인: 테이블 A와 테이블 B의 두 행이 모두 일치하는 행이 있는 부분만 표기. SELECT * FROM TABLE_A A INNER JOIN TABLE_B B ON A.KEY = B.KEY; - 왼쪽 조인: 테이블 A의 모든 행이 결과 테이블에 표기. SELECT * FROM TABLE_A A LEF..

NULL과 공집합(NULL의 특성, 집계함수, 공집합)

NULL의 특성 1) 널 값은 아직 정의되지 않은 값으로 0 또는 공백과 다르다. → 0은 숫자이고 공백은 하나의 문자이다. 2) 테이블을 생성할 때 NOT NULL 또는 PRIMARY KEY로 정의되지 않은 모든 데이터 유형은 널 값을 포함할 수 있다. 3) 널 값을 포함하는 연산의 경우 결과 값도 널 값이다. 모르는 데이터에 숫자를 더하거나 빼도 결과는 마찬가지로 모르는 데이터인 것과 같다. 4) 결과값을 NULL이 아닌 다른 값을 얻고자 할 때 NVL/ISNULL 함수를 사용한다. NULL 값의 대상이 숫자 유형 데이터인 경우는 주로 0(Zero)으로, 문자 유형 데이터인 경우는 블랭크보다는 'x' 같이 해당 시스템에서 의미 없는 문자로 바꾸는 경우가 많다. 5) AVG, SUM, COUNT와 같은..

트랜잭션과 무결성(트랜잭션, 원자성, 일관성, 고립성, 지속성, 무결성)

트랜잭션 트랜잭션: 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 최소 단위. 여러 개의 쿼리들을 하나로 묶는 단위를 말한다. 트랜잭션의 특성(ACID) - 원자성(Automicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability) 1) 원자성(Automicity) 원자성: 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되든지 아니면 전혀 실행되지 않은 상태로 남아 있어야 한다. (all or nothing) - 커밋(commit)과 롤백(rollback) 커밋: 여러 쿼리가 성공적으로 처리되었다고 확정하는 명령어. 트랜잭션 단위로 수행되며 변경된 내용이 모두 영구적으로 저장되는 것을 말한다. 커밋이 수행되었다. = 하나의 트랜잭션이 성공적으로 ..

SQL 문장들의 종류(DML, DDL, DCL, TCL)

1) 데이터 조작어(DML: Data Manipulation Language) DML: 데이터베이스에 들어있는 데이터 검색, 삽입, 수정, 삭제를 위한 명령어 → 데이터 검색(SELECT), 삽입(INSERT), 수정(UPDATE), 삭제(DELETE) 2) 데이터 정의어(DDL: Data Definition Language) DDL: 테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어. 구조를 생성하거나 변경하거나 삭제하거나 이름을 바꾸는 명령어 → 데이터 구조(테이블) 생성(CREATE), 변경(ALTER), 삭제(DROP), 이름을 바꾸는(RENAME) 명령어 3) 데이터 제어어(DCL: Data Control Language) DCL: 데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회..

728x90
반응형