SQL DBMS - accidentlywoo/sec GitHub Wiki

Oracle

Oracle EX 사용 : 연습용, 세션이 20개정도로만 제공된다.

윈도우 -> 서비스 -> OracleServiceXE / OracleXETNSListener 확인

  • OracleServiceXE : 오라클 구동
  • OracleXETNSListener : 오라클과 네트워크 기능연동

오라클은 기본적으로 문자는 바이너리로 저장된다.

자바는 글자수 별로 구분하지만 오라클은 바이너리로 구분한다.

VARCHAR(20)

오라클은 계정마다 스키마가 한개다

스키마 : 여기서 스키마는 물리적 스키마

MySQL이나 다른 DBMS는 계정별로 여러개의 스키마를 가질 수 있다.

  • 스키마 : 객체들의 집합
  • 객체의 종류 : 테이블, 뷰, 인덱스, 시퀀스, 시노님,...

-> 객체들이 바이너리로 저장되기 때문에 일반적인 텍스트뷰어로 내용을 볼 수 없다.


오라클 시작하기

최초 관리자 계정 system

  1. 계정을 추가적으로 만든다.
  • 바로 접속을 시도하면 lock 상태이다.
  1. system 계정으로 다시 접속해서 기본적으로 오라클(XE)에서 제공하는 교육용 계정 'hr/hr'을 사용하기 위한 접근권한을 주는 명령어를 입력한다.

alter user hr identified by hr;

교육용 계정 hr 들어가보기

SELECT * FROM TAB;

  • 기본적으로 등록된 테이블들을 확인해본다.

오라클의 명령어는 대소문자 구분하지 않는다.

DESC employees;

테이블의 구조를 확인할 수 있다.

컬럼의 갯수 : Degree(차수) : 컬럼들은 중복된 자료를 갖고있으면 안된다.

(중복된 요소를 갖으면 안된다. : 원자성을 갖는다.)

무료 클라이언트 'SqlDeveloper' 사용

ERD(Entity Relation Diagram) 이해하기

객체지향의 부모 자식관계와 전혀 다르다.

부모 엔터티를 찾는 방법

엔터티를 구분해주는 식별자 역할을 해주는 PK

데이터가 먼저 입력되야하는 엔터티가 부모 엔터티라 할 수 있다.

https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fk.kakaocdn.net%2Fdn%2FbVIIti%2FbtqEyJ58G5W%2F34XUyxKK6Ah20G1pGUubH0%2Fimg.png

비식벽자 관계 : [JOBS]-----[EMPLOYEES] 점선으로 표시. JOBS(부모)의 PK가 EMPLOYEES(자식)의 일반 컬럼으로 참조될때

주식별자 관계 : [JOB_HISTORY]ㅡ[EMPLOYEES] 실선. EMPLOYEES(부모)의 PK를 JOB_HISTORY(자식)의 PK로 참조하는 것

엔터티 별로 카디널러티 참여 수를 표현할 때/ 참여 여부를 표현할 때

https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fk.kakaocdn.net%2Fdn%2FdmrQzj%2FbtqEwSpQwSB%2FCTKYsDmyHKQJV5syaw2ISk%2Fimg.png -> 카디널리티 N 표현 : 선택 참여

https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fk.kakaocdn.net%2Fdn%2FdsneyZ%2FbtqEv7uwi3n%2FFTdzCE5UhOh2Akkkdc9Fs1%2Fimg.png -> 카디널리티 1 표현 : 필수 참여

연관(참조) 관계를 표현할 때

  • O : 선택참여 : 연관 컬럼이 NOT NULL이 아니다

  • O표기 없으면 : 필수 참여 : 연관 컬럼은 반드시 NOT NULL

DBMS의 장점

  • DBMS로 데이터 복구 작업을 할 수 있다.
  • 엔터티의 관계를 통해 중복데이터 생성을 피할 수 있다. 잘못된 데이터를 입력하지 못하는 제약조건을 줄 수 있다.(Integrity Constraint : 무결성 제약조건)

SQL이란?

Structured Query Language

DML :

DCM :

DDL :

  • 선택 : 테이블의 행을 선택한다. : Where 절

  • 프로젝션 : 테이블의 열을 선택한다. : Select 절

팁 : where 절에서 사용하는 같지 않다 의 표현

!= : Window OS에서는 정상 동작하지만, Unix계열에서 잘못된 표현이 표시될 수 있다.

<> : 이 표현이 표준! 이표현을 사용하자

팁 : SQL SELECT구문 처리 순서에서 보는 Column Alias 사용 가능한 구문 구분

  1. FROM 절 : Column Alias 사용 불가능 : Table Alias 지정 시 아래 모든 단계에서 Alias를 사용해야 한다.
  2. WHERE 절 : Column Alias 사용 불가능
  3. GROUP BY 절 : Column Alias 사용 불가능
  4. HAVING 절 : Column Alias 사용 불가능
  5. SELECT 절 : Column Alias 지정
  6. ORDER BY 절 : Column Alias 사용 가능

NULL 의 특징

NULL - 공집합, 아무것도 없다. 공백 표시

NULL과 연산자가 만나면 무조건 NULL이 나온다.

where A = null 이런 식의 비교가 많은데, 의도한 결과와 다른 잘못된 결과가 나온다.

WHERE A IS NULL NULL비교는 예약된 연산자를 사용해야 한다.

팁 : 쿼리 성능에서...

연산자 구문을 최적화 할 수 있도록 연산식을 작성해야 한다.


용어 정리

  • 개념 모델링 : 행, 튜플, 엔터티, 엔터티타입, 어트리뷰트
  • 논리 모델링 : 테이블, 행, 컬럼

논리 데이터 모델을 물리 데이터 모델 변환

https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fk.kakaocdn.net%2Fdn%2FcgrFf6%2FbtqEFW0oSEi%2FJKeEj5UEA1xHbi3N2v3qWK%2Fimg.png