본문 바로가기
카테고리 없음

데이터베이스 SQL문 모음 | SQL문 정리

by 파우르네 2024. 2. 19.
반응형
구분   설명
DDL CREATE 생성
ALTER 변경
DROP 삭제
TRUNCATE 내용 삭제
DML SELECT 조회
INSERT 삽입(추가)
UPDATE 갱신(수정)
DELETE 삭제
DCL GRANT 권한 부여
REVOKE 권한 취소

 

 

 

1. SELECT

2. INSERT

3. UPDATE

4. DELETE

 


<SQL문>

• SQL문에서는 대·소문자를 구분하지 않는다.
• 여러 줄에 나누어 입력이 가능하며, 마지막에 ‘;’을 입력해 SQL문의 끝임을 알린다.

 

 

1. SELECT  

 

단순 조회 질의 - 기본 구문

SELECT [DISTINCT] 필드이름
FROM 테이블이름
[WHERE 조건식]

 


- SELECT문에 'DISTINCT'를 입력하면 검색의 결과가 중복되는 레코드는 검색 시 한 번만 표시.
- 필드이름 :

          - 테이블의 모든 필드를 검색할 경우 >> 필드 이름 대신 ‘*’를 입력.

          - 특정 필드들만 검색할 경우 >> 필드와 필드는 쉼표(,)로 구분하여 표시.
• WHERE 조건식 : 조건을 입력하여 특정 조건에 맞는 레코드만 검색할 때 사용.

 

 

 

 

정렬

SELECT [DISTINCT] 필드이름
FROM 테이블이름
[WHERE 조건식]
[ORDER BY 필드이름 정렬방식, …]

 

• ORDER BY문 : 특정 필드를 기준으로 레코드를 정렬하여 검색할 때 사용함

• 정렬 방식 :

    >> ‘ASC ’는 오름차순, ‘DESC ’는 내림차순

    >> 정렬 방식을 지정하지 않으면, 기본적으로 오름차순(ASC ) 정렬.

 

 

그룹 지정

SELECT [DISTINCT] 필드이름
FROM 테이블이름
[WHERE 조건식]
[GROUP BY 필드이름]
[HAVING 그룹조건식]

 

• GROUP BY절 : 특정 필드를 기준으로 그룹화하여 검색할 때 사용.
• HAVING은 그룹에 대한 조건을 지정할 때 사용한다.
• 일반적으로 GROUP BY는 SUM, AVG, COUNT 같은 그룹 함수와 함께 사용.
• WHERE절과 HAVING절의 차이)

   >> WHERE는 개개의 레코드에 조건을 지정.

   >> HAVING은 그룹에 대해 조건을 지정.

 

 

 

<조인>

2개 이상의 테이블에 나누어져 저장된 정보를 1개의 테이블처럼 사용하기 위해 연결하는 방법을 정의하는 것이다.
• 조인에 사용되는 기준 필드의 데이터 형식은 동일하거나 호환되어야 한다.
• 여러 개의 테이블을 조인할 경우 접근 속도의 향상을 위해 필드 이름 앞에 테이블 이름을 마침표(.)로 구분하여 사용한다.
• 보통 연결될 양 테이블 간에 관계가 설정되어 있어야 하지만, 관계가 설정되지 않아도 조인을 수행할 수는 있다.

 

• 내부 조인(Inner Join)

SELECT 필드이름
FROM 테이블이름1 INNER JOIN 테이블이름2
ON 테이블이름1.필드이름=테이블이름2.필드이름


- 가장 일반적인 조인의 형태.
- 관계가 설정된 두 테이블에서 조인된 필드가 일치하는 행만 질의에 포함.


•왼쪽 외부 조인(Left Join)

SELECT 필드이름
FROM 테이블이름1 LEFT JOIN 테이블이름2
ON 테이블이름1.필드이름=테이블이름2.필드이름


- 왼쪽 테이블에서는 모든 레코드를 포함하고, 오른쪽 테이블에서는 조인된 필드가 일치하는 레코드만 질의에 포함.


• 오른쪽 외부 조인(Right Join)

SELECT 필드이름
FROM 테이블이름1 RIGHT JOIN 테이블이름2
ON 테이블이름1.필드이름=테이블이름2.필드이름

 

- 오른쪽 테이블에서는 모든 레코드를 포함하고, 왼쪽 테이블에서는 조인된 필드가 일치하는 레코드만 질의에 포함.

 

<실행 질의>

 

2. 삽입(INSERT)문

 

•테이블에 레코드를 추가할 때 사용한다.
1)값을 직접 지정하여 추가할 수도 있고, 2)다른 테이블의 레코드를 추출하여 추가할 수도 있다.


1) 직접 입력하여 추가하기

INSERT INTO 테이블 이름(필드이름1, 필드이름2, …)
VALUES (필드값1, 필드값2, …)


2) 테이블로부터 추가하기

INSERT INTO 테이블 이름(필드이름1, 필드이름2, …)
SELECT 필드 이름
FROM 테이블 이름
WHERE 조건


- 여러 개의 레코드를 동시에 추가할 수 있지만 한 번에 하나의 테이블에만 추가가능.
- 레코드의 전체 필드를 추가할 경우에는 필드 이름 생략 가능.


3. 수정(UPDATE)문

UPDATE 테이블 이름
SET 필드이름1=값1, 필드이름2=값2 …
WHERE 조건


• 테이블의 필드 값을 변경할 때 사용.
• 조건을 지정하여 한 번에 여러 레코드의 필드 값을 변경 가능.
• 조건을 지정하지 않으면 테이블 내의 전체 레코드에 대해 변경이 이루어짐.

 

4. 삭제(DELETE)문

DELETE *
FROM 테이블 이름
WHERE 조건


•테이블의 레코드를 삭제할 때 사용.
• 조건을 지정하여 한 번에 여러 레코드 삭제 가능.
• 조건을 지정하지 않으면 테이블 내의 전체 레코드가 삭제됨.
• 삭제한 내용은 되돌릴 수 없음.

 

 

<주요 함수>

AVG(필드명) 필드의 평균을 구함
SUM(필드명) 필드의 합계를 구함
COUNT(필드명) 해당 필드를 기준으로 비어있지 않은 레코드 수를 구함
MIN(필드명) 필드에서의 최소값을 구함
MAX(필드명) 필드에서의 최대값을 구함
NOW( ) 현재 날짜와 시간을 표시함
LEN(필드명) 필드의 문자열 길이를 반환함
ROUND(필드명, 소수자릿수) 필드의 숫자를 지정한 자릿수로 반올림함
INSTR(문자열, 찾는 문자) 문자열에서 찾는 문자 또는 문자열의 위치를 구함
ISNULL(필드명) 필드의 값이 NULL인지를 확인함
IIF(조건, 실행1, 실행2) 조건이 참이면 실행1을, 거짓이면 실행2를 수행함
DATEPART(형식, 날짜) • 지정된 날짜에서 형식에 제시된 값만 표시함
• 형식은 연(year), 월(month), 일(day)로 구분됨
DATEADD(형식, 값, 날짜) 지정된 날짜에서 형식(연, 월, 일)을 지정한 값만큼 증가함
DATEDIFF(형식, 날짜1, 날짜2) 두 날짜 사이의 형식(연, 월, 일)의 경과값을 표시함
VAL(필드명) 문자열로 표시된 숫자를 숫자 값으로 반환함
LCASE(문자열) 문자열을 모두 소문자로 변환함
UCASE(문자열) 문자열을 모두 대문자로 변환함
LEFT(문자열, 자릿수) 왼쪽에서 주어진 자릿수만큼 추출함
MID(문자열, 시작값, 자릿수) 시작 위치에서 주어진 자릿수만큼 추출함
RIGHT(문자열, 자릿수) 오른쪽에서 주어진 자릿수만큼 추출함
DATE( ) 현재 날짜를 표시함
TIME( ) 현재 시간을 표시함
WEEKDAY(날짜) 지정된 날짜의 요일에 해당하는 숫자를 표시함
DATEVALUE(날짜) 텍스트 형식의 날짜를 일련번호로 변환함
YEAR(날짜) 지정된 날짜에서 연도만 표시함
MONTH(날짜) 지정된 날짜에서 월만 표시함
DAY(날짜) 지정된 날짜에서 일만 표시함
HOUR(시간) 지정된 시간에서 시만 표시함
MINUTE(시간) 지정된 시간에서 분만 표시함
SECOND(시간) 지정된 시간에서 초만 표시함
MONTHNAME(인수) 지정한 인수를 월을 나타내는 문자열로 반환함
DATESERIAL(연도, 월, 일) 지정된 연도, 월, 일에 해당하는 값을 날짜형식으로 반환함
TIMESERIAL(시, 분, 초) 지정된 시, 분, 초에 해당하는 값을 시간형식으로 반환함
TIMEVALUE(시간) 텍스트 형식의 시간을 일련번호로 변환함
WEEKDAYNAME(요일 번호) 요일 번호에 해당하는 요일명을 반환함
STRREVERSE(문자열) 지정한 문자열을 역순으로 정렬한 문자열을 반환함

 

( AVG, SUM, COUNT, MIN, MAX는 그룹함수)

 

<AS문>
- 필드 이름이나 테이블 이름에 별명(Alias)을 지정할 때 사용.
- 계산식을 이용한 질의문에서 필드명을 지정할 때 효율적.
 ex) SELECT (계산식) AS 별명 FROM 테이블이름;
→ (계산식)의 값이 필드명 '별명’으로 출력.
+ 질의문에 함수나 수식이 사용된 경우 별도의 필드명을 지정하지 않으면 ‘Expr’로 시작하는 임의의 필드명이 생성됨.

 

• 테이블명에 별명을 사용할 경우 AS문을 생략 가능.
 SELECT A.* FROM 테이블이름 A;
→ 테이블을 ‘A’이란 이름으로 사용.
• 테이블명에 별명을 지정했을 경우 데이터 검색 시 원래의 테이블 이름은 사용할 수 없음.

 

 

IN • 필드의 값이 IN 연산자의 인수로 지정된 값과 같은 레코드만 검색하는 것으로, OR 연산자를 수행한 결과와 같음
• 문법 : WHERE 필드 또는 필드를 나타내는 식 IN(값1, 값2, …)
Between • 필드의 값이 Between 연산자의 범위로 지정된 값 사이에 포함되는 레코드만 검색하는 것으로, AND 연산자를 수행한 결과와 같음
• 문법 : WH E R E 필드 또는 필드를 나타내는 식
BETWEEN 값1 AND 값2
LIKE • 대표 문자를 이용해 필드의 값이 패턴과 일치하는 레코드만 검색.
• 문법 : WHERE 필드 또는 필드를 나타내는 식 LIKE ‘문자 패턴’
NOT • 필드의 값이 NOT 다음에 기술한 연산자의 결과에 포함되지 않는 레코드만 검색.
• 문법 : WHERE 필드 또는 필드를 나타내는 식 NOT 다른 연산
하위 질의 • 선택 질의(SELECT) 혹은 실행 질의(INSERT, UPDATE , DELETE) 안에 작성하는 SELECT문
• 하위 질의 내에 또 다른 하위 질의를 만들 수 있음
• 하위 질의를 기본 질의에 IN 연산자로 연결하면, 하위질의의 결과가 기본 질의의 조건으로 사용됨
• SELECT문의 필드 목록이나 WHERE 또는 HAVING절에서 식 대신에 하위 쿼리를 사용가능.

 

 

<대표 문자>
• * 또는 % : 모든 문자
• ? 또는 _ : 한 자리 문자
• # : 한 자리 숫자

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

댓글