Oracle DB 예약어, 함수

강정우·2022년 6월 29일
0

DB

목록 보기
12/30
post-thumbnail

#2 SQL 복습

1. select문의 기능들

  1. 선택
    행 단위로 DATA를 읽는 것.
  2. 프로젝션
    열 단위로 DATA를 읽는 것.
  3. 조인(어려움.)
    여러개의 table DATA를 동시에 검색할 때 사용.
  • 가장 중요한 것은 select는 출려을 위한 것이며 table value에는 전혀 영향을 끼치지 않는다.
  • STR과 날짜 값은 왼쪽 정렬 INT값은 오른쪽 정렬이다.

2. '*'

  • 모든 열 선택.
SQL> select *
  2  from departments;
  
SQL> select location_id, department_id,... etc
  2* from departments;
  • 결과값이 똑같다. 또한 select list 절에 어려개의 columns를 ','로 이어 붙일 수 있으며 그것은 표에 나타는 순서를 나타내기도 한다.

3. 특정 열 선택(projection)

SQL> department_id, location_id
  2* from departments;

4. SQL문 작성

  • SQL문은 대소문자를 구분하진 않지만 사실상 구분하는것과 같다.
    왜냐하면 parse 라는 개념때문이다.
  • parse란 파씽이라고 하며 DB coding에 있어서 가장 중요한 것은 성능이다. 이때 1초라도 자원을 아껴야 한다.

5. parse

  • 파씽이란 1. 검증 2. 실행계획수립 3. 실행 의 순으로 진행되는데 이때 파씽에 앞서 data dictionary를 검색하여 검색한 기록이 있다면 자원을 최소한 소모하고 결과값이 최대한 빨리 받아볼 수 있다.
SQL> select name
  2* from employees;
  
SQL> select NAME
  2* from employees;
  • 그렇다면 위의 2 명령어는 같다고 볼 수 있을까? pc입장에서 보면 아니다 왜냐하면 PC는 ASC코드로 alphabet을 저장하는데 a와 A의 ASC코드의 값은 앞서 설명한 것 처럼 31의 차이가 있기 때문에 다른 명령어라고 판단하고 처음부터 파씽을 다시 하는 것이다.
  • 따라서 코드를 짤 때 있어 본인만의 규칙이 있는 것이 중요하다.

6. 산술식

  • 계산기처럼 기본적인 사칙연산이 가능하다. 단, 숫자는 모두 가능 문자는 불가능 날짜는 기본적인 날짜 더하기 빼기만 가능
  • column + 상수, column + column 도 가능
  • 연산자 우선순위와 괄호는 일반 사칙연산처럼 똑같이 사용 가능
SQL> select last_name, salary*12
 2*  from employees
  • 하여 월급 * 12 = 연봉을 계산할 수 있다.

    하지만 다음과 같이 문자열을 곱하면 error 메시지를 표출한다.

7. NVL


  • 위 사진들은 commission_pct 즉, 보너스가 없는 값들을 계산하였을 경우의 결과값이다. 이럴경우 DATA는 손실되었고 무결성이라 볼 수 없다. 이에 null값을 대신하여 계산할 수 있는 함수가 있다.
SQL> select last_name, salary*12*nvl(해당column,null값 대신 들어갈 수)

8. alias

  • 자 위와 같이 column heading 즉, 열 머릿글이 그대로 출력되어버리기 때문에 column heading을 다시 rename해줄 필요가 있다.
  • 방법은 3가지이다.
  1. AS : 단일문장(단일단어), 반드시 대문자
  2. 공백 : 단일문장(단일단어), 반드시 대문자
  3. " " : 복수문장(2자 이상의 단어), 쓰여진 형식 그대로(소문자도 가능)
  • 1개의 column당 1개의 alias 명을 지정해야한다.
  • AS > 공백 : 공백보단 AS를 많이 쓰도록 하자 왜냐하면 pc가 인식할 때 공백은 우선 column으로 처리하기 때문에 소요되는 자원이 너무 많다.
  • 안 좋은 사례들

9. distinct

  • 무조껀 select 뒤에 1번만 기재한다.
  • 겹치는 값들을 제거하여 결과를 보여준다. 로직은 우선 첫번째 부여된 id의 data들을 그룹화 후 다음에 있는 data들의 중복값을 삭제한다.

10. 연결연산자

  • 출력하는 값들을 하나로 합친다. 하지만 현업에서는 잘 쓰이진 않는다.

11. 리터럴 문자열 사용

  • 문자, 날짜는 반드시 작은 따옴표(' ')로 해야한다. 왜냐하면 큰 따옴표(" ")는 alias이니까!

12. 분석할 줄 알아야함.

  • 다음 결과값이 12 rows들이 나왔다고 부서의 개수가 12개가 아니다 자세히 보면 1개의 null값이 있기 때문에 사실 이 회사는 11개의 부서가 있다고 분석하는게 맞다.
profile
智(지)! 德(덕)! 體(체)!

0개의 댓글