세상에는 여러가지 데이터베이스가 존재한다.
그래프형, 문서형, 오브젝트형, 키-밸류형 등등...
그 중 가장 많이 쓰이는 데이터베이스는 관계형 데이터베이스이다.
관계형 데이터베이스의 핵심은 표 이다.
표??
정보기술의 위대한 성취, 인류가 만든 시각화도구. 어떤 정보건 열과 행의 틀에 따라 정보를 정리정돈 할 수 있다.
즉 정보를 2차원으로 표현할 수 있다.
관계형 데이터베이스는 표라는 위대한 성취를 기계화한 것이다. 정보를 표로 표현하기만 하면 정보를 매우 이해하기가 쉬워진다. 이렇게 만들어진 표를 기계화시키면 기계가 가진 엄청난 능력을 가진 표 로봇을 만들수 있게 된다.
관계형 데이터베이스의 가장 인기있는 제품은 오라클이다. (비싸다는 단점이 있다)
에디션(제품)
- 익스프레스(무료)
- 퍼스널
- 스탠다드
- 엔터프라이즈
라이센스(사용자 수 기준)
- 네임드 유저 플러스
- 프로세서
오라클에서 우리의 목표는 표에 정보를 기록하고 기록된 정보를 읽어오는 것이다.
사용자와 스키마
USER SCHEMA
표를 만들다보면 표가 점점 많아진다. 따라서 자연스럽게 디렉토리가 필요해진다.
연관된 표를 그룹핑하기 위한 체계를 스키마라고 한다.
스키마를 사용하기 위해서 같이 생각해야 하는 개념은 사용자이다.
오라클은 비싸고 고성능 컴퓨터에서 돌아간다.
데이터를 혼자 사용하기 위해 쓰는 경우가 거의 없고, 여러 컴퓨터들이 오라클 데이터베이스가 설치된 컴퓨터의 네트워크에 접속해서 작업을 하게 된다.
오라클은 여러 사용자를 만들수 있고, 각각의 사용자는 자신이 관리하는 테이블에 접속할 수 있다.
사용자를 생성하게 되면 사용자에 속하는 스키마가 만들어지게 된다.
사용자 생성하기
- 네모 : 키워드, 그대로 쓰는 것
- 타원 : 우리가 바꿔야하는 내용
사용자를 생성하기 위해 CREATE USER user IDENTIFIED BY password를 사용했으나
공통 사용자 또는 롤 이름이 부적합하다는 에러가 발생하였다.
오라클 12c부터는 공통계정 앞에 c##을 붙이거나
ALTER SESSION SET "_ORACLE_SCRIPT"=true;
로 세션을 변경해줘야 한다고 한다.
사용자에게 권한 부여하기
3회 시도했으나 오라클에 접속하지 못한 경우 sqlplus는 종료된다.
권한을 부여하기 위해선 GRANT TO 키워드를 사용한다.
- GRANT = 권한을 부여한다
- DBA = 데이터베이스를 관리하는 모든 권한(최대한의 권한)
현실에서는 최소한의 권한만 주는 것이 바람직하다.
이렇게 사용자를 만들고 권한을 부여하여 사용할수 있게 되면 테이블(표)를 만들 수 있게 된다.
테이블 생성하기
두 가지 데이터로 표를 만든다.
열은 이름을 정의하는데 사용된다
행은 열에 해당되는 구체적인 값들이다
- 데이터의 이름 = COLUMN(열)
- 컬럼에 해당되는 구체적인 값 = ROW(행)
표를 만드는 방법은 다음과 같다.
//topic이라는 표를 만들어라
CREATE TABLE topic(
id NUMBER NOT NULL,
//숫자만 올 수 있다 (if문으로 체크할필요가 없어짐)
//제약사항: 반드시 있어야 하느냐, 비어있어도 되느냐? = NULL, NOT NULL
//콤마로 하나의 컬럼이 끝났다는걸 알려준다
title VARCHAR2(50) NOT NULL,
//들어오게 되는 글자수를 알 수 없을때 -> 50글자로 제한한다
description VARCHAR2(4000) NULL,
//VARCHAR2의 글자수 제한은 4000이 최대
//NULL은 값이 없을 수도 있다
created DATE NOT NULL
//오라클에는 시간을 위한 데이터타입 DATE가 있다
);
어떤 표가 현재 나의 스키마에 존재하는가?
해당 키워드로 현재 topic이라는 테이블이 winterrosy라는 스키마(유저)에게 속해 있다는 것을 알 수 있다.
다음 게시글에서는 표 안의 데이터를 CRUD 하는 방법에 대해서 배워보자
해당 게시글은 '생활코딩' 님의 오라클 강의를 참고하였습니다.
출처 https://www.youtube.com/playlist?list=PLuHgQVnccGMB5q5uJIDhLlcC2V6tyXhY6
'DATABASE' 카테고리의 다른 글
관계형 데이터 모델링(1) - 개념적 데이터 모델링 (0) | 2021.12.10 |
---|---|
SQL JOIN - LEFT OUTER JOIN, INNER JOIN (0) | 2021.12.10 |
ORACLE DATABASE - PRIMARY KEY, SEQUENCE (0) | 2021.12.09 |
ORACLE DATABASE - 데이터의 CRUD (0) | 2021.12.09 |
DBMS에 대하여 (0) | 2021.12.08 |