“ 매주 목요일마다 당신이 항상 하던대로 신발끈을 묶으면 신발이 폭발한다고 생각해보라.
컴퓨터를 사용할 때는 이런 일이 항상 일어나는데도 아무도 불평할 생각을 안 한다. ”- Jef Raskin
맥의 아버지 - 애플컴퓨터의 매킨토시 프로젝트를 주도
실무데이터베이스 첫번쨰 |
" 데이터베이스 "
데이터베이스(DataBase, DB)는 여러 사람이 공유하여 사용 할 목적으로 체게화해 통합, 관리하는 데이터1의 집합이다.
작성된 목록으로써 여러 응용 시스템들의 통합된 정보들을 저장하여 운영 할 수 있는 공용 데이터들의 '묶음'이다.
출처 : 위키백과
준비 자료
오라클 데이터베이스(Database 19c Enterprise/Standard Editions) [링크]
SQL Developer Tool 19.2.1 [링크]
- 링크를 누르시면, 오라클(Oracle) 다운로드 사이트로 이동됩니다.
- 다운로드 받기 위해서는 오라클 회원가입을 하셔야됩니다.
설치가 완료되었다면,
작업 표시줄(윈도우 기준)에 보시면 검색창에 SQL을 검색하시면 파일이 검색됩니다.
실행하시면, 사용자 정보를 입력하라고 나옵니다.
Enter User Name : System
Enter User Password : [설정한 비밀번호]
입력을 하시면, 접속이 됩니다.
그리고, 이제 시스템에 어떤 계정들이 만들어져있는지 없는지 확인을 하기 위해서 아래와 같은 명령어를 입력합니다.
SELECT * FROM ALL_USERS; [모든 계정 정보 확인]
SELECT USERNAME FROM ALL_USERS; [모든 계정 이름 확인]
위 명령어를 입력하게 된다면, 콘솔 창에 계정 정보들이 출력 됩니다.
그리고 이제 저는 제가 쓰고 싶은 계정을 생성 하도록 하겠습니다.
CREATE USER [계정 이름] IDENTIFIED BY [비밀번호];
GRANT CONNECT, RESOURCE, DBA TO [계정 이름];
- 위와 같이 입력하면, 계정 생성 및 생성 한 계정에 권환을 줄 수 있습니다.
[Warning!] 오라클 데이터베이스 12c이상부터는 계정 이름 앞에 C##이라고 붙이셔야합니다.
[SYSTEM PRIVILEGES]
CREATE USER [데이터베이스 유저 생성]
SELECT ANY TABLE [모든 유저의 테이블 조회]
CREATE ANY TABLE [모든 유저의 테이블 생성]
CREATE SESSION [데이터베이스 접속 권한]
CREATE TABLE [테이블 생성 권한]
CREATE VIEW [뷰 생성 권한]
CREATE PROCED USER [프로시저 생성 권한]
CREATE SEQUENCE [시퀸스 생성 권한]
SYSDBA [데이터베이스 관리 최고 권한]
SYSOPER [데이터베이스 관리 권한]
[DELETE USER]
DROP USER [계정] CASCADE;
[PRIVILEGES REMOVE]
REVOKE [권한명] ON [테이블] FROM [계정 이름]
[진행되는 내용 저장] - COMMIT;
ROlLBAK(저장하기 전 내용으로 되돌리기) - ROLLBACK;
[현재 연결 된 계정] - SHOW USER;
제약조건(CONSTRANT)
Not Null ( 칼럼 적용 가능, 테이블 불가능)
칼럼을 정의 할 때, Not Null 제약 조건을 명시하여 해당 칼럼에는 반드시 데이터를 입력해야만 한다.
반드시 데이터가 있어야 하는 칼럼에 넣는 것이 좋다.
CREATE TABLE TEST01 (
COL1 CHAR(50) NOT NULL
);
UNIQUE ( 중복 값 허용 안함 - 고유키 )
해당 칼럼에 들어가는 값이 테이블 전체에서 유일해야 함.
Not Null과 사용 할 수 있다.
CREATE TABLE TEST01 (
COL1 CHAR(50) NOT NULL,
COL2 CHAR(50) UNIQUE NOT NULL
);
PRIMARY KEY ( 기본키 : 데이터 무결성을 기켜주는 역활 )
UNIQUE + NOT NULL 형태다.
테이블 당 1개의 기본키를 생성 할 수 있다.
여러 칼럼을 묶어 하나의 기본키로 만드는 것이 가능함. (최대 32가지)
CREATE TABLE TEST01 (
COL1 CHAR(50) PRIMARY KEY,
COL2 CHAR(50)
/* 여러 칼럼을 묶을 때는 CONSTRAINT 사용 */
CONSTRAINT PK_TEST01 PRIMARY KEY (COL1, COL2)
);
FOREIGN KEY (외래키)
테이블 간의 참조 데이터 무결성 보장
참조 데이터 무결성 보장을 통해 참조 관계가 있는 테이블의 데이터 (추가, 삭제, 수정)이 가능하다
- 참조하는 테이블이 먼저 생성되어 있어야 함.
- 외래키가 참조하는 칼럼은 참조하는 테이블의 기본키 ( PRIMARY KEY)
- 여러 칼럼을 외래키로 할 경우 참조하는 테이블의 기본키와 칼럼 개수 및 순서가 같아야 함
- 기본키와 마찬가지로 최대 32개 칼럼까지 가능
CREATE TABLE TEST01 (
COL1 CHAR(50) PRIMARY KEY,
COL2 CHAR(50)
);
CREATE TABLE TEST02 (
COL3 CHAR(50) PRIMARY KEY,
COL4 CHAR(50)
/* 여러 칼럼을 묶을 때는 CONSTRAINT 사용 */
CONSTRAINT FK_TEST02 FOREIGN KEY(COL3) REFERENCES TEST01(COL1)
);
CHECK
칼럼에 입력되는 데이터를 CHECK하여 미리 지정된 조건에 맞을 경우에만 입력을 허락
그 외에는 오류가 발생됨
CREATE TABLE TEST01 (
COL1 NUMBER(10) PRIMARY KEY,
COL2 CHAR(50)
CONSTRAINT TEST01_CHECK CHECK (COL1 BETWEEN 1 AND 9)
);
테이블 생성
CREATE TABLE 테이블이름 (
칼럼명 DATATYPE [DEFAULT]
);
- 테이블 명은 객체 의미 할 수 있게 단수형
- 테이블 내에서는 칼럼명이 중복 불가능
- 칼럼마다 콤마 "." 구분 테이블 생성 끝은 세미콜론","
- 칼럼에 대해서는 다른 테이블까지 고려, 데이터베이스 내에서는 일관성
- 칼럼에는 [DATADYPE] 지정 필수
- 테이블 명과 칼럼 명은 문자로 시작하고 길이 제한
- A-Z, a-z, 0-9, $, _, # 허용 ( 다른 것은 불가능)
생성된 테이블 구조
DESC [테이블명];
생성하고 난 뒤 구조가 제대로 만들어져 있는지 확인
참고 블로그 : ORACLE NOTE
데이터 타입
문자열
CHAR(SIZE) 고정길이 문자를 저장 최대:2000BYTE, 최소 : 1BYTE
VARCHAR(SIZE) 가변길이 문자를 저장 최대:2000BYTE, 최소 : 1BYTE
NCHAR(SIZE) CHAR과 같으나 유니코드 형태
NVARCHAR(SIZE) VARCHAR와 같으나 고정 길이 유니코드 형태 (최대 2000BYTE)
NVARCHAR2(SIZE) 가변 갈이 유니코드 데이터 타입 (최대 4000BYTE)
LONG 최대 2GB 크기의 가변길이 문자 형 (잘 사용안됨)
CLOB 대용량 텍스트 데이터 타입 (최대 4GB)
NCLOB 대용량 텍스트 유니코드 데이터 타입 (최대 4GB)
- 가변길이 : 지정 사이즈보다 짫거나 작은 데이터가 입력되더라도 공간 낭비하지 않는다는 특징
숫자형
NUMBER(SIZE) P, S로 표현 숫자 데이터 타입 P:1-38 S:84~127 P[PRECISION] : 유효자리수, S(SCALE) : 소수 점 유효 자리
FLOAT(SIZE) 부등 소수형 데이터 타입 (4BYTE) - 32BIT 부동 소수
DOUBLE(SIZE) 부등 소수형 데이터 타입 (8BYTE) - 64BIT 부동 소수
날짜 데이터
DATE 년단위 - 초단위까지 입력가능 YYYY/MM/DD [DEFAULT]
TIMESTAMP 년단위~밀리초단위까지 입력 가능
INTERVAL_YEAR 년도,월 형태의 기간 표현 타입
INTERVAL_DAY 요일, 시, 분, 초형태의 기간 표현 타입
TIMESTAMP_WITH TIME ZONE 날짜 및 시간대 형태의 데이터 타입
TIMESTAMP_WITH LOCAL TIME ZONE 저장 시 데이터베이스 시간대를 저장 조회시 조회하는 클라이언트 시간 표현 타입
이진 데이터
RAW(SIZE) 가변 길이 이진 데이터 타입 (최대 2GB)
LONGRAW 가변 길이 이진 데이터 타입 (최대 4GB)
BLOB 대용량 바이너리 데이터를 저장하기 위한 데이터 타입 (최대 2GB)
BFILE 대용량 바이너리 데이터를 파일형태로 저장하기 위한 데이터 타입 (최대 4GB)
참고 한 블로그 : ACODOM
/* ALTER를 이용하여, 제약조건들 추가 */
/*FK 제약조건*/
ALTER TABLE '테이블명' ADD CONSTRAINT '제약조건명' FOREIGN KEY('외래키 칼럼명')
REFERENCES '참조테이블'('참조테이블_PK') [ON DELET 옵션] [ON UPDATE 옵션]
/*PK 제약조건*/
-- PK 제약조건 추가
ALTER TABLE '테이블명' ADD PRIMARY KEY ('칼럼명1, 칼럼명2...');
-- PK 제약조건 추가(제약조건명 지정)
ALTER TABLE '테이블명' ADD CONSTRAINT '제약조건명' PRIMARY KEY ('칼럼명1, 칼럼명2...');
/*FK 제약조건*/
ALTER TABLE '테이블명' ADD CONSTRAINT '제약조건명' FOREIGN KEY('외래키 칼럼명')
REFERENCES '참조테이블'('참조테이블_PK') [ON DELET 옵션] [ON UPDATE 옵션]
/*UNIQUE 제약조건*/
-- UNIQUE 제약조건 추가
ALTER TABLE '테이블명' ADD UNIQUE ('칼럼명');
-- UNIQUE 제약조건 추가(제약조건명 지정)
ALTER TABLE '테이블명' ADD CONSTRAINT '제약조건명' UNIQUE ('칼럼명');
/*제약조건 삭제*/
-- 제약조건 삭제
ALTER TABLE '테이블명' DROP CONSTRAINT '제약조건명';
출처 : 세상의 모든 기록
데이터(자료, Data) 수, 영상, 단어 등의 형태로 된 의미 단위 연구와 조사 등의 바탕이 되는 것과 잘료를 의미있게 정리하면 '정보'가 된다
데이터베이스를 하기 위해서 기본적으로 있어야 하는 것