SQL 편집하기

IT위키

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.

편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.

최신판 당신의 편집
1번째 줄: 1번째 줄:
[[분류:데이터베이스]]
[[분류:데이터베이스]][[분류:정보처리기사]]
[[분류:정보처리기사]]
 
;Structured Query Language
;Structured Query Language
;[[관계형 데이터베이스]]의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어
;[[관계형 데이터베이스]]의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어


==역사==
== 역사 ==
 
* 관계형 데이터베이스의 튜플 해석 이론을 기반으로 만들어졌다.
*관계형 데이터베이스의 튜플 해석 이론을 기반으로 만들어졌다.
* 1970년대 초 IBM의 도널드 D. 챔벌린과 레이먼드 F. 보이스가 개발하였다.
*1970년대 초 IBM의 도널드 D. 챔벌린과 레이먼드 F. 보이스가 개발하였다.
* 현재는 대부분의 [[관계형 데이터베이스]] [[DBMS|시스템]]에서 표준으로 채택해 사용하고 있다.
*현재는 대부분의 [[관계형 데이터베이스]] [[DBMS|시스템]]에서 표준으로 채택해 사용하고 있다.
*ANSI와 ISO의 공동작업에 의해 지속적으로 발전하고 있다.
**SQL-86, SQL-89, SQL-92, SQL-99, SQL-2003, SQL-2011 등
**그러나 대부분의 DBMS는 표준을 정확히 따르기 보단 자사 특유의 문법을 같이 활용한다.
 
==특징==
 
*비절차적 언어
*관계형 언어
 
==구분==
 
;SQL은 DDL, DML, DCL 3가지로 구분 가능
;[[파일:SQL 분류.png|700x700픽셀]]
 
===[[DDL|데이터 정의 언어(DDL)]]===


== 구분 ==
;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)===
 
===[[DML|데이터 조작 언어(DML)]]===
 
;Data Manipulation Language
;Data Manipulation Language
 
* 테이블의 데이터를 조회하고 조작(삽입·갱신·삭제)할 때 쓰인다.
*테이블의 데이터를 조회하고 조작(삽입·갱신·삭제)할 때 쓰인다.
* 대표적 명령: SELECT, INSERT, DELETE, UPDATE
*대표적 명령: SELECT, INSERT, DELETE, UPDATE
===데이터 제어 언어(DCL)===
 
===[[DCL|데이터 제어 언어(DCL)]]===
 
;Data Control Language
;Data Control Language
* 데이터의 보안, 무결성, [[트랜잭션|트랜잭션 병행제어]] 등을 위해 쓰인다.
* 대표적 명령: COMMIT, ROLLBACK, GRANT, REVOKE


*데이터의 보안, 무결성, [[트랜잭션|트랜잭션 병행제어]] 등을 위해 쓰인다.
== 용법 ==
*대표적 명령: COMMIT, ROLLBACK, GRANT, REVOKE
=== SELECT 구문 ===
 
* SELECT [조회할 속성] FROM [조회 대상] WHERE [조회 조건]
==용법==
* '''SELECT 조회할 속성'''
===데이터 정의 언어(DDL)===
** 속성을 따옴표로 나열하여서 적는다.
====CREATE 구문====
*** SELECT 이름, 나이 FROM 학생
 
** 모든 속성에 대해 조회하려면 * 을 적는다. (* 는 'all'이라 읽음)
;스키마, 도메인, 테이블, 뷰, 인덱스를 정의할 때 사용
*** SELECT * FROM 학생 ('셀렉트 올 프럼 학생' 이라고 읽음)
;*인덱스 생성
* '''FROM 조회 대상'''
;**CREATE INDEX index_name ON table_name(column1, column2,...);
** 조회 대상 테이블을 따옴표로 나열하여 적는다.
 
* '''WHERE 조회 조건'''
====ALTER 구문====
** 일치하는 조건을 찾을 때는 '''속성 = '값''''으로 적는다.
 
*** ex) SELECT * FROM 학생 WHERE 이름 = '홍길동'
;스키마, 도메인, 테이블, 뷰, 인덱스를 수정할 때 사용
** 크거나 작은 조건을 찾을 때는 '''>, <, <=, >='''와 같이 부등호를 사용한다.
 
*** ex) SELECT * FROM 학생 WHERE 나이 > '11살'
*뷰 수정
** 다름을 표현할 때는 '''!=''' 또는 '''<>''' 를 사용한다.
**ALTER VIEW [대상 뷰] AS SELECT [대상 필드] FROM [대상 테이블]
*** ex) SELECT * FROM 학생 WHERE 나이 <> '11살'
 
** 단, NULL이 아님을 표현 할 때는 ''''IS NOT NULL'''' 이라고 적는다.
====DROP 구문====
*** ex) SELECT * FROM 학생 WHERE 직업 IS NOT NULL
 
** 비슷함을 표현할 때는 LIKE와 %를 사용한다.
;스키마, 도메인, 테이블, 뷰, 인덱스를 삭제할 때 사용
*** %는 WILD CARD로, %가 위치한 곳은 어떤 문자열도 올수 있다.
 
*** ex) SELECT * FROM 학생 WHERE 이름 LIKE '홍%
*뷰 삭제
** 조건이 여러개일 때는 '''AND나 OR'''로 잇고 '''괄호'''를 사용할 수 있다.
**DROP VIEW [대상 뷰]
*** ex) SELECT * FROM 학생 WHERE 이름 = '홍길동' AND (나이 <= '19' OR 직업 = '학생')
 
===데이터 조작 언어(DML)===
====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이 아님을 표현 할 때는 '<nowiki/>'''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 구문====
 
;테이블의 데이터를 삽입할 때 사용
 
====DELETE 구문====
 
;테이블의 데이터를 삭제할 때 사용
 
====UPDATE 구문====
 
;테이블의 데이터를 갱신할 때 사용
 
*UPDATE [갱신 대상 테이블] SET [갱신할 속성] = [갱신 값] WHERE [검색 조건]
 
===데이터 제어 언어(DCL)===
====COMMIT====
====ROLLBACK====
'''commit 을 취소 하기 위해 사용'''
 
이전에 실행된 commit 을 취소하고 commit 이전 상태로 트랜잭션을 되돌리는것
 
====GRANT====
 
;권한을 부여할 때 사용
 
*GRANT [행위] ON [대상] TO [사용자]
**ex) GRANT SELECT, INSERT, UPDATE dbname.* TO testuser@localhost identified by 'password'
**ex) GRANT ALL PRIVILEGES ON *.* TO testuser@"%" identified by 'password'
 
====REVOKE====
 
;권한을 회수할 때 사용
 
*REVOKE [행위] ON [대상] FROM [사용자]
**ex) REVOKE SELECT, INSERT, UPDATE dbname.* FROM testuser@localhost
**ex) REVOKE ALL ON *.* FROM testuser@"%"
 
==함수==
 
===집계 함수===
{| class="wikitable"
!종류
!의미
|-
|SUM
|대상 칼럼의 모든 값을 더함
|-
|AVG
|대상 칼럼의 평균을 계산
|-
|MIN
|대상 칼럼의 값 중 가장 작은 값 선택
|-
|MAX
|대상 칼럼의 값 중 가장 큰 값 선택
|-
|COUNT
|대상 칼럼의 값의 갯수를 카운트
|}
 
===대소문자 변환함수===
{| class="wikitable"
!종류
!의미
!사용예
|-
|INITCAP
|문자열의 첫번째 문자만 대문자로 변환
|INITCAP(student) -> Student
|-
|LOWER
|문자열 전체를 소문자로 변환
|LOWER(ABC) -> abc
|-
|UPPER
|문자열 전체를 대문자로 변환
|UPPER(abc) -> ABC
|}
 
===문자열 길이 반환함수===
{| class="wikitable"
!종류
!의미
!사용예
|-
|LENGTH
|문자열의 길이를 반환
|LENGTH('홍길동') -> 3
|-
|LENGTHB
|문자열의 바이트 수를 반환
|LENGTHB('홍길동') -> 6
|}
 
===문자 조작 함수===
{| class="wikitable"
!종류
!의미
!사용예
|-
|CONCAT
|<nowiki>두 문자열을 결합. ||와 동일</nowiki>
|CONCAT('sql','plus') -> sqlplus
|-
|SUBSTR
|특정 문자 또는 문자열 일부를 추출
|SUBSTR('SQL*PLUS',5,4) -> PLUS
|-
|INSTR
|특정 문자가 출현하는 첫번째 위치 반환
|INSTR('SQL*Plus','*',1,1) -> 4
|-
|LPAD
|오른쪽 정렬 후 왼쪽에 지정한 문자 삽입
|LPAD('sql',5,'*') -> **sql
|-
|RPAD
|왼쪽 정렬 후 오른쪽에 지정한 문자 삽입
|RPAD('sql',5,'*') -> sql**
|-
|LTRIM
|왼쪽의 지정 문자를 삭제
|LTRIM('*sql','*') -> sql
|-
|RTRIM
|오른쪽의 지정 문자를 삭제
|RTRIM('sql*','*') -> sql
|}
 
===숫자 함수===
{| class="wikitable"
!종류
!의미
!사용예
|-
|ROUND
|지정한 자리 이하에서 반올림
|ROUND(123.17,1) -> 123.2
|-
|TRUNC
|지정한 자리 이하에서 절삭(버림)
|TRUNC(123.17,1) -> 123.1
|-
|MOD(m, n)
|m을 n으로 나눈 나머지 값
|MOD(12,10) -> 2
|-
|CEIL
|지정한 값보다 큰 수 중에서 가장 작은 정수
|CEIL(123.17) -> 124
|-
|FLOOR
|지정한 값보다 작은 수 중에서 가장 큰 정수
|FLOOR(123.17) -> 123
|}
 
===날짜 함수===
{| class="wikitable"
!종류
!의미
!결과
|-
|SYSDATE
|시스템의 현재 날짜
|날짜
|-
|MONTHS_BETWEEN
|날짜와 날짜 사이의 개월을 계산
|숫자
|-
|ADD_MONTHS
|날짜에 개월을 더한 날짜 계산
|날짜
|-
|NEXT_DAY
|날짜 후의 첫 월요일 날짜를 계산
|날짜
|-
|LAST_DAY
|월의 마지막 날짜를 계산
|날짜
|-
|ROUND
|날짜를 반올림
|날짜
|-
|TRUNC
|날짜를 절삭
|날짜
|}


===형변환===
=== INSERT 구문 ===
{| class="wikitable"
=== DELETE 구문 ===
!종류
=== UPDATE 구문 ===
!의미
!사용예
!결과
|-
|TO_CHAR
|숫자, 날짜를 문자타입으로
|TO_CHAR('07-12', 'YYYY-MM')
|2007-12
|-
|TO_NUMBER
|문자열을 숫자타입으로
|TO_NUMBER('1000')
|1,000
|-
|TO_DATE
|문자열을 날짜타입으로
|TO_DATE('05/03', 'YYYY-MM')
|0005-03
|}
<br />
IT위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는 IT위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다. 저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소 편집 도움말 (새 창에서 열림)
원본 주소 "https://itwiki.kr/w/SQL"