본문 바로가기
인천일보아카데미/- 학습일지

[학습일지]JAVA교육일지 44일차

by w1z 2022. 6. 16.

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

2. SQL


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

[정의]

- 데이터베이스는 효율적인 관리와 검색을 위해 구조화한 데이터 집합으로, 이 데이터베이스의 데이터 조작과 관리를 극대화한 시스템 소프트웨어이다.

 

[효율적인 데이터 관리 조건]

- 데이터를 통합하여 관리

- 일관된 방법으로 관리

- 데이터 누락 및 중복 제거

- 여러 사용자(응용 프로그램 포함)가 공동으로 실시간 사용 가능

 

[관리 시스템의 중요성]

  1) 데이터 무결성  
    - 데이터에 오류가 있으면 안된다.
    - 제약조건(Constraint)를 사용한다.

  2) 데이터 독립성
    - 데이터베이스에 변화가 발생하더라도 관계된 응용 프로그램들은 영향을 받지 않는다.
    
  3) 보안
    - 데이터베이스내의 데이터를 함부로 겁근 방지
    - 소유주나 접근권한이 있는 사용자만 접근 가능, 통제 가능
    
  4) 데이터 중복 최소화
    - 동일한 데이터가 여러곳에 여러번 저장되는 것을 방지한다.
    
  5) 데이터 안정성
    - 데이터 백업/복원 기능을 제공한다.

 

[DBMS 종류]

- 계층형, 네트워크(망)형, 객체 지향형, 관계형 DBMS가 있다.

- 현재 가장 많이 쓰이고 있는 DBMS는 관계형 DBMS이며, 앞으로 이것을 집중적으로 배울 것이다.

 

[관계형 데이터베이스(Realational Database Management System, RDBMS)]

- 데이터끼리의 관계를 정리한다.

- MS-SQL, MySQL, MariaDB, DB2, PostgreSQL 등등 DBMS 제품은 대부분 관계형 DBMS 관리 시스템이다.

 

- 데이터 저장공간을 테이블(table)이라 한다.

- 테이블에서 가로줄은 행(row)

----->튜플(tuple), 레코드(record)라고 한다.

----->여러값으로 이루어진 1명의 데이터를 의미한다.

- 테이블에서 세로줄은 열(column)

----->필드(Field), 속성(Attribute), 특성(Property)라고 한다.

----->세부정보(값의 중복을 허용하지 않는다.)

 

2. SQL

[정의]

- Structured Query Language

- RDBMS에서 데이터를 다루고 관리하는데 사용하는 데이터베이스 질의 언어

-쉽게 풀면, 사용자가 RDBMS와 대화할 때 사용하는 언어

 

[종류]

- ANSI SQL : 표준 SQL

- PL/SQL : 자체 SQL, 오라클에서만 동작되는 명령어

 

[사용목적 분류]

1) DDL(Data Definition Language) - 데이터 정의어
    - 테이블, 뷰, 사용자, 인덱스 등의 객체(DB Object)를 생성, 수정, 삭제 하는 명령어
    - create(생성), drop(삭제), alter(수정)

2) DML(Data Manipulation Language) - 데이터 조작어
    - 데이터베이스의 데이터를 저장, 수정, 삭제, 조회하는 명령어
    - select(읽기), insert(추가), update(수정), delete(삭제)

3) DCL(Data Control Language) - 데이터 제어어
    - 계정, 보안, 트랜잭션 등을 제어
    - commit, rollback, grant, revoke
    
4) DQL(Data Query Language) - 데이터 질의어
    - RDBMS에 저장한 데이터를 원하는 방식으로 조회하는 명령어
    
5) TCL (Transaction Control Language)
    - 트래잭션 데이터의 영구 저장, 취소 등과 관련된 명령어

 

[SQL - 사용자 등록, 비밀번호 변경]

--처음에는 계정이 잠겨있으므로 활성화를 시켜줘야한다.
--ALTER USER 계정명 ACCOUNT UNLOCK;
ALTER USER HR ACCOUNT UNLOCK;

--비밀번호 변경
ALTER USER HR IDENTIFIED BY java1234;

--계정활성화 + 비밀번호변경 한줄로 작성가능
ALTER USER HR ACCOUNT UNLOCK IDENTIFIED BY java1234;

--나의 현재 상태 확인하기 (관리자?, 사용자?)
SELECT * FROM tabs; --방법1
SHOW USER; --방법2

 

[SQL 자료형 - 숫자형]

- 오라클에서 숫자형은 정수, 실수 둘다 포함하여 구분이 없다.

- 표현방법: NUMBER

- 유효자리: 38자리 이하의 숫자를 표현하는 자료형

- 바이트: 5~22byte

- NUMBER(PERCISION, SCALE)

  1) PERCISION: 소수 이하를 포함한 전체 자리수(1~38)

  2) SCALE: 소수 이하의 자리수(0~127)

--테이블 생성하기
CREATE TABLE testType (
    --칼럼 구성
    --칼럼명 자료형
    num NUMBER
    num NUMBER(3)
    num NUMBER(4,2)
)

--데이터 추가하기
INSERT INTO testType (num) VALUES (100);
INSERT INTO testType (num) VALUES (99.99);
INSERT INTO testType (num) VALUES (3.14);
INSERT INTO testType (num) VALUES (9999);
INSERT INTO testType (num) VALUES (11111.111111111);
INSERT INTO testType (num) VALUES (11111111111111111111111111111111111111); --38자리
INSERT INTO testType (num) VALUES (-11111111111111111111111111111111111111);
INSERT INTO testType (num) VALUES (11111111111111111111111111111111111111111111); --44자리

--테이블 모든 내용 확인하기
SELECT * FROM testType;

- num NUMBER: 38자리까지의 숫자 저장

- num NUMBER(3): 3자리까지의 숫자 저장

- num NUMBER(4,2): 4자리까지의 숫자 중 소수점2자리가 포함된 숫자 저장(9999는 ERROR)

 

[SQL 자료형 - 문자형]

- 오라클에서 문자형은 문자, 문자형 둘다 포함하여 구분이 없다. (Java의 String과 유사함)

- 표현방법: char, nchar, varchar2, nvarchar2 (n 있는것과 없는것, var 있는것과 없는것)

  1) char

   - 고정 자릿수 문자열 -> 공간보다 데이터가 짧아도 나머지 공간은 그대로(공백) 차지한다.

   - char(n) : n자리 문자열(n은 바이트를 의미한다.)

   - 최소 크기: 1byte

   - 최대 크기: 2000byte

 

  2) nchar

   - nchar(n) : n자리 문자열(n은 문자 수를 의미한다.)

   - 최소 크기: 1글자(2byte)

   - 최대 크기: 1000글자(2000byte)

   - 영어가 아닌 문자를 저장할때 용이하다.

 

  3) varchar2

   - 가변 자릿수 문자열 -> 데이터 크기만큼 공간의 크기가 줄어든다.

   - varchar2(n) : n자리 문자열(n은 바이트를 의미한다.)

   - 최소 크기: 1byte

   - 최대 크기: 4000byte

 

   4) nvarchar2

--테이블 타입을 콤마로 구분하여 생성하기
CREATE TABLE testType (
    name1 CHAR(10),
    name2 VARCHAR2(10)
    
    name3 CHAR(10),
    name4 NCHAR(10)
)

INSERT INTO testType (name1, name2) VALUES ('ABC', 'ABC');
INSERT INTO testType (name3, name4) VALUES ('홍길동', '홍길동님안녕하세요.');

SELECT * FROM testType;

- name1 CHAR(3) = 'ABC       ' -->공간보다 데이터가 짧아도 나머지 공간 공백으로 차지  

- name2 VARCHAR(10) = 'ABC' -->데이터 크기만큼 공간의 크기가 줄어든다.

- name3 CHAR(10) = '홍길동' --> 10byte공간을 주었으므로, 9byte 정상 출력

- name4 NCHAR(10) = '홍길동님안녕하세요.' --> 10개의 문자수를 주었으로, 10글자 정상출력


MEMO>

# 오라클과 자바는 엄연히 다르기 때문에 수업을 들을때 자바를 잠시 잊도록하자.  오라클에 집중!

 

# SQL 실행법 : 실행할 문장 드래그 -> Ctrl+Enter (문장 단위로 스크립트가 실행된다. )

 

# 오라클은 코드의 대소문자 구분을 안한다.(대문자로 많이쓰임)

 

# 오라클은 UI가없는 프로그램이기 때문에 반드시 툴이 있어야한다.(SQL) 

 

# 오라클에도 byte, int, float형이 있지만 사용 XXXX

 

# 오늘 배운 오라클에서의 자료형 중에서 NUMBER, VARCHAR2, DATE 이 3가지가 가장 많이 쓰이니 공부를 가장 많이 할 것!!

 

#SQL에서 단일주석은 "--", 다중주석은 "/**/" 이다.