출처: SQL 전문가 가이드 : 네이버 도서 (naver.com) & Chat GPT
SQL 전문가 가이드 : 네이버 도서
네이버 도서 상세정보를 제공합니다.
search.shopping.naver.com
과목 Ⅰ. 데이터 모델링의 이해
과목 Ⅱ. SQL 기본과 활용
제1장 SQL 기본
제1절 관계형 데이터베이스 개요
데이터베이스 | 조직이나 개인이 필요에의해 데이터를 일정한 형태로 저장해 놓은것 | ||
역사 | 1960년대 | 파일구조로 데이터저장 | |
1970년대 | 계층형 데이터베이스, 망형 데이터베이스 상용화 | ||
1980년대 | 관계형데이터베이스, Oracle, Sybase, DB2 | ||
1990년대 | 객체 관계형 데이터베이스로 발전 | ||
SQL | = Structured Query Language = 구조화된 질의언어 | ||
종류 | DDL | Data Definition Language - create, alter, drop, rename | |
DML | Data Manipulation Language - select / insert, update, delete | ||
DQL | Data Query Language - select | ||
DCL | Data Control Language -grant, revoke | ||
TCL | Transaction Control Language - commit, rollback | ||
STANDARD SQL | |||
일반집합연산 | UNION | UNION 기능 | |
INTERSECTION | INTERSECT기능 | ||
DIFFERENCE | EXCEPT (오라클 minus) | ||
PRODUCT | cross join | ||
순수관계연산자 | select 연산 | ||
project연산 | |||
(natural)join 연산 | |||
divide | |||
데이터유형 | |||
Character | 고정길이문자 | Oracle 1~2000바이트 SQL Server 1~8000바이트 남은만큼 빈공간 |
|
varcher | 가변길이문자 | Oracle 의 varchar2 1~4000 SQL Server 의 varchar 1~8000 |
|
numeric | 정수,실수등 숫자 | Oracle 의 Number - Number(8,2) 정수6 숫자2자리 SQL Server 은 10가지 이상 숫자타입 |
|
datetime | 날짜와시각 | Orace 의 Date 1초 단위 SQL Server의 Datetime 3.3ms |
ERD | = Entity-Relationship Diagram =개체-관계 다이어그램 | ||
작업순서 | 1. 엔티티를그린다 | ||
2. 엔티티를 적절하게배치한다. | 중요도가 높을수로 왼쪽, 위쪽 배치 (왼쪽에서 오른쪽, 위에서 아래 ) | ||
3. 엔티티 관계를 설정한다. | 식별자관계, 순환관계 발생하지 않도록 작성 | ||
4. 관계명을 기술한다. | 현재형 ex) 저장하다, 포함하다 | ||
5. 관계의 참여도를 기술한다. | |||
5. 필수여부를 기술한다. |
다양한 표기법 |
엔티티 | 속성 | 관계 | 주식별자 | |
첸(Chen) 표기법 | 사각형 | 타원 | 마름모 | ||
바크만(Bachman) 표기법 | 사각형 | 선 선위에 1 , M 명시 |
|||
IDEF1X 표기법 | 사각형 | 화살표 | 엔티티상단 | ||
Crow's Foot 표기법 - I/E표기법 |
사각형 | 선 관계수 1:1, 1,M |
굵은선 | ||
UML 클래스 다이어그램 | 사각형 | 엔티티에 클래스명, 속성,메서드 포함 |
선 | ||
바커표기법 | 사각형 | 타원형, 엔티티내부 | 선 |
제2절 SELECT 문
SELECT | |||
우선순위 | from > where > group by > having > select > order | ||
집합 조작자 (Set Operators) |
ALL | 기본옵션 | |
DISTINCT | 중복행제거 | ||
산술연산자 | 우선순위 | () > * > / > + > - | |
합성연산자 | ||, +, concat | ||
* | 애스터리스크 | ||
alias | 별칭 | ||
DUAL 테이블 | SYS 가 소유, 모든사용자 액세스, dummy 컬럼, 'X' 인스턴스 1건 (더미테이블) 으로조회 |
||
select ~ from | Oracle 에서는 from 필수 mysql, postgreSQL from 생략 |
제3절 함수
함수 | |||
종류 | 내장함수 (Built-in) |
단일행 함수 | 입력값 단일행 - select, where, order by 절에 사용가능 |
다중행 함수 | 입력값이 여러행 - 집계함수, 그룹함수, 윈도우함수 |
||
문자형함수 | lower | ||
upper | |||
ASCII | 문자나 숫자를 아즈키 코드로 변환 | ||
char/chr | 오라클 : chr | ||
concat | 오라클기준 2개 문자열 연결 | ||
substr/substring | 오라클 substr | ||
length/len | 오라클 length | ||
ltrim/rtrim/trim | |||
숫자형함수 | abc | 절대값변환 | |
sign | 양수 or 음수 or 0 구별 | ||
mod | 나머지 | ||
ceil/ceiling | 최소 정수반환 | ||
floor | 숫자보다작은 최대정수 ex) -5.6 -> -6 | ||
round | 반올림 (숫자, 자릿수까지) | ||
trunc | 버림 ex) -5.6 -> -5 | ||
sin, cos,tan | 삼각함수 | ||
날짜형 함수 | sysdate/getdate() | sysdate(날짜+시간) 출력 | |
extract('YEAR'|'MONTH'|'DAY' from 컬럼) datepart('YEAR'|'MONTH'|'DAY' from 컬럼) |
년,월,일 출력 오라클 - extract |
||
to_char( 컬럼, '패턴' ) year(), month(), day() |
오라클 - to_char | ||
날짜 + 숫자 | 숫자 일수 추가된 날짜 | ||
날짜 - 숫자 | 숫자 일수 차람된 날짜 | ||
날짜1 - 날짜2 | 일수 | ||
날짜 + 숫자/24 | 시간추가 | ||
변환형함수 | to_number(문자열) | ||
to_char | |||
to_date | |||
cast convert |
|||
조건 | case when then end | ||
decode | 오라클만 | ||
null | nvl / isnull | 오라클 - nvl | |
nullif(컬럼1, 컬럼 2) | 컬럼 1, 컬럼 2 같으면 null 아니면 문자1 | ||
coalesce( 컬럼 1, 컬럼 2) | 둘다있으면 컬럼1 , 한개만있으면 있는것 둘다없으면 null |
제4절 WHERE 절
WHERE | 조회하려는 데이터에 특정조건 부여 | ||
우선순위 | () > NOT()[낫연산자]> = [비교연산자] > SQL 비교연산자 > AND > OR | ||
비교연산자 | 양쪽 char | 작은쪽에 빈공간 추가 > 서로다른문자 나올때까지 > 달라진크기 > 빈공간수만다르면 같은값 | |
어느한쪽 varchar | 서로다른문자 > 길이가 다르면 긴것이 크다판단 | ||
상수 | 상수쪽을 변수타입으로 변경 | ||
SQL 연산자 | in | ||
like '가%' | 0개이상 다른문자 | ||
like '가_' | 1개 단일문자 | ||
between a and b | |||
is null | |||
논리연산자 | and / or / not | not 은 우선순위는다름 | |
부정비교연산자 | and not | ||
부정SQL 연산자 | <> | ||
rownum /top top |
rownum | 오라클, 고유 인덱스값 , order by 와 함께 쓸때 주의필요. |
|
top | sql server - select top(3) user_no from users; |
제5절 GROUP BY, HAVING 절
집계함수 | 여러행의 그룹이 모여 그룹당 하나의 결과 도출 group by 절은 행들을 소 그룹화 select , having, order by 절에 사용가능 |
||
함수 | count(*) | NULL 값 포함한 행수 | |
count(표현식) | NULL 값 제외한 행수 | ||
sum([Distinct|All] 표현식) | NULL 값 제외한 합계 | ||
avg([distint|all] 표현식) | NULL 값 제외한 평균 | ||
max([distint|all] 표현식) | 표현식의 최대값 | 0 처리 주의필요. | |
min([distint|all] 표현식) | 표현식의 최소값 | ||
STDDEV([distint|all] 표현식) | 표현식의 표준편차 | ||
VARIAN([distint|all] 표현식) | 표현식의 분산 | ||
GROUP BY | |||
HAVING | |||
CASE |
제6절 ORDER BY 절
제7절 조인
JOIN | |||
equal join | 등가조인 | 조인 컬럼이 일치 | |
non equal join | 비등가조인 | 조인컬럼이 등가(=) 아닌 between, >=<... 외 ex) 급여로 등급매기기 |
|
3개이상테이블조인 |
제8절 표준 조인
표준 SQL | |||
join | inner join | ||
natural join | 동일이름 모든컬럼 등가조인, sql server 지원안함. | ||
using | on 유사. using(pk) join 컬럼명이 동일할때, 결과에는 그 컬럼 1번만 출력됨 |
||
on | |||
cross join | 조인조건없을 때 M*N건의 조합발생 | ||
left/right outer join | |||
full outer join |
'Data' 카테고리의 다른 글
[1028 SQL]Ⅱ. SQL 기본과 활용-제3장 DML, TCL, DDL, DCL, 절차형SQL(프로시저) (0) | 2024.06.24 |
---|---|
[1028 SQL]Ⅱ. SQL 기본과 활용-제2장 서브쿼리, 집합연산자, 그룹함수, 윈도우함수, Top N쿼리, 계층형, 뷰 (0) | 2024.06.24 |
[1028 SQL]Ⅰ. 데이터 모델링-제2장 정규화, JOIN, 트랜잭션, null, 본질식별자&인조식별자 (0) | 2024.06.19 |
[1028 SQL]Ⅰ. 데이터 모델링-제1장 모델링, 엔터티, 속성, 관계(ERD), 식별자 (1) | 2024.06.18 |
[1028] SQL 전문가 목차 (0) | 2024.04.29 |