: 데이터를 다루기 위한 권한을 다루는 언어
: 계정에 DB, DB객체에 대한 접근 권한을 부여(GRANT)하고 회수(REVOKE)하는 언어
관리자 계정 : 데이터베이스의 생성과 관리를 담당하는 계정, 모든 권한과 책임을 가지는 계정
EX) sys(최고관리자), system(sys에서 권한 몇개가 제외된 관리자)
사용자 계정 : 데이터베이스에 대하여 질의, 갱신, 보고서 작성 등의 작업을 수행할 수 있는 계정으로 업무에 필요한 최소한의 권한만을 가지는 것을 원칙으로 한다.
EX) kh, workbook 등
ALTER SESSION SET "_ORACLE_SCRIPT" = TRUE;
CREATE USER cje_sample IDENTIFIED BY 1234;
-- CREATE USER 사용자명 IDENTIFIED BY 비밀번호;
GRANT CREATE SESSION TO cje_sample;
-- 권한 부여 : GRANT 권한, 권한, 권한,... TO 사용자명;
GRANT CREATE TABLE TO cje_sample;
ALTER USER cje_sample DEFAULT TABLESPACE
SYSTEM QUOTA UNLIMITED ON SYSTEM;
-- 테이블 생성 권한 + 데이터를 저장할 수 있는 공간(TABLESPACE) 할당
: 사용자 계정끼리 서로 객체에 접근할 수 있는 권한 부여
: 자원을 효율적으로 관리하기 위한 다양한 정보를 저장하는 시스템 테이블.
: 데이터 딕셔너리는 사용자가 테이블을 생성하거나, 사용자를 변경하는 등의 작업을 할 때 데이터베이스 서버에 의해 자동으로 갱신되는 테이블
: USER_TABLES -> 자신의 게정이 소유한 객체 등에 관한 정보를 조회할 수 있는 딕셔너리 뷰
SELECT * FROM USER_TABLES; 으로 사용
: 테이블이나 인덱스, 뷰 등 다양한 데이터 베이스 객체를 생성하는 구문. 테이블로 생성된 객체는 DROP구문을 통해 제거할 수 있다.
: 행(row)과 열(column)으로 구성되는 가장 기본적인 데이터베이스 객체
: 데이터베이스 내에서 모든 데이터는 테이블을 통해서 저장된다.
MEMBER 테이블 생성
컬럼에 주석 달기
MEBER테이블에 샘플 데이터 삽입
NUMBER 타입 사용 시 문제점
--> EX) CHAR(10) 컬럼에 'ABC' 3BYTE문자열만 저장해도 10BYTE 저장공간을 모두 사용
--> EX) VARCHAR2(10) 컬럼에 'ABC' 3BYTE문자열을 저장해도 나머지 7BYTE는 반환함
: 사용자가 원하는 조건의 데이터만 유지하기 위해서 특정 컬럼에 설정하는 제약
: 데이터 무결성 보장을 원칙으로함 -> 중복데이터X
: 입력 데이터에 문제가 없는지 자동으로 검사하는 목적으로 사용하며, 데이터의 수정/삭제 가능 여부 검사등을 목적으로 하기도 함
--> 제약조건을 위배하는 DML구문은 수행할 수 없다!
: 제약조건 종류
--> PRIMARY KEY, NOT NULL, UNIQUE, CHECK, FOREIGN KEY
: 해당 컬럼에 반드시 값이 기록되어야 하는 경우 사용
: 삽입/수정 시 NULL값을 허용하지 않도록 컬럼레벨에서 제한
: 컬럼에 입력값에 대해서 중복을 제한하는 제약 조건
: 컬럼레벨 또는 테이블레벨에서 설정 가능
: 단, UNIQUE 제약조건이 설정된 컬럼에 NULL값은 중복 삽입 가능
** 테이블 레벨 : 테이블 생성 시 컬럼정의가 끝난 후 마지막에 작성
: 제약조건 지정 방법
1) 컬럼 레벨 : [CONSTRAINT 제약조건명] 제약조건
2) 테이블레벨 : [CONSTRAINT 제약조건명] 제약조건(컬럼명)
: 두개 이상의 컬럼을 묶어서 하나의 UNIQUE 제약조건을 설정함
: 복합키 지정은 테이블레벨에서만 가능!
: 복합키는 지정되는 모든 컬럼의 값이 같을 때 위배된다.
: 테이블에서 한 행의 정보를 찾기 위해서 사용할 컬럼을 의미함
: 테이블에 대한 식별자(학번, 사번, 회원번호)역할을 함
: NOT NULL + UNIQUE 제약조건을 합쳐놓은 것 같은 느낌
--> 중복되지 않는 값이 필수로 존재해야함
: 한 테이블 당 한 개의 PRIMARY KEY를 설정할 수 있음
: 컬럼레벨 또는 테이블레벨에서 설정 가능
: 한 개의 컬럼에 설정할 수도 있고, 여러개의 컬럼을 묶어서 설정할 수도 있음
: 테이블레벨에서만 설정 가능
: 참조된 다른 테이블의 컬럼이 제공하는 값만 사용할 수 있음
: FOREIGN KEY 제약조건에 의해서 테이블 간 관계가 형성됨
: 제공하는 값 외에는 NULL(참조하는 값 없음)을 사용할 수 있음
: 작성법
1) 컬럼레벨일 경우
--> 컬럼명 자료형(크기)[CONSTRAINT 이름] REFERENCES 참조할테이블명 [(참조할 컬럼)][삭제룰]
2) 테이블레벨일 경우
--> [CONSTRAINT 이름] FOREIGN KEY(적용할 컬럼명) REFERENCES 참조할테이블명 [(참조할 컬럼)][삭제룰]
: 부모테이블의 데이터 삭제 시 자식테이블의 데이터를 어떤식으로 처리할 지에 대한 내용을 설정할 수 있다.
1) ON DELETE RESTRICTED (삭제 제한)로 기본 지정 되어있음
: 외래키로 지정된 컬럼에서 사용되고 있는 값일 경우, 제공하는 컬럼의 값을 삭제하지 못함
2) ON DELETE SET NULL : 부모키 삭제 시 자식키를 NULL로 변경
3) ON DELETE CASCADE : 부모키 삭제 시 자식키도 함께 삭제됨. 부모키 삭제 시 값을 사용하는 자식 테이블의 컬럼에 해당되는 행이 삭제됨
: 컬럼에 기록되는 값에 조건 설정을 할 수 있음.
: 작성법 --> CHECK (컬럼명 비교연산자 비교값)
: 주의! 비교값은 리터럴만 사용할 수 있음. 변하는 값이나 함수 사용 못함
: 컬럼명, 데이터타입, 값이 복사되고 제약조건은 NOT NULL만 복사됨
1) 작성법
-- ALTER TABLE 테이블명 ADD [CONSTRAINT 제약조건명] PRIMARY KEY(컬럼명)
-- ALTER TABLE 테이블명 ADD [CONSTRAINT 제약조건명] FOREIGN KEY(컬럼명)
-- REFERENCES 참조테이블명 (참조컬럼명)
-- ALTER TABLE 테이블명 ADD [CONSTRAINT 제약조건명] UNIQUE(컬럼명)
-- ALTER TABLE 테이블명 ADD [CONSTRAINT 제약조건명] CHECK(컬럼명 비교연산자 비교값)
-- 회원가입용 테이블 생성(USER_TEST)
-- 컬럼명 : USER_NO(회원번호) - 기본키(PK_USER_TEST),
-- USER_ID(회원아이디) - 중복금지(UK_USER_ID),
-- USER_PWD(회원비밀번호) - NULL값 허용안함(NN_USER_PWD),
-- PNO(주민등록번호) - 중복금지(UK_PNO), NULL 허용안함(NN_PNO),
-- GENDER(성별) - '남' 혹은 '여'로 입력(CK_GENDER),
-- PHONE(연락처),
-- ADDRESS(주소),
-- STATUS(탈퇴여부) - NOT NULL(NN_STATUS), 'Y' 혹은 'N'으로 입력(CK_STATUS)
-- 각 컬럼의 제약조건에 이름 부여할 것
-- 5명 이상 INSERT할 것
공감하며 읽었습니다. 좋은 글 감사드립니다.