정보보안공부
DBMS_day13 본문
# SQL에디터에서 Ctrl + s (저장)
# Workbench에서 작성한 쿼리를 .sql 인 파일로 저장을 해 놓고 언제든지 필요할 때 그 쿼리를 다시 열어 재 전송할 수 있다. 많은 쿼리들을 빈번하게 사용될 때는 파일로 저장 해 놓고 사용하는게 쿼리를 편하게 사용할 수 있는 방법이 된다.
# 나혼자만 쓸때는 파일로 저장
# 여러명이 같이 일괄적으로 묶음 전송할 수 있게 만들 수 있다. ( Stored Procedure사용 )
# Stored Procedure(스토어드 포로시저) : 여러 수백 수천개의 SQL들을 한대 묶음화하는 기능이다.
# 스토어드 프로시저를 사용하는 목적은 여러 SQL들을 묶음으로 빈번하게 쿼리를 사용한다고 했을 때, 근데 그 묶음에 쿼리들을 여러 개발자와 MySQL 관리자가 다 같이 사용하기 위해서 스토어드 프로시저를 사용하게 된다.
# 스토어드 프로시저를 만들때는 반드시 데이터 베이스를 선택한 상태에서 진행해야 한다.(USE를 통해)
=============프로시저만들기===============
delimiter //
create procedure myProc() <-- myProc() : 프로시저이름설정
begin <-- 프로시저 내용시작
select * from memberTBL where memberName = '당탕이';
select * from memberTBL where memberName = '김치';
end // <-- end ( begin 끝 ) , // ( create쿼리 끝 )
delimiter ;
=====================================
# MySQL에 쿼리에 마지막에 ;을 붙이는 데 ;을 구분자라고 한다.
# ; 은 쿼리를 구분해주는 역할을 한다.
# ; 은 작성 된 쿼리가 여기까지임을 의미한다.
예) select * from memberTBL;
# delimiter // <-- 이 줄부터 작성되는 SQL은 구분자를 //로 사용하겠다라는 의미이다.
# 만든 프로시저 호출하기 : call myProc();
# drop procedure myProc; <-- myProc 프로시저를 삭제하겠다.
# MySQL을 로컬 접속을 했을 때 프로시저가 새로 만들어지면 적용 받기 위해서는 MySQL을 다시 종료 했다가 재 접속해야 한다.
# 스토어드 프로시저를 가지고 쿼리들을 묶어 놨을 때 select 쿼리에서 데이터베이스를 지정 해도 실제 스토어드 프로시저를 호출할 때 데이터베이스를 지정을 안 한 상태로 호출을 하게 되면 호출이 안 된다.
-> 스토어드 쓸때 use로 먼저 하고 스토어드 사용
# 프로시저를 호출하기 위한 조건
- 데이터베이스가 선택 돼 있어야 한다.
- 데이터베이스에 그 프로시저가 만들어져 있어야 한다.
# 데이터베이스 별로 프로시저가 달리 사용되어지게 된다.
-> A라는 데이터베이스에 프로시저와
-> B라는 데이터베이스에 프로시저는 서로 다른 프로시저이다.
-> A만든 프로시저를 B데이터베이스에서 호출 할 수 없다.
# myProc에서 alter 스토어드 프로시저
-> begin안에 use shopDB; 넣어보기 ( 에러발생 )
# use 쿼리는 스토어드 프로시저에 넣을 수 없다.
# 절대적으로 데이터베이스를 선택하고 사용해야 한다.
# 주석 : 설명을 작성 하는 것을 의미한다.
# MySQL에서는 # 오른쪽에 있는 내용을 주석으로 처리한다.
# 주석으로 처리한다는 것은 쿼리로 동작시키지 않는다는 것을 의미한다.
# 주석처리를 사용하는 두번째 목적은 작성 된 SQL을 지우기는 싫은데 잠시 실행시키지 않게 만들기 위해서 작성된 SQL을 주석처리 하게 된다.
# insert into memberTBL values(
"You", "유인나", "부산시 부산구 부산동"
);
-> memberTBL의 컬럼에 값을 소괄호에 작성한 값으로 삽입하는 쿼리이다.
# 데이터베이스에 데이터를 삽입, 수정, 조회, 삭제를 한다 라고 표현을 한다.
- 삽입 : insert
- 조회 : select
- 삭제 : drop, delete
- 수정 : update
===================== PuTTY에서 사용======================
# update memberTBL set memberAddress = "서울시 서울구"
where memberName = '유인나';
-> memberTBL이라는 테이블에 memberName이 유인나인 행에 memberAddress에 값을 서울시 서울구로 변경해라
# workbench에서 safe 모드라는 것을 제공한다.
# safe 모드라는 것은 수정, 삭제를 진행할 때 실수로 잘 못 바꿔버리거나 잘못 지울 것을 대비해서 쿼리를 막아버린다.
# MySQL에 기본키(PK)라는 설정을 컬럼에 할 수 있다.
-> memberName 은 PK가 아니다 ( --> PuTTY에서 update 사용 가능 )
-> memberID 는 PK이다. ( --> workbench에서 update 사용 가능 )
# 기본키로 설정 된 컬럼에는 똑같은 동일한 데이터가 저장 될 수 없게 막아준다.
# safe 모드는 불특정 행을 대상으로 쿼리를 수정, 삭제를 못하게 차단하게 되는 모드
이다.
# safe 모드 해제하기
-> Edit -> preference -> SQL Editor -> Safe Updates 체크 해제
# workbench에서 safe모드 해제해도 적용이 바로 안된다.
-> workbench를 재 로그인을 해야 적용이 된다.
# 데이터를 수정할 때 where 조건을 건 컬럼이 PK 설정이 안된 컬럼이여서 값이 동일한게 존재한다면 수정 쿼리를 전송했을 때 수정이 원하지 않는 행까지 돼 버릴 수 있
는 가능성이 있다.
# 그래서 where 조건을 거는 컬럼이 PK설정이 안 된 컬럼이면 조심해서 사용해야 한다.
# 실수를 해서 원하지 않는 행까지 바뀌어 버릴 수 있게 된다.
# 때로는 where 조건에 만족하는 여러개의 행을 수정 작업을 해야하는 경우가 생긴다. 그럴 때는 유용하게 사용되게 된다.
예) 고객정보를 DB에 쌓고 있는 데,
고객정보에 고객이 미성년자인지 아닌지 유무를 저장하고 있다.
미성년자이면 0이라고 저장하고 미성년자가 아니면 X라고 저장을 하고 있다고 했을때
1년이 지나면 미성년자 였는데 성인으로 바뀌어야 하는 경우가 발생된다.
where 조건으로 나이가 20살 이상인 조건으로 미성년자 유무를 0로 다시 변경하는 작업을 여러 불특정행을 대상으로 수행할 수 있게 된다.
# drop : 데이터베이스 또는 테이블 자체를 삭제
# delete : 테이블에 삽입 되 있는 특정 행을 삭제
# delete from memberTBL where memberID = "test2";
-> memberTBL이라는 테이블에 있는 memberID라는 컬럼에 값이
# 내일은 트리거진행
-> select * from memberTBL; 로 memberTBL테이블 확인
-> select * from memberTBL where memberName = '정말로';
-> memberTBL 테이블에서 memberName이 '정말로'인 것을 찾는다.
-> select * from memberTBL where memberName = '당탕이';
-> memberTBL 테이블에서 memberName이 '당탕이'인 것을 찾는다.
-> delimiter를 통해 구분자역할을 ; 대신에 delimiter로 한다.
-> 만들어진 프로시저를 호출할때는 call proc() , call 프로시저 이름
-> result 6 에는 김치
-> result 5 에는 당탕이가 한꺼번에 호출된다.
-> drop procedure 프로시저 이름 을 통해 프로시저를 삭제 할 수있다.
-> insert into memberTBL values("You", "유인나", "부산시 부산구 부산동");
-> insert into 테이블 values ~ 를통해 원하는 데이터행 삽입가능
-> update memberTBL set memberAddress = "서울시 서울구" where memberName = "유인나";
-> where로 "유인나"를 검색해서 update set으로 "서울시 서울구"로 수정
-> workbench의 safe모드 해제
-> 유인나를 검색해 기존의 "서울시 서울구"를 "인천광역시"로 수정
-> insert를 이용해 여러개의 행을 추가한다.
-> delete from -- where을 통해 test2행을 삭제
-> delete from -- where을 통해 채수빈을 삭제하면 채수빈이 들어간 test1,test3 삭제
-> 중복된 항목을 주의해서 삭제하기
'데이터베이스' 카테고리의 다른 글
DBMS_day15 (0) | 2017.08.01 |
---|---|
DBMS_day_14 (0) | 2017.07.28 |
DBMS_day12 (0) | 2017.07.26 |
DBMS_day11 (0) | 2017.07.25 |
DBMS_day10 (0) | 2017.07.24 |