옵티마이저는 작성된 SQL이 가장 효율적으로 수행되도록 최적의 경로를 찾아 주는 모듈입니다. 옵티마이저의 종류에는 RBO와 CBO가 있습니다. RBO Rule Based Optimizier CBO Cost Based Optimizer 최적화 기준 규칙에 정의된 우선순위 액세스 비용 성능 기준 개발자의 SQL 숙련도 옵티마이저의 예측 성능 특징 실행 계획 예측이 쉬움 성능 통계치 정보 활용, 예측이 복잡함 고려사항 개발자의 규칙 이해도, 규칙의 효율성 비용 산출 공식의 정확성 * 실행 계획이란 옵티마이저가 수립한 SQL 코드의 실행 절차를 의미합니다. EXPLAIN 명령어를 통해 확인할 수 있습니다. 쿼리 성능 최적화 방법 SQL 코드 재구성 인덱스 재구성 - WHERE 절 추가 - WHERE 절에 연산자..
SQL 응용
ORM이란 'Object-Relational Mapping'의 약자로, 객체(OOP)와 관계형 데이터베이스(RDB)의 데이터를 연결하는 기술을 의미합니다. SQL 코드를 입력하지 않고 프로그래밍 코드와 데이터베이스를 연결하는 것이 가능합니다. ORM 프레임워크란 ORM을 구현하기 위해 여러 기능을 제공하는 소프트웨어를 의미합니다. 기반 언어 ORM 프레임워크 Java JPA, Hibernate, EclipseLink, DataNucleus, Ebean C++ ODB, QxOrm Python Django, SQLAlchemy, Storm .NET NHibernate, DatabaseObjects, Dapper PHP Doctrine, Propel, RedBean ORM의 한계 - 프레임워크가 자동으로 SQ..
단문 SQL 테스트는 DDL, DML, DCL이 포함되어 있는 SQL과 TCL을 테스트하는 것으로, 직접 실행하여 결과물을 확인합니다. - DDL로 작성된 개체는 'DESCRIBE' 명령어를 이용하여 확인합니다. - DML로 변경한 데이터는 'SELECT'문으로 확인합니다. - DCL로 설정한 사용자 권한은 사용자 권한 정보가 저장된 테이블을 조회하여 확인합니다. 절차형 SQL 테스트는 프로시저, 트리거, 사용자 정의 함수와 같은 절차형 SQL을 디버깅을 통해 기능의 적합성 여부를 검증하고, 실행을 통해 결과를 확인하는 테스트를 수행합니다. 테스트 전에는 생성을 통해 구문 오류나 참조 오류의 존재 여부를 확인합니다. - 오류 메시지가 상세히 출력되지 않으므로 'SHOW' 명령어를 통해 오류 내용을 확인합..
DBMS 접속이란 응용 시스템을 이용하여 DBMS에 접근하는 것을 의미합니다. 인터넷을 통해 구동되는 웹 응용 프로그램은 웹 응용 시스템을 통해 DBMS에 접근하는데, 이때 웹 응용 시스템은 웹 서버와 웹 애플리케이션 서버(WAS)로 구성됩니다. DBMS 접속 기술은 DBMS에 접근하기 위해 사용하는 API 또는 API의 사용을 편리하게 도와주는 프레임워크를 의미합니다. JDBC ODBC MyBatis Java 언어로 DB에 접속할 때 사용하는 표준 API 언어에 관계없이 DB에 접근하기 위한 표준 개방형 API JDBC 코드를 단순화하여 사용할 수 있는 SQL Mapping 기반 오픈 소스 접속 프레임워크 동적 SQL이란 SQL 구문을 동적으로 변경하여 처리할 수 있는 SQL 처리 방식입니다. 동적 S..
커서란 쿼리문의 처리 결과가 저장되어 있는 메모리 공간을 가리키는 포인터입니다. 커서의 수행은 열기(Open), 패치(Fetch), 닫기(Close)의 세 단계로 진행됩니다. 묵시적 커서란 내부에서 자동으로 생성되어 사용되는 커서입니다. 커서의 속성을 조회하여 사용된 쿼리 정보를 열람하는 것을 가능하게 합니다. 수행된 쿼리문의 정상적인 수행 여부를 확인하기 위해 사용합니다. 속성의 종류는 아래와 같습니다. SQL%FOUND SQL%NOTFOUND SQL%ROWCOUNT SQL%ISOPEN 쿼리 수행의 결과로 패치된 튜플 수가 1개 이상이면 TRUE 쿼리 수행의 결과로 패치된 튜플 수가 0개면 TRUE 쿼리 수행의 결과로 패치된 튜플 수를 반환 커서가 Open 상태이면 TRUE, 묵시적 커서는 자동으로 생..
제어문이란 절차형 SQL의 진행 순서를 변경하기 위해 사용하는 명령문입니다. 종류에는 IF와 LOOP 등이 있습니다. IF문 LOOP문 IF 조건 THEN 실행할 문장; ELSE 실행할 문장; END IF; LOOP 실행할 문장; EXIT WHEN 조건; END LOOP;
사용자 정의 함수는 프로시저와 유사하지만, 종료 시 처리 결과로 단일값만을 반환하는 절차형 SQL입니다. DML문의 호출에 의해 실행됩니다. 예약어 RETURN을 통해 단일값을 반환하며, 출력 파라미터가 없습니다. 사용자 정의 함수 생성 CREATE OR REPLACE FUNCTION 사용자 정의 함수명 (파라미터) 지역변수 선언 BEGIN 사용자 정의 함수 BODY; RETURN 반환값; END; * 파라미터에 올 수 있는 것 - IN - 매개변수명 - 자료형 사용자 정의 함수 실행 SELECT 사용자 정의 함수명 FROM 테이블명; INSERT INTO 테이블명 (속성명) VALUES (사용자 정의 함수명); DELETE FROM 테이블명 WHERE 속성명 = 사용자 정의 함수명; UPDATE 테이블..
트리거란 데이터베이스 시스템에서 이벤트가 발생할 때 관련 작업이 자동으로 수행되게 하는 절차형 SQL입니다. 데이터 변경 및 무결성 유지, 로그 메시지 출력 등의 목적으로 사용됩니다. 트리거 구문에는 DCL을 사용할 수 없습니다. 트리거 생성 CREATE OR REPLACE TRIGGER 트리거명 동작시기옵션 동작옵션 ON 테이블명 REFERENCING NEW 또는 OLD AS 테이블명 FOR EACH ROW WHEN 조건식 BEGIN 트리거 BODY; END; * 동작시기옵션 : 트리거가 실행될 때를 지정합니다. - AFTER : 테이블이 변경된 후에 실행됩니다. - BEFORE : 테이블이 변경되기 전에 실행됩니다. * 동작옵션 : 트리거가 실행되게 할 작업의 종류를 지정합니다. - INSERT : ..
프로시저란 SQL을 사용하여 작성한 일련의 작업을 저장해두고, 원할 때마다 저장한 작업을 수행하도록 하는 절차형 SQL입니다. 일일 마감 작업, 일괄 작업 등에 주로 사용됩니다. '스토어드 프로시저'라고도 부릅니다. 프로시저 생성 CREATE OR REPLACE PROCEDURE 프로시저명(파라미터) 지역변수 선언 BEGIN 프로시저 BODY; END; * OR REPLACE : 동일한 프로시저 이름이 존재하는 경우, 기존의 프로시저를 대체합니다. * 파라미터에 올 수 있는 것들 - IN : '호출 프로그램 → 프로시저' 값 전달 - OUT : '호출 프로그램 ← 프로시저' 값 반환 - INOUT : '호출 프로그램 ↔ 프로시저' 값 전달 & 반환 - 매개변수명 : 전달받은 값을 저장할 변수 이름을 지정..
사용자등급 지정 및 해제 사용자 ID가 "NABI"인 사람에게 데이터베이스 및 테이블을 생성할 수 있는 권한을 부여하시오. GRANT 사용자등급 TO 사용자 IDENTIFIED BY 암호; GRANT RESOURCE TO NABI; 사용자 ID가 "NABI"인 사람에게 데이터베이스 및 테이블을 생성할 수 있는 권한을 해제하시오. REVOKE 사용자등급 FROM 사용자; REVOKE RESOURCE FROM NABI; 테이블 및 속성에 대한 권한 부여 및 취소 사용자 ID가 "NABI"인 사람에게 테이블에 대한 모든 권한과 다른 사람에게 권한을 부여할 수 있는 권한까지 부여하시오. GRANT 권한 ON 개체 TO 사용자 WITH GRANT OPTION GRANT ALL ON 고객 TO NABI WITH G..