본문 바로가기

공부/응용 SW

6월19일 - SW활용 : DB

교재

컴원 chap2, 3

 

데이터베이스 기초 활용하기

1. 정의 : 데이터베이스 - 자료를 저장해놓는 공간. 데이터의 집합

2. 종류

 1) 파일시스템

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

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

 4) 관계형 데이터베이스 관리시스템 (RDBms) - 파일을 테이블단위로 저장 

     - Oracle, SQL Server (MS SQL) , MySQL, Maria DB

3. 관계형데이터베이스(RDB) & NoSQL데이터베이스

관계형데이터베이스(RDB) NoSQL데이터베이스
Oracle DB, MySQL MongoDB
SQL문이 필요 SQL문이 없다

4. 데이터베이스 관리시스템(DBMS) 특징
 1) 데이터 무결성: 부적절한 자료가 입력되어 동일한 내용에 대하여 서로 다른 데이터가 저장되는 것을 허용하지 

                        않는 성질
 2) 데이터 일관성: 삽입, 삭제, 갱신, 생성 후에도 저장된 데이터가 변함없이 일정
 3) 데이터 회복성: 장애가 발생하였을 시 특정 상태로 복구되어야 하는 성질
 4) 데이터 보안성: 불법적인 노출, 변경, 손실로부터 보호되어야 하는 성질
 5) 데이터 효율성: 응답 시간, 저장 공간 활용 등이 최적화되어 사용자, 소프트웨어, 시스템 등의 요구 조건을 만족 

                        시켜야 하는 성질

5. 관계형은 분리해서 자료를 저장, 

6. 시스템 특징

구분 설명 예제
관계형 DBMS
(Relational DBMS)
- 테이블의 구조(스키마)를 정의하고 테이블 간의 관계를 정의하여 데이터를 관리
- 가장 광범위 하게 쓰이는 DBMS
- 비관계형 부분까지 확장하여 관리 범위를 넓힌 형태의 관계형 DBMS 출시
Oracle
MySQL
MS SQL Server
PostgreSQL
DB2
Maria DB
문서 저장 DBMS
(Document store)
- 관계형 DBMS와는 달리 스키마 구조 필요 없음
- 일관된 구조가 필요 없음
- 칼럼은 하나 이상의 값을 가질 수 있음
- Client단에서 후처리 필요
Mongo DB
Amazon Dynamo DB
Couchbase
MS Azure cosmos DB
그래프 DBMS
(Graph DBMS)
- 노드와 에지로 특징되는 요소 특화
- 노드 간 관계를 구조화하여 저장
Neo4j
MS Azure cosmos DB
OrientDB
ArangoDB
키값 DBMS
(Key-value DBMS)
- 가장 간단한 형태의 DBMS
- 임베디드 시스템과 같은 간단한 시스템에 적합
Redis
Amazon Dynamo DB
Memcached

 

데이터베이스 관리

- 선생님 강의자료 카페 참조하기

 

Oracle DB Server 구축하기

 

무료배포버전 -> 로그인 후 다운로드 하기

 *주의사항 : 컴퓨터이름에 한국어가 들어가면 안된다. 오류생김

https://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/xe-prior-releases-5172097.html

 

1. 오라클 서버 설치하기

 1) setup.exe 풀기

 2) 최고 운영자 super user ID : sys, system // super user PW : oracle

   - 비번 최대한 통일시키기 안까먹게 

   MySQL ID: root  / MSSQL ID : sa

 3) summary

   - oracle port : 8080 으로 설정되어있다. 

   - db listnet port : 1521로 설정 (못바꿈, 데이터베이스 접근 포트번호)

  pc 안에 오라클 -> 오라클입장 포트번호 8080-> 오라클안에 db -> db listner 입장 포트번호 1521

 

2. 오라클 서버 삭제하기

제어판 -> 프로그램 및 기능

-> Oracle Database 11g Express Edition  -> 우클릭

-> 제거

 

3. 오카클 서버 서비스 확인

시작-> 서비스 -> OracleServicXE 확인 ->서비스 중지 및 시작 조절 가능

 

또는

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

 

4. 오라클 명령어 입력 툴

 - 데이터베이스 관련 명령어

   -> SQL문 (Stored Query Language)

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

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

   -> 종결문자 ;

   -> 결과중심적 언어 , 한번에 데이터 추출이 쉽지않다.

 

 1) Oracle SQL Developer : Oracle 사이트 -> Menu-> Product -> Developer Tools -> Oracle SQL Developer

 2) 시작 -> 모든프로그램

    -> Oracle Database 11g Express Edition 

    -> Run SQL Command Line

    >connect 서비스 잘 되고 있는지 확인하는 법, user-name : system 적고, password는 oracle 

    비밀번호는 적을 때 문자로 나오지않는다. 

    >exit 누르면 RUN을 나간다 

 3) 시작 -> cmd -> sqlplus -> id, pw 입력 -> ctrl+c or exit 로 dos로 돌아오기

로그인하는 방법

- 1 . sqlplus system/oracle : 이건 노노 비번이 공개되서 

- 2. 비번없이 들어가는 방법  sqlplus / as sysdba (띄어쓰기준수! )

 

내컴퓨터 -> 고급시스템설정 -> 고급 -> 환경변수 -> path(oracle)

 

5. 테이블 스페이스 생성 create

- 데이터베이스 생성 : My SQL, Maria DB, MS-SQL

  -> create database DB명

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

 create tablespace 테이블스페이스이름
 datafile              '데이터파일경로' size 초기사이즈
 autoextend on
 next                   자동증가사이즈 
 maxsize               최대사이즈;

- 시작-> cmd -> 

SQL>create tablespace java0514 (파일명)
      datafile 'd:\java0514\java0514.dbf' size 50m
      autoextend on
      next 10m
      maxsize unlimited;

 * 파일명을 바꾸고 싶으면 첫번째줄의 java0514를 변경하면 된다.

파일 생성됨 

6. 오라클 DB 서버 사용자 계정 만들기

 -> 시작 -> cmd -> sqlplus

crate user 아이디 identified by 비번

default tablespace 테이블스페이스이름;

 

SQL> create user java0514 identified by 1234

        defualt tablespace java0514;

계정 생성됨

7. 사용자 계정 삭제 drop

 -> 시작 -> cmd -> sqlplus

drop user 아이디 cascade;

 

SQL>drop user java0514 cascade; 

계정 삭제됨

 

8. 사용자 계정 보안

  - 발급받은 계정에 대해 권한부여를 주어야 사용가능하다. 

새로 만든 계정에 권한부여를 하지않아 에러남.

9. 사용자 권한 부여 grant

 -> 시작 -> cmd -> sqlplus

SQL>grant connect, resouce, dba to  java0514;

       exit;

사용자 권한부여 및 로그인 성공 기록

  -> 새로만든 계정 java0514에 사용자 권한부여를 했다. 이 계정으로 로그인을 성공한 기록도 있다. 

※ connect   접속권한
   resource  데이터베이스안에 있는 자원들을 사용할 수 있는 권한
   dba       관리자권한


  -> 권한취소
      revoke 권한종류1, 권한종류2 from 계정
      SQL> revoke connect, resource from ora1210

  ->  계정 수정
      alter user 계정명 수정사항
  -> 사용자 삭제 
      DROP USER userid CASCADE;  

 

 

관계형 데이터베이스 활용

 

1. 테이블 - 구조

 - Schema (스키마)라고도 불림

 - 데이터베이스 저장 단위

 

 - 물리적 테이블 :

 - 논리적 테이블 : 내가 만든 테이블

 

2. 테이블 생성 및 삭제

 - 테이블 생성

   create table 테이블명(

      칼럼1 자료형 제약조건,

      칼럼2 자료형 제약조건,

      칼럼3 자료형 제약조건  

   );

   제약조건 : ex)  null값 허용, 비허용

 - 테이블 삭제

   drop table 테이블명;

 

ex)

성적                                       -> 테이블명

-------------------------------------

번호 이름    국어 영어 수학 평균   -> 칼럼

-------------------------------------

1     무궁화   90   80    70    80    ->  줄 row, record

2     송아지   80   90    70    80

칼럼 column

 

*DB에서 주석달 땐 , --

 

create table sungjuk(
   sno int,                  --숫자형
   uname varchar(10),   --문자열형 ' ' , 이름들어가는 곳 10칸으로 
   kor int,
   eng int,
   mat int,
   aver int
);

sungjuk 테이블 생성
sungjuk 테이블 삭제

 

 

 

데이터베이스 관리

- 데이터베이스 기본연산 CRUD

 

1. 행추가 Create - Insert

  

insert into 테이블명(칼럼1, 칼럼2 ~)

values(값1, 값2 ~);

 

insert into sungjuk(sno, uname, kor, eng, mat)

values(1, '무궁화', 90, 80, 70);

 

insert into sungjuk(sno, uname, kor, eng, mat)

values(2, '송아지', 80, 90, 70);

 

insert into sungjuk(sno, uname, kor, eng, mat)

values(3, '돼지', 60, 90, 80);

3행의 행 추가 했다.

2. 조회 및 검색  Read - Select

 

select 칼럼명 from 테이블명 

 

select sno, uname from sungjuk;

select sno, uname, kor, eng, mat from sungjuk;

select * from sungjuk; --전체 모든 칼럼조회, 자바에선 헷갈리니 사용하지 않는걸로

 

3. 행 수정 Update - Update

 

update 테이블명 set 칼럼1=값1, 칼럼2=값2, ~

 

update sungjuk set aver=(kor+eng+mat)/3;

비어진 aver값 넣어주기 

 

4. 행 삭제 Delete - Delete

 - Delete 하면 백업안되기 때문에 미리 백업 잘 해놔야한다. 

 

delete from 테이블명;

 

delete from sungjuk;

 

 count(*) sungjuk테이블안에 있는 행 갯수 세기

 

연습하기 

한글 한글자 당 3BYTE

 

CREATE TABLE Address(
SEQ_ID int,
Address1 varchar(15),
Address2 varchar(40),
Address3 varchar(50),
Postal_Code varchar(15),
Client_ID varchar(10));

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, '서울특별시', '강남구 삼성동 64길', 'C아파트 3동 190호', '50693', '216');

insert into Address(SEQ_ID, Address1,Address2, Address3, Postal_Code, Client_ID)
values(4, '경기도', '성남시 분당구 정자동 44길', 'D아파트 5동 111호', '12301', '435');