SQL 문법 정리
·
database
DDLcreate tablealter tabledrop tableDMLselectinsertupdatedelete정리 함 해야겠다'', "" -> 다름집계함수: 여러 집단에 적용해 단일 값을 반환: SUM, AVG, COUNT, MAX, MINex)SELECT MAX(comm), MIN(comm), SUM(comm) FROM empnull 데이터는 집계 함수 대상에서 제외GROUP BY: 속성 값이 같은 값끼리 그룹을 만든다SELECT deptno,SUM(sal)AS “급여 합계” FROM emp GROUP BY deptno각 부서번호를 기준으로 그룹화 -> 부서별 급여 합계 출력(SUM)표현식에 집계함수 xselect절에 집단 함수가 포함되어 있고 group by절이 없는 경우 select절에 집단 함..
데이터베이스 개념
·
database
정의데이터베이스관련있는 데이터의 모임 조직의여러사용자가공유(Shared)하여사용할수있도록 통합(Integrated)해서 저장(Stored)한 운영(Operational) 데이터의집합DBMS데이베이스의 생성과 관리를 담당하는 소프트웨어 패키지데이터베이스 시스템데이터베이스와그를관리하는소프트웨어(DBMS, 응용 프로그램) 모두를 칭하는 용어*DBMS 장점 *1) 데이터 중복최소화와이로인한데이터불일치최소화2) 프로그램-데이터독립성에의한유지보수비용절감3) 데이터 처리를보다쉽고효율적으로처리가능4) 데이터 무결성(integrity) 유지5) 데이터 동시공유가능6) 장애 발생시데이터회복가능7) 보안 향상8) 데이터 처리방법표준화가능데이터 모델링현실세계의데이터를컴퓨터세계의데이터베이스로옮기는변환과정 데이터 모델링 단계개념..
데이터베이스 프로그래밍 과제 / 최신 데이터베이스
·
database
DECLARE sum1 NUMBER := 0; CURSOR dept_cnt IS SELECT deptno, dname FROM DEPT;BEGIN FOR dept IN dept_cnt LOOP IF(mod(dept.deptno,4) = 0) THEN sum1 := sum1 + dept.deptno; END IF; DBMS_OUTPUT.put('부서번호 : ' || TO_CHAR(dept.deptno)); DBMS_OUTPUT.PUT_LINE('부서이름 : ' || dept.dname); END LOOP; DBMS_OUTPUT.put_line('4의 배수인 부서번호의 합계: ' || TO_CHAR..
데이터베이스 성능 향상[Index]
·
database
데이터베이스의 성능을 향상시키는 것은 작업 속도에 굉장한 영향을 미친다.같은 실행 결과가 나오는 SQL문도 처리 과정이 어떻게 되는지에 따라 성능이 달라진다. 사용자가 SQL로 결과 집합을 요구하면, 이를 생성하는데 필요한 처리경로를 DBMS에서 자동으로 생성해 주는데 이것이 바로 옵티마이저 (optimizer) 이다. 옵티마이저(optimizer)?SQL을 효율적인 절차로 처리하는 질의 최적화 도구SQL을 가장 빠르고 효율적으로 수행할 최적(최저비용)의 처리경로를 생성해주는 DBMS 내부의 핵심엔진옵티마이저 종류규칙 기반 옵티마이저 (Rule Based Optimizer)오라클7 버전 아래 버전에서의 기본환경미리 정해져 있는 규칙에 따라 액세스 경로를 평가하고, 실행 계획을 선택사용한 연산자나 인덱스 ..
Transaction(트랜잭션)
·
database
transaction?데이터베이스 내에서 하나의 그룹으로 처리해야 하는 명령문들을 모아 놓은 작업 단위여러 개의 SQL 명령문들을 하나의 논리적인 작업 단위로 처리하는데 이를 트랜잭션이라고 함그러니까 어떤 하나의 개념급의 일을 처리하는 일련의 과정이 하나로 묶여 수행되야 하는 것트랜잭션은 ACID 특성을 따라야 한다.Atomicity(원자성): 여러 개의 명령어 집합(트랜잭션)이 정상적으로 처리되면 종료하고 하나라도 문제가 발생하면 전체를 취소Consistency(일관성): 어떤 트랜잭션이 수행되기 전에 데이터베이스가 일관된 상태를 가졌다면 트랜잭션이 수행된 후에 데이터베이스는 또 다른 일관된 상태를 가짐Isolation (격리성, 고립성): 수행 중인 트랜잭션에 다른 트랜잭션이 끼어들어 변경 중인 데이..
PL/SQL (프로시저, 함수, 트리거)
·
database
프로시저매개 변수를 사용할 수 있고 반복해서 사용할 수 있는 이름이 있는 PL/SQL 블록리턴값 없음!연속 실행 또는 구현이 복잡한 트랜잭션을 수행하는 PL/SQL 블록을 데이터베이스에 저장하기 위해 생성데이터베이스 내에서 미리 컴파일되어 저장되므로, 실행시간때 컴파일 해야 하는 SQL문보다 빠르게 실행매개변수: 블록 안에서의 변수와 똑같이 일시적으로 값을 저장하는 역할IN호출 환경으로부터 프로시저로 값을 전달상수, 수식 또는 초기화된 변수 사용OUT프로시저로부터 호출 환경으로 값을 전달초기화되지 않은 변수를 매개변수로 사용명시적으로 지정해야 함CREATE or replace PROCEDURE select_ename(v_empno IN number) IS v_ename emp.ename%type;BEGI..
PL/SQL 커서(Cursor)와 예외처리
·
database
PL/SQL에서 SELECT를 할 때 주의해야 할 점이 있다.바로 반드시 하나의 행만을 검색해야 한다는 것이다!이게 뭔 소리냐면, select를 통해 값을 조회하고 그 값을 변수에 넣는 작업을 할 때 여러개의 행을 조회해 버리면 오류가 발생하기 때문에 하나의 행만을 조회하도록 해야 한다!만약 두 개 이상의 데이터 행을 추출하면 TOO_MANY_ROWS 오류가 발생하고, 어떤 데이터도 추출하지 못하면NO_DATA_FOUND 오류가 발생한다. 아니 그러면 여러 행을 한번에 조회해서 사용할 수는 없는 것인가??이럴 때 바로 커서(Cursor)를 사용하면 된다! 커서: SQL 처리 결과가 저장된 작업 영역에 이름을 지정하고 저장된 정보를 접근할 수 있게 함. SQL 명령을 실행시키면 서버는 명령을 파싱하고 실행..
PL/SQL [Oracle]
·
database
관계형 데이터베이스의 기초인 SQL은 프로그래밍 언어가 가지고 있는 조건문, 반복문, 입출력 등과 같은 동작, 사용자와의 상호 작용, 질의결과를 UI로 표현하는 등의 기능이 없다.그렇기 때문에 SQL과 프로그래밍 언어의 통합이 필요한데...이 통합을 할 때 데이터베이스 모델과 프로그래밍 언어 모델 간의 차이 때문에 여러 문제가 발생하는데 이를 Impedance Mismatch라고 한다.데이터 타입간 차이: SQL 데이터 타입을 각 프로그래밍 언어의 타입에 맞도록 binding 해야 함SQL 질의 결과가 튜플 집합이기 때문에 이를 데이터로 사용하기 위해 값을 추출한 후 사용해야 함이걸 수행하려면 Embedded SQL(ESQL/C 등), SQL/PSM(SQL/Persistent Stored Modules)..