- 이기적
- 네이버부스트캠프
- Oracle
- PY4E
- 인공지능기초다지기
- 이것이 취업을 위한 코딩테스트다 with 파이썬
- 데이터베이스
- boostcoures
- 기초다지기
- SQL
- DB
- python
- AI 플랫폼을 활용한 데이터 분석
- r
- Machine Learning
- 정보처리기사
- [멀티잇]데이터 시각화&분석 취업캠프(Python)
- 빅분기
- 오라클
- 코딩테스트
- 부스트코스
- 빅데이터분석기사
- boostcourse
- 난생처음 R코딩&데이터 분석 저서
- 파이썬
- 프로그래머스
- Ai
- 빅데이터 분석 기반 에너지 운영 관리자 양성 및 취업과정
- 코딩테스트 python
- 데이터 분석 기반 에너지 운영 관리자 양성 및 취업과정
- Today
- Total
매일공부
[SQL 입문] SQL이란? 본문
- SQL: Structured Query Language
- RDBMS에서 사용되는 언어
- DBMS를 만드는 회사에서는 되도록 표준 SQL을 준수하되, 각 제품의 특성을 반영한 SQL 사용
- 표준 SQL(ANSI) 배우면 대부분의 DBMS 사용 가능
- 대화식 언어 > 단편적인 질문 위주 > 명령문이 짧고 간결
- 오라클 > 키워드, 테이블명, 컬럼명은 대소문자 구별x
- MySQL > 테이블명, 컬럼명은 대소문자 구별o
- The SQL Standard
: https://datacadamia.com/data/type/relation/sql/ansi
: https://blog.ansi.org/2018/10/sql-standard-iso-iec-9075-2016-ansi-x3-135/#gref
- 언어 특성 비교
- DBMS 프로그램 : I/O 무수히 많이 수행되며 가능한 메모리에 읽을 수 있도록 관리
- SQL언어
- 선언적 언어
- 결과지향적 언어 ex) 네비게이션 사용시 출발지와 목적지의 경로를 바로 보여줌
- 예외처리 못 함
- 변수 사용 제한(mysql, ms sql, serve 사용가능)
- 명시적으로 if 조건, for 반복 처리 어려움(조건은 함수로 처리, 행단위로 연산, 함수 적용이 반복 처리)
- 프로그래밍 언어 : 절차적 언어, 과정을 기술
- Query SQL 처리과정
# 쿼리(Query 질의) : DBMS에게 요청 #
- syntax checking
- SGA 내에 shared pool 내에 library cache (sql 문장, 파싱된 문장, 실행정보)에서 검색
- Cache된 sql context가 존재하면, memory read 만으로 실행(바로 메모리 읽어서 실행 > logical read)
> 결과 fetch (soft parsing) - Cache된 sql이 존재하지 않으면, hard parsing을 수행함
: semantic parsing 수행
(sql 수행 user가 권한 체크, 테이블명 컬럼명 체크 : pysical read,
shared pool : data diction cache, row ache 메모리 사용) - optimizer(비용기반 io, cpu)가 최적의 경로를 탐색, 비용 계산, 최적경로 선택,
optimizer goal에 따른 최적의 경로 선택(meta 정보 이용 pysical read/logical read. cpu 사용) - 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에 유효하지 않는 문자를 포함하는 경우 구분해서 표현
* 내용참고&출처 : 태그의 수업을 복습 목적으로 정리한 내용입니다.
'Programming > SQL' 카테고리의 다른 글
[SQL 입문] selection 검색 (0) | 2022.08.18 |
---|---|
[SQL 입문] 데이터 타입, PROJECTION 연산 (0) | 2022.08.18 |
[SQL 입문] SQL Script Test; table 생성 (0) | 2022.08.17 |
Oracle, SQL developer 설치 및 설치 확인 & 오류 해결 (0) | 2022.08.16 |
[SQL 입문] Database와 DBMS (0) | 2022.08.16 |