프로그래밍 입문

코스 전체목록

닫기

SQL

역사

SQL은 IBM에서 1970년대 초에 처음 개발하였다. 초기에는 SEQUEL(씨퀄:Structured English Query Language, 구조 영어 질의어)라는 이름으로 시작하였으며, IBM의 준 관계형 데이터베이스 관리 시스템에 저장된 데이터를 조작하고 수신하기 위해 고안되었다. 

SQL 구문

명령어 종류

데이터베이스 언어 SQL 문법의 종류는 다음 세 가지로 대별된다.

 

명령어 문법

데이터 정의 언어

  • CREATE (데이터베이스 개체 (테이블, 인덱스, 제약조건 등)의 생성)
  • DROP (데이터베이스 개체 삭제)
  • ALTER (데이터베이스 개체 정의 변경)

 

 

CREATE는 데이터베이스에서 객체(예, 테이블)를 생성한다. 예를 들어:

CREATE TABLE My_table(
 my_field1 INT,
 my_field2 VARCHAR(50),
 my_field3 DATE NOT NULL,
 PRIMARY KEY (my_field1, my_field2)
);
  • ALTER는 다양한 방법으로 현존하는 객체의 구조를 변경한다. 예를 들어, 현재의 테이블에 컬럼을 추가하거나 제한을 추가한다. 예를 들면:
ALTER TABLE My_table ADD my_field4 NUMBER(3) NOT NULL;
  • DROP은 데이터베이스에서 객체를 삭제하며, 보통 롤백을 통해 복원할 수 없다. 예를 들어:
DROP TABLE My_table;

 

데이터 조작 언어

  • INSERT INTO (행 데이터 또는 테이블 데이터의 삽입)
  • UPDATE ~ SET (데이터의 업데이트)
  • DELETE FROM (테이블에서 특정 행 삭제)
  • SELECT ~ FROM ~ WHERE (테이블 데이터의 검색 결과 집합의 취득)

 

데이터 제어 언어

  • GRANT (특정 데이터베이스 사용자에게 특정 작업을 수행 권한을 부여)
  • REVOKE (특정 데이터베이스 이용자로부터 이미 준 권한을 박탈 함.)
  • BEGIN (트랜잭션 시작)
  • COMMIT (트랜잭션의 실행)
  • ROLLBACK (트랜잭션 취소)
  • SAVEPOINT (무작위로 롤백 지점을 설정)
  • LOCK (테이블 등의 자원을 잠금)

연산자

연산자 설명
= 같음
<> 또는 != 같지 않음
> 보다 큼
< 보다 작음
>= 보다 크거나 같음
<= 보다 작거나 같음
BETWEEN 일정 범위 사이
LIKE 패턴 검색
IN 컬럼의 여러 가능한 값들을 지정

조건 표현

SQL은 case/when/then/else/end 과 같은 조건 분기 표현을 가지고 있다. 

CASE WHEN n > 0 THEN 'positive' WHEN n < 0 THEN 'negative' ELSE 'zero' END

 

자료형

SQL 테이블에서 각 컬럼은 컬럼이 포함하는 자료형(data type)을 선언한다. SQL은 다음과 같은 데이터형을 포함하고 있다.

문자열

  • CHARACTER(n) 또는 CHAR(n): 고정폭 n-문자열, (필요한만큼 공백으로 채워진다.)
  • CHARACTER VARYING(n) 또는 VARCHAR(n): 가변폭 문자열 (n 문자의 최대 크기를 가진)

  • INTEGER 와 SMALLINT
  • FLOATREAL 과 DOUBLE PRECISION
  • NUMERIC(precisionscale) 또는 DECIMAL(precisionscale)

예를 들어, 숫자 123.45는 5라는 precision(정밀도, 자리값)과 2라는 scale(소수점 이하 자릿수)을 포함하고 있다. precision은 전체 자리수를 나타내며 scale은 음이 아닌 정수이다. 0의 scale은 그 수가 정수임을 지시하는 숫자이다.  

날짜와 시간

  • DATE: 날짜 값 (예, 2011-05-03)
  • TIME: 시간 값 (예, 15:51:36). 시간 값은 보통 tick (100 nanoseconds)이다.
  • TIME WITH TIME ZONE or TIMETZTIME과 같지만, 해당 지역의 시간대 정보를 포함하고 있다.
  • TIMESTAMP: 이것은 DATE 와 TIME이 하나의 변수로 결합된 것이다. (예, 2011-05-03 15:51:36).
  • TIMESTAMP WITH TIME ZONE or TIMESTAMPTZTIMESTAMP와 동일하지만, 해당 지역의 시간대에 대한 상세 정보를 포함하고 있다.

 

댓글

댓글 본문
버전 관리
휴먼밸
현재 버전
선택 버전
graphittie 자세히 보기