Luver Duck 2022. 8. 23. 09:47

데이터베이스(Database, DB)

- 데이터들의 모임

- 대규모의 정보를 관리하도록 설계된 대용량 저장소

 

데이터베이스 관리 시스템(DBMS, Database-Management System)

- 데이터베이스에 정보를 저장하고 이를 검색하기 위한 환경을 제공

- 서로 관계있는 데이터들의 모임과 그 데이터에 접근하기 위한 프로그램의 집합으로 구성

ex) Oracle DB, MySQL, MS SQL, PostgreSQL, Maria DB, ...

 

** DB와 DBMS의 차이?

- DB는 데이터가 저장된 저장소를 의미하며 DBMS는 이를 관리하기 위한 응용 프로그램을 의미한다

 

Oracle DB

관리자 계정(system)

- 오라클을 설치하는 과정에서 최초로 관리자 계정(system)의 비밀번호를 설정할 수 있다

- 관리자 계정 명령

connnect system/초기 설치시 비밀번호; 관리자 계정에 접속한다
conn system/초기 설치시 비밀번호;
create user 아이디 identified by 비밀번호; 새로운 사용자 계정을 생성한다
grant 권한명 to 아이디; 사용자 계정에 권한을 부여한다
revoke 권한명 from 아이디; 사용자 계정에 부여했던 권한을 회수한다
alter user 아이디 identified by 변경비밀번호; 사용자 계정의 비밀번호를 변경한다
drop user 아이디; 사용자 계정을 삭제한다

** 권한의 종류?

 

SQL Developer

- Oracle DB에서 SQL로 작업하기 위한 통합 개발 환경

- 용어

Table(테이블) 테이블, 빠른 참조를 위해 적당한 형태로 자료를 모아 놓은 것.
관계 데이터 베이스 모델(relational data base model)에서 자료의 구조를 2차원의 표로 나타낸 것.
즉, 행과 열의 형태로 관리되며 키를 지정함으로써 원하는 자료를 빠르고 쉽게 찾아 낼 수도 있다.
Row(행) 관계형 데이터베이스에서 레코드(record) 또는 튜플(tuple)로불리기도 하며, 어떤 테이블에서 단일 구조 데이터 항목을 가리킨다.
간단한 용어로, 데이터베이스 테이블은 로우와 컬럼 또는 필드로 구성되어 있다고 간주할 수 있다. 각 테이블의 행은 일련의 관련 자료를 나타내며, 테이블에서 모든 로우는 동일한 구조를 가지고 있다.
Column(열) 관계형데이터베이스 테이블에서 특정한 단순 자료형의 일련의 데이터값과 테이블에서의 각 열을 말한다.
컬럼은 열이 어떻게 구성되어야 할 지에 대한 구조를 제공한다.
관계형 데이터베이스 용어에서 컬럼과 같은 의미로 사용되는 것은 속성(attribute)이다.
필드(field)가 종종 컬럼의 대용으로 동일한 의미로 사용되지만,
필드와 필드값은 한 열이나 한 컬럼 사이의 교차로 존재하는 단일 항목을 특정할 때 언급하는 것이다.
Field(필드) 필드, 항목, 어떠한 의미를 지니는 정보의 한 조각으로, 데이터베이스 시스템에서 처리의 최소 단위가 되는 것.

 

SQL (Structed Query Language)

- DB에서 공통적으로 사용되는 구조적 데이터 질의어

- CRUD : SQL문의 기본 4대 요소

CRUD 조작 SQL
Create 생성 insert
Read 읽기(또는 인출) select
Update 갱신 update
Delete 삭제(또는 파괴) delete

 

DDL (Data Definition Language)

- DBMS의 객체를 생성, 변경, 삭제하기 위한 구문

- DDL은 commit과 rollback의 영향을 받지 않는다

create 생성
alter 변경
drop 삭제
truncate 자르기

 

DML (Data Management Language)

- 데이터를 조작하는 구문

- DML은 commit과 rollback이 가능하다 (transaction 관리가 이루어진다)

insert into 추가
select 조회
update 수정
delete 삭제

 

DCL (Data Control Language)

- 데이터를 통제하기 위한 구문

- 권한, 저장 관련 키워드

1) 사용자 관리

grant 권한 부여
revoke 권한 회수

2) Transaction 관리 (TCL)

commit Transaction 저장
rollback Transaction 무효화 (실행 취소)

 

테이블 생성/삭제

-- 테이블 생성
create table 테이블명(
컬럼명1 자료형,
컬럼명2 자료형,
...
컬럼명n 자료형
);

-- 테이블 삭제
drop table 테이블명;

-- 테이블 변경
-- ex) 테이블 컬럼의 자료형 변경
alter 테이블명 modified(컬럼명, 바꿀 자료형);

-- 입력
insert into 테이블명(컬럼명1, 컬럼명2, ... 컬럼명n) values(각 컬럼의 입력값);

-- 최종 저장
commit;

-- 실행 취소
rollback;

** DB의 자료형??

 

- 테이블 생성시 특별한 조건 부여

create table 테이블명(

-- 1) check(조건) : 해당 컬럼의 입력값 조건 부여
컬럼명1 자료형 check(조건),

-- 2) unique : 해당 컬럼에 이미 DB에 존재하는 값을 입력하지 않도록 설정 (중복값 차단)
컬럼명2 자료형 unique,

-- 3) not null : 해당 컬럼에 반드시 값을 입력하도록 설정 (null이 입력되지 않도록)
컬럼명3 자료형 not null,

-- 4) default : 값을 입력하지 않을 때 입력될 기본값을 설정
컬럼명4 자료형 default 기본값
);

 

1) check : 각 컬럼에 입력할 수 있는 값의 조건 부여

컬럼명1 자료형 check(조건)

 

- 논리

and 그리고 (Java의 '&&')
or 또는 (Java의 '||')

 

- 크기 비교

>, < 크다, 작다
= 같다 (Java의 '==')
>=, <= 이상, 이하

 

- 범위 입력

between A to B 숫자 A에서 숫자 B 사이

 

- 정규 표현식으로 입력된 조건

regexp_like(컬럼명, 정규표현식) 해당 컬럼에 입력될 값이 정규표현식을 만족하는지

 

2) unique : 해당 컬럼에 입력하려는 값이 이미 DB에 존재하면 입력되지 않도록 설정 (중복값 방지)

컬럼명2 자료형 unique

 

3) not null : 해당 컬럼에 입력하려는 값이 null이면 DB에 저장되지 않도록 설정 (null 입력 방지)

컬럼명3 자료형 not null

 

4) default : 해당 컬럼에 값을 입력하지 않을 때 자동으로 입력될 기본값 설정 (기본값 설정)

컬럼명4 자료형 default 기본값

 

** 입력문에서 default 값이 입력되도록 하는 방법 : default가 설정된 값을 빼고 입력문을 구성한다

ex) 

-- 쿠팡(coupang) 테이블 생성 : 상품명(name), 분류(type), 가격(price), 행사(event)
create table coupang(
name varchar2(30),
type varchar2(30),
price number,
event varchar2(30) default '없음'
);

-- 행사(event)에 default값을 입력할 경우 : 해당 컬럼을 입력문에서 제외한다
insert into item(name, type, price) values(이름, 종류, 가격);

-- 행사(event)에 직접 입력할 경우
insert into item(name, type, price, event) values(이름, 종류, 가격, 값);

 

시퀀스(sequence)

- 연속적으로 증가하는 숫자를 생성하는 Oracle DB의 객체 중 하나

 

시퀀스의 생성과 삭제

-- 시퀀스 생성
create sequence 시퀀스명;

-- 시퀀스 삭제
drop sequence 시퀀스명;

** 시퀀스명은 편의상 시퀀스가 적용될 테이블명_seq로 한다

 

시퀀스의 속성

CREATED 생성일
LAST_DDL_TIME 마지막 수정일
SEQUENCE OWNER 해당 시퀀스를 생성한 계정
SEQUENCE_NAME 해당 시퀀스의 이름
MIN_VALUE 생성하는 숫자 범위 중 최소값
MAX_VALUE 생성하는 숫자 범위 중 최대값
INCREMENT_BY 생성하는 연속된 번호간의 증가량
CYCLE_FLAG 생성하는 숫자가 최대값에 도달했을 때도 숫자를 생성할 것인지 여부
- 오름차순 시퀀스가 최대값에 도달했을 때 최소값을 생성 (최소값 -> 최대값)
- 내림차순 시퀀스가 최소값에 도달했을 때 최대값 생성 (최대값 -> 최소값)
- NO CYCLE일 경우 최대값에 도달했을 때 숫자를 생성하지 않음
ORDER_FLAG 순서대로 숫자를 생성할 것인지 여부
- ORDER : 숫자 생성시 시퀀스 중간에 비어있는 숫자 생성
- NO ORDER : 숫자 생성시 시퀀스 중간에 비어있는 숫자는 건너 뛰고 숫자 생성
CACHE_SIZE 미리 생성해 둘 시퀀스 숫자의 크기
LAST_NUMBER 미리 생성되어있는 숫자의 마지막 번호

 

시퀀스 생성 (속성 설정)

create sequence 시퀀스명(
increment by 증가량,
start with 시작값,
[maxvalue 최대값 | nomaxvalue],
[minvalue 최소값 | nominvalue],
[cycle | nocycle]
[cache 크기 | nocache] -- default는 20이다
[order | noorder]
);

 

테이블 컬럼에 값을 입력할 때 시퀀스 적용 : 시퀀스명.nextval

insert into 테이블명(컬럼명) values(시퀀스명.nextval);