본문 바로가기

프로그래밍/SQL

[SQL 요약 정리] 1-1. SQL(Structured query Language)

1. SQL(Structured query Language)


1) 관계형 데이터베이스(RDB)

- 1970년대 초 E.F CODD박사에 의해 개념 도입

- RDB는 데이터를 2차 행렬의 TABLE의 집합으로 표현

- 각 Table은 행(Row)과 열(Column)으로 구성

- 각 Row는 유일하게 구별되는 특징을 가짐

- 각 Column들은 데이터 무결성(Data Integrity)을 보장받아야 함

- Table에 대한 데이터 조작 및 검색을 SQL을 이용해서 수행

- RDBMS가 전체 데이터 베이스(RDB)를 관리


2) 데이터베이스 용어

- Table: 행과 열의 조합으로 구성된 기본 저장 단위

- Row(Record): Column값들의 조합

- Column: 단일 종류의 데이터

- Field: Row와 Column의 교차점에 위치한 데이터, Null 값 허용

- Primary Key: Table의 각 Row를 식별해주는 Column, null 값 비허용

- Foreign Key: 다른 테이블의 PK(Primary Key)

- View: Table로부터 논리적으로 추출한 데이터의 집합(가상 테이블)

- Sequence: 기본 키 값 생성을 위해 사용, 고유값 자동 생성

- Index: Query의 속도 향상

- Synonym: Object에 대한 또 다른 이름(ALIAS역할)

- Program Unit: SQL, PL/SQL문으로 작성한 Procedure, Function, Trigger, Package


3) SQL, SQL*PLUS, PL/SQL의 비교

- SQL: DB서버에게 명령을 내리기 위한 언어(RDMBS 사용 표준-> ANSI 책정)

- SQL*PLUS: Oracle DB Tool, SQL및 PL/SQL 문장을 인식

- PL/SQL: SQL에 프로그램 로직이 추가/확장된 절차적인 프로그래밍 언어(Oracle)


4) Oracle DB의 기본 계정

- SYS: Super사용자 계정(DBA), DB의 모든 문제 처리 권한 보유, 기본 테이블과 뷰 저장

- SYSTEM: DB관리자 계정(DBA), 모든 시스템 권한 소유

*관리자 계정은 테이블을 생성하거나 일반 데이터를 Insert해서는 안되며 관리용도로만 사용

- SCOTT: 실습을 위해 만든 연습용 계정(잠겨있음)

- HR: 실습을 위해 만든 연습용 계정


5) DBMS에 접속하기

- connect 계정/비밀번호;


6) 사용자 계정의 생성

- 문형

CREATE USER user_name -> 기본 생성 명령어

IDENTIFIED [BY password | EXTERNALLY] -> 로그인 비밀번호 | 운영체제로 인증

[DEFAULT TALBESPACE tablespace]  -> 사용자 스키마를 위한 기본 테이블 공간 지정

[TEMPORARY TALBESPACE tablespace] -> 사용자의 임시 테이블 공간 지정

[QUOTA { integer [K | M] | UNLIMITIED} ON tablespace] -> 사용자의 테이블 공간 영역 할당

[PASSWORD EXPIRE] -> 로그인 암호 재설정

[ACCOUNT {LOCK | UNLOCK}] -> 사용자 계정을 명시적으로 Lock or Unlock

[PROFILE {profile|DEFAULT}] -> 자원 사용을 제어, 사용자에게는 암호 제어 처리방식 지정

ex) CREATE USER student identified by 1234;

*임시 TableSpace 미지정시 System TableSpace가 기본으로 지정 -> 단편화 발생

사용자 생성시 임시 TableSpace를 지정해주는것이 좋다


7) 권한과 역할(Privilege & Role)

- 사용자가 DB에서 특정 작업 수행 허용

- 사용: Grant -> 권한 부여 // Revoke -> 권한 삭제

- 종류

CREATE SESSION: DB 연결 권한

CREATE ROLE: 오라클 DB 역할 생성 권한

CREATE VIEW: 뷰 생성 권한

ALTER USER: 생성한 사용자의 정의 변경 권한

DROP USER: 생성한 사용자 삭제 권한


8) 사용자 계정에 권한 부여

- 문형

GRANT [system_privilege | role ] TO [user | role | PUBLIC] [WITH ADMIN OPTION]

- 설명

[system_privilege | role ]

-> system.privilege: 부여할 시스템 권한 이름 / role: 부여할 DB 역할의 이름

[user | role | PUBLIC]

-> user, role: 부여할 사용자 이름과 다른 DB 역할 이름 / PUBLIC: 시스템 권한 or DB 역할을 모든 사용자에게 부여

[WITH ADMIN OPTION]

-> 부여받은 권한을 다른 사용자 또는 역할로 부여 가능


*사용자 계정 권한 박탈

- revoke [system_privilege | role] FROM [user | role | PUBLIC]