Data

[1028 SQL]Ⅱ. SQL 기본과 활용-제1장 SQL, ERD, 함수(집계함수 외), select 외

출처: 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