본문 바로가기

프로그래밍/SQL

(18)
[SQL 요약 정리] 1-10. DICTIONARY 10. DICTIONARY 1) Dictionary란?- DBMS가 자동관리하는 정보로 SYS사용자가 소유- 읽기전용으로만 제공되는 뷰와 테이블의 집합- ORACLE SERVER에 의해서 생성 및 유지보수- 예시: ORACLE server 사용자명, 사용자 권한, DB 객체명, 테이블 제약조건, 감사정보 2) Dictionary View의 종류- 4가지 종류가 있으며 각기 다른 접두사로 구분USER_ : 사용자가 소유한 객체 정보 저장ALL_ : 사용자에게 허용된 객체 정보 저장DBA_ : DBA권한을 가진 사용자가 액세스 할 수 있는 정보 저장V$ : 서버의 성능과 Locking에 관한 정보 저장(일반적으로 DBA에게만 허용) - 그 외의 동의어를 사용하는 경우DICTIONARY : 모든 데이터 사전 ..
[SQL 요약 정리] 1-9. TRANSACTION CONTROL 9. TRANSACTION CONTROL 1) Transaction의 개념- Transaction: 논리적인 업무의 작업단위 의미- Transaction Control LANGUAGESAVEPOINT // 현재 트랜잭션에 savepoint 지정COMMIT // 아직 저장되지 않은 변경사항을 DB에 저장하고 현 트랜잭션 종료ROLLBACK [TO SAVEPOINT명] // 아직 저장되지 않은 모든 변경사항 취소 후 트랜잭션 종료- 구성: 데이터의 영구적인 변경을 하는 DML, 하나의 DDL, 하나의 DCL- 트랜잭션의 종료: COMMIT OR ROLLBACK / DDL, DCL명령 / error, system crash, exit 등 2) 암시적(Implicit) 트랜잭션 제어 명령어- 자동 COMMIT:..
[SQL 요약 정리] 1-8. CONSTRAINT 8. CONSTRAINT 1) Constraint란?- 무결성 유지를 위한 사용자 지정 성질(제약조건)이며 데이터사전에 저장된다.- 이름은 한 사용자 내에서 중복될 수 없으며 표준 객체 명명법을 따르는게 좋다.- 이름 생략시 ORACLE 자체에서 SYS_Cn형식으로 자동 지정 2) Constraint 정의방법- 컬럼레벨: 어떤 유형의 제약조건도 정의 가능컬럼 [CONSTRAINT 제약조건 이름] 제한조건 유형, - 테이블 레벨: 여러 칼럼에 제약조건 정의할 때 사용, 컬럼 레벨과 별개(NOT NULL 제외)컬럼,...[CONSTRAINT 제약조건 이름] 제한조건 유형 (컬럼1, 컬럼2...) 3) Constraint 종류- NOT NULL: 컬럼이 NULL값 사용 불가, 컬럼 레벨로만 정의 가능(한 컬럼..
[SQL 요약 정리] 1-7. SUBQUERY 7. SUBQUERY 1) SubQUERY- 하나의 SELECT문 안에 포함된 또 다른 SELECT문- 제한: 연산자 좌측 괄호 내에 위치, ORDER BY절 포함 불가- 사용 가능 연산자: =, >, >=,
[SQL 요약 정리] 1-6. JOIN 6. JOIN 1) JOIN이란?- 하나 이상의 테이블로부터 연관 데이터를 검색하는 방법- 일반적으로 행들은 PK와 FK 값의 연관에 의해 JOIN 성립(예외 존재->논리값 간의 연관성)- 정규화: 데이터 중복 제거를 위해 테이블을 분리- JOIN은 정규화된 데이터를 다시 결합하는 과정- JOIN방법EQUIJOIN: 칼럼간의 값들이 정확히 일치하는 경우에 사용 (일반적으로 PK, FK 관계에 의함)NON-EQUIJOIN: 칼럼간의 값들이 정확히 일치하지 않는 경우에 사용OUTER JOIN: JOIN조건에 만족하지 않지만 모든 행 출력을 위해 사용SELF JOIN: 같은 테이블에 있는 행들을 JOIN하고자하는 경우에 사용*Cartesian product: 조건 생략 혹은 실수로 인해 테이블의 모든 행들이 ..
[SQL 요약 정리] 1-5. SUBGROUP으로 데이터분류 5. SUBGROUP으로 데이터분류 1) GROUP BY와 HAVING절- GROUP BY: 전체 데이터를 소그룹으로 나눌 칼럼 명시- HAVING: GROUP에 대한 조건 기술 - 문형SELECT 칼럼명, GROUP 함수FROM 테이블명WHERE 조건식GROUP BY 칼럼명HAVING 조건식ORDER BY 칼럼이나 표현식; - 예시SELECT dept_id, AVG(salary)FROM s_empWHERE title = '사원'GROUP BY dept_id; - HAVING절 예시SELECT title, AVG(salary), COUNT(*)FROM s_empGROUP BY title;HAVING COUNT(*) > 2; 2) GROUP을 SUBGROUP으로 세분화- GROUP BY절 이하에 GROUP..
[SQL 요약 정리] 1-4. 내장 함수(STORED FUNCTION) 4. 내장 함수(STORED FUNCTION) 1) 함수- 단일 행 함수(Single Row Function): 문자형, 숫자형, 날짜형, 변환형- 다중 행 함수(Multi Row Function): 그룹 함수*여러 함수를 겹쳐서 사용 가능 2) 문자형 함수- UPPER(''): 대문자 변환- LOWER(''): 소문자 변환- INITCAP(''): 첫 글자만 대문자로 변환- CONCAT('', ''): 두 문자값 결합- SUBSTR('',a,b): 문자 추출 // a -> 시작인덱스 / b -> 추출 개수- LENGTH(''): 문자열 길이 반환 - LPAD('a',b,'c'), RPAD('a',b,'c'): 'a'를 b크기의 공간에 입력하고 좌우측 공간을 'c'로 채움- LTRIM, RTRIM('a'..
[SQL 요약 정리] 1-3. 데이터 검색(SELECT) 3. 데이터 검색(SELECT) 1) SELECT구문의 기본 문형(SELECT~FROM)SELECT (DISTINCT) 칼럼명 (ALIAS)FROM 테이블명;- SELECT: 대상 데이터 나열- DISTINCT: 중복 제거- ALIAS: 출력되는 칼럼에 다른 이름 부여 // 산술 연산시 유용, "두 단어로 구성된 경우"- FROM: 선택한 칼럼이 있는 테이블 명시- * -> 모든 데이터 / 칼럼1, 칼럼2... -> 칼럼 함께 출력 / 칼럼+산술실 -> 계산 가능* 날짜+-숫자 연산시 날짜가 변화, 날짜+-날짜 연산시 차이를 숫자로 반환* FROM DUAL(가상 테이블)을 통해 테스트 가능 2) 칼럼의 합성(Concatenation)- 합성 연산자(||)를 사용해서 칼럼 합성SELECT name || '..