목록Programming/Oracle 공부 (31)
C#,Delphi,Oracle,MSSQL 개발자블로그
● 제약조건 오라클 서버는 부적합한 데이터가 테이블에 삽입되는 것을 방지하기 위해 CONSTRAINT(제약조건)를 사용한다. * 데이터 무결성 제약조건 - NOT NULL : 이열은 NULL값을 포함하지 않음을 지정한다. - UNIQUE Key : 테이블의 모든 행에 대해 유일해야 하는 값을 가진 열 또는 열의 조합을 지정한다. - PRIMARY KEY : 유일하게 테이블의 각 행을 식별한다. - FOREIGN KEY : 열과 참조된 테이블의 열 사이의 외래키 관계를 적용하고 설정한다. - CHECK : 참이어야 하는 조건을 지정한다. 1. NOT NULL 제약조건 열 레벨에서 정의된다. 해당 열의 데이터는 NULL값을 가질 수 없다. CREATE TABLE emp(empno NUMBER(4) ,enam..
● 데이터베이스 객체 - Table : 행과 열로 구성된 기본적인 저장매체의 단위 - View : 하나 이상의 테이블로부터 데이터의 부분집합을 논리적으로 표현 - Sequence : 기본 키 값을 발생 - Index : 어떤 질의의 성능을 향상 - Synonym : 객체에 대체 이름을 부여 ● 이름 지정 규칙 - 문자로 시작해야한다. - 문자 길이는 1-30이어야 한다. - 오직 A-Z, a-z, 0-9, _, $, #만을 포함할 수 있다. - 동일한 사용자가 소유한 객체의 이름은 중복되어서는 안된다. - 오라클 서버 예약어는 안된다. ● 테이블 생성 CREATE TABLE [schema.]table (col1 datatype [DEFAULT expr] col2 datatype [DEFAULT expr]..
※ 이전 단원인 8단원은 SQL PLUS에 관한 내용이므로 생략. - 데이터조작어 DML (Data Manipulation Language) ● INSERT INTO table(col1, col2, ...) VALUES (val1, val2, ...) ☞ NULL 값을 가진 새로운 행 추가 * 암시적 방법 : 열 목록으로부터 열을 생략한다. INSERT INTO dept(deptno, dname, ) VALUES (60, 'MIS'); * 명시적 방법 : VALUES 목록에 NULL키워드를 명시한다. INSERT INTO dept VALUES (70, 'FINANCE', NULL); ☞ 다른테이블로부터 행 복사 * 서브쿼리로 INSERT 문장을 작성한다. * VALUES절을 사용하지 않는다. * 서브쿼리..
● 다중열 서브 쿼리 여러개의 컬럼을 검색하는 서브 쿼리 - 서브 쿼리의 SELECT 문에 여러 개의 컬럼을 검색한다. - 반드시 비교 대상 컬럼과 1:1 대응돼야 한다. - 다중 열 서브쿼리는 주로 IN을 사용하지만 '='사용도 가능하다. IN의 사용이 권장된다. Ex. 각 부서별로 최소 급여를 받는 사원의 정보를 검색. (Pairwise 방식) SELECT dept_ID, employeeID, first_name, salary FROM emp WHERE (dept_ID, salary) IN (SELECT dept_ID, MIN(salary) FROM emp GROUP BY dept_ID) ● 다중 열 서브쿼리에서의 열 비교 - Pairwise 방식. SELECT empno, sal, deptno FR..
- 서브쿼리를 작성할 수 있는 부분 1. WHERE 절 2. HAVING 절 3. FROM 절 서브쿼리 = 중첩SELECT = 부속 SELECT = 내부SELECT - 서브쿼리는 괄호로 둘러싸야 한다. - 서브쿼리는 비교연산자의 오른쪽에 있어야 한다. - 서브쿼리에 ORDER BY 절을 포함하면 안된다. (SELECT문장에 대해서는 오직 하나의 ORDER BY를 가질 수 있으며, SELECT문장의 제일 마지막에 있어야 한다.) ● 서브쿼리의 유형 1. 단일 행 서브쿼리 : 내부 SELECT 문장으로부터, 오직 하나의 행만을 리턴하는 질의이다. 단일 행 비교연산자(비교대상이 1개의 결과 리턴)를 사용한다. =, >, >=, SELECT ename, sal, deptno FROM emp WHERE sal I..
● 그룹함수(집계함수)란? 단일 행 함수와는 달리 그룹 함수는 그룹 당 하나의 결과가 주어지도록 행의 집합에 대해 연산한다. 이러한 집합은 전체 테이블이거나 특정 그룹일 수 있다. 그룹함수는 열에 있는 null값을 무시한다. null값을 포함하게 하고 싶으면, NVL함수를 쓰면 된다. (AVG그룹함수 설명에서 참고.) - AVG 입력된 데이터의 평균을 구하는 함수. Ex. AVG(sal) sal 컬럼의 평균을 구한다. (NULL값 미포함) AVG(NVL(sal, 0)) sal 컬럼의 평균을 NULL값의 경우 0으로 치환하여 구한다. - MIN(sal), MAX(sal) 모든 데이터형에 대해서 MIN과 MAX가 가능하다. ☞ sal이 Date형일 경우 최근 날짜 : MAX 이전 날짜 : MIN ☞ sal이..
● JOIN - 둘 이상의 테이블을 연결하여 데이터를 검색하는 방법 이다. - 보통 둘 이상의 행들의 공통된 값 Primary Key 및 Foreign Key 값을 사용하여 조인 한다. - 두 개의 테이블을 SELECT문장 안에서 조인 하려면 적어도 하나의 컬럼이 그 두 테이블 사이에서 공유 되어야 한다. 1. SELECT문을 작성할 때, 명확성을 위해서 그리고 데이터베이스 엑세스를 향상시키기 위해서 열 이름 앞에 테이블 명을 붙인다. 2. 똑같은 열 이름이 하나 이상의 테이블에 있으면, 열 이름 앞에 테이블 명이 있어야 한다. 3. n개의 테이블을 함께 조인하려면 최소 (n-1)개의 조인 조건문이 필요하다. 이 규칙은 테이블이 연결된 primary key를 가진다면 적용될 수 없다. - Cartesia..
● SQL 함수의 분류 - 단일 행 함수 : 오직 단일 행에서만 적용 행별로 하나의 결과를 리턴 데이터 값을 조작하는데 사용 중첩가능, SELECT, WHERE, ORDER BY 절에 사용 가능하다. - 다중 행 함수 : 복수의 행을 조각하여 행의 그룹당 하나의 결과를 리턴 ● 함수의 종류 ☞ 문자함수 - LOWER('SQL Course') → sql course - UPPER('SQL Course') → SQL COURSE - INITCAP('SQL Course') → Sql Course 알파벳 문자 값을 각 단어의 첫 번째 문자는 대문자로, 나머지 문자는 소문자로 변환한다. - CONCAT('A','B') → AB 또는 CONCAT(컬럼명,컬럼명) || 와 같은 기능이다. 단 2개밖에 연결하지 못한다..
- 디폴트 날짜 형식 DD-MON-YY - 숫자 값은 인용부호(')로 둘러싸면 안된다. ● WHERE 절의 LIKE 연산자. - 와일드 카드 검색(wildcard 검색) : 문자 패턴 일치 연산 ' % ' 와 ' _ ' 두개의 기호가 스트링 검색에 사용된다. % 나 _ 는 wild문자라 한다. ex) SELECT ename FROM emp WHERE ename LIKE 'A%'; : ename이 A로 시작되는 사원만 조회. SELECT ename FROM emp WHERE ename LIKE '%N'; : enameㅇ N으로 끝나는 사원만 조회. SELECT ename FROM emp WHERE ename LIKE '_L%'; ( 또는 WHERE ename LIKE '__L%';) : ename에 두 번..
● SQL의 SELECT 문장의 성능 - Selection : 질의에 대해 리턴하고자 하는 테이블의 행을 선택. - Projection : 질의에 대해 리턴하고자 하는 테이블의 열을 선택. - Join : 공유 테이블의 양쪽의 열에 대해 링크를 생성하여 다른 테이블에 저장되어 있는 데이터를 가져옴. ● 기본적인 SELECT 문장. SELECT [DISTINCT] {*, COLUMN [ALIAS], ...} FROM TABLES ★ keyword, clause, statement 란? 1. keyword : 독립적인 SQL 요소 ex) SELECT 와 FROM 2. clause : SQL 문장의 한 부분 ex) SELECT empno, ename, ... 3. statement : 둘 이상의 clauses..