본문 바로가기
DBMS

[sql ] 기초 쿼리 모음_STATEMENT

by code cleaner 2018. 5. 23.
반응형

sql 기초 모음

 

0. 기초 용어

- FIELD : COLUMN

- RECORD : ROW

                        - as(alis) : 별명, 테이블 혹은 field에 임시이름을 지정

SELECT column_name AS alias_name

FROM table_name;

SELECT column_name(s)

FROM table_name AS alias_name;

1. 데이터 조작어(DML:data Manipulation language)

- select: 데이터베이스에 들어 있는 데이터를 조회하거나 검색하기 위한 명령어

SELECT column1, column2, ...

FROM table_name; -- FIELD에 해당하는 RECORD를 불러옴

SELECT * FROM table_name; -- 모든 FIELDRECORD를 불러옴

- distict: 데이터의 중복을 배제함

SELECT DISTINCT column1, column2, ...

FROM table_name; -- 테이블에서 특정 FIELD를 기준으로 구별되는 값만 불러옴

SELECT COUNT(DISTINCT column1) FROM grade_table; -- 구별된 column1의 개수를 나타냄

- insert into: 데이터베이스 테이블에 새로운 행을 넣음

INSERT INTO table_name (column1, column2, column3, ...)

VALUES (value1, value2, value3, ...);

INSERT INTO table_name

VALUES (value1, value2, value3, ...);

INSERT INTO table2 한 테이블의 모든 열을 다른 테이블에 복사

SELECT * FROM table1

WHERE condition;

INSERT INTO table2 (column1, column2, column3, ...)

SELECT column1, column2, column3, ...

FROM table1

WHERE condition; - 한 테이블의 일부 열만 다른 테이블로 복사

- update: 데이터베이스 테이블에 데이터를 수정함

UPDATE table_name

SET column1=value1, column2=value2, ...

WHERE condition;

- delete: 데이터베이스 테이블에 RECORD를 삭제함

DELETE FROM grade_table

WHERE id=1009; -- id(필드)1009RECORD만 삭제

DELETE FROM grade_table RECORD 전체 삭제

- TRUNCATE TABLE : 테이블 자체는 삭제되지 않고 RECORD만 삭제

TRUNCATE TABLE table_name;

- where: 컬럼을 기준으로 특정조건(and/or), 비교, 논리

                                    - like ‘%문자%’: ‘문자가 포함된 데이터 보이기, ‘%문자_’: 오른쪽에서 두 번째 위치에 문자를 갖고 있는 데이터

SELECT column1, column2, ...

FROM table_name

WHERE columnN LIKE pattern;

                                    - in(‘문자1’, ‘문자2’) : 문자1 혹은 문자2인 데이터

SELECT column_name(s)

FROM table_name

WHERE column_name IN (value1, value2, ...);

SELECT column_name(s)

FROM table_name

WHERE column_name IN (SELECT STATEMENT);

                                - not in(‘문자1’, ‘문자2’) : 문자1 혹은 문자2가 아닌 데이터

                                - between : 특정 조건의 사이

column_name(s)

FROM table_name

WHERE column_name BETWEEN value1 AND value2;

                                - ‘=’: 동일 / ‘<>’|‘!=’: 동일하지 않음 등 연산부호 사용

                                - any : 서브쿼리 값 중 하나가 조건을 충족하면 TRUE 반환

SELECT column_name(s)

FROM table_name

WHERE column_name operator ANY

(SELECT column_name FROM table_name WHERE condition);

                                - all : 서브쿼리 값 모두가 조건을 충족해야 TRUE 반환

SELECT column_name(s)

FROM table_name

WHERE column_name operator ALL

(SELECT column_name FROM table_name WHERE condition);

                           - order by : 특정 기준으로 데이터를 보임, 여러 기준 동시 사용가능

                                - asc : 오름차순

                                - desc : 내림차순

                          - 집계함수

                                - sum: 총합

                                - avg : 평균

                                - min : 최소값

                                - max : 최대값

                                - count : 건수

                                - group by : 특정 기준으로 건수 계산

                                - having : 데이터 산출 값을 기준으로 나눌 때.

                                - null: null값이 포함된 데이터 확인

column_names

FROM table_name

WHERE column_name IS NULL; -- NULL이 있는 RECORD

column_names

FROM table_name

WHERE column_name IS NOT NULL; -- NULL이 아닌 RECORD

- isnull / IFNULL : NULL 대체값을 반환

SELECT isnull (column_name, 대체값) - null대체값으로 변경

FROM table_name

SELECT isnull (column_name, 대체값) + 500 null대체값으로 변경 후 500을 더함

FROM table_name

 

                            - LIMIT/TOP : 반환할 RECORD

SELECT column_name(s)

FROM table_name

WHERE condition

LIMIT number; -- CONDITION 기준으로 상위 RECORDNUMBER만큼 반환

SELECT * FROM grade_table

LIMIT 5 OFFSET 2;

SELECT * FROM grade_table

LIMIT 2,5; -2부터 5개 반환

SELECT TOP (NUMBER) column1, column2, ...

FROM table_name

                            - join

                                - (INNER) JOIN

SELECT column_name(s)

FROM table1

INNER JOIN table2 ON table1.column_name=table2.column_name;

                                - LEFT (OUTER) JOIN

SELECT column_name(s)

FROM table1

LEFT JOIN table2 ON table1.column_name=table2.column_name;

                                - RIGHT (OUTER) JOIN

SELECT column_name(s)

FROM table1

RIGHT JOIN table2 ON table1.column_name=table2.column_name;

                                - FULL (OUTER) JOIN

SELECT column_name(s)

FROM table1

FULL JOIN table2 ON table1.column_name=table2.column_name;

                                - SELF JOIN : 하나의 테이블을 여러 개로 설정하여 JOIN.

SELECT column_name(s)

FROM table1 T1, table1 T2

WHERE condition;

- JOIN EXPLAIN


 

- UNION : 두 개 이상의 SELECT 문에 대한 결과집합(RESULT-SET)을 결합 사용

(조건1: UNION 내의 SELECT 문은 동일한 수의 RECORD를 가져야 함)

(조건2: RECORD는 비슷한 데이터 형식을 가져야 함)

(조건3: SELECT 문의 RECORD는 같은 순서로 있어야 함)

SELECT column_name(s) FROM table1

UNION 구별되는(DISTINCT) 값만 선택

SELECT column_name(s) FROM table2;

SELECT column_name(s) FROM table1

UNION ALL RECORD의 중복 값도 선택

SELECT column_name(s) FROM table2;

                                   - GROUP BY : 결과집합(RESULT-SET)을 하나 이상의 열에 대해 그룹화하기 위해 사용하며 보통 집계합수와 함께 사용함

SELECT column_name(s)

FROM table_name

WHERE condition

GROUP BY column_name(s)

ORDER BY column_name(s);

- HAVING : WHERE절에 집계함수를 사용할 수 없기 때문에 사용

SELECT column_name(s)

FROM table_name

WHERE condition

GROUP BY column_name(s)

HAVING condition

ORDER BY column_name(s);

- ANY / ALL (WHERE 참조)

- EXIST : 서브쿼리(subquery)의 레코드 존재 여부 테스트 => 존재

SELECT column_name(s)

FROM table_name

WHERE EXISTS

(SELECT column_name FROM table_name WHERE condition);

 

2. 데이터 정의어(DDL: data definition language)

- create: 생성

- DATABASE

CREATE DATABASE databasename;

- TABLE

CREATE TABLE table_name (

column1 datatype,

column2 datatype,

column3 datatype,

..

); - 새로운 테이블 만들기

CREATE TABLE new_table_name AS

SELECT column1, column2, ...

FROM existing_table_name

WHERE ...; - 기존 테이블을 이용해서 새로운 테이블 만들기

- alter: 테이블 변경

- drop: 삭제

                                        - DATABASE

DROP DATABASE databasename;

     - TABLE

DROP TABLE Tablename;

- rename:

 

3. 데이터 제어어(DCL: data control language)

- grant: 사용자권한 지정

- revoke:

- savepoint:

4. 트랜잭션 제어어(TCL: transaction control language)

- commit:

- rollback:

 

sql statement :

데이터 조회: select 컬럼들 from 데이터셋 where 조건

예시: select * from data.dbo.dataset where 작성일 between 2000 and 2017

데이터 수정: update 테이블명 set 바꾸려는 내용(컬럼의 데이터) where 바꾸려는 데이터 조건

예시: update dataset set 작성일 = null where 작성일 = ‘null’

 

 

 

반응형