함수

  • 자바의 메서드와 동일한 동작
  • 단일 행 함수
    1. floor / nvl / length / lengthb 등
    2. 레코드(행) 하나하나 적용함
    3. 결과도 행의 수만큼 나옴
  • 그룹 함수
    1. sum 등
    2. 특정 컬럼의 전체에 적용됨
    3. 결과도 하나임
    4. where절에서는 못 씀

 

단일 행 함수

  • 문자 관련 함수
  1. length: 인자값에 대한 글자 수를 리턴하는 함수
  2. lengthb: 인자 값에 대한 바이트 수를 리턴하는 함수
  3. instr: 문자열 속 특정 문자의 위치를 리턴하는 함수
  4. substr: 문자열 속 특정 위치의 문자를 리턴하는 함수
  5. replace: 문자열 속 특정 문자를 다른 문자로 바꿔서 리턴하는 함수
  • 숫자 관련 함수
  1. abs: 숫자의 절대값을 리턴하는 함수
  2. mod: 나머지 연산하여 나머지 값을 리턴하는 함수
  3. round: 실수 자료형을 반올림하여 리턴하는 함수
  4. floor: 실수 자료형의 소수점을 버리고 리턴하는 함수
  5. trunc: 특정 자리수에서 소수점을 버리고 리턴하는 함수
  6. ceil: 올림 함수

 

  • 날짜 관련 함수
  1. sysdate
  2. months_between: 두 개의 시간 값을 인자로 받아 두 시간 사이의 개월 수 변환하여 리턴하는 함수
  3. add_months: 특정 날짜에 개월 수를 더해서 반환
  4. next_day: 인자로 전달받은 날짜에서 두 번째 인자로 전달받은 요일 중, 가장 가까운 다음 요일의 날짜를 리턴하는 함수
  5. last_day: 첫 번쨰 인자로 전달받은 날짜의 달에 해당하는 마지막 날짜 반환
  6. extract: 인자값으로 전달된 날짜에서 원하는 값을 추출하여 리턴하는 함수

 

  • 형 변환 함수
  1. to_char: 문자열로 변경하여 형식 정해서 출력 도와주는 함수
  2. to_date: 숫자 또는 문자형 데이터를 날짜형 데이터로 변경

 

  • 조건 비교 함수
  1. decode: 자바의 switch와 비슷함
  2. case: 자바의 if와 비슷함
  3. null value 함수
    • 첫 번째 인자로 들어오는 값이 null이 아니면 그대로 리턴
    • 아니면, 두 번째 인자로 출력
    • 두 번째 인자도 첫 번째 인자의 자료형과 같아야 함

 

그룹 함수

  • sum: 컬럼값의 합
  • avg: 컬럼값의 평균
  • count: 컬럼의 레코드(행) 개수, null은 세지 않음, *은 null도 셈

 

 

 

 

 

 

 

Result Set

  • select를 이용하여 조회했을 때 출력되는 화면

select

  • DML 중 하나
  • DQL이라고 따로 보기도 함
  • 객체를 조회하는 명령어
  • select 컬럼명 from 테이블명;
  • 컬럼명에 연산 가능함
  • 컬럼명에 리터럴 값 넣어서 임의적으로 컬럼 추가할 수 있음
  • '||'을 쓰면 출력되는 컬럼값 뒤에 원하는 문자가 붙어서 출력됨

 

select 실행 순서

  • from
  • where
  • group by
  • having
  • select
  • order by
  • 예외는 있음

 

as

  • 컬럼에 별명을 붙여서 출력하게 해 줌
  • 생략 가능
  • as 뒤에 오는 별명은 문자열이 아닌 meta명이기 때문에 ' '가 아니라 " "로 씀
  • 컬럼 뒤에 작성

 

where

  • 조건을 충족하는 데이터들을 출력
  • for문처럼 한 줄씩 모든 레코드 비교(단일 행 함수)

 

is

  • null에 대한 조건을 확인할 때 씀('=' X)
  • ex) where bonus is null; where bonus is not null;

 

in

  • 여러 개의 값들을 뽑아내야 할 때 씀
  • in 뒤에 나열된 값들이 특정 컬럼에 포함되었는지를 확인해 줌

 

 

distinct

  • 중복된 값들을 하나만 출력하게 해 줌
  • 여러 컬럼들 중에 특정 컬럼에만 쓸 때는 적용하려는 컬럼을 맨 앞에 써야 함
  • 레코드 개수가 맞지 않을 때, 중복을 포기하고 조건에 해당되는 레코드를 모두 출력해 줌

 

like 'A%B', 'A%', '%A', '%A%'

  • A로 시작하고, B로 끝나는 문자열
  • A와 B 사이에 문자가 있을 수도 있고 없을 수도 있는 모든 경우를 포함

like 'A_B'

  • A로 시작하고, B로 끝나는 문자열
  • A와 B 사이에 _ 개수만큼의 문자가 있는 경우

 

escape 'A'

  • 탈출 문자
  • A가 붙어 있는 문자의 원래 기능을 잃게 함
  • 자바의 '\'가 하는 escape와 같음

 

order by

  • 특정 기준으로 정렬해 줌
  • 정렬 기준으로 컬럼 이름 또는 컬럼 번호를 씀
  • 정렬 기준은 여러 개 쓸 수 있음
  • where 구문 다음에 작성함
  • asc
    1. 특정 컬럼의 값을 오름차순으로 정렬해 줌
    2. 적지 않으면 asc으로 정렬함
  • desc
    1. 특정 컬럼의 값을 내림차순으로 정렬해 줌
  • nulls first
    1. null 값들을 먼저 출력함

 

 

 

 

 

 

 

 

Table

  • 데이터베이스 계정마다 가지는 정보의 집합
  • 데이터베이스는 여러 개의 테이블을 가지고, 이 테이블들이 프로그램 하나의 정보 집합이 됨
  • 동일한 주제를 가지는 데이터들의 집합(ex. 회원 정보 테이블)
  • 표처럼 생김
  • 헤더(ID, Password 등)
  • Row(Record)
  • Column
  • Cell: 칸을 차지하는 하나의 정보

 

dual 테이블

  • 오라클 사용자가 테스트 목적으로 사용하는 단일 행, 단일 열 테이블

 

Dictionary

  • DBMS Dictionary Table
  • 객체의 생성 / 수정 / 삭제나 사용자의 특정 행동(제약 조건 등)들에 의해 발생하는 Meta Data를 보관하는 오라클 시스템 테이블
  • 개발자가 직접 건드리는 것이 아니라 자동으로 생성 / 수정 / 삭제됨
  • user_tables
  • user_constraints
    1. 테이블마다의 제약 조건을 볼 수 있음
    2. CONSTRAINTS_NAME: 제약 조건을 삭제해야 할 때 이용함
    3. CONSTRAINTS_TYPE: p는 primary key, u는 unique, c는 check거나 not null

 

자료형

  • 문자(varchar), 숫자(number), 날짜(time)가 제일 많이 쓰임

 

varchar(variety character)

  • (메모리가) 변할 수 있는 문자
  • 저장할 때 메모리를 절약하는 방식
  • 테이블을 생성할 때 정한 메모리 크기보다 작은 문자가 들어오면 자동으로 CPU가 데이터 사이즈를 줄여줌(char는 아님)
  • CPU가 설정하는 것이기 때문에 재조정하는 횟수가 많으면 오버헤드가 생김
  • 문자 사이즈가 수시로 바뀌는 경우에는 char가 더 좋음

 

 

 

 

 

 

 

 

 

제약 조건(Constraint)

  • 테이블 구성(create table)에서 규칙을 정하는 문법
  • 테이블에 원하는 조건에 맞는 데이터만을 넣을 수 있도록 함
  • 헤더 하나에 여러 개의 제약 조건을 걸 수 있음
  • not null: data에 null 값 X, 필수 컬럼 설정
  • primary key
    1. 기본 키
    2. 식별자
    3. table에 고유값 설정
    4. 중복을 허용하지 않음
    5. 헤더 중 하나만 가능
  • check: 정해진 값만 넣을 수 있도록 함, null 값 설정 가능
  • unique: 고유값 설정, 중복을 허용하지 않음, null 값 설정 가능
  • default: 특정 값을 기본 값으로 설정
  • references
    1. 외래 키(foreign key) 설정
    2. 다른 테이블의 특정 컬럼 값을 가지고 올 수 있음
    3. 참조 무결성을 보장
    4. 다른 테이블의 자식 테이블이 됨, 부모 테이블이 삭제되면 자식 테이블이 존재할 수 없음
    5. 프로젝트 마지막에 설정해 줌
    6. primary key와 unique만 외래 키의 대상이 될 수 있음
  • on delete cascade
    1. 외래 키 확장
    2. 무결성이 걸려 있을 때, 부모 테이블의 레코드가 delete 되면 그 레코드를 참조하고 있는 자식 테이블의 레코드도 지움
  • on delete set null
    1. 외래 키 확장
    2. 무결성이 걸려 있을 때, 부모 테이블의 레코드가 delete 되면 그 레코드를 참조하고 있는 자식 테이블의 셀을 null 값으로 채움

 

외래 키(Foreign Key)

  • 다른 테이블의 primary key나 unique를 참조하는 키

 

참조 무결성

  • 외래 키에는 null이거나(null을 허용하는 경우) 참조하는 특정 컬럼의 기본 키 값만 넣어야 함
  • 참조하지 않는 외래 키 값을 가질 수 없음

 

 

 

 

다운로드

  • Oracle: DBMS, 설치 시 관리자 비밀번호 설정
  • SQL Developer: DBMS가 아님, DBMS 사용을 도와주는 도구(자바를 쓰기 위해 도와주는 eclipse 같은 것)

 

SQL Developer 접속

  1. 접속 이름
    1. 상관없음
  2. 사용자 이름
    1. 다른 계정을 관리하는 최고 관리자 계정을 먼저 꼭 만들어야 함
    2. 최고 관리자 계정의 이름
    3. 또는 최고 관리자 계정에서 생성한 계정의 이름
    4. 시스템 이름
  3. 비밀번호
    1. 최고 관리자 계정: 오라클 설치 시 설정했던 관리자 비밀번호
    2. 최고 관리자 계정에서 생성한 계정: 생성 시 설정했던 비밀번호
  4. 호스트 이름
    1. 데이터베이스가 있는 컴퓨터의 IP
  5. 포트
    1. 1521 고정 (Mac OS에서는 docker 다운로드했을 때 설정한 포트 번호 확인하여 설정)
  6. SID
    1. 익스프레스 버전이라 xe로 고정

 

 

Query문의 종류

  1. DBMS에게 요청하는 문법들
  2. DDL(Data Definition Language)
    1. 객체를 생성 / 삭제 / 수정하는 명령 집합
    2. 객체: table, user, view, trigger 등
    3. create, drop, alter
  3. DML(Data Manipulation Language)
    1. table 내의 데이터를 생성 / 삭제 / 수정 / 조회하는 명령 집합
    2. insert, delete, update, select
    3. select: DQL로 따로 떼서 보기도 함
  4. DCL(Data Control language)
    1. 권한 통제 명령
    2. grant, revoke
  5. TCL(Transaction Control Language)
    1. tracsaction을 관리하는 명령 집합
    2. rollback, commit, savepoint

 

 

 

 

 

+ Recent posts