SQL + DBMS - accidentlywoo/sec GitHub Wiki
Oracle EX 사용 : 연습용, 세션이 20개정도로만 제공된다.
윈도우 -> 서비스 -> OracleServiceXE / OracleXETNSListener 확인
- OracleServiceXE : 오라클 구동
- OracleXETNSListener : 오라클과 네트워크 기능연동
자바는 글자수 별로 구분하지만 오라클은 바이너리로 구분한다.
VARCHAR(20)
스키마 : 여기서 스키마는 물리적 스키마
MySQL이나 다른 DBMS는 계정별로 여러개의 스키마를 가질 수 있다.
- 스키마 : 객체들의 집합
- 객체의 종류 : 테이블, 뷰, 인덱스, 시퀀스, 시노님,...
-> 객체들이 바이너리로 저장되기 때문에 일반적인 텍스트뷰어로 내용을 볼 수 없다.
최초 관리자 계정 system
- 계정을 추가적으로 만든다.
- 바로 접속을 시도하면 lock 상태이다.
- system 계정으로 다시 접속해서 기본적으로 오라클(XE)에서 제공하는 교육용 계정 'hr/hr'을 사용하기 위한 접근권한을 주는 명령어를 입력한다.
alter user hr identified by hr;
SELECT * FROM TAB;
- 기본적으로 등록된 테이블들을 확인해본다.
오라클의 명령어는 대소문자 구분하지 않는다.
DESC employees;
테이블의 구조를 확인할 수 있다.
컬럼의 갯수 : Degree(차수) : 컬럼들은 중복된 자료를 갖고있으면 안된다.
(중복된 요소를 갖으면 안된다. : 원자성을 갖는다.)
무료 클라이언트 'SqlDeveloper' 사용
객체지향의 부모 자식관계와 전혀 다르다.
엔터티를 구분해주는 식별자 역할을 해주는 PK
데이터가 먼저 입력되야하는 엔터티가 부모 엔터티라 할 수 있다.
비식벽자 관계 : [JOBS]-----[EMPLOYEES] 점선으로 표시. JOBS(부모)의 PK가 EMPLOYEES(자식)의 일반 컬럼으로 참조될때
주식별자 관계 : [JOB_HISTORY]ㅡ[EMPLOYEES] 실선. EMPLOYEES(부모)의 PK를 JOB_HISTORY(자식)의 PK로 참조하는 것
-> 카디널리티 N 표현 : 선택 참여
-> 카디널리티 1 표현 : 필수 참여
연관(참조) 관계를 표현할 때
-
O : 선택참여 : 연관 컬럼이 NOT NULL이 아니다
-
O표기 없으면 : 필수 참여 : 연관 컬럼은 반드시 NOT NULL
- DBMS로 데이터 복구 작업을 할 수 있다.
- 엔터티의 관계를 통해 중복데이터 생성을 피할 수 있다. 잘못된 데이터를 입력하지 못하는 제약조건을 줄 수 있다.(Integrity Constraint : 무결성 제약조건)
Structured Query Language
DML :
DCM :
DDL :
-
선택 : 테이블의 행을 선택한다. : Where 절
-
프로젝션 : 테이블의 열을 선택한다. : Select 절
!=
: Window OS에서는 정상 동작하지만, Unix계열에서 잘못된 표현이 표시될 수 있다.
<>
: 이 표현이 표준! 이표현을 사용하자
- FROM 절 : Column Alias 사용 불가능 : Table Alias 지정 시 아래 모든 단계에서 Alias를 사용해야 한다.
- WHERE 절 : Column Alias 사용 불가능
- GROUP BY 절 : Column Alias 사용 불가능
- HAVING 절 : Column Alias 사용 불가능
- SELECT 절 : Column Alias 지정
- ORDER BY 절 : Column Alias 사용 가능
NULL - 공집합, 아무것도 없다. 공백 표시
NULL과 연산자가 만나면 무조건 NULL이 나온다.
where A = null
이런 식의 비교가 많은데, 의도한 결과와 다른 잘못된 결과가 나온다.
WHERE A IS NULL
NULL비교는 예약된 연산자를 사용해야 한다.
연산자 구문을 최적화 할 수 있도록 연산식을 작성해야 한다.
- 개념 모델링 : 행, 튜플, 엔터티, 엔터티타입, 어트리뷰트
- 논리 모델링 : 테이블, 행, 컬럼