본문 바로가기
728x90
반응형

Database38

[ PostgreSQL ] PostgreSQL이란? PostgreSQL이란 ? => PostgreSQL은 오픈 소스 객체-관계형 데이터베이스 시스템(ORDBMS)으로, Enterprise급 DBMS의 기능과 차세대 DBMS에서나 볼 수 있을 법한 기능들을 제공한다. DBMS (Database Management System) - 정의 (Definition) : 응용 프로그램이 요구하는 DB구조, 변경, 제거 - 조작 (Manipulation): 삽입, 갱신, 삭제 - 제어 (Control): DB 접근할 수 있는 사용자 제한 및 성능 관리 관계형 데이터베이스 (Relational Database) - 통상적으로 RDB라고 함 - 행과 열로 구분하는 2차원 테이블 형태로 구성 - 오라클 DBMS, MS SQL SERVER, MYSQL, PostgreSQL .. 2023. 7. 12.
[MYSQL /Database] 서브쿼리 서브쿼리 (Subquery) - 서브쿼리(subquery)란 다른 쿼리 내부에 포함되어 있는 SELETE 문을 의미한다. - 서브쿼리를 포함하고 있는 쿼리를 외부쿼리(outer query)라고 부르며, 서브쿼리는 내부쿼리(inner query)라고도 부른다. - 서브쿼리는 다음과 같이 괄호() 로 감싸져서 표현 된다. 서브 쿼리 실행 순서 : 서브 쿼리 실행 -> 메인(부모) 쿼리 실행 select * from t1 where target_id in (select id from sub_t2 where id all(select height from usertbl where addr in ('경남')); 인라인 뷰 ( Inline view) - FROM 문에 나타나는 서브쿼리 - 참고로 서브 쿼리가 FROM.. 2023. 4. 18.
[MYSQL / Database] Join 조인 연산 조인 join A = {1,2,3,4} B = {3,4,5,6,7} => 결과 = { ? } - JOIN은 데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과 집합으로 표현해 것. - 가장 많이 사용하는 조인은 inner join(☆) > outer join(☆) > self join > cross join > natural join 이다. [ JOIN 예제 테이블] INNER JOIN : A 와 B의 교집합 - 조인하는 테이블의 ON 절의 조건이 일치하는 결과만 출력 - inner join은 EQUI join 이라고도 하고, 그냥 join 이라고도 하며, 등가 조인 이라고도 표현할 수 있습니다. -JOIN 만 적었을 경우 기본값으로 INNER JOIN 이 됩니다. A = .. 2023. 4. 18.
[MYSQL/Database] select 문,orderby 연산자- 비교,논리,범위 Select 연산자 비교 연산자 = 같음 != 같지 않음 같지 않음 (ISO 표준) > 초과(크다) >= 이상(같거나 크다) = 182; 5) between 사용 select userid, name from usertbl where height between 180 and 183; 6) 여러개를 만족하는 데이터 출력 in select userid, name, addr from usertbl where addr in('경남','전남', '경북','전북'); 7) 제외하고 출력 not in select userid, name, addr from usertbl where addr not in('경남'); 8) 포함하는(포함하지 않는) 문자 출력 like -- like와 %구문은 통상 검색할 때 이런 형태로 많.. 2023. 4. 17.
[MYSQL /Database] Mysql 잠금(lock)- Read lock, Write lock,dead lock Mysql 잠금 - SHARED LOCK(S) = READ . TRANSACTION 1에서(S)LOCK을 얻은 상태에서 TRANSACTION 2에서(S)LOCK을 요청하는 경우 [허용] 된다. . TRANSACTION 1에서(S)LOCK을 얻은 상태에서 TRANSACTION 2에서(X)LOCK을 요청하는 경우 [거부] 된다. - EXCLUSIVE LOCK(X) = WRITE . TRANSACTION 1에서(X)LOCK을 얻은 상태에서 TRANSACTION 2에서(S)LOCK을 요청하는 경우 [거부] 된다. . TRANSACTION 1에서(X)LOCK을 얻은 상태에서 TRANSACTION 2에서(X)LOCK을 요청하는 경우 [거부] 된다. /연습용 데이터베이스 생성/ create database db02;.. 2023. 4. 17.
[ MYSQL / Database] READ UNCOMMITTED, COMMITTED, REPEATABLE READ READ UNCOMMITTED - READ UNCOMMITTED 수준에서는 트랜잭션에서의 변경내용이 COMMIT이나 ROLLBACK 여부에 상관없이 다른 트랜잭션에서 보여진다. 그리고 이러한 현상때문에 DIRTY READ가 발생한다. - 더티 리드 현상은 데이터가 나타났다가 사라졌다가 하는 현상을 초래하므로 애플리케이션 개발자와 사용자를 상당히 혼랍스럽게 만든다. /실습용 데이터 베이스 생성/ drop database db01; create database db01; use db01; create table t1(id int); create table t2(id int); create user user1@'%' identified by '1234'; grant all privileges on DB01.*.. 2023. 4. 17.
[MYSQL /Database] 트랜잭션의 격리 수준 트랜잭션의 격리 수준 - 트랜잭션의 격리수준은 동시에 여러 트랜잭션이 처리될 때, 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있도록 허용할지 말지를 결정하는 것이다. 격리 수준에 따라 발생할 수 있는 문제점(부정합) - DIRTY READ 어떠한 트랜잭션에서 처리한 작업이 완료되지 않았음에도 불구하고 다른 트랜잭션에서 볼 수 있게 되는 현상 - NON-REPEATABLE READ 동일한 SELECT 쿼리를 실행했을 때 항상 같은 결과를 보장해야 한다는 "REPEATABLE READ" 정합성에 어긋나는 현상 - PHANTOM READ 한 트랜잭션내에서 동일한 쿼리를 두 번 수행했는데, 첫 번째 쿼리에서 존재하지 않던 유령(Phantom) 레코드가 두 번째 쿼리에서 나타나는 현상 .. 2023. 4. 14.
[MYSQL /Database] 커서 (cursor) 커서 CURSOR - 쿼리 결과를 한 행씩 처리하기 위한 방식 - SELECT 문으로 테이블 읽으면 전부다 읽어버리는데 cursor를 사용해서 처음부터 하나하나 읽을 수 있게된다. 커서 문법 declare cursor for --------- 커서 생성 open --------- 커서 열기 fetch ---------- 커서로 한행씩 읽기 close ---------- [커서 닫기] drop procedure if exists proc_single_column_cusor; delimiter $$ create procedure proc_single_column_cusor() begin declare _name varchar(30); declare _name_list varchar(1000) d.. 2023. 4. 14.
[MYSQL /Database] 트리거 trigger 트리거 trigger - 테이블에 관련하여 이벤트가 발생할 때 작동시켜주는 프로시저 같은 데이터베이스 개체 - 테이블 관련된 이벤트라는게 테이블(update, delete, insert)을 수정하는 것과 관련된 이벤트를 말한다. drop table if exists test2; create table test2(num int); insert into test2 values(1),(2),(3); select * from test2; set @before_delete=0; -- 변수 초기화 drop trigger if exists trig_delete; -- 기존 트리거 제거 delimiter $$ create trigger trig_delete 트리거 생성 before delete on test2 for .. 2023. 4. 14.
[MYSQL /Database] function 함수 함수 FUNCTION 이란? - rand(), concat(), insert() 등 MySQL에서는 내장 함수를 지원한다. - 이런 함수들 처럼 사용자가 직접 함수를 만들 수 있도록 한다. - 프로시저와 달리 반환값이 있어야 한다. - 프로시저와 달리 call을 쓰지 않고 쿼리문(select, update.. 등) 내에서 호출된다. 함수 생성/ 제거 set global log_bin_trust_function_creators = 1; drop function if exists my_rand; -- 함수 제거 delimiter $$ create function my_rand() -- 함수 생성 returns decimal(3, 3) -- 리턴 타입 begin return rand(); -- 결과 반환 en.. 2023. 4. 14.
728x90
반응형