본문 바로가기

Programming/SQL(Oracle)

(15)
DAY 68. [DataBase] DCL DCL(DATA CONTROL LANGUAGE) 계정에게 시스템 권한 또는 객체에 대한 접근 권한을 부여(GRANT)하거나 회수(REVOKE)하는 언어이다. - CREATE SESSION : 데이터 베이스에 접속할 수 있는 권한 - CREATE TABLE : 테이블을 생성할 수 있는 권한 - CREATE VIEW : 뷰를 생성할 수 있는 권한 - CREATE SEQUENCE : 시퀀스를 생성할 수 있는 권한 - CREATE PROCEDURE : 프로시저를 생성할 수 있는 권한 - CREATE USER : 계정을 생성할 수 있는 권한 등등 ... [표현법] GRANT 권한1, 권한2, ... TO 사용자계정명; REVOKE 권한1, 권한2, ... FROM 사용자계정명; -- 1. 계정 생성 CREATE ..
DAY 67. [DataBase] PROCEDURE&FUNCTION PROCEDURE PL/SQL 문을 저장하는 객체이다. 필요할 때마다 복잡한 구문을 다시 입력할 필요 없이 간단하게 호출해서 실행 결과를 얻을 수 있다. 우리가 필요할 때마다 프로시저 = 객체를 호출함으로 인해서 작성한 PL/SQL문을 실행시킬 수 있다. 함수와 다르게 반환 값이 없다. 특정 로직을 처리하기만 하고 결과 값을 반환하지 않는다. 실무에서는 테이블에서 데이터 추출 → 데이터들을 조직에 필요에 맞게 변경해서 다른 테이블에 저장, 갱신할 때 사용한다. [표현법] CREATE OR REPLACE PROCEDURE 프로시저명 { // 매개변수 갯수의 제한은 없다. 매개변수 1 [IN|OUT] 데이터타입 [ := DEFAULT 값]; 매개변수 2 [IN|OUT] 데이터타입 [ := DEFAULT 값]..
DAY 66. [DataBase] PL/SQL PL/SQL Procedural Language extension to SQL 의 약자이다. 오라클 자체에 내장되어 있는 **절차적 언어(프로그래밍 언어)**이다. SQL 단점을 보완하여 SQL 문장 내에서 변수의 정의, 조건 처리(IF), 반복 처리(LOOP, FOR, WHILE) 등을 지원한다. 다수의 SQL 문을 한 번에 실행할 수 있다. ✔️구조 ** 선언부&예외부는 생략 가능하지만 실행부는 반드시 존재해야한다. ** 실행부에는 쿼리도 작성 가능 ▪️ 선언부(DECLARE SECTION) 변수 및 상수를 선언하는 공간이다. 선언과 동시에 초기화가 가능하다. 변수 및 상수는 일반 타입 변수, 레퍼런스 타입 변수, ROW 타입 변수로 선언해서 사용할 수 있다. SET SERVEROUTPUT ON; *..
DAY 65. [DataBase] 객체 INDEX INDEX 오라클에서 제공하는 객체이다. SQL 명령문의 처리 속도를 향상시키기 위해 컬럼에 대해 생성하는 오라클 객체이다. 내부 구조는 B*트리 형식으로 구성되어 있다. 테이블과 독립되어 작성되는 객체이지만 테이블에 다소 의존적인 객체이다. 검색 연산에 최적화 하기 위해서 데이터 베이스의 행들에 대한 정보를 구성하는 객체 테이블 전체를 검색하는 것이 아니라 데이터 베이스에서 원하는 정보를 빨리 검색할 수 있다. 장점 : 검색 속도가 빨라지고 시스템에 걸리는 부하를 줄여 시스템 전체 성능이 향상된다. 단점 : 인덱스를 위한 추가 저장 공간이 필요하다. 인덱스를 생성하는데 시간이 걸린다. 데이터의 변경 작업(INSERT/UPDATE/DELETE)이 자주 일어날 경우 오히려 성능이 저하된다. [표현식] CR..
DAY 64. [DataBase] 객체 SEQUENCE SEQUENCE 오라클에서 제공하는 객체이다. 순차적으로 정수 값을 자동으로 생성하는 객체이다. 자동 번호 발생기 역할을 한다. -- [표현식] CREATE SEQUENCE 시퀀스명 [START WITH 숫자] -- 처음 발생시킬 시작 값, 기본 값 1 [INCREMENT BY 숫자] -- 다음 값에 대항 증가치, 기본 값 1 [MAXVALUE 숫자 | NOMAXVALUE] -- 발생시킬 최대값, 10의 27승-1까지 가능 [MINVALUE 숫자 | NOMINVALUE] -- 발생시킬 최소값, -10의 26승 [CYCLE | NOCYCLE] -- 시퀀스가 최대값까지 증가 완료 시 CYCLE은 START WITH 설정 값으로 돌아간다. NOCYCLE은 에러 발생한다. / 값의 반복|순환 여부를 결정 [CA..
DAY 64. [DataBase] 객체 VIEW VIEW SELECT 쿼리의 실행 결과를 화면에 저장한 논리적 가상 테이블이다. 실제 테이블과는 다르게 실질적 데이터를 저장하고 있진 않지만 사용자는 테이블을 사용하는 것과 동일하게 사용이 가능하다. 실제 데이터를 저장하는 게 아니라 SQL 쿼리문을 가지고 있는 것이다. ** 서브쿼리의 SELECT 절에 함수가 사용된 경우 반드시 별칭을 지정해야 한다. ** 생성된 뷰를 가지고 DML 구문(INSERT, UPDATE, DELETE) 사용이 가능하다. ** 생성된 뷰에 요청한 DML 구문은 베이스 테이블의 데이터들도 변경이 가능하다. VIEW 옆에 ( 컬럼 별칭 )을 지정할 수 있다. 대신에 이 방법은 서브 쿼리 안에 있는 모든 컬럼들에도 별칭을 부여해야 한다. 서브 쿼리의 SELECT 절에 함수나 산술 ..
DAY 56. [DataBase] 오라클 DML(INSERT, UPDATE, DELETE) DML(Data Manipulation Language) 데이터 조작 언어로 테이블에 값을 **삽입(INSERT), 수정(UPDATE), 삭제(DELETE)**하는 구문을 말한다. INSERT 테이블에 새로운 행을 추가하여 테이블의 행 개수를 증가시키는 구문 ** INSERT하고자 하는 컬럼이 모든 컬럼인 경우는 컬럼명 생략이 가능하다. 단, 컬럼의 순서를 지켜서 VALUES 값을 기입해야 한다. ** INSERT 시 VALUES 대신 서브쿼리의 결과를 바로 INSERT 구문 안에 사용할 수 있다. 대신, 테이블의 컬럼 갯수와 데이터 타입이 서브쿼리로 정한 SELECT절의 결과와 동일해야 한다. ◾ INSERT ALL 서브쿼리가 사용하는 테이블이 같은 경우, 두 개 이상의 테이블에 INSERT ALL을 ..
DAY 55. [DataBase] 오라클 DDL(ALTER, DROP) DDL(Data Definition Language) 데이터 정의 언어 객체를 만들고 수정하고 삭제하는 구문을 말한다. 02. ALTER 오라클에서 제공하는 객체를 수정하는 구문 테이블에 정의된 내용을 수정할 때 사용하는 데이터 정의어 ▪️ 수정할 수 있는 내용 컬럼의 추가/삭제 제약조건의 추가/삭제 → 수정은 불가능(삭제 후 새로 추가해야 한다.) 컬럼의 자료형 변경 DEFAULT 값 변경 테이블 명/컬럼 명/ 제약 조건명(제약 조건 자체는 생성 or 삭제만 가능하고 이름을 바꿀 수는 있다.) 컬럼 추가 ALTER ~ ADD 컬럼 수정 ALTER ~ MODIFY 컬럼 삭제 ALTER ~ DROP ** 컬럼 삭제 시 참조하고 있는 컬럼이 있다면 컬럼 삭제가 불가능하다. 제약조건 추가 ADD CONSTRA..