본문 바로가기
728x90
반응형

Database44

[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.
[MYSQL / Database] proceduer/view/role 실습2 create database db01; use db01; create table persons( personID int primary key, lastname varchar(30), firstname varchar(30), age int); desc persons; select * from information_schema.table_constraints where table_name='persons'; alter table persons drop primary key; alter table persons add constraint personID_pk primary key(personID); insert into persons values(1,'Hansen','ola',30),(2,'Svedson','.. 2023. 4. 14.
[MYSQL / Database] TABLE 제약조건 설정하기 create database db01; use db01; 2023.04.10 - [Server/Database] - [MYSQL/ Databas] MYSQL DDL 명령어(CREATE,DROP,ALTER,RENAME,TRUNCATE) [MYSQL/ Databas] MYSQL DDL 명령어(CREATE,DROP,ALTER,RENAME,TRUNCATE) MYSQL을 사용하여 실습해 보았습니다. DDL CREATE : 데이터베이스내 개체 (테이블, 인덱스 제약조건, 프로시저, 펑션 등)을 생성 할 때 DROP : 데이터베이스내 개체를 삭제할 때 ALTER : 데이터베이스내 codejinjinh.tistory.com CREATE TABLE 제약조건 설정하기 create table CHT( C1 Type1, C2.. 2023. 4. 14.
[MYSQL / Database] GRANT 권한 GRANT - 데이터베이스 사용자에게 권한을 부여함 1) 권한부여 GRANT [권한] ON [DB].[TABLE] TO [유저_ID]@[호스트]; 2) 권한확인 SHOW GRANTS FOR [유저_ID]@[호스트]; -- 다른 사용자 권한 확인 SHOW GRANTS; -- 내게 부여된 권한 확인 SHOW GRANTS FOR current_user; -- 내게 부여된 권한 확인 SHOW GRANTS FOR current_user(); -- 내게 부여된 권한 확인 3) ROLE 에 권한 부여 GRANT 권한 ON [DB].[TABLE] TO [ROLE NAME]; 4) PROCEDURE에 대해서만 권한 부여 GRANT EXCUTE ON PROCEDUER [DB].[PROCEDURE NAME] TO [ROLE.. 2023. 4. 14.
[MYSQL / Database] view 생성 방법 view 생성 create view [view name] as [ 선택할 조건 ] ; create view v1 as select * from table1; 뷰에 대한 권한 주는 방법 grant select on db.v1 to [user 또는 role] 2023. 4. 14.
728x90
반응형