공통 [프로그래밍 애피타이저] 8장 SQL 정의와문법
2020.04.09 11:18
SQL 정의와문법
SQL (Structured Query Language)
SQL은 RDBMS(Relational Database)에 저장된 데이터와 통신하기 위해 필요한 프로그래밍 언어입니다. SQL 문법은 영어와 유사하게 만들어져서 쉽게 읽고 쓰고 해석할 수 있습니다. ‘에스큐엘’ 혹은 ‘시퀄’로 발음합니다.
SQL은 IBM에서 1970년대 초에 도널드 D. 챔벌린과 레이먼드 F. 보이스가 처음 개발하였습니다. 초기에는 SEQUEL (Structured English Query Language)라는 이름으로 시작하였으며, IBM의 준 관계형 데이터베이스 관리 시스템에 저장된 데이터를 조작하고 수신하기 위해 고안되었습니다. SEQUEL은 나중에 SQL으로 바뀌었다. 그 까닭은 SEQUEL이 영국의 호커 시들리 항공사의 상표였기 때문입니다.
SQL 명령어
SQL 명령어는 크게 4종류의 그룹으로 나뉩니다.
- DDL(Data Definition Language) - 데이터베이스 스키마와 설명을 처리하는 정의하는 언어입니다. 데이터베이스나 테이블 생성/변경/삭제 등의 작업이 여기에 포함됩니다.
- DML(Data manipulation language) - 데이터 검색, 삽입, 변경, 삭제를 수행하여 조작하는 언어입니다. 실질적으로 저장된 데이터에 처리할 때 사용합니다.
- DCL(Data Control Language) - 데이터에 접근할 수 있는 권한을 관리하는 언어입니다.
-
TCL(Transaction Control Language) - 트랜잭션을 다루는 언어입니다.
종류
|
명령어
|
DDL |
CREATE, ALTER, DROP, TRUNCATE, COMMENT, RENAME |
DDE
|
SELECT, INSERT, UPDATE, DELETE, MERGE, CALL, EXPLAIN PLAN, LOCK TABLE |
DCL |
GRANT, REVOKE |
TCL |
COMMIT, ROLLBACK, SAVEPOINT, SET TRANSACTION |
ANSI SQL 이란?
1986년 SQL-86의 명칭(별칭 SQL-87)으로 ANSI에 의한 최초의 표준화가 되었습니다. 여러 데이터베이스들의 SQL들이 제공해주는 특성에 따라 SQL이 다를 수 있습니다. 하지만 ANSI 표준으로 작성된 SQL은 모든 데이터베이스에서 호환됩니다. 델파이는 ANSI SQL을 사용합니다.
l 표준 SQL 기본 문법 정리 - (테이블, 뷰, 인덱스 작성과 삭제)
https://siyoon210.tistory.com/137
l 표준 SQL 기본 문법 정리 - (조회, 조건)
https://siyoon210.tistory.com/133
l 표준 SQL 기본 문법 정리 - (정렬, 연산)
https://siyoon210.tistory.com/134?category=840254
l 표준 SQL 기본 문법 정리 - (추가, 삭제, 갱신)
https://siyoon210.tistory.com/135?category=840254
l 표준 SQL 기본 문법 정리 - (집계함수, 서브쿼리)
https://siyoon210.tistory.com/136?category=840254
l 표준 SQL 쿼리 구문
https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax?hl=ko
데이터베이스에서 사용되는 데이터 타입
SQL에서 사용할 수 있는 데이터 타입의 종류는 많지만, 그 중에 자주 사용되는 데이터 타입을 데이터베이스 별로
정리해보았습니다.
LOB이란 Large Object의 약자로 대용량 데이터를 저장할 수 있는 데이터 타입입니다. 일반적으로 그래픽, 이미지, 사운드 등 비정형 데이터를 저장할 때 LOB타입을 사용합니다. 문자형 대용량데이터는 CLOB나 NCLOB, 그래픽, 이미지, 동영상 등의 데이터는 BLOB를 주로 사용합니다.
우리가 사용할 데이터베이스인 인터베이스, 현업에서 자주 사용하는 오라클, MS SQL Server 등의 데이터 타입들을 살펴 보도록 하겠습니다.
l 인터베이스
이름
|
사이즈
|
범위
|
설명
|
BLOB
|
Variable
|
· None
· Blob 세그먼트 사이즈는 64K까지
|
· 그래픽, 텍스트 및 디지털 음성과 같은 대용량 데이터를 저장하기 위한 동적 크기 조정 가능 데이터 유형
· 기본 구조 단위는 세그먼트
· Blob 하위 유형은 Blob 내용을 설명합니다.
|
BOOLEAN
|
16 bits
|
· TRUE
· FALSE
· UNKNOWN
|
· 참, 거짓 및 알 수 없는 진리 값을 나타냅니다.
· 모든 통용어에 운영 데이터 저장소(ODS) 11 이상이 필요합니다.
|
CHAR(<n>)
|
<n> characters
|
· 1 ~ 32,767 바이트
· 문자 세트 문자 크기는 32K에 맞을 수 있는 최대 문자 수를 결정합니다.
|
· 고정 길이 CHAR 또는 텍스트 문자열 유형
· 대체 키워드: CHARACTER
|
DATE
|
32 비트
|
1 Jan 100 a.d.
|
· 날짜를 32 비트 롱 워드로 저장
|
DECIMAL (<precision>, <scale>)
|
Variable
|
· <정밀도> = 1~18; 저장할 <precision> 자릿수 이상을 지정합니다.
· <스케일> = 0~18; 소수점 이하 자릿수는 <precision>보다 작거나 같아야 합니다.
|
· 오른쪽에서 소수점 <scale> 자릿수가 있는 숫자
· 예: DECIMAL (10,3)은 다음 형식으로 숫자를 정확하게 유지합니다. ppppppp.sss
|
DOUBLE PRECISION
|
64 bits1
|
2.225 x 10–308 to 1.797 x 10308
|
IEEE 배정도: 15 자리
|
FLOAT
|
32 bits
|
1.175 x 10–38 to 3.402 x 1038
|
IEEE 단정도: 7 자리
|
INTEGER
|
32 bits
|
–2,147,483,648 to 2,147,483,647
|
부호가 있는 Long 형
|
NUMERIC (<precision>, <scale>)
|
Variable (16, 32, or
|
· <정밀도> = 1~18; 정확하게 <precision> 자릿수를 저장하도록 지정합니다.
· <스케일> = 0~18; 소수점 이하 자릿수를 지정하며 <precision보다 작거나 같아야 합니다.
|
· 오른쪽에서 소수점 <scale> 자릿수가있는 숫자
· 예: NUMERIC (10,3)은 다음 형식으로 숫자를 정확하게 유지합니다. ppppppp.sss 오른쪽에서 소수점이 있는 <scale> 숫자의 숫자
|
SMALLINT
|
16 bits
|
–32,768 to 32,767
|
부호가 있는short 형
|
TIME
|
32 bits
|
0:00 AM-23:59:59.9999 PM
|
InterBase 유형 ISC_TIME의 부호 없는 정수 : 자정 이후 0.0001 초 단위의 시간
|
TIMESTAMP
|
64 bits
|
1 Jan 100 a.d.
|
인터베이스 유형 ISC_TIMESTAMP; 날짜와 시간 정보를 결합
|
VARCHAR (<n>)
|
<n> characters
|
· 1 ~ 32,765 바이트
· 문자 세트 문자 크기는 최대 문자 수 32K에 맞게 결정합니다.
|
· 가변 길이 CHAR 또는 텍스트 문자열 유형
· 대체 키워드: CHAR VARYING, CHARACTER VARYING
|
l 오라클
타입/언어
|
오라클
|
|
문자타입
|
CHAR(n) |
고정길이 문자 / 최대 2000byte / 디폴트 값은 1byte |
VARCHAR(N) |
가변길이 문자 / 최대 4000BYTE / 디폴트 값은 1byte |
|
NCHAR(n) |
고정길이 유니코드 문자(다국어 입력가능) / 최대 2000byte |
|
숫자타입
|
NUMBER(P,S) |
가변숫자 / P (1 ~ 38, 디폴트: 38) / S (-84 ~ 127, 디폴트 값 : 0) / 최대 22byte |
FLOAT(P)
|
NUMBER의 하위타입 / P (1~128 .디폴트 : 128) / 이진수 기준 / 최대 22byte |
|
BINARY_FLOAT |
32비트 부동소수점 수 / 최대 8byte |
|
BINARY_DOUBLE |
64비트 부동소수점 수 / 최대 8byte |
|
날자타입
|
DATE |
BC 4712년 1월 1일~ 9999년 12월 31일) 연, 월, 일, 시, 분, 초 까지 입력 가능 |
TIMESTAMP |
연도, 월, 일, 시, 분, 초 + 밀리초까지 입력가능 |
|
LOB 데이터 타입
|
CLOB |
문자형 대용량 객체 고정길이와 가변길이 문자집합 지원 |
NCLOB |
유니코드를 지원하는 문자형 대용량 객체 |
|
BLOB |
이진형 대용량 객체 |
|
BFILE |
대용량 이진 파일에 대한 위치, 이름 저장 |
l MS SQL Server
https://developerking.tistory.com/6
다운 로드 : 8장 SQL정의및문법.pdf
프로그래밍을 제대로 공부해보고 싶다면, 다음 순서로 진행하시는 것을 권장합니다.
- 프로그래밍 애피타이저 시리즈
- 함께 보면 좋을 도서: 시작하는 사람들을 위한 델파이 프로그래밍
- 함께 보면 좋을 도서: 시작하는 사람들을 위한 델파이 프로그래밍
- [동영상] 데브기어 델파이 기초 시리즈
- 함께 보면 좋을 도서: 델파이 Begin...End
- 함께 보면 좋을 도서: 델파이 Begin...End
- [오프라인 강의] 델파이/C++빌더 기초 강화
- [오프라인 강의] 델파이/C++빌더 윈도우 프로그래밍