매일공부

[SQL 입문] SQL이란? 본문

Programming/SQL

[SQL 입문] SQL이란?

aram 2022. 8. 16. 23:30

- SQL: Structured Query Language

 

- 언어 특성 비교

  • DBMS 프로그램 : I/O 무수히 많이 수행되며 가능한 메모리에 읽을 수 있도록 관리

  • SQL언어
    • 선언적 언어
    • 결과지향적 언어 ex) 네비게이션 사용시 출발지와 목적지의 경로를 바로 보여줌
    • 예외처리 못 
    • 변수 사용 제한(mysql, ms sql, serve 사용가능)
    • 명시적으로 if 조건, for 반복 처리 어려움(조건은 함수로 처리, 행단위로 연산, 함수 적용이 반복 처리)
  • 프로그래밍 언어 : 절차적 언어, 과정을 기술

 

- Query SQL 처리과정 

# 쿼리(Query 질의) : DBMS에게 요청 #

  1. syntax checking
  2. SGA 내에 shared pool 내에 library cache (sql 문장, 파싱된 문장, 실행정보)에서 검색
  3. Cache된 sql context가 존재하면, memory read 만으로 실행(바로 메모리 읽어서 실행 > logical read)
     > 결과 fetch (soft parsing)
  4. Cache된 sql이 존재하지 않으면, hard parsing을 수행함
     : semantic parsing 수행
     (sql 수행 user가 권한 체크, 테이블명 컬럼명 체크 : pysical read, 
      shared pool : data diction cache, row ache 메모리 사용)
  5. optimizer(비용기반 io, cpu)가 최적의 경로를 탐색, 비용 계산, 최적경로 선택,
     optimizer goal에 따른 최적의 경로 선택(meta 정보 이용 pysical read/logical read. cpu 사용)
  6. library cache에서 sql context(sql , 파싱된 sql, 실행정보...) 저장
    row source를 server process가 실행 (db cachce 검색, pysicla read/logical)
  • meta 정보 저장된 테이블(뷰)는 data dictionary Ehsms system catalog로 부름
  • data dictionary 는 user_xxx, all_xxx, dba_xxx

 

- SQL 기능에 따른 분류

Query(DQL, DML) : SELECT~

DML(Data Manipulation Language 데이터 조작어)
: 데이터 조회, 테이블데 테이터 추가, 수정, 삭제
: INSERT~, UPDATE~, Merge~

DDL(Data Definition Language 데이터 정의어)
: 객체를 생성, 변경, 삭제
: CREATE~, ALTER~, DROP~, TRUNCATE~, RENAME~

DCL(Data Control Language 제어어) 
: 권한을 통해서 객체, 데이터에 대한 access, 실행 제어
: GRANT, REVOKE

TCL(Transaction Control Language)
: 트랜잭션의 일관성과 무결성 보장
: rollback, commit, savepoint

 

- SQL 검색 종류

1. PROJECTION 검색 : 하나의 대상 테이블로부터 column기준으로 검색(select~ from~)

2. SELECTION 검색: 하나의 대상 테이블로부터 조건에 맞는 row 기준으로 검색(select~ from~ where)
    WHERE 조건 : 필터 조건

3. JOIN 검색: 2개 이상의 테이블(참조 관계 테이블, Parent.PK 컬럼 = Child.FK 컬럼)로부터 동일한 속성(동일이름, 동일컬럼타입, 동일컬럼값)을 가진 레코드의 column값(열)이 일치할 때 record를 결합해서 결과집합으로 생성

 

- SQL 데이터 결합 방법(Grouping)

1. JOIN 검색 
2. 집합연산 
3. SUBQUERY(서브쿼리) 

 

- SQL 기본 문법

--1
SELECT * FROM 테이블;

--2
SELECT [ALL | DISTINCT] 속성이름(들) [AS alias] --무엇을
FROM 테이블이름(들) [AS alias];  --어디(table)에서 가져온다
[WHERE 검색조건(들);] 
[GROUP BY 속성이름(들);]
[HAVING 검색조건(들);]
[ORDER BY 컬럼 정렬방식~;]
  • 1, 2번 모두 표현 가능
    >> 가독성을 위해서 2번의 절 단위로 나눠서 쓰는 경우가 많음

  • 필수절
    [오라클] SELECT~ FROM~ ;
    [mysql, ms sql server] select~ ;
  • ; (세미콜론)  = 문장 종결

  • [Rename - Alias]
    SELECT 뒤의 column 명칭 [AS 별칭]
    FROM 뒤의 table 명칭 [AS 별칭]
      >> AS를 사용해서 별칭으로 부를 수 있음
    > where 절에서는 alias 사용X
    > alias는 선언된 sql문에서만 유효함 


  • 예약어(SELECT, FROM 등)는 대문자로
      > 사용자체엔 대소문자 상관x
      > SQL 툴을 사용하지 않아도 쉽게 판별할 수 있도록 예약어는 대문자로 쓰는 경우多

  • '   '  Single quotation(싱글 쿼테이션, 작은따옴표) >> 날짜와 문자 데이터 표현
  • "  " Double quotation(더블 쿼테이션, 큰따옴표) >> alias에 공백 포함 또는 대소문자 구분해서 표현
  • ' YYYY "of" month '>> 변환함수에서 fmt string에 유효하지 않는 문자를 포함하는 경우 구분해서 표현

 

* 내용참고&출처 : 태그의 수업을 복습 목적으로 정리한 내용입니다.

Comments