본문 바로가기

데이터베이스11

[마지막] TRIGGER (트리거) 어느덧 벌써 DB의 마지막 기능을 배웠다... 바로 정리해보자 ! TRIGGER 내가 지정한 테이블에 INSERT, UPDATE, DELETE등 DML문에 의해 변경사항이 생길 때 (테이블에 이벤트가 발생했을 때) 자동으로 매번 실행할 내용을 미리 정의해 둘 수 있다. 예를들어 상황을 가정해보자, 회원탈퇴시 기존의 회원테이블에 데이터 DELETE 후 곧바로 탈퇴한 회원들만 따로 보관하는 테이블에 자동으로 INSERT시켜야한다. 신고회수가 일정 수를 넘었을 때 묵시적으로 해당 회원을 블랙리스트로 처리 되게 끔 입출고에 대한 데이터가 기록(INSERT)될 때 마다 해당 상품에 대한 재고수량을 매번 수정(UPDATE)해야한다. 트리거 종류 -SQL문의 실행시기에 따른 분류 >BEFORE TRIGGER : 내가.. 2024. 2. 29.
[10일차] SEQUENCE(시퀀스), PL/SQL 시퀀스란? 자동으로 번호를 발생시켜주는 역할을 하는 객체 적수값을 순차적으로 일정값씩 증가시키면서 생성해줌 [표현식] CREATE SEQUENCE 시퀀스명 [SRATT WITH 시작숫자] --> 처음 발생시킬 시작값 지정[기본값 1] [INCREMENT BY 숫자] --> 몇 씩 증가시킬건지[기본값1] [MAXVALUE 숫자] --> 최대값 지정[기본값매우큼] [MINVALUE 숫자] --> 최소값 지정[기본값1] [CYCLE | NOCYCLE] --> 값의 순환 여부를 지정해준다 [기본값 NOCYCLE] [NOCACHE | CACHE 바이트크기] --> 캐시메모리를 할상해준다 (기본값 CACHE 20) *캐리메모리 : 미리 발생될 값들을 생성해서 저장해두는 공간 매번 호출 될 때 마다 새로 번호를 생성.. 2024. 2. 28.
[9일차] ETC(DCL, TCL) , VIEW(뷰) 오늘도 할게 많다 빠르게 정리해보자! DCL 데이터 제어문 계정에게 시스템 권한 또는 객체접근 권한을 부여하거나 회수하는 구문 >시스템권한 : DB에 접근하는 권한, 객체를 생성할 수 있는 권한 >객체접근권한: 특정 객체들을 조작할 수 있는 권한 CREATE USER 계정명 IDENTIFIED BY 비밀번호; GRANT 권한(RESOURCE, CONNECT) TO 계정; 우리는 이미 계정을 만들 때 사용했던 적이 있다. SELECT * FROM ROLE_SYS_PRIVS; 간단한 코드를 보면 알 수 있다. 여긴 별로 배운게 없어서 빠르게 넘어가도록 하겠다 !! TCL 트랜잭션 -데이터베이스의 논리적 연산단위 -데이터의 변경사항(DML)등을 하나의 트랜잭션에 묶어서 처리 DML문 한개를 수행할 때 트랜잭션.. 2024. 2. 27.
[8일차] DML(Data Manipulation Language), DDL(Data Definition Language) 오늘은 데이터베이스 명령어 DML, DDL에 대해 알아보자 DML(Data Manipulation Language) DML은 데이터 조작 언어이며 대표적인 종류로는 INSERT UPDATE DELETE 가 있다. INSERT 테이블에 새로운 행을 추가하는 구문 [표현식] 1)INSERT INTO 테이블명 VALUES (값,값,값...) 테이블에 모든 컬럼에 대한 값을 직접 제시해서 한 행을 INSERT하고자 할 때 컬럼의 순번을 지켜서 VALUES에 값을 나열해야함 INSERT로 데이터를 추가하는 방법은 총 3가지가 있다. 모든 컬럼의 값을 다 써주기 INSERT INTO EMPLOYEE VALUES(900, '이소근','880914-1456789','SG8809@naver.com','0107596669.. 2024. 2. 26.
[7일차] DDL(CREATE) DDL(Data Definition Language) : 데이터 정의 언어 란? 다른말로 데이터 정의어, 오라클에서 제공하는 객체를 새로 만들고, 구조를 변경하고, 구조 자체를 삭제하는 즉 실제 데이터 값이 아닌 규칙 자체를 정의하는 언어이다. 그럼 오라클에선 무슨 객체(구조)가 있을까? 테이블 뷰 시퀀스 인덱스 패키지 트리거 프로시저 함수 동의어 사용자 이렇게 존재하며 차차 알아가게 될 것 같다. 오늘은 DDL에 대해 다뤄보겠다 ! 먼저 DDL의 첫 번째 생성을 담당하는 CREATE 객체(테이블)을 생성하는 구문 테이블이란? 행과 열로 구성되는 가장 기본적인 데이터베이스 객체, 모든 데이터들은 테이블을 통해서 저장된다. [사용법] CREATE TABLE 테이블명( 컬럼명 자료형(크기), 컬럼명 자료형(.. 2024. 2. 25.
[6일차] SUBQUERY JOIN에 이어서 서브쿼리에 대해 알아보도록 하겠다. 우선 서브쿼리란? 서브쿼리 (SBUQUERY) 하나의 SQL문 안에 포함된 또 다른 SELECT문 메인 SQL문을 위해 보조하는 역할을 하는 쿼리 정의는 이러하다. 그럼 바로 간단한 예시를 보며 어떻게 사용되는지 알아보도록하자 SELECT DEPT_CODE FROM EMPLOYEE WHERE EMP_NAME = '노옹철'; 우선 노옹철과 이름이 같은 사람들을 가져오는 쿼리이다. SELECT EMP_NAME FROM EMPLOYEE WHERE DEPT_CODE = 'D9'; 부서 코드가 D9인 사람들의 이름을 가져오는 코드이다. 이 둘을 합칠 때 서브쿼리를 사용하면 하나로 합쳐지며 편리해진다. 방법은 간단하다. '노옹철' 부분과 'D9'부분을 같이 포함.. 2024. 2. 24.
[5일차] JOIN 돌아온 데이터베이스의 시간. 오늘은 JOIN에 대해 정리해보도록하자. 먼저 JOIN의 정의부터 차근히 읽고가자 두개 이상의 테이블에서 데이터를 조회하고자 할 때 사용하는 구문 조회 결과는 하나의 결과물(RESULT SET)으로 나옴 관계형 데이터베이스에서는 최소한의 데이터를 각각의 테이블에 담고 있음 (중복 저장을 최소화하기 위해서 최대한 쪼개서 관리함) => 관계형 데이터베이스에서 SQL문을 이용한 테이블간 "관계"를맺는 방법 (무작정 다 조회해 오는게 아니라 각 테이블간 연결고리(외래키)를 통해 데이터를 매칭시켜 조회해야한다.) JOIN은 크게 "오라클 전용 구문"과 "ANSI 구문"(ANSI == 미국국립표준협회) 요약하면 두 테이블을 합치는데 합치는 방법이 두 가지가 있는 것이다. 사실 사용하기로.. 2024. 2. 23.
[4일차] GROUP함수 간단하게 GROUP함수들을 보도록 하자 ! SUM 해당컬럼 값들의 총 합계를 구해서 반환해주는 함수 [표현법] SUM(숫자타입컬럼) SELECT SUM(SALARY) FROM EMPLOYEE; 아주아주 간단하다. 원하는 컬럼을 넣어주면 컬럼의 모든 값을 더해서 반환해준다. 가볍게 하나만 더 보면 SELECT SUM(SALARY) FROM EMPLOYEE WHERE SUBSTR(EMP_NO, 8, 1) IN ('1','3'); EMP_NO는 주민등록번호이고 SUBSTR로 8번째의 값을 잘랐다. 123456-1****** 의 남자 여자를 가르는 뒷자리 첫 번째 숫자이다. 이것이 1,3 인 값의 SALARY를 모두 SUM해서 반환해주는 코드이다. AVG 해당 컬럼값들의 평균값을 구해서 반환 [표현법] AVG(.. 2024. 2. 22.
[3일차] 함수의 마무리 오늘은 3일차. 바로 시작해보겠다. SYSDATE 시스템상 현재 날짜 및 시간을 반환하는 함수. SELECT SYSDATE FROM DUAL; MONTHS_BETWEEN 두 날짜 사이의 개월 수를 반환해준다. SELECT EMP_NAME, HIRE_DATE, TRUNC(SYSDATE - HIRE_DATE), CEIL(MONTHS_BETWEEN(SYSDATE, HIRE_DATE)) || '개월차' AS "근속개월" FROM EMPLOYEE; ADD_MONTHS 특정 날짜에 NUMBER개월수를 더해서 반환한다. SELECT ADD_MONTHS(SYSDATE, 4) FROM DUAL; NEXT_DATE(DATE, 요일(문자 | 숫자)) 특정 날짜 이후 가장 가까운 요일의 날짜를 반환 SELECT NEXT_DA.. 2024. 2. 19.