본문 바로가기

IT일반과목/DataBase

데이터베이스 시작20180813

2018-08-13

DataBase


Data

-> 어떠한 자료 혹은 실제 값

-> 에베레스트 높이 : 8848m


정보

-> 데이터를 기반으로 의미를 부여하는것

-> 에베레스트는 세계에서 가장 높은 산


DB(DataBase)

 -> 한 조직에 필요한 정보를 여러 응용시스템에서 공용 할 수 있도록 논리적으로 연관된 데이


터를 모으고, 중복되는 데이터를 최소화하여 구조적으로 통합/저장해놓은 것


1.운영데이터(Operational Data)

 -> 조직의 목적을 위해서 사용되는 데이터

2. 공용데이터(Shared Data)

 -> 공동으로 사용되는 데이터(공유)

3. 통합데이터(Integerated Data)

 -> 중복을 최소화하여 중복으로 인한 데이터불일치 제거

4. 저장데이터(Stored Data)

 -> 저장장치에 저장된 데이터


DataBase의 특징

1. 실시간 접근성

 -> 사용자가 데이터를 요청하면 실시간으로 결과를 서비스한다.

2. 계속적인 변화

 -> 데이터의 값은 시간에따라 항상 바뀐다.

3. 동시 공유

 -> 데이터베이스는 서로 다른 업무 또는 여러사용자에게 동시 공유 된다.

4. 내용에 의한 참조

 -> 데이터의 물리적위치가 아니라 데이터 값에따라 참조된다.


DBMS(DataBase Management System)

 -> 데이터베이스에서 데이터를 추출,조작,정의,제어 등을 할 수 있게 해주는 데이터베이스 전


용 관리 프로그램

 -> 방대한 데이터는 있는데 관리자가 없다면 데이터의 검색, 수정, 삭제 등의 업무에 불편함이 


있음


#DBMS의 기능

1. 데이터 추출

 -> 사용자가 조회하는 데이터 혹은 응용프로그램의 데이터를 추출함(검색)

2. 데이터의 조작

 -> 데이터를 조작하는 소프트웨어가 요청하는 데이터의 삽입, 수정 삭제 작업 지원

3. 데이터 정의

 -> 데이터의 구조를 정의하고 데이터 구조에 대한 삭제 및 변경기능 수행

4. 데이터 제어

 -> 데이터베이스 사용자를 생성하고 모니터링하며 접근을 제어 -> 백업 동시성제어


#DBMS 사용이점

1. 데이터의 독립화

 -> 데이터와 응용프로그램을 분리시킴으로써 상호영향 정도를 줄일 수 있음

2. 데이터 중복 최소화, 데이터 무결성 보장

 -> 중복되는 데이터를 최소화하게되면 불필요한 저장공간낭비를 줄일 수 있으며, 데이터의 중


복 무결성 검증용이

3. 데이터 보안 향상

 -> 응용프로그램 DBMS를 통해 DBMS가 허용하는 데이터만 접근 할 수 있음

4. 관리 편의성 향상

 -> 다양한 방법으로 백업이 가능

 -> 장애발생시 빠른 데이터복구 가능


DBMS종류

 -> MySQL, MSSQL, Maria, Postgresql, Oracle


@Oracle DBMS 에디션

1. Enterprise Edition : 기업용, 가장 강력함, 가장 비쌈

2. Standard Edition : 부서용

3. Personal Edition : 교육이나 클라이언트 작업용 (데스크탑 컴퓨터용)

4. Lite Edition : 모바일용

5. Express Edition : 무료배포용 XE


12a -> 12b -> 12c


=========================================================

1. OracleXE112_Win64 압축풀기

2. setup클릭

3. c:\oracle

4. password 기억하기(1234)

5. cmd창 띄우기

6. sqlplus 치기

7. system 치기

8. 비번 치면 들어가진다.

9. show user; 쳐보기

10. select username from dba_users; 시스템안에 들어가있는 여러가지 계정명 이름이다.

11. HR이라는게 보일텐데 이게 test 계정이다.

12. conn HR; 하면 테스트 계정으로 접근된다.

13. 잠겨있을 것이다.

14. conn system; 하게될경우 접속이 된다.

15. select username, account_status from dba_users where username='HR';

16. 이렇게 치면 된다.

17. alter user HR account unlock;

18. alter user HR identified by hr;

19. conn HR; 하기

20. 비번 hr로 하면 입력 바로된다.

21. show user하면된다.

22. conn system; 으로 접속해서 계정을 만들 것이다.

23. create user test1 identified by 1234; //test1이라는 계정으로 비번 1234로 만들것이다.

24. 권한을 줘야 한다.

25. grant connect to test1;    //Grant succeded되면 된것이다.

26. conn test1; 로접속하기

27. show user로 계정 확인하기

==========================================

1.Oracle SQL Developer 켜기

2. 접속이름은 아무거나 정해도된다.

3. 접속이름 : Web 사용자이름 : sys as sysdba 비밀번호 : 1234

4. 테스트 누르고 성공 뜨면된다.

5. 도구 -> 환경설정 -> 코드 편집기 -> 글꼴 -> 글꼴크기 정하면된다.

6. 예약되어있는건 색깔이 다르게 표시가 된다.

7. create user kh identified by kh;적으면된다

8. F5를 누르면 된다.

9. 다시 플러스 눌러서 접속이름 : kh_web 사용자이름 : kh 비밀번호 : kh 하면된다.

10. kh.sql이라는거 드래그 해주라 

11. 선택을 kh_web으로 해준다음 하면된다.

12. web에는 

create user kh identified by kh;

Grant resource, connect to kh;

쓰고

13. kh_web에는 아까 받은 KH.sql이거 넣으면 된다.

14. kh_web으로 들어가기

15. select * from EMPLOYEE; -> ctrl+enter해주면된다.

=============================================

Table 구조 설명.jpg이거 보기

1. 테이블명 보고 relation이라고도 한다.

2. Column은 하나의 열을 보고 말한다.(세로) -> attribute라고도 한다.

3. 가로행은 Row라고도 하고 Tuple라고도 한다.

4. 하나하나의 행과 열이만나 값을 가리키는 걸 보고 필드라고 한다.


@SQL

 -> Structured Query Language 의 약자

 -> 구조화 된 질의 언어

 -> 데이터를 조회하거나 조작하기 위해 사용하는 표준 검색언어

 -> DBMS마다 사용되는 SQL문법이 다름

 -> 기본적인 형식은 동일

SELECT * FROM EMPLOYEE;

//모든것의 의미이다.

//EMPLOYEE 테이블의 모든것을 보여달라는 것이다.


SQL 문법의 종류

1. 데이터 정의어 : DDL(Data Definition Language)

 -> 데이터베이스의 구조를 정의하거나 변경,삭제 하기위해 사용하는 언어

 -> DB관리자 또는 설계자가 사용

 -> CREATE(생성), ALTER(수정), DROP(삭제), TRUNCATE(초기화)

 -> Table를 조작한다 생각해라.


2. 데이터 조작어 : DML(Data Manipulation Language)

 -> 데이터를 조작하기 위해서 사용하는 언어

 -> 데이터의 삽입, 수정, 삭제, 조회 등의 동작제어

 -> Table안에 있는 데이터를 수정삭제조회한다는 것이다.

 -> 데이터를 이용하려는 사용자와 시스템간의 인터페이스를 직접 제공하는 언어

 -> 가장 많이 사용

 -> INSERT(데이터삽입), UPDATE(데이터수정), DELETE(데이터삭제)

 -> DQL(DATA Query Language)

 -> 대표적인건 SELECT -> 데이터 검색


3. 데이터 제어어 : DCL(Data Control Language)

 -> 사용자의 권한이나 관리자 설정 등 처리

 -> GRANT(권한설정), REVOKE(권한제거)


4. 트랜잭션 제어어 : TCL(Transaction Control Language)

 -> 트랜잭션 관리 처리언어

 -> 트랜잭션은 DB에서 처리하는 수행단위

 -> COMMIT(트랜잭션 종료처리후 저장), ROLLBACK(트랜잭션 취소), SAVEPOINT(임시저장)


==============================================================

오라클의 데이터타입

오라클의 데이터타입.png이거 보기

NUMBER(P,S)

P : 표현할수 있는 숫자 자리수(1~38)

S : 소수점 이하 자리수(-84~ 127)

실제 데이터값 : 1234.567

NUMBER(7,3) -> 1234.567 동일하다.

NUMBER(7) -> 1235이다. 소수점에 대해 명시를 안해줘서 소수점 처리가 안된다.

NUMBER -> 1234.567 가변적으로 넣은 데이터 출력한다.

NUMBER(7,1) -> 1234.6이들어가진다.

NUMBER(5,-2) -> 1200 -> 소수점 반대로 올라가고 뒷자리는 표현 안하겠다는 것이다.

우리는 어차피 NUMBER 쓸것이다.


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

CHAR(SIZE)

 -> SIZE : 포함될 문자(열) 크기

 -> 지정한크기보다 작은경우 나머지공간을 공백으로 채운다.

A='ORACLE'; //이런식으로 넣어준다.,싱글쿼터 따옴표를 써줘야 한다.

CHAR(6) -> ORACLE //6글자고 지정한사이즈 6개니 저장된다.

CHAR(9) -> ORACLE(공백 3칸)

CHAR(3) -> 에러

'종규' (한글은 하나당 3byte씩 갖는다.)

CHAR(6) -> 종규

CHAR(9) -> 종규(한글공백1칸)

CHAR(3) -> 에러

EXPRESS -> 3BYTE, ENTERPRISE -> 2BYTE

무료버전에서는 한글 2글자 받을 수 있다.


VARCHAR2 - 가변길이

'종규'

VARCHAR2(9) -> 종규(한글1BYTE가 공백)이였는데 가변길이같은경우 최대값을 주고 잘라준다.

VARCHAR2(9) -> 종규(뒤에 남은공간을 자동으로 처리해줌.)


DATE

-> 일자(세기/년/월/일) 및 시간(시/분/초)

정보를 관리한다.

-> 기본적으로 화면에 년/월/일 정보만 표기

-> 날짜의 연산 및 비교가 가능


연산 결과타입 설명

날짜+숫자 DATE 작성한 숫자만큼 며칠 후 

날짜-숫자 DATE 작성한 숫자만큼 며칠 전

날짜-날짜 NUMBER 두날짜의 차이(일수)

날짜+숫자/24 DATE 날짜+시간


DQL(DATA QUERY LANGUAGE) -> SELECT

 -> 데이터를 검색하기 위해 사용되는 언어

 -> DML에 속한 언어

 -> 데이터를 조회한 결과 Result Set 이라 함

 -> SELECT 구문에 의해 반환된 행들의 집합

 -> Result Set은 0개 이상의 행이 포함될 수 있음

 -> 특정기준에 의해 정렬 될 수 있음

 -> 특정 컬럼이나 특정 로우를 조회할수 있으며 여러테이블에서 특정 행, 열을 조회할 수 있음


SELECT 기본 작성법

1. SELECT 컬럼명 FROM 테이블명;

2. SELECT 컬럼명 FROM 테이블명 WHERE 조건;

 -> 조회하고싶은 컬럼이 여러개면 ,(쉼표)로 구분

 -> 모든 컬럼을 조회하고 싶은 경우 *(별) 사용


 -> FROM : 조회대상컬럼이 포함된 테이블




EMP_NAME, PHONE

===============================================================

select * from EMPLOYEE;


select EMP_NAME, EMP_NO, EMAIL from EMPLOYEE;


select * from EMPLOYEE WHERE JOB_CODE='J5';


select EMP_NAME from EMPLOYEE WHERE JOB_CODE='J5';


/*

JOB테이블에서 JOB_NAME의 정보만 출력되게 하시오

*/

select JOB_NAME from JOB;


/*

DEPARTMENT테이블의 내용전체를 출력

*/


select * from DEPARTMENT;


select * from DEPARTMENT WHERE LOCATION_ID='L1';


/*

예제

1. EMPLOYEE 테이블에서 HIRE_DATE, EMP_NAME, SALARY를 출력

2. EMPLOYEE 테이블에서 월급(SALARY)이 2,500,000원 이상인 사람의 이름(EMP_NAME),

SAL_LEVEL을 출력(hint >,<를 이용)

3. EMPLOYEE테이블에서 월급이 350만원 이상이면서 JOB_CODE가 'J3'인 사람의 이름, 전화번호를 


출력

(조건이 여러개면 AND로이어주면된다.)

*/

select HIRE_DATE, EMP_NAME, SALARY from EMPLOYEE;


select HIRE_NAME, SAL_LEVEL from EMPLOYEE where SALARY>=2500000;


select * from EMPLOYEE;


select EMP_NAME, PHONE from EMPLOYEE where SALARY>=3500000 AND JOB_CODE='J3';



select * from EMPLOYEE;


select emp_name salary from EMPLOYEE;

/*

월급이 나온다.

*/

select emp_name, salary*12 from EMPLOYEE;

/*

숫자는 곱해서 바로 표시할 수 있다.

*/

select emp_name as 이름, salary as 월급 from EMPLOYEE;

/*

컬럼명이 내가 지정한걸로 바꿔서 나온다.

*/

select emp_name as 이름, salary*12 as 연봉 from EMPLOYEE;

/*

이렇게도 바꿀수 있다.

*/

select emp_name as 이름, salary*12 as "연봉(원)" from EMPLOYEE;

/*

특수기호 하나라도 들어간다면 이렇게 넣어줘야한다.가로써줘야된다는것이다.

*/


select * from EMPLOYEE;

select emp_name, (salary+(salary*bonus))*12 as "연봉" from EMPLOYEE;

/*

월급의 몇퍼센트를 보너스로 주겠다.

*/


select emp_name, salary from EMPLOYEE;


/*

없는 컬럼을 강제로 넣어줄 수 있다.

*/

select emp_name, salary, '원' as 단위 from EMPLOYEE;

/*

없는 칼럼을 강제로 넣을 수 있다.

*/


/*

1. EMPLOYEE 테이블에서 이름, 연봉, 총수령액(보너스포함), 실수령액(총수령액 - 


(월급*세금(3%)*12)가

출력되게 하시오 -> 컬럼명은 한글로


2. EMPLOYEE 테이블에서 이름, 근무일수를 출력되게 하시오

(오늘날짜에서 입사날짜를 빼면된다.)

SYSDATE(오늘날짜가된다.)이녀석사용해서 연산을 해라, 입사일은 컬럼에 있다.


3. EMPLOYEE 테이블에서 20년이상의 근속자의 이름, 월급, 보너스율을 출력

select SYSDATE as 오늘날짜 from EMPLOYEE

*/

select * from EMPLOYEE;


select EMP_NAME as 이름, (salary+(salary*bonus))*12 as 연봉, 

(salary+(salary*0.3)) as "총수령액(보너스포함)", (salary+(salary*0.3))-(salary*0.03*12) 


as 실수령액 from EMPLOYEE;


select EMP_NAME as 이름, Floor(SYSDATE-HIRE_DATE) as 근무일수 from EMPLOYEE;


select EMP_NAME as 이름, salary as 월급, BONUS as 보너스율 from EMPLOYEE where Floor


(SYSDATE-HIRE_DATE) >=7300;


select job_code from employee;

select distinct job_code from employee;

===================================================================

#DISTINCT

 -> 컬럼에 포함된 중복값은 한번씩 표기할때



#비교연산자
연산자 설명
= 같다
>,< 크다 ,작다
>=, <= 크거나같다, 작거나같다
<>, != ,^= 같지않다.
BETWEEN A AND B A와 B사이(A이상 B이하)
LIKE / NOT LIKE 문자비교(같음/같지않음)
IS NULL/IS NOT NULL NULL여부 비교
IN, NOT IN 비교값 목록에 포함/불포함
여부 비교

#논리연산자
AND -> 여러조건이 모두 TRUE인경우 TRUE
OR -> 여러 조건중 하나라도 TRUE인 경우
NOT -> 조건에 대한 반대값으로 반환(NULL은 예외)