본문 바로가기
Backend

06월 19일 수 | SW활용 03 - 데이버베이스 설계와 DB서버

by 구라미 2019. 6. 19.

2. 데이버베이스 설계와 DB서버

데이터베이스의 종류

1. 파일시스템

2. 계층형 데이터베이스 관리시스템

3. 망형 데이터베이스 관리시스템

4. 관계형 데이터베이스 관리시스템  RDB라고도한다.

자바에선 클래스단위로 자료를 저장한다.

RDB는 테이블을 단위로 자료를 저장한다. DB에서도 테이블을 여러개가 나올 수 있는데 독립적으로 사용할 것이냐 관계를 주어 사용할 것이냐 정함. 관계형 DB 중요. 

- ORACLE, SQL, MySQL, Maria DB

- SQL문이 필요하다.

 

5.NoSQL 데이터베이스

- MongoDB

- SQL문이 없다. (명령어가 없다는 이야기가 아님)

 

데이터베이스의 특징

1. 데이터 무결성

부적절한 자료가 입력되어 동일한 내용에 대하여 서로 다른 데이터가 저장되는 것을 허용하지 않는 성질
2. 데이터 일관성

삽입, 삭제, 갱신, 생성 후에도 저장된 데이터가 변함없이 일정
3. 데이터 회복성

장애가 발생하였을 시 특정 상태로 복구되어야 하는 성질
4. 데이터 보안성

불법적인 노출, 변경, 손실로부터 보호되어야 하는 성질
5. 데이터 효율성

응답 시간, 저장 공간 활용 등이 최적화되어 사용자, 소프트웨어, 시스템 등의 요구 조건을 만족 시켜야 하는 성질

 

데이터를 잘 관리하기 위해 테이블 분리를 해서 정리해야 하는데 이 테이블들을 유기적으로 보여지게 하는 것이

관계형 데이터베이스

 

관계형 DBMS, 문서형 DBMS 알아두기

 


ORACLE DB Server 구축하기

1. 웹사이트 접속

https://www.oracle.com/index.html

 

2. 무료배포 버전 (PC명이 한글이면 안된다!)

3. 11g express 버전 설치

4. 설치경로 변경하지 않고 설치한다.

5. 사용자 비밀번호 설정 (최고권한 사용자 SYS, SYSTEM)

수업에 원활히 참여하기 위해 비밀번호: oracle로 통일

데이터베이스 접근 Listener 포트넘버 : 1521

오라클 포트번호 8080로 지정 추후 톰캣설치할 때 8080은 선점되었기 때문에 다른 번호 사용해야한다.

 

6. 오라클 서버 삭제

삭제하려면 제어판 -> 프로그램 및 기능에서 삭제하면 된다.

 

ORACLE Server 서비스 중인지 확인하기

1. 윈도우키 -> 서비스

 

서비스 중지가 되면 오라클 실행안된다, 상태를 늘 체크하기.

 

이렇게 시작 -> 서비스 검색

또는

시작 -> 모든프로그램 -> Oracle Database 11g Express Edition

->Start Database / Stop Databse 할 수 있다.

 

 

ORACLE 명령어 쓰기

CMD에서 사용할수도 있지만 불편하므로 오라클 홈페이지에서 Oracle Developer를 쓸 수도 있다.

1) Oracle Developer

2) 시작 -> 모든프로그램 -> Oracle Database 11g Express Edition -> Run SQL Command Line

 

1. SQL Command Line으로 실행하기

비밀번호: oracle

 

2. 연결이 성공하면 Connected가 뜨고 만일 연결이 안된다면 서버가 실행 중인지 확인하자.

3. Path 경로설정하는 이유

oracle설치하면 알아서 환경변수 설정이 되어있다.

 

오라클 명령어 입력툴

데이터베이스 관련 명령어

- SQL문(Stored Query Language)

- 대소문자를 구분하지 않음

- 종결문자 ;

- ANSI(표준)와 자신만의 DB명령어

 

테이블 스페이스 생성

- 데이터베이스 생성: MySQL, MariaDB, MS-SQL

  -> create database DB명

- 테이블스페이스 생성 : Oracle DB

 

CREATE TABLESPACE 테이블 스페이스 이름

DATAFILE '데이터파일경로' SIZE 초기사이즈

AUTOEXTEND ON

NEXT : 자동증가

MAXSIZE : 최대사이즈

 

java0514 테이블공간이 생성되었다.

 

 

사용자 계정만들기

- CREATE USER 아이디 INDETIFIED BY 비밀번호

- DEFAULT TABLESPACE 테이블스페이스 이름;

 

최고권한 유저가 계정을 만들 수 있다.

아이디가 JAVA0514, 비밀번호가 1234인 계정이 생성되었다.

 

사용자 계정 삭제하기

- DROP USER 아이디 CASCADE;

아까만든 JAVA0514 계정이 삭제되었다. 

 

생성된 계정 권한 부여/해제하기

- GRANT, REVOKE

권한부여

로그인을 하려고 봤더니 권한이 없어서 접근금지되었다.

이런 상황을 해결하려면 최고권한계정이 생성한 계정에 접근권한을 부여해야한다.

 

권한부여가 성공했다.

 

윈도우 CMD로 로그인하기

생성된 아이디로 성공적으로 DB로그인을 할 수 있게 되었다.

 

 

권한해제

REVOKE 권한종류1, 권한종류2 from 계정

SQL> REVOKE CONNECT, RESOURCE FROM ORA1210;

 

계정수정

ALTER USER 계정명 수정사항

 

사용자 삭제

DROP USER 아이디 CASCADE;

 

테이블

- 스키마라고도 한다.

- 데이터베이스 저장

실제로 테이블 생성할때 한글 절대 X

논리적테이블, 물리적테이블

 

 

CREATE TABLE 테이블명 (

컬럼1 자료형 제약조건,

컬럼2 자료형 제약조건,

컬럼3 자료형 제약조건

);

 

예시1)

create table sungjuk(
sno int,                --숫자형
uname varchar(50), --문자열형 ' ' 
kor int, 
eng int,
mat int,
avg int
);

sungjuk 테이블이 생성되었다.

 

테이블이 삭제되었다.

CRUD

CRUD는 데이터베이스가 가지는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기),
Update(갱신), Delete(삭제)를 말한다.

 

행 추가 - CREATE

CREATE INSERT INTO 테이블명(컬럼명1, 컬럼명2~)

VALUES(값);

 

INSERT INTO SUNGJUK( SNO, UNAME, KOR, ENG, MAT)

VALUE(); 

 

-- DB에서 주석

 

1행을 추가하였다.

 

2행을 더 추가하였다.

 

조회 및 검색 - Read

다시 테이블을 만들어서 SELECT로 테이블 정보를 조회해보았다.

SELECT 컬럼명1, 컬럼명2~ FROM 테이블명; --컬럼명의 정보를 조회함.

SELECT * FROM 테이블명; --전체 정보조회

 

AVG에 비어있는 영역을 NULL이라고 표기하는 DB도 있음.

 

 

행 수정 - UPDATE

UPDATE 테이블명 SET 컬럼명1 = 값1, 컬럼명2 = 값2,~

비어있는 AVG값을 UPDATE로 추가하였다.

DB에서도 연산할 수 있다.

값이 없데이트 된 결과이다.

 

행 삭제 - DELETE

DB는 백업이 중요하다. DROP, DELETE하면 복구 안된다.

내용이 모두 지워졌다.

COUNT함수로 갯수를 세어보니

레코드수가 0개라는 결과가 나왔다.

*지울 때 특정 행만 지칭해서 지워줘야함.

 

 


연습하기

NCS교재

- 36P <표 2-7> 참조해서 ADDRESS 테이블 생성

- 39P [그림 2-6] 참조해서 행추가

 

ORACLE에서 한글 한글자에 3바이트

 

CREATE TABLE Address(
SEQ_ID INT,
Address1 varchar(50),
Address2 varchar(50),
Address3 varchar(50),
Postal_Code varchar(50),
Client_ID varchar(50));

INSERT INTO ADDRESS(SEQ_ID,Address1,Address2,Address3,Postal_Code,Client_ID)
VALUES(1,'서울특별시','강남구 삼성동 44번지','A아파트 1동 101호','50693','321');

INSERT INTO ADDRESS(SEQ_ID,Address1,Address2,Address3,Postal_Code,Client_ID)
VALUES(2,'경기도','성남시 분당구 정자동 66번지','B아파트 5동 111호','12301','441');

INSERT INTO ADDRESS(SEQ_ID,Address1,Address2,Address3,Postal_Code,Client_ID)
VALUES(3,'서울특별시','강남구 삼성동 44번지','A아파트 1동 101호','50693','216');

INSERT INTO ADDRESS(SEQ_ID,Address1,Address2,Address3,Postal_Code,Client_ID)
VALUES(4,'경기도','성남시 분당구 정자동 44길','A아파트 1동 101호','12301','435');

SELECT SEQ_ID,Address1,Address2,Address3,Postal_Code,Client_ID FROM Address;

 

 

 

 

 

 

 

 

 

댓글