Back-end/DataBase 31

[SQLD] 옵티마이저optimazer / 인덱스index / 조인join

1. 옵티마이저와 실행계획 (1) 의미 - 사용자가 질의한 SQL문에 대해 최적의 실행 방법을 결정하는 역할을 수행한다. 즉, SQL실행시 실행계획을 수립하는 것이다. - 사용자 요구사항을 만족하는 결과를 추출할 수 있는 다양한 실행 방법들 중에서 최적의 실행 방법을 결정하는 것이 옵티마이저의 역할이다. - 옵티마이저가 선택한 실행 방법의 적절성 여부는 질의의 수행 속도에 가장 큰 영향을 미치게 된다. - 옵티마이저는 실제로 SQL문을 처리해보지 않은 상태에서 최적의 실행 방법을 결정해야 하는 어려움이 있다. (2) 옵티마이저 종류 ① 규칙기반 옵티마이저 (RBO) - 규칙 : 보편 타당성에 근거한 것들 - 우선순위순위엑세스기법설명1Single row by rowidROW ID를 통해 테이블에 하나의 행..

Back-end/DataBase 2020.05.07

[DB][oracle] 함수 Function

함수 Function 란 (in Oracle) RETURN문 이용해 원하는 값 반환위해 만드는 것.오라클 함수는 프로시저랑 비슷하지만 IN 파라미터 이용가능. *프로시저와 함수의 차이 - 프로시저: 1.PL/SQL문으로 실행 2.RETURN 이 없음. - 함수1. 식의 일부로 사용2. RETURN 이 반드시 있다. 함수생성 EX) CREATE OR REPLACE FUNCTION test(함수이름) RETURN varchar (리턴값의 데이터타입) IS test VARCHAR2(100);BEGINtest := '함수 테스트';RETURN test; END; 실행쿼리 -> SELECT test() FROM DUAL; 결과 -> 함수 테스트 ** 오라클에서 대입연산자는 =가 아니라 := 이다.

Back-end/DataBase 2019.01.08

[DB] 뷰 VIEW table

뷰 VIEW 가상테이블이다. 즉, 실제 존재하진 않지만 실제 테이블과 똑같이 사용할 수 있다.주로 보안문제로 사용한다. 보여주고자 하는 정보만 빼서 보여주는 것이다. SELECT / INSERT / DELETE / UPDATE 가능하나, 권한이나 조건에 따라 다름복잡한 쿼리문을 (조인/서브 쿼리 등) 미리 뷰로 만들어 사용하면 간단하게 검색 가능 - 이때는 INSERT/ UPDATE/ DELETE 안됨 ) 데이터의 액세스를 제한 - 보안위해 사용. 생성CREATE VIEW 뷰이름AS 뷰 내용 CREATE VIEW 뷰이름(컬럼명, 컬럼명 ... )AS 뷰 내용 수정CREATE OR REPLACE VIEW 뷰이름AS 뷰 내용 삭제 DROP VIEW 뷰이름 EX) 1. 보안적 측면의 뷰 -- 뷰를 생성한다(e..

Back-end/DataBase 2019.01.08

[DB][oracle] 프로시저 Procedure

프로시저란 Procedure (in oracle) 기능(작업단위)를 미리 만들어놓고 호출하여 사용하는것. 빠른 쿼리 실행재사용성 프로시저 생성방법 1. 인수없는 경우 CREATE PROCEDURE 프로시저 이름IS[변수이름 데이터타입; -- 프로시저 내에서 사용할 변수선언변수이름 데이터타입;변수이름 데이터타입;..]BEGIN 기능구현;END; 2.인수있는경우 CREATE PROCEDURE 프로시저 이름(변수이름 IN 데이터타입, 변수이름 IN 데이터타입, ... )IS[변수이름 데이터타입;변수이름 데이터타입;변수이름 데이터타입;..]BEGIN 기능구현;END; 프로시저 호출방법 EXEC 프로시져 이름; --인수없는 경우.EXEC 프로시져 이름(값,값...) --인수있는경우 ex) 메세지 출력 프로시저 C..

Back-end/DataBase 2019.01.08

[DB]프로시저를 이용한 데이터 입력 및 검증

데이터 입출력 구현 프로시저를 이용한 데이터입력 및 검증 실습 연습문제 / 쿼리 1. 누락된 관광지의 정보(attrc_cd)를 테이블 attraction 에 입력.CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_add_missed_attrc_cd`() BEGIN --// 변수선언(begin 아래 일괄선언.) DECLARE _done INT DEFAULT FALSE; DECLARE _prvnCd INT; DECLARE _distcCd INT; DECLARE _attrcName VARCHAR(100); -- // 데이터베이스에서 가지고 와야할 정보가 필요한 경우. 커서-패치를 이용해 데이터베이스에서 필요한 정보를 가지고 온다! 여기서는 기존 관광지 데이터를 참조하여 ar..

Back-end/DataBase 2018.07.05

[SQL]데이터 검증 - 중복 데이터 제거.

SQL 데이터 검증. 중복 데이터 제거 중복된 데이터를 찾고/ 그 데이터의 기본키를 찾아 /기본키를 조건으로 해당 데이터 삭제. 1. 중복 데이터 찾기.찾고자하는 데이터 칼럼을 그룹별로 나누어 조회하면 같은것끼리 묶여 그룹지어진다. 이때, 데이터 수를 COUNT()할때, 중복이 아니면 1개가, 중복인 경우 1개 이상이 된다. 그룹에 대한 조건인 HAVING 을 사용하여 COUNT한 값이 1이상인 데이터만 조회하면 중복인 데이터들만 조회할 수 있다. 예) customer 테이블에서 중복된 id를 구한다고 가정. (PK: cus_no) SELECT id, COUNT(id) FROM customer GROUP BY idHAVING COUNT(id) > 1; // 그룹에 대한 조건.HAVING 2. 중복 데이터..

Back-end/DataBase 2018.07.01

Database - 정규화란? Normalization

정규화 Normalization RDBMS 설계에서 중복을 최소화하게 구조화 하는 작업을 지칭.목적: 중복의 최소화. 이상현상 Anomaly (called 어노말리)삽입이상, 삭제이상, 갱신이상.삽입/갱신/삭제 작업수행 시 구조적인 오류가 나는 것. 이러한 이상현상을 오류제거를 위해 정규화를 하는 것. 1정규화(1NF = 1 Normal Form)하나의 속성이 단일값(=원자값 =Atomic value)이고, 중복되는 항목이 없어야 한다. 각 행 row의 각 칼럼은 무조건 1개의 고유한 값을 가진다.각 데이터가 전체 행으로 봤을때 칼럼 당 1개의 값을 가지고 중복이 없으면 1정규화를 충족한다고 볼 수 있음. 2정규화 2NF1NF의 속성을 만족하면서, 테이블에 존재하는 모든 함수 종속 관계가 완전함수 종속이..

Back-end/DataBase 2018.06.27

sql 활용 연습문제.

sql 활용 연습문제 및 쿼리. 1. 각 [도/광역시]별 [시/군/구]의 개수를 조회하라.--기준: 도/광역시별(province) 조건:- 컬럼: 도/광역시, 시군구 개수 SELECT prvn_name, COUNT(distc_cd) FROM province p JOIN district d ON p.prvn_cd = d.prvn_cd GROUP BY p.prvn_cd; 2. 각 [도/광역시]의 [시/군/구]별 관광지 개수를 조회.--기준:도광역시. 시군구 조건:- 컬럼: 도광 이름, 시군구 이름, 관광지개수 SELECT p.prvn_cd,p.prvn_name,d.distc_cd,d.distc_name, COUNT(a.attrc_cd) FROM attraction a JOIN district d ON a.p..

Back-end/DataBase 2018.06.25

[DB]Transaction 트랜잭션이란?

Transaction 트랜잭션이란? 데이터베이스의 상태 변화시키기 위해 수행되는 작업의 단위.(✽데이터 베이스의 상태변화란? SELECT, INSERT, DELETE, UPDATE등의 질의어(SQL)이용하여 디비에 접근하는 것.)이때, 작업의 단위는 질의어 한문장이 아니다! 작업단위는 많은 질의어 명령문들을 사람이 정하는 기준에 따라 정하는 것을 의미한다. ◼︎Transaction 특징원자성 (Atomicity) 트랜젝션이 데이터베이스에 모두 반영되던가 , 그렇지 않으면 전혀 반영되지 않아야 한다. 트랜잭션은 사람이 설계한 논리적 작업단위로, 처리는 기준설정 해놓은 작업단위 별로 이루어져야 한다. 일관성 (Consistency) 트랜잭션의 작업처리 결과가 항상 일관성이 있어야 한다. 트랜잭션 진행동안 데..

Back-end/DataBase 2018.06.22

MYSQL 내장함수 Built in functions

내장 함수 Built in functions 집계(통계)함수 **무조건 GROUP BY 와 함께 씀. COUNT(컬럼명) NULL값이 아닌 레코드의 수 SUM(필드명) 해당 필드의 합계 AVG(필드명) 각각의 그룹안에서 필드의 평균값 MAX(필드명) 해당 필드의 최대값 MIN(필드명) 해당 필드의 최소값 날짜 관련 함수 NOW() = SYSDATE() = CURRENT_TIMESTAMP() : 현재의 날짜와 시간 출력. 사용된 쿼리에 따라 출력형식이 달라진다. ex) SELECT NOW() → 2018-02-06 10:50:21ex) SELECT NOW() + 0 → 20180206105021 DATE_FORMAT(날짜컬럼,'형식')ex) DATE_FORMAT(join_date, '%Y-%m-%d') →..

Back-end/DataBase 2018.06.22