Code Monkey home page Code Monkey logo

web1_oracle's Introduction

web1_Oracle✍️

웹개발 (2023.06.12.~2023.11.07.) 강의에서 공부한 Oracle 내용입니다.

readme 파일에 목차 및 내용 정리해두었으니 참고 부탁드립니다.

감사합니다.🥰



📝 Day01

DB: Database

데이터가 모여있는 기지


DBMS: Database Management System

DB를 관리할 수 있는 구체적인 시스템
예) 오라클, (마리아DB, MySQL,) MS-SQL, MongoDB - 몽구스, ...


📌 MongoDB: noSQL

  • 스키마가 없다. 표가 없다.
  • K,V 형태로만 짜여져 있다.
  • 따라서 속도가 빠르다.

scott 계정 활성화

sqlplus system/1234
SQL> @C:\oraclexe\app\oracle\product\11.2.0\server\rdbms\admin\scott.sql
SQL> show user
USER is "SCOTT" SQL> conn system/1234
SQL> alter user scott identified by 1234;
SQL> conn scott/1234
SQL> show user
USER is "SCOTT"


DBMS의 소통 방식
사용자
응용프로그램
DBMS

RDBMS: Relation Database Management System: 관계형 데이터 베이스 시스템

테이블끼리 서로 관계를 맺는다.


Table A (USER, INFOMATION, CUSTOMER)
Table B (ORDER)
번호(PK)   이름     나이   아이디(UK)   주문번호(PK)   번호(FK)     날짜      상품수량
  1        이도은   20     lde1234      20230705001       3      2023-07-05     5
  2        제우스   21     zeus6666     20230705002       4      2023-07-05     100
  3        에로스   22     love7777     20230703001       1      2023-07-03     35
  4        프시케   18     beauty1234   20230703002       1      2023-07-03     15
  5        하데스   19     hades7878    20230703003       1      2023-07-03     25

  • 하나의 정보를 행, 하나의 집합을 열
  • PK: primary Key: 구분점, 중복이 있으면 안된다.
    • 고유한 값
    • 각 행의 구분점으로 사용된다.
    • 중복이 없고 NULL을 허용하지 않는다.
      • NULL: 아직 어떤 값을 넣을지 모르겠다는 의미로 넣는 값
  • FK: Foreigner Key: 외부 테이블 구분점
    • 다른 테이블의 PK를 참조해서 쓰는 것(PK(일반적으로 번호)만 가지고 그 테이블의 정보를 다 가지고 올 수 있게 된다.)
    • 보통 테이블끼리 관계를 맺을 때 사용한다.
    • 중복이 가능하고 NULL도 허용한다.
  • UK: UNIQUE KEY
    • NULL은 허용하지만 중복은 허용하지 않는다.
  • COLUMN(열, 속성, 필드): 공통된 값들의 주제
  • ROW(행, 레코드, 튜플): 하나의 정보

📌 Schema

  • 위와 같은 구조를 가지는 것을 Schema, Table, Relation(Oracle), Class 라고 부른다.
  • No Schema: 스키마가 없는

SQL: Structure Query Language


📌 컴파일 언어와 인터프리트 언어

Compile: 컴파일

  • 한번에(한페이지): 웹개발(java, python)
  • 파일 단위로 해석한다.(일괄처리)
  • 수정이 거의 없을 때 효율적이다.

Interpret: 인터프리트

  • 한줄씩: AI(잦은 수정 -> python)
  • 한 줄 단위로 해석한다.(개별처리)
  • 빈번한 수정 또는 부분 실행시 효율적이다.

Python: 인터프리터 안에 컴파일러가 있다.


SQL문(쿼리문) - 스크립트 언어(인터프러터 언어)

DBMS와 소통하는 언어


DDL:Data Definition Lauguage: 데이터 정의어

  • 테이블 만드는 것(명령어들)
  • 테이블 조작, 제어 관련 쿼리문
  • 복구가 안됨

1. CREATE : 테이블 생성

CREATE TABLE [테이블명]( [컬럼명] [자료형(용량)] [제약조건], ... );

2. DROP : 테이블 삭제

DROP TABLE [테이블명]

3. ALTER : 테이블 수정

- 테이블명 수정 : RENAME TO [새로운 테이블명]
- 컬럼 추가 : ADD([새로운 컬럼명] [자료형(용량)])
- 컬럼명 변경 : RENAME COLUMN [기존 컬럼명] TO [새로운 컬럼명]
- 컬럼 삭제 : DROP COLUMN [기존 컬럼명]
- 컬럼 수정 : MODIFY([기존 컬럼명] [자료형(용량)])
-- 제약조건 추가(PK)
ALTER TABLE 테이블명 ADD CONSTRAINT PK_테이블명 PRIMARY KEY(ID);

-- 제약조건 추가(NOT NULL)
ALTER TABLE 테이블명 MODIFY 컬럼명 자료형 NOT NULL;

-- 제약조건 삭제(PK)
ALTER TABLE 테이블명 CONSTRAINT 제약조건명;

-- 컬럼 추가(성별)
ALTER TABLE 테이블명 ADD(컬럼명 자료형);

-- 컬럼 이름 수정
ALTER TABLE 테이블명 RENAME COLUMN 컬럼명 TO 새로운컬럼명;

-- 컬럼 삭제
ALTER TABLE 테이블명 DROP COLUMN 컬럼명;

-- 컬럼 수정(자료형)
ALTER TABLE 테이블명 MODIFY(컬럼명 바꿀자료형(혹은 자료형, 추가 제약조건));

4. TRUNCATE : 테이블 내용 전체 삭제

TRUNCATE TABLE [테이블명]

Type: 자료형

✨ 용량은 항상 넉넉하게 주도록 한다.

  • 숫자
    • NUMBER(precision) : 정수
    • NUMBER(precision, 소수점 자리수) : 실수
  • 문자열
  • CHAR(용량) : 고정형 - CHAR(4)에 'A'를 넣으면 A^^^ 빈 자리가 공백으로 채워진다. - 형식을 정한 날짜, 주민등록번호처럼 글자 수가 절대 변하지 않는 값을 넣는다.
  • VARCHAR(용량), VARCHAR2(용량) : 가변형
  • 값의 길이 만큼 공간이 배정된다.
  • 글자 수에 변화가 있는 값 넣는다.
  • 날짜
  • DATE : FORMAT에 맞춰서 날짜를 저장하는 타입

DML:Data Manipulation Lauguage: CRUD

DCL(Data Command Language): 권한 주는 것(백엔드 업무가 아님)

DBA(Database Admin): 계정 만들어 줌

TCL(Tool Command Language): DML로 만든 것을 반영하고 문제 생기면 복구(해결)


Script: ctrl + ]
이름 변경: F2
글자크기 변경: fn + C + +
ctrl + enter: 실행
테이블 명이 ORACLE 에서 사용하는 KEYWORD 일 수도 있기 때문에 앞에 TBL(TABLE)을 붙여준다.

무결성

데이터의 정확성, 일관성, 유효성이 유지되는 것

  • 정확성: 데이터는 애매하지 않아야 한다.
  • 일관성: 각 사용자가 일관된 데이터를 볼 수 있도록 해야 한다.
  • 유효성: 데이터가 실제 존재하는 데이터여야 한다.



📝 Day02

Modeling: 모델링

추상적인 주제를 db에 맞게 설계하는 것

  1. 요구사항 분석
  • 회원, 주문, 상품 : 3가지를 관리하고자 한다.
  1. 개념적 설계(개념 모델링)
   회원        주문         상품
   ----------------------------------
   번호       주문번호     상품번호
   ----------------------------------
   비밀번호   주문날짜     상품명
   이름       회원번호     가격
   주소       상품번호     재고량
   이메일
   생일
   아이디
  1. 논리적 설계(논리 모델링)
   회원            주문         상품
   ----------------------------------------
   번호PK        주문번호PK     상품번호PK
   ----------------------------------------
   비밀번호      주문날짜       상품명
   이름          회원번호FK     가격
   주소          상품번호FK     재고량
   이메일
   생일
   아이디UK
  1. 물리적 설계(물리 모델링)
   TBL_USER
   -----------------------
   id : NUMBER PRIMARY KEY
   -----------------------
   user_id : VARCHAR2(1000)
   user_pw : VARCHAR2(1000)
   user_address : VARCHAR2(2000)
   user_email : VARCHAR2(2000) : UNIQUE
   user_birth : DATE

   TBL_ORDER

   TBL_PRODUCT
  1. 구현



📝 Day03

정규화: 규칙이 정해져 있다.

  • 삽입/수정/삭제의 이상현상(중복된 데이터때문)을 제거하기 위한 작업
  • 데이터의 중복을 최소화하는 데에 목적이 있다.
  • 5차 정규화까지 있으나(테이블이 너무 많이 쪼개진다.) 보통은 3차 정규화까지만 진행한다.

1차 정규화

같은 성격과 내용의 컬럼이 연속적으로 나타날 경우.

  상품명
	와이셔츠1, 와이셔츠, 와이셔츠3

	상품명1	상품명2	상품명3
	와이셔츠1 와이셔츠2 와이셔츠3

	상품명
	와이셔츠1
	와이셔츠2
	와이셔츠3

2차 정규화

조합키(복합키)로 구성되었을 경우 조합키의 일부분에만 종속되는 속성이 있을 경우(부분 종속)

  • 하나만 있어도 다른 컬럼 내용을 알 수 있으면 안된다.
  • 그것은 다른 테이블로 빼준다.(분리)
  • 후에 연결해줘야 한다. FK 설정
  • 분리해준 테이블이 PK, 원래 테이블이 FK
꽃
   	이름   	  색상      꽃말   과
  	해바라기  노란색    행운   국화
   	장미   	  빨간색    사랑   장미

⬇️ 2차 정규화 진행: 조합키 + 조합키가 모두 있어야 알 수 있는 컬럼만 둔다.

    꽃
   	이름   	  색상     꽃말
   	해바라기  노란색   행운
   	장미  	  빨간색   사랑

   	과
   	이름   	  과
   	해바라기  국화
  	장미      장미


3차 정규화

PK가 아닌 컬럼이 다른 컬럼을 결정하는 경우

  • PK 말고 다른 컬럼이 다른 컬럼을 결정하면 안된다.
  • 이행함수 종속 제거
  • 다른 컬럼을 다른 테이블의 PK로!
  • 너무 자주 조회되는 테이블은 반정규화로 다시 합친다.
회원번호	이름		우편번호
   1		이도은   	12345
   2		오라클   	56466
   우편번호	시	구	동
   12345	서울	서초	서초
   56466	서울	강남	역삼

📌 데이터베이스에서 정규화가 필요한 이유 데이터베이스를 잘못 설계하면 불필요한 데이터 중복으로 인해 공간이 낭비된다.
이런 현상을 이상(Anomaly)현상이라고 한다.


정규화 예시

회원번호와 프로젝트코드 두 컬럼의 조합키로 설정되어 있는 테이블이고 한 사람은 하나의 부서만 가질 수 있다.

회원번호	이름		부서		프로젝트코드	급여	부서인원
22080101	이도은		개발팀		ABC0001		3000	4
22080101	이도은		개발팀		DEF1112		2000	4
22080101	이도은		개발팀		CBA9474		4000	4
22080104	제우스		기획팀		EFG0881		5000	2
22081106	하데스		디자인팀	GHI9991		6000	3

이상 현상의 종류

✔️ 삽입 이상

  • 새 데이터를 삽입하기 위해 불필요한 데이터도 삽입해야하는 문제
    • 담당 프로젝트가 정해지지 않은 사원이 있다면,
      프로젝트 코드에 NULL을 작성할 수 없으므로 이 사원은 테이블에 추가될 수 없다.
      따라서 '미정'이라는 프로젝트 코드를 따로 만들어서 삽입해야 한다.

✔️ 갱신 이상

  • 중복 행 중에서 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제
    • 한 명의 사원은 반드시 하나의 부서에만 속할 수 있다.
      만약 "이도은"이 보안팀으로 부서를 옮길 시 3개 모두 갱신해주지 않는다면 개발팀인지 보안팀인지 알 수 없다.

✔️ 삭제 이상

  • 행을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 문제
    • "하데스"가 담당한 프로젝트를 박살내서 드랍된다면 "하데" 행을 모두 삭제하게 된다.
      따라서 프로젝트에서 드랍되면 회원정보를 모두 드랍하게 된다.

2차 정규화 진행

회원번호	프로젝트코드	급여
22080101	ABC0001		3000
22080101	DEF1112		2000
22080101	CBA9474		4000
22080104	EFG0881		5000
22081106	GHI9991		6000
회원번호	이름		부서		부서인원
22080101	이도은		개발팀		4
22080104	제우스		기획팀		2
22081106	하데스		디자인팀	3

3차 정규화 진행

회원번호	이름		부서   
22080101	이도은		개발팀      
22080104	제우스		기획팀   
22081106	하데스		디자인팀   
22080103	에로스		개발팀
부서		부서인원
개발팀		4
기획팀		2
디자인팀	3

DML: Data Manipulation Language: 데이터 조작어: CRUD


1. SELECT: 조회(검색)

SELECT [컬럼명1, 컬럼명2, ...]  
FROM [테이블명]  
WHERE [조건식]

2. INSERT: 추가
① 컬럼명을 생략할 수 있으며, 이 경우 DEFAULT 제약조건이 발생된다.
(항상 똑같은 값은 DEFAULT 설정해두고 컬럼 생략해주면 DEFAULT 값이 들어간다.)

INSERT INTO [테이블명] ([컬럼명1, 컬럼명2, ...])  
VALUES ([값1, 값2, ...])  

② 모든 값을 전부 작성해야 되며, 컬럼명은 직접 작성하지 않는다.

INSERT INTO [테이블명]
VALUES([값1, 값2, ...])

3. UPDATE: 수정

UPDATE [테이블명]
SET [기존 컬럼명1] = [새로운 값1], [기존 컬럼명2] = [새로운 값2], ...
WHERE [조건식]


4. DELETE: 삭제

DELETE FROM [테이블명]
WHERE [조건식]

조건식 : 참 또는 거짓 둘 중 하나가 나오는 식

>, <		: 초과, 미만
>=, <=		: 이상, 이하
=		: 같다
<>, !=, ^=	: 같지 않다
AND		: 둘 다 참이면 참
OR		: 둘 중 하나라도 참이면 참

📌 위 연산자들은 WHERE 절에서 사용 가능하다.


JOIN

여러 테이블에 흩어져 있는 정보 중
사용자가 필요한 정보만 가져와서 가상의 테이블처럼 만들고 결과를 보여주는 것
정규화를 통해 조회 테이블이 너무 많이 쪼개져 있으면
작업이 불편하기 때문에 조회의 성능을 향상시키기 위해서 JOIN을 통해 합친 후 사용한다.


INNER JOIN: 내부조인

조건이 일치하는 값만 합쳐서 조회
(FALSE 면 합쳐지지 않음)

FROM [테이블명]
INNER JOIN [테이블명]
ON 조건식
INNER JOIN [테이블명]
ON 조건식
...
  • 세타조인(막조인) ➡️ 사용지양
FROM [테이블명], [테이블명], [테이블명]
WHERE 조건식 
  • 등가조인
    • ON절에 등호가 있을 때, 서로 관계를 맺고 있는 테이블끼리 JOIN할 때 자주 사용된다. (PK = FK)
  • 비등가조인
    • ON절에 등호가 없을 때



📝 Day04

JOIN

OUTER JOIN: 외부조인

OUTER JOIN 은 조건식이 FALSE라도 무조건 나와야하는 정보가 있는 테이블이 있을 때 사용
ON절에 작성된 조건식이 FALSE 일지라도 모든 정보를 조회해야 할 때 사용한다.
(INNER JOIN 은 ON 절에 있는 조건이 TRUE 일 때만 합친다. )

  • LEFT OUTER JOIN
    • 선행 테이블의 모든 정보를 가져오고 싶을 때 사용한다.
  • RIGHT OUTER JOIN
    • 후행 테이블의 모든 정보를 가져오고 싶을 때 사용한다.

MVC: Model, View, Controller

(패턴 이름): 설계의 약속 = 패턴 = 소프트웨어 디자인 설계 패턴


Model

  • DB 에 있는 컬럼을 받을 준비를 한다.
  • 컬럼의 개수만큼 필드를 만든다.
  • 화면에서는 메소드밖에 쓰지 못하니까, 값에 접근하고 세팅할 수 있는 메소드를 만들어라는 의미해서 필드에 private 을 붙여준다.
필드에 private 붙이고
getter, setter 만들기
object toString 재정의
hashcode 재정의
VO: Value Object

View


Controller

  • Java 에는 없다.
  • 서버가 있어야 한다.
  • Java 에 "쿼리" 작성
  • 실제 데이터에 접근할 수 있는 쿼리를 모아놓은 파일
  • Data Access Object(DAO)
  • 화면에서 DAO 를 실행
  • select 절에 결과가 나오면 메소드

📌 TCL: Transaction: 하나의 서비스를 구현하기 위해 필요한 쿼리의 묶음
📌 Commit: 반영을 fix하는 것
📌 Rollback: 이전 commit 시점으로 돌아가는 것 📌 NVL: null 이면 앞의 값 적용, null 이 아니면 0 적용하는 메소

web1_oracle's People

Contributors

codxexn avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.