[Day +34 / SQL]Database, Oracle 설치, SQL, DML & 미니 프로젝트 발표
210810 월
<Data와 Database>
1. Data vs 정보
1) Data
: 관찰 결과로 나타난 정량적 혹은 정성적인 실제 값
2) 정보
: 데이터를 기반으로 의미를 부여한 것
*Data vs 정보
에베레스트의 높이 : 8848m => Data
에베레스트는 세계에서 가장 높은 산이다. => 정보
2. Database
: 한 조직에 필요한 정보를 여러 응용 시스템에서 공용할 수 있도록 논리적으로 연관된 데이터를 모으고 중복되는 데이터를 최소화하여 구조적으로 통합/저장해놓은 것
1) 정의
(1) 공용 데이터(Shared Data) : 공동으로 사용되는 데이터
(2) 통합 데이터(Integrated Data) : 중복 최소화로 중복으로 인한 데이터 불일치 현상 제거
(3) 저장 데이터(Stored Data) : 컴퓨터 저장장치에 저장된 데이터
(4) 운영 데이터(Operational Data) : 조직의 목적을 위해 사용되는 데이터
2) 특징
(1) 실시간 접근성(real time accessibility) : 사용자가 데이터 요청 시 실시간으로 결과 서비스
(2) 계속적인 변화(continuos change) : 데이터 값은 시간에 따라 항상 바뀜
(3) 동시 공유(concurrent sharing) : 서로 다른 업무 또는 여러 사용자에게 동시 공유됨
(4) 내용에 따른 참조(reference by content) : 데이터의 물리적 위치가 아닌 데이터 값에 따라 참조
3. DBMS
: 데이터베이스에서 데이터 추출, 조작, 정의, 제어 등을 할 수 있게 해주는 데이터베이스 전용 관리 프로그램
1) 기능
(1) 데이터 추출
: 사용자가 조회하는 데이터 혹은 응용 프로그램의 데이터 추출
(2) 데이터 조작
: 데이터를 조작하는 소프트웨어(응용 프로그램)가 요청하는 데이터 삽입, 수정, 삭제 작업 지원
(3) 데이터 정의
: 데이터의 구조를 정의하고 데이터 구조에 대한 삭제 및 변경 기능 수행
(4) 데이터 제어
: 데이터베이스 사용자를 생성하고 모니터링하며 접근 제어
-백업과 회복, 동시성 제어 등의 기능 지원
2) 종류와 특징

3) 장점
(1) 데이터 독립화 데이터와 응용 프로그램을 분리시킴으로써 상호 영향 정도를 줄일 수 있음
(2) 데이터 중복 최소화, 데이터 무결성 보장 중복되는 데이터를 최소화 시키면 데이터 무결성이 손상될 가능성이 줄어듦. 중복되는 데이터를 최소화 시키면 필요한 저장공간의 낭비를 줄일 수 있음
(3) 데이터 보안 향상 응용프로그램은 DBMS를 통해 DBMS가 허용하는 데이터에만 접근 가능 권한에 맞게 데이터 접근을 제한하거나 데이터를 암호화시켜 저장 가능
(4) 관리 편의성 향상 다양한 방법으로 데이터 백업 가능. 장애 발생 시 데이터 복구 가능
4) 변천 과정

(1) 계층형 데이터 베이스
: 트리 형태의 계층적 구조를 가진 데이터베이스로 최상위 계층의 데이터부터 검색하는 구조
(2) 네트워크형 데이터베이스
: 하위 데이터들끼리의 관계까지 정의할 수 있는 구조로 설계 및 구현이 복잡하고 어려움
(3) 관계형 데이터 베이스(RDBMS) => 우리가 배울 DB
: 모든 데이터를 2차원 테이블 형태로 표현하고 테이블 사이의 비즈니스적 관계를 도출하는 구조
-데이터의 중복을 최소화 할 수 있으며 업무 변화에 대한 적응력 우수

(4) 객체 관계형 데이터 베이스
1> 사용자 정의 타입 지원
: 사용자가 임의로 정한 데이터 유형으로 기본형을 넘어 다양한 형태의 데이터를 다룰 수 있음
2> 참조(reference)타입 지원
: 객체들로 이루어진 객체 테이블의 경우 하나의 레코드가 다른 레코드를 참조할 수 있는 것
3> 중첩 테이블 지원
: 테이블을 구성하는 로우(row)자체가 또 다른 테이블로 구성되는 테이블을 지원하며 조금 더 복잡하고 복합적인 정보 표현 가능
4> 대단위 객체의 저장 및 추출 가능
: 이미지, 오디오, 비디오 등 저장하기 위한 대단위 객체(LOB) 지원
5> 객체간의 상속관계 지원
: 오라클의 경우 OBJECT타입을 지원함으로써 상속 기능을 구현하고 있음
<DML(SELECT)>

1. 주요 용어
1) 행
2) 컬럼, 도메인
3) 기본키
4) 외래 키 : 다른 애들과 관련이 있는 키
5) Null : 데이터가 존재하지 않는다는 의미
6) 컬럼값, 속성값
2. SQL(Structured Query Language)
: 관계형 데이터베이스에서 데이터를 조회하거나 조작하기 위해 사용하는 표준 검색 언어
원하는 데이터를 찾는 방법이나 절차를 기술하는 것이 아닌 조건을 기술하여 작성
분류 | 용도 | 명령어 |
DQL | 데이터 검색 | SELECT |
DML | 데이터 조작 | INSERT, UPDATE, DELETE |
DDL | 데이터 정의 | CREATE, DROP, ALTER |
TCL | 트랜젝션 제어 | COMMIT, ROLLBACK |
DCL | GRANT, REVOKE |
3. 주요 데이터 타입

4. SELECT
: 데이터를 조회한 결과를 Result Set이라고 하는데 SELECT구문에 의해 반환된 행들의 집합을 의미
-Result Set은 0개 이상의 행이 포함될 수 있고 Result Set은 특정한 기준에 의해 정렬 가능
-한 테이블의 특정 컬럼, 특정 행, 특정 행/컬럼 또는 여러 테이블의 특정 행/컬럼 조회 가능
1) 작성법
SELECT 컬럼명 [, 컬럼명, ...]FROM 테이블명WHERE 조건식;
-- 테이블 안의 데이터 조회 테스트 --
SELECT
*
FROM
employee;
-- Oracle의 sqlplus와 SQL Developer
-- sqlplus는 CLI(Command Line Interface) 기반의 툴, 오라클 설치 시 기본 제공
-- SQL DEveloper는 GUI(Graphic User Interface) 기반의 툴, 사용자 편의성이 크며 추가 설치
--***SELECT***
--EMPLOYEE 테이블의 사원 번호, 직원명, 급여 조회
SELECT
emp_id,
emp_name,
salary
-- FROM 절에 조회할 컬럼이 있는 테이블 입력
FROM
employee;
--대소문자를 구분하지 않음
--SQL Developer에서 Alt + ' 를 통해 대소문자 변경 가능
SELECT
emp_id,
emp_name,
salary
FROM
employee;
--EMPLOYEE 테이블의 모든 정보 조회
--모든 컬럼명을 나열할 수도 있고 또는 '*'를 사용할 수도 있음
SELECT
*
FROM
employee;
---------------- 실습 문제 ----------------------
--1. JOB 테이블의 모든 정보 조회
SELECT
*
FROM
job;
--2. JOB 테이블의 직급명 조회
SELECT
job_name
FROM
job;
--3. DEPARTMENT 테이블의 모든 정보 조회
SELECT
*
FROM
department;
--4. EMPLOYEE 테이블의 직원명, 이메일, 전화번호, 입사일 조회
SELECT
emp_name,
email,
phone,
hire_date
FROM
employee;
--5. EMPLOYEE 테이블의 입사일, 사원명, 월급 조회
SELECT
hire_date,
emp_name,
salary
FROM
employee;
------------------------------------------------