SQL 편집하기
IT위키
편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.
최신판 | 당신의 편집 | ||
1번째 줄: | 1번째 줄: | ||
[[분류:데이터베이스]] | [[분류:데이터베이스]][[분류:정보처리기사]] | ||
[[분류:정보처리기사]] | |||
;Structured Query Language | ;Structured Query Language | ||
;[[관계형 데이터베이스]]의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어 | ;[[관계형 데이터베이스]]의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어 | ||
==역사== | == 역사 == | ||
* 관계형 데이터베이스의 튜플 해석 이론을 기반으로 만들어졌다. | |||
*관계형 데이터베이스의 튜플 해석 이론을 기반으로 만들어졌다. | * 1970년대 초 IBM의 도널드 D. 챔벌린과 레이먼드 F. 보이스가 개발하였다. | ||
*1970년대 초 IBM의 도널드 D. 챔벌린과 레이먼드 F. 보이스가 개발하였다. | * 현재는 대부분의 [[관계형 데이터베이스]] [[DBMS|시스템]]에서 표준으로 채택해 사용하고 있다. | ||
*현재는 대부분의 [[관계형 데이터베이스]] [[DBMS|시스템]]에서 표준으로 채택해 사용하고 있다. | |||
== 구분 == | |||
;SQL은 아래 3가지로 구분 가능 | |||
===데이터 정의 언어(DDL)=== | |||
;Data Definition Language | ;Data Definition Language | ||
* DB(Schema), Table, View, Index 등을 정의(생성·갱신·삭제)할 때 쓰인다. | |||
*DB(Schema), Table, View, Index 등을 정의(생성·갱신·삭제)할 때 쓰인다. | * 대표적인 명령: CREATE, ALTER, DROP | ||
*대표적인 명령: CREATE, ALTER, DROP | ===데이터 조작 언어(DML)=== | ||
=== | |||
;Data Manipulation Language | ;Data Manipulation Language | ||
* 테이블의 데이터를 조회하고 조작(삽입·갱신·삭제)할 때 쓰인다. | |||
*테이블의 데이터를 조회하고 조작(삽입·갱신·삭제)할 때 쓰인다. | * 대표적 명령: SELECT, INSERT, DELETE, UPDATE | ||
*대표적 명령: SELECT, INSERT, DELETE, UPDATE | ===데이터 제어 언어(DCL)=== | ||
=== | |||
;Data Control Language | ;Data Control Language | ||
* 데이터의 보안, 무결성, [[트랜잭션|트랜잭션 병행제어]] 등을 위해 쓰인다. | |||
* 대표적 명령: COMMIT, ROLLBACK, GRANT, REVOKE | |||
== 용법 == | |||
==용법== | |||
===데이터 정의 언어(DDL)=== | ===데이터 정의 언어(DDL)=== | ||
====CREATE 구문==== | ==== CREATE 구문 ==== | ||
;스키마, 도메인, 테이블, 뷰를 정의할 때 사용 | |||
;스키마, 도메인, 테이블, | |||
;스키마, 도메인, 테이블, | ==== ALTER 구문 ==== | ||
;스키마, 도메인, 테이블, 뷰를 수정할 때 사용 | |||
* 뷰 수정 | |||
** ALTER VIEW [대상 뷰] AS SELECT [대상 필드] FROM [대상 테이블] | |||
*뷰 삭제 | ==== DROP 구문 ==== | ||
**DROP VIEW [대상 뷰] | ;스키마, 도메인, 테이블, 뷰를 삭제할 때 사용 | ||
* 뷰 삭제 | |||
** DROP VIEW [대상 뷰] | |||
===데이터 조작 언어(DML)=== | ===데이터 조작 언어(DML)=== | ||
====SELECT 구문==== | ==== SELECT 구문 ==== | ||
;테이블의 데이터를 조회·검색할 때 사용 | ;테이블의 데이터를 조회·검색할 때 사용 | ||
* SELECT [조회할 속성] FROM [조회 대상 테이블] WHERE [조회 조건] | |||
* '''SELECT 조회할 속성''' | |||
** 속성을 따옴표로 나열하여서 적는다. | |||
*** SELECT 이름, 나이 FROM 학생 | |||
** 모든 속성에 대해 조회하려면 * 을 적는다. (* 는 'all'이라 읽음) | |||
*** SELECT * FROM 학생 ('셀렉트 올 프럼 학생' 이라고 읽음) | |||
* '''FROM 조회 대상 테이블''' | |||
** 조회 대상 테이블을 따옴표로 나열하여 적는다. | |||
* '''WHERE 조회 조건''' | |||
** 일치하는 조건을 찾을 때는 '''속성 = '값''''으로 적는다. | |||
*** ex) SELECT * FROM 학생 WHERE 이름 = '홍길동' | |||
** 크거나 작은 조건을 찾을 때는 '''>, <, <=, >='''와 같이 부등호를 사용한다. | |||
*** ex) SELECT * FROM 학생 WHERE 나이 > '11살' | |||
** 다름을 표현할 때는 '''!=''' 또는 '''<>''' 를 사용한다. | |||
*** ex) SELECT * FROM 학생 WHERE 나이 <> '11살' | |||
** 단, NULL이 아님을 표현 할 때는 ''''IS NOT NULL'''' 이라고 적는다. | |||
*** ex) SELECT * FROM 학생 WHERE 직업 IS NOT NULL | |||
** 비슷함을 표현할 때는 '''LIKE와 %'''를 사용한다. | |||
*** %는 WILD CARD로, %가 위치한 곳은 어떤 문자열도 올수 있다. | |||
*** ex) SELECT * FROM 학생 WHERE 이름 LIKE '홍% | |||
** 조건이 여러개일 때는 '''AND나 OR'''로 잇고 '''괄호'''를 사용할 수 있다. | |||
*** ex) SELECT * FROM 학생 WHERE 이름 = '홍길동' AND (나이 <= '19' OR 직업 = '학생') | |||
==== INSERT 구문 ==== | |||
====INSERT 구문==== | |||
;테이블의 데이터를 삽입할 때 사용 | ;테이블의 데이터를 삽입할 때 사용 | ||
==== DELETE 구문 ==== | |||
====DELETE 구문==== | |||
;테이블의 데이터를 삭제할 때 사용 | ;테이블의 데이터를 삭제할 때 사용 | ||
==== UPDATE 구문 ==== | |||
====UPDATE 구문==== | |||
;테이블의 데이터를 갱신할 때 사용 | ;테이블의 데이터를 갱신할 때 사용 | ||
* UPDATE [갱신 대상 테이블] SET [갱신할 속성] = [갱신 값] WHERE [검색 조건] | |||
*UPDATE [갱신 대상 테이블] SET [갱신할 속성] = [갱신 값] WHERE [검색 조건] | |||
===데이터 제어 언어(DCL)=== | ===데이터 제어 언어(DCL)=== | ||
====COMMIT==== | ==== COMMIT ==== | ||
====ROLLBACK==== | ==== ROLLBACK ==== | ||
==== GRANT ==== | |||
====GRANT==== | |||
;권한을 부여할 때 사용 | ;권한을 부여할 때 사용 | ||
* GRANT [행위] ON [대상] FROM [사용자] | |||
** ex) GRANT SELECT, INSERT, UPDATE dbname.* TO testuser@localhost identified by 'password' | |||
** ex) GRANT ALL PRIVILEGES ON *.* TO testuser@"%" identified by 'password' | |||
==== REVOKE ==== | |||
====REVOKE==== | |||
;권한을 회수할 때 사용 | ;권한을 회수할 때 사용 | ||
* REVOKE [행위] ON [대상] FROM [사용자] | |||
*REVOKE [행위] ON [대상] FROM [사용자] | ** ex) REVOKE SELECT, INSERT, UPDATE dbname.* FROM testuser@localhost | ||
**ex) REVOKE SELECT, INSERT, UPDATE dbname.* FROM testuser@localhost | ** ex) REVOKE ALL ON *.* FROM testuser@"%" | ||
**ex) REVOKE ALL ON *.* FROM testuser@"%" | |||