1.1 관계형 데이터베이스(RDB)
- 정형DB (형태가 저장되어 있는 DB)
--1970년대 CODD 박사에 의해 개념 도입
--RDB는 데이터를 2차 행렬의 테이블의 집합으로 표현
--각 테이블은 행( row ) 와 열 ( column) 으로 구성
--테이블에서 각 행 ( row ) 는 유일하게 구별되는 특징을 가짐
--각 열 ( column ) 들은 데이터 무결성 ( Data Integrity )를 보장받아야 한다
-- table에 대한 데이터 조작 및 검색을 SQL을 이용하여 수행
-- RDBMS가 전체 데이터 베이스를 관리
1.2 데이터 베이스 용어
개념 | 설명 |
Table | Table은 RDBMS의 기본적인 저장구조로, 한 개 이상의 Column과 0개 이상의 Row로 구성된다. |
Row | Row는 Table의 Column들의 값의 조합이다. 예를 들면, 테이블에서 한 부서에 관련한 정보는 한 Row가 될 수 있다. Row는 가끔 레코드라고 불린다. |
Column | 한 Column은 Table상에서 단일 종류의 데이터를 나타내는데, 예를 들면, 테이블에서 부서이름이 하나의 Column이 된다. Column은 특정 DataType 및 크기를 갖고있다. |
Field | Row와 Column의 교차점에 Field가 있고, Field는 데이터를 포함할 수 있으며 데이터가 없을 때, NULL 값을 갖고 있다고 한다 |
Primary Key ( 유일해야 한다 ) | Primary Key는 한 Table의 각각의 Row를 유일하게 식별해주는 Column 또는 Column 의 조합이다. 예를 들면, 부서번호는 Primary Key가 될 수 있으며, Primary Key는 NULL 값을 허용하지 않는다 |
Foreign Key ( 참조 키) ( 두 테이블의 관계 , 데이터의 무결성을 지켜야함 ) ( 다른 테이블의 PK ) |
Foreign Key는 같은 Table 또는 다른 Table의 참조하는 단일 Column 또는 Column 의 조합으로 구성되며, Foreign Key 를 생성함으로써 관계형 데이터베이스 설계규칙을 따를 수 있다. |
오브젝트 | 설명 |
테이블 ( Table ) (2차원 배열) |
행과 열의 조합으로 구성된 기본 저장단위 |
뷰 ( View ) ( Read Only ) |
하나 또는 그 이상의 테이블로부터 논리적으로 데이터를 추출한 부분집합으로 논리적이고 가상적인 테이블 |
시퀀스 ( Sequence ) | 자동으로 고유한 숫자값을 생성해주며 주로 기본 키 값을 생성하기 위해 사용 |
인덱스 ( Index ) | 쿼리 ( Query ) 속도를 향상 인덱스 특징 ① 정렬 ② 위치 |
시노님 ( Synonym ) ( 별명 ) |
Object에 대한 또다른 이름을 ALIAS 역할 |
프로그램 유닛 ( Program Unit ) | SQL , PL / SQL 문으로 작성한 Procedure , Function , Trigger , Package |
1.3 SQL , SQL * PLUS , PL / SQL의 비교
SQL ( Structured Query Language )
-- DB서버에게 명령 ( 데이터 조회 , 수정 등 ) 을 내리기 위한 언어
( RDBMS 를 사용하기 위해 ANSI 에서 책정한 표준언어 )
SQL * PLUS
-- SQL * PLUS는 SQL 및 PL / SQL 문장을 인식하고 실행
-- SQL의 실행 환경을 제공하는 ORACLE DB TOOL이다.
PL / SQL
-- PL / SQL은 SQL 에 프로그램 로직을 추가하여 확장한 ORACLE의 절차적인 프로그래밍 언어이다.
1.4 Oracle DB의 기본 계정(accout)
계정 | 설명 |
SYS | 오라클 Super 사용자 계정 ( DBA계정 )으로 데이터베이스에서 발생하는 모든 문제를 처리할 수 있는 권한이 있다. 오라클을 운영하는데 필요한 기본 테이블과 뷰가 저장되는 계정 |
SYSTEM | Oracle DB를 관리할 때 사용하는 계정 ( DBA계정 ) 관리정보를 화면으로 보여주는 추가 테이블과 뷰, 오라클 도구가 사용하는 내부테이블과 뷰 생성. 모든 시스템 권한 소유 |
SCOTT | 실습을 위해 만들어 놓은 연습용 계정 ( 잠겨있음 ) |
HR | 실습을 위해 만들어 놓은 연습용 계정 |
※ SYS나 SYSTEM 유저는 테이블을 생성하거나, 일반 데이터를 Insert 해서는 안되며, 반드시 데이터베이스를 관리하기
위해서만 사용
1.4 사용자 계정 (accout) 의 생성
CREATE USER user_name
IDENTIFIED [ BY password | EXTERNALLY ]
[ DEFAULT TABLESPACE tablespace ]
[ TEMPORARY TABLESPACE tablespace ]
[ QUOTA { integer [ K | M ] | UNLIMITED } ON tablespace ]
[ PASSWORD EXPIRE ]
[ ACCOUNT { LOCK | UNLOCK } ]
[ PROFILE { profile | DEFAULT } ]
- user_name : 생성될 사용자 이름
- BY password : 데이터베이스 유저 로그온시 사용하는 비밀번호
- EXTERNALLY : 사용자가 운영 체제에 의해서 인증되도록 지정
DEFAULT TABLESPACE : 사용자 스키마를 위한 기본 테이블 스페이스 지정
- TEMPORARY TABLESPACE : 사용자의 임시 테이블 스페이스 지정
- [ QUOTA ~ ] : 사용자가 사용할 테이블 스페이스의 영역 할당
- PASSWORD EXPIRE : 사용자가 SQL * PLUS 를 사용하여 데이터베이스에
로그인할 때 암호를 재설정하도록 함 ( 사용자가 데이터베이스에 의해 인증될 경우에만 )
- ACCOUNT LOCK/UNLOCK : 사용자 계정을 명시적으로 잠그거나 풀 때 사용
- PROFILE : 자원 사용을 제어하고 사용자에게 사용되는 암호 제어 처리 방식을 지정
1.5 권한과 역할 ( Privilege & Role )
-- 사용자가 데이터베이스에서 특정 작업을 수행할 수 있도록 허용
-- GRANT 명령을 통해 사용자 도는 Role 에 대한 권한 부여
-- REVOKE 명령은 권한을 삭제
-- 시스템 권한의 종류
-- CREATE SESSION : 데이터베이스를 연결할 수 있는 권한
-- CREATE ROLE : 오라클 데이터베이스 역할을 생성할 수 있는 권한
-- CREATE VIEW : 뷰의 생성 권한
-- ALTER USER : 생성한 사용자의 정의를 변경할 수 있는 권한
-- DROP USER : 생성한 사용자를 삭제 시키는 권한
※권한이란 ? 특정 타입의 SQL문을 실행하거나, 데이터베이스 또는 데이터베이스 객체에 접근할 수 있는 권리를 말함.
1.6 사용자계정 ( account ) 에 권한 부여하기
GRANT [ system_privilege | role ] TO [ user | role | PUBLIC ]
[ WITH ADMIN OPTION ]
- system_privilege : 부여할 시스템 권한의 이름
- role : 부여할 데이터베이스 역할의 이름
- user, role : 부여할 사용자 이름과 다른 데이터 베이스 역할 이름
- PUBLIC : 시스템 권한, 또는 데이터베이스 역할을 모든 사용자에게 부여
- WITH ADMIN OPTION : 권한을 부여 받은 사용자도 부여 받은 권한을 다른 사용자 또는 역할로 부여할 수 있게 되며,
WITH ADMIN OPTION으로 받은 역할은 그 사용자에 의해 변경 또는 삭제될 수 있다
※권한을 박탈할 때는 REVOKE 명령을 사용한다.
REVOKE [ system_privilege | role ] FROM [ user | role | PUBLIC
'SQL > 기초' 카테고리의 다른 글
SQL 정리 5일차 GROUP BY, HAVING (0) | 2023.08.13 |
---|---|
SQL 정리 4일차 -2- 날짜형 함수, 변환형 함수 (0) | 2023.08.11 |
SQL 정리 4일차 -1- 문자형 함수, 숫자형 함수 (0) | 2023.08.08 |
SQL 정리 3일차 (0) | 2023.08.05 |
SQL 정리 2일차 (0) | 2023.07.31 |