본문 바로가기
728x90

DB/DBMS21

DBMS - 프로시저(Procedure) 프로시저 - PL/SQL 프로시저는 함수라는 의미로 programming 언어에서 흔히 쓰이는 function과 기능이 유사하다. 프로시저 문법을 쓰기 위해서는 PL/SQL문에 대해서 알아야 한다. PL/SQL : Procedural Language Extension/Structured Query Language DML의 단순 데이터 활용 한계로 SQL언어에 절차적 언어의 요소를 더하여 데이터 처리를 향상시킨 기능으로 일반 프로그래밍 언어에서 제공하는 많은 기능들이 탑재되어 있다. DB에 직접 탑재되어 컴파일되고 실행되어 성능면에서도 우수하다. 사용법 프로시저의 사용법은 다음과 같다. CREATE OR REPLACE PROCEDURE 프로시저명 ( [매개변수1] [매개변수1 타입] ... ) IS -- .. 2023. 8. 20.
DBMS - VIEW VIEW란 DBMS에서 VIEW는 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상테이블이다. 실무에서 많이 사용하는 문법 중 하나이다. 가상테이블이기 때문에 저장장치 내에서는 물리적으로 존재하지 않지만 사용자에게는 있는 것처럼 간주된다. 뷰를 사용하는 이유로는 독립성, 편리성, 보안성이 있다. 독립성 : 데이터가 다른 곳에서 변경되지 않도록 논리적 독립성을 제공 편리성 : 가상 테이블인 뷰를 만들 때, 원하는 데이터에 대한 정보를 추출, 생성하여 뷰를 형성하였기 때문에 뷰에 쿼리문을 짧게 사용이 가능 보안성 : 뷰를 사용할 때는 짧은 쿼리문을 사용 -> 기존의 긴 쿼리문(뷰를 생성할 때 사용한)은 알기 어렵다. VIEW 특징 뷰는 기본테이블로부터.. 2023. 8. 17.
DBMS - DCL DCL이란 DCL = DATA CONTROL LANGUAGE = 데이터 제어어 DCL은 데이터 제어어로서 데이터베이스에 접근하거나 객체에 권한을 주는 등의 역할을 하는 언어이다. 예를 들어 신입사원이 들어와 데이터베이스에 접근해서 수정하는 권한을 부여하고 싶을 때, 또는 잘못 부여한 권한을 회수할 때 사용한다. GRANT : GRANT [부여할 권한] TO [권할을 부여 받을 사용자]; REVOKE : REVOKE [회수할 권한] FROM [권한을 회수당할 사용자]; DCL을 사용할 때 주의할 점은, 누가 권한을 줄 수 있느냐이다. 만약 새로운 사용자가 USER로 등록되었다면, SYS 또는 SYSTEM 사용자가 데이터베이스에 대한 권한을 줄 수 있다. 하지만 다른 계정에 있는 TABLE을 복사해오고 싶을.. 2023. 8. 17.
DBMS - JOIN JOIN JOIN은 DBMS에서 많이 쓰이는 문법 중 하나로, 이름 그대로 여러 테이블을 하나로 합치는 문법이다. 여러 테이블에 흩어져 있는 정보 중 사용자가 필요한 정보만 가져와서 가상의 테이블처럼 만들고 결과를 보여준다. 조회 테이블이 너무 많이 쪼개져 있으면 각각의 테이블에 같은 작업을 반복해야 되기 때문에 작업 속도가 느려지는 데 이 대 조인을 이용하여 필요한 테이블을 합쳐서 작업을 하나다면 훨씬 효율적으로 작업을 수행할 수 있다. INNER JOIN - 내부 조인 조건이 일치하는 값이 두 테이블에 모두 존재할 때 내부 조인을 사용하여 조회를 할 수 있다. 조건이 일치하는 값이 존재하기 위해서는 두 테이블이 PK, FK로 연결되어야 함을 의미한다. SELECT ... FROM 테이블1 JOIN 테.. 2023. 8. 17.
DBMS - Optimizer, Hint Optimizer Oracle DBMS에서는 옵티마이저(Optimizer)를 제공하고 있다.옵티마이저란 사용자가 질의한 SQL문에 대해 최적의 실행 방법을 결정하는 DBMS 내부의 핵심 엔진이다. 사용자가 쿼리문으로 결과를 요청하면 이를 생성하는 데 필요한 처리 경로는 DBMS에 내장된 옵티마이저가 자동으로 생성되고 최적의 실행 방법을 생성하여 주는데 이를 실행계획이라고 한다. SQL최적화 과정 각 실행 계획에 대한 예상 비용은 다음과 같이 구성되어 있다. COST : 예상 수행 시간, 쿼리를 수행하는 데 소요되는 시간 또는 일량 CARDINALITY : 실행 결과의 건수 옵티마이저가 사용자의 SQL 요청을 최적화하는 과정으로는 다음과 같다. 사용자가 작성한 쿼리문 수행을 위해, 실행될만한 실행 계획을 .. 2023. 8. 15.
DBMS - GRUOP BY, SUB QUERY GRUOP BY GROUP BY는 특정 컬럼을 기준으로 집계를 내는데 사용이 되는 함수이다. 즉, 특정 컬럼에서 같은 값을 가지는 데이터끼리 그룹을 지어서 보여준다. ID NAME POSITION TEAM_ID 1 홍길동 MF 232 2 이순신 DF 234 3 리신 GK 235 4 벨베스 MF 236 위의 그래프는 PLAYER 테이블로 ID(PK), NAME, POSITION, TEAM_ID(FK)로 구성되어 있다. 이 때 POSITION.별로 몇명이 속해져 있는지 알고 싶다면 다음과 같이 query문을 작성할 수 있다. -- oracle에서 POSITION 문법을 제공하기 때문에 칼럼명으로 사용할 경우 큰따옴표를 사용하여야 한다. SELECT "POSITION" 포지션, COUNT(ID) AS "POS.. 2023. 8. 15.
DBMS - 집계함수, ORDERBY,CASE 집계함수 저번 글에서 다루었던 숫자형 함수 이외에도 Oracle DBMS 에서는 집계함수도 제공하고 있습니다. 집계 함수란 평균, 합계 등 특정 데이터 값을 집계하여 보여주는 편리한 기능을 제공해주는 함수이다. 집계함수를 사용할 때 주의할 점은 NULL값은 집계하지 않고 계산한다는 점과 값을 반환하기 때문에 WHERE절이 나닌 SELECT문에서 사용한다는 점이다. AVG(COLUMN) : 해당 칼럼의 모든 값의 평균 MAX(COLUMN) : 해당 칼럼의 값 중 최댓값 MIN(COLUMN) : 해당 칼럼의 값 중 최솟값 SUM(COLUMN) : 해당 칼럼의 모든 값의 합 COUNT(COLUMN) : 해당 칼럼의 값 개수 만약 NULL을 포함한 집계를 하고 싶다면 저번글에서 배운 NVL함수를 사용하면 해결이.. 2023. 8. 14.
DBMS - NULL, 숫자형 함수 NULL이란 지금까지 DBMS를 공부하면서 예제에서 가끔 보았던 용어이다. 프로그래밍을 조금이라도 해본 사람은 대략적으로 어떤 의미이고 어디에 사용하는지에 대해 알 것이다. DBMS 에서는 실제 테이블에 저장하는 값은 주소 값이다. 어떠한 정보를 조회할 때 그 주소값을 통해 실제값에 접근할 수 있는 것이다. 그렇기 때문에 테이블에 데이터를 집어넣게 되면 실제 값이 들어가는 메모리를 제공받고 테이블에는 해당 메모리의 주소가 들어가게 되는데 아직 실제 값이 뭔지 모를 때에도 해당 메모리의 주소를 입력받게 된다. 이 때에 아직 이 메모리 주소가 저장하는 값은 정의되지 않은 값이라는 것을 알려주기 위해 사용하는 용어가 바로 NULL이다. 즉, NULL은 빈 값 대신 미정 값을 부여할 때 사용하는 문법으로 어떤 .. 2023. 8. 14.
DBMS - 정규화(NF) : 이상현상 2023.08.14 - [Programming 공부/DBMS] - DBMS - 정규화(NF) : 정규화란? DBMS - 정규화(NF) : 정규화란? 정규화란 고객의 요구에 맞춰 모델링을 통해 테이블을 생성하였다고 바로 사용하게 되면 여러 이상현상들을 마주하게 된다. 이러한 이상 현상에는 불필요한 컬럼이 존재하거나 중복된 값이 존 codingralro.tistory.com 이상현상 저번 글에서 정규화의 각 과정에 대해서 알아보기 전에 잠깐 이상현상에 대해서 언급하였는데 이번 글에서는 이상현상에는 어떠한 것이 있는지 자세히 알아보겠다. 이상현상은 테이블로 구성된 데이터 베이스에 정규화가 필요한 필수적인 이유이다. 데이터 베이스를 정규화를 진행하지 않은 채 사용하게 되면(물론 처음부터 완벽하게 설계하면 안해도.. 2023. 8. 14.
DBMS - 정규화(NF) : 정규화란? 정규화란 고객의 요구에 맞춰 모델링을 통해 테이블을 생성하였다고 바로 사용하게 되면 여러 이상현상들을 마주하게 된다. 이러한 이상 현상에는 불필요한 컬럼이 존재하거나 중복된 값이 존재하는 등이 있는데 데이터를 다루는 데 심각한 불편함과 어려움을 초래하게 된다. 이것을 방지하고자 정규화라는 규칙을 세워 테이블을 이것에 맞춰서 한번 더 다듬을 필요가 있는 것이다. 정규화는 총 5개의 단계가 있고 보통은 3단계까지 진행한다. 정규화의 목적 삽입/수정/삭제의 이상현상을 제거 데이터의 중복 최소화 정규화를 너무 과하게 적용하게 되면 테이블이 너무 많이 분리되게 되어 사용시 조인이 많이 발생한다는 단점이 있어 이로 인해 성능 저하가 발생하게 되면 반정규화를 적용할 수도 있다. 1NF - 제1 정규화 각 칼럼이 하나.. 2023. 8. 14.
DML - Concatenation,Like Concatenation Concatenation은 연결을 의미하는 단어로 SELECT문을 사용하여 데이터를 조회하고 싶을 때 내가 원하는 형태로 조회를 할 수 있도록 해준다. 학생의 정보를 담고 있는 테이블에 학생의 이름과 학생의 학번을 조회하고 싶다고 가정할 때 "[학생]의 학번은 [학번]입니다"라는 형태로 조회를 해보자. SELECT STUDENT_NAME || "의 학번은 " || STUDENT_ID || "입니다" FROM STUDENT; 이렇게 조회를 하게 되면 다음과 같은 결과를 얻을 수 있다. Like LIKE 문법은 조건식에서 사용할 수 있는 편리한 문법이다. 특정 문자열이 포함된 문자열을 가리킬 때 사용하는 문법으로 사용방법으로는 다음과 같다. %[문자열] : 해당 문자열로 끝나는 모든.. 2023. 8. 13.
TCL - 트랜젝션 제어 언어 TCL이란 TCL = Transaction Control Language TCL은 Transaction Control Language의 줄임말로, 트랜젹션 제어어라고 한다. TCL에 대해서 정확히 알기 위해서는 트랜젝션이 무엇인지 알아야 한다. Transaction = 하나의 작업 단위 트랜잭션은 하나의 작업 단위를 일컫는데 하나의 작업 단위란 DMBS에서 특정 작업을 수행하는 데 필요한 쿼리문의 집합이다. 즉, 트랜잭션에는 하나 이상의 쿼리문이 포함되며 작업 단위이기 때문에 분할할 수 없다. DBMS에서는 트랜잭션을 수행하였을 때 그것이 바로 결과에 영향을 미치는 것이 아닌 작업 단위에 대한 결과를 저장해두었다가 이 결과를 진짜 적용할지 안할지에 대해 결정하는 단계가 있다. 이 때 사용하는 것이 TCL.. 2023. 8. 13.
728x90
반응형