알고보면코딩천재
DB 2강. 데이터베이스란? 본문
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
퍼올리고, 행을 줄이고, 프로젝션
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;
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 |