알고보면코딩천재

DB 2강. 데이터베이스란? 본문

DB

DB 2강. 데이터베이스란?

알코천 2022. 8. 9. 12:47

scott 접속 (비번 TIGER)

1. 데이터베이스의 정의

자료를 체계적으로 통합하여 자료의 중복을 없애고 자료를 구조화시켜 놓은 집합체

 

2. 데이터베이스 예 살펴보기

도서관은 현실세계의 데이터베이스이다.

 

3. 데이터 저장, 관리 찾을 때

클러스터화 풀스캔 비슷한곳에 뭉쳐져 있는것 (데이터 양이 많으면 풀스캔이 유리)

색인 (목차)보고 가는 것 랜덤 엑세스 (데이터가 적어야한다) - 인덱스

 

4. DBMS 장점 = 데이터를 공유하니까

(1) 데이터 중복의  최소화

2) 데이터의 보안 보장

#)데이터의 일관성 유지

 

5. 단점

서로 다른 집합들과 관계하지 못한다.

id (키값)

참조 키, 참조 열

 

중복이 생기면 무결성이 깨지기 쉽다. 프로그램 관리가 어렵다.

 

쪼개는 이유 = 중복없애려고

 

6. rdbms 관계형 데이터베이스 관리 시스템

Relation ..

 

관점에 따라 테이블이 나뉜다.

업무파악: 도메인을 안다.

 

 

데이터 베이스 개요

2. 파일시스템의  단점을 극복하기 우해 나옴

-다수 사용자 접근 불가능

-데이터 무결성을 확보할 수 이ㅓㅇㅄ음

-데이터 공유 불가능

 

 

 

LRU

 

OLTP-실시간처리, 실시간으로 메모리에 남아 있어야한다. 빨리하려면

OLAP-최종적으로 정산 돌리는것? 새벽에. 

 

스키마를 봐야 열을 선택할 수 있다.

 

열을 보는 행위 : 프로젝션

 

GPL general purpose language 

"DSL"(도메인 스페시픽 랭귀지, 도메인 특화언어, 범주화) - SQL 질의 언어 같은! 딱 한가지의 일만 한다.

 

1. SELECT 프로젝션 열을 추출

 

2. FROM 데이터를 퍼올리겠다

2. WHERE 행을 추출하기

=, <,>, !=, <= ,>=

and or

퍼올리고, 행을 줄이고, 프로젝션

 

 

like 연산자
포함된 것 다 찾는다
2번째 글자가 M인것 찾기

3. ORDER BY 정렬

안쓸수록 좋다 . 쓰면 느려지니까

 

DESC. ASC

 

4.쿼리 실행 순서

FROM 퍼올리고

WHERE 행을 거름

SELECT 

ORDER BY

 

 

 

프로젝션은 새로 만들수 있다.

없는 프로젝션을 가지고 정렬을 할 순 없다.

ORDER BY는 맨 뒤에

ORDER BY 최대한 안쓰는 게 좋다.

 

 

5. Single Row 연산 (열끼리 연산)

- decode (if문) 같다 !!

 

-- SELECT (READ)

SELECT empno, ename, job, mgr, hiredate, sal, comm, deptno
FROM emp;

SELECT deptno, dname, loc
FROM dept;

SELECT empno, ename, sal
FROM emp
WHERE ename = 'SMITH';

SELECT *
FROM emp
WHERE sal > 1000;

SELECT *
FROM emp
WHERE sal = 1500 and comm = 0;

SELECT *
FROM emp
WHERE ename like 'S%';

SELECT *
FROM emp
WHERE ename like '%H';

SELECT *
FROM emp
WHERE ename like '%S%';

SELECT *
FROM emp
WHERE ename like '_M%';

SELECT *
FROM emp
ORDER BY sal DESC;

SELECT *
FROM emp
WHERE job = 'SALESMAN'
ORDER BY sal DESC;

SELECT empno, ename, job, sal, sal*12 as 연봉
FROM emp
ORDER BY 연봉 DESC;

SELECT *
FROM emp
ORDER BY sal DESC, ename DESC;

SELECT ename, sal + decode(comm, null, 0, comm) 월급
FROM emp;

-- 연봉
SELECT ename, (sal + decode(comm, null, 0, comm))*12 연봉
FROM emp;

varchar 가변

char 고정

 

 

-case when

SELECT name, weight, height,
CASE WHEN weight > (height-100)*0.9 THEN '과체중'
WHEN weight < (height-100)*0.9 THEN '저체중'
ELSE '표준체중'
END AS BMI
FROM student;

https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/Single-Row-Functions.html#GUID-B93F789D-B486-49FF-B0CD-0C6181C5D85C

 

SQL Language Reference

 

docs.oracle.com

 

- CEIL

- floor

- round

--올림
SELECT ceil(1.9)
FROM dual;

--내림
SELECT floor(1.9)
FROM dual;

--반올림
SELECT round(1.5)
FROM dual;

- mod

--나머지
SELECT mod(7,3)
FROM dual;

-upper

-lower

SELECT upper('Hello')
FROM dual;

SELECT lower('Hello')
FROM dual;

SELECT *
FROM student
WHERE upper(id) like '%75TRUE%';

-trim

SELECT trim(' Hello  ')
FROM dual;

 

-rpad

SELECT rpad('810', 7, '*')
FROM dual;

SELECT substr('가나다라', 0, 2)
FROM dual;

SELECT substr('89050518884444', 0, 7)
FROM dual;

SELECT rpad(substr('89050518884444', 0, 7),13, '*')
FROM dual;

SELECT jumin
FROM student;

SELECT rpad(substr(jumin, 0, 7),13,'*')
FROM student;

 

파싱 - 분석

 

-substr

-instr

select *
from student;

select substr('055)381-2158', 5, 3)
from dual;

select substr('02)381-2158', 4, 3)
from dual;

select instr('055)381-2158', ')')
from dual; --4

select instr('02)381-2158', ')')
from dual; --3

SELECT substr (tel, instr(tel, ')')+1, 3)
FROM student;

커서 - 행을 움직이면서 프로젝션할거 찾아내는..

 

 

select *
from student;

select substr('055)381-2158', 5, 3)
from dual;

select substr('02)3381-2158', 4, 4)
from dual;

SELECT instr('055)381-2158', ')')+1
from dual;

SELECT instr('055)381-2158', '-') --8
from dual;

SELECT instr('055)381-2158', '-') --뒷자리변수
from dual;

select substr(tel, instr(tel, ')')+1, instr(tel, '-') - instr(tel, ')')-1)
from student;

 

-replace

-abs

-distinct

'DB' 카테고리의 다른 글

Java DB 통신 Insert, commit, rollback (트랜잭션)  (0) 2022.08.16
8. 조인  (0) 2022.08.11
7. 서브 쿼리  (0) 2022.08.10
6. 세로 연산 (기본)  (0) 2022.08.10
DB 1강. 오라클 다운로드 및 실행  (0) 2022.08.08
Comments