본문 바로가기
SQL/기초

SQL 정리 1일차

by 유서담 2023. 7. 30.

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