데이터베이스
-
[DB] Msql 권한데이터베이스 2020. 12. 8. 04:50
권한 (Authorization) 데이터베이스 관리자(DBA) 가 다른 사용자에게 권한을 부여, 회수 할 수 있음 데이터 권한 Read 권한 : 읽기는 가능하지만 데이터 수정은 불가능 Insert 권한 : 새로운 데이터의 생성은 가능하지만 데이터 수정은 불가능 Update 권한 : 수정은 가능하지만 데이터 삭제는 불가능 Delete 권한 : 데이터 삭제 가능 스키마 수정 권한 인덱스 권한 : 인덱스를 만들고, 제거할 수 있는 권한 리소스 권한 : 테이블 생성 권한 Alteration 권한 : 테이블 속성 추가, 삭제 권한 드랍 권한 : 테이블 삭제 권한 권리(Privilege) select insert update delete references : 권한을 부여받은 사용자만 FK 를 만들 수 있도록 함 ..
-
[DB] Mysql 트리거데이터베이스 2020. 12. 8. 03:19
Trigger ECA(Event-Condition-Action) rule 을 따르는 객체이며, 사건 발생 전(후) 조건 만족 시 Action 을 취한다는 뜻 Event : Insert, delete, update insert 혹은 update 시 “referencing new row as A” 에서 new row, 즉 변경된 새로운 row 를 A로 부르겠다. 라는 뜻 delete 혹은 update 시 “referencing old row as B” 에서 old row, 즉 변경전의 기존 row 를 B로 부르겠다, 라는 뜻 Event 발생 전 : Before Event 발생 후 : After 조건 만족 : When 행동 : Begin atomic End; CREATE TRIGGER myCredits AFT..
-
[DB] On Delete, On Update, Check, Assertion데이터베이스 2020. 12. 6. 21:42
Integrity Constraint On Delete, On Update teaches 가 professor 를 참조하고 있는 상황에서 professor 가 삭제 혹은 수정 될 때 Cascade : 관련된 teaches 도 삭제 Set null : teaches 의 pID 를 null 로 설정 위의 경우 허용되지 않음 teaches 의 PK 는 다중 column 으로 구성되었으며 그 중 한 column 이 pID 이기 때문 No action : 허용하지 않음 pID 가 200인 teaches row 를 모두 삭제한 뒤 professor 200을 삭제 가능 Deferrable IC (지연된 제약조건) 초기 DB를 구성하는 상황에서 미리 준비된(준비되었다고 가정) 대용량의 teaches 와 professo..
-
[DB] Mysql View데이터베이스 2020. 12. 6. 21:05
View 다른 DB user 에게 정보를 제한적으로 제공하고자 할 때 사용하는 기능으로 보안을 위함 예를 들어 Professor 테이블을 공개하되 Salary(연봉) 정보는 제외한 column 들만 공개하고싶다. 하는 요구사항이 있을 때 사용 View 는 Virtual Relation 이라고 불리기도 함 CREATE VIEW faculty AS SELECT pID, name, deptName FROM Professor; SELECT name FROM faculty WHERE deptName = ‘CS’; View 는 항상 최신의 데이터를 갖고 있음 → 실제 Table 을 다른 창구로 바라보는 것일 뿐이기 때문 View 를 이용하여 또 다른 View 를 정의할 수도 있음 View Expansion : Vi..
-
[DB] Mysql C/C++ 함수 연동데이터베이스 2020. 12. 6. 17:03
외부언어로 함수/프로시져 연동 C/C++ 같은 언어로 함수를 만들어 SQL 과 연동하는 것도 가능함 이로인해 다양한 표현이 가능해짐 단점 코드 자체가 DB 시스템 내로 로딩/실행되므로 무거움 DB 시스템이 마비될 우려 허용되지 않은 데이터 접근으로 인한 보안 문제 Sandbox 기법 오브젝트 코드를 Sandbox 내부에서만 실행하게하여 허용되지 않은 접근을 차단 Seprate process 기법 아예 새로운 프로세스를 만들어 Object code 를 수행하고, IPC 를 통해 결과만 전달 받는 방식 Procedure CREATE PROCEDURE deptCountProc (in deptName varchar(20), out count INTEGER) LANGUAGE C EXTERNAL NAME ‘/usr..
-
[DB] Mysql 프로시져데이터베이스 2020. 12. 6. 16:57
Procedure(프로시져) SQL 문에 assignment, if-else, for loop 와 같은 절차적인 요소를 넣기 위해 고안된 개념 SQL/PSM (Persistent Stored Module) : 함수나 프로시져를 미리 정의해두고 DBMS 내부에 저장해둔 뒤 call 만 하는 방식 장점 Encapsulation : 사용자가 내부 구현을 알지 못해도 됨 Low network traffic : 웹 클라이언트를 거치지 않음 Delegating access right : 테이블 권한은 없더라도 프로시져 호출 권한만으로 해당 테이블에 접근 가능 프로시져는 여러개의 out 을 정의하는 것이 가능함 정의 CREATE PROCEDURE profCountProc (in deptName varchar(20),..
-
[DB] Mysql 함수 정의 및 사용데이터베이스 2020. 12. 6. 16:54
Function(함수) 프로시져와 비슷하지만 함수의 경우 특별한 데이터 타입으로 특별한 연산을 할 때 더 용이함 예) 지도타입에서 지도 상의 두 영역이 겹치는지 판단하는 연산…! Scalar Function 리턴 값이 scalar 인 함수 학과 내의 교수의 수를 알아내는 함수 CREATE FUNCTION profCount(deptName varchar(20)) RETURNS INTEGER BEGIN DECLARE pCount INTEGER; SELECT COUNT(*) INTO pCount FROM professor WHERE professor.deptName = profCount.deptName; return pCount; END; 위와 같이 파라미터에 접근할 때 {함수이름.파라미터} 의 형태로 사용하..
-
[DB] Mysql Date 타입, 사용자정의 타입, 도메인, Large Object데이터베이스 2020. 12. 6. 16:05
DateType date : 날짜(년월일) : 2020-12-31 time : 시간(시분초) : 09:00:03.33 timestamp : 날짜 + 시간 : 2020-12-31 09:00:03.33 interval : 시간 간격 : date/time/timestamp 에 시간단위로 덧셈/뺄셈 연산을 하기 위함 User-Defined Types CREATE TYPE Dollars as NUMERIC (12,2) FINAL; Final 키워드가 붙으면 해당 타입을 통해 새로운 타입을 정의할 수 없게 됨 CREATE TABLE Department (deptName varchar(20), budget Dollars); Domains Type 과 비슷하지만 말 그대로 정의역을 의미함 Domain 자체적으로 NOT..