본문 바로가기
Be Smart/SQL

SQL 기본 쿼리문 정리

by 반월하 2021. 8. 3.
728x90

SQL -> Structure Query Language (구조화된 Query 언어)

 

DB 쿼리문 예시:

SELECT * // *은 모든 칼럼을 선택하라.

FROM student // student열에서

WHERE grade = '3학년' // grade = '3학년'인 데이터 들을 선택

 

SQL 명령어중 중요한 것

 

SELECT - 데이터베이스로부터 데이터를 추출

UPDATE - 데이터베이스의 데이터를 갱신

DELETE - 데이터 베이스로부터 데이터를 삭제

INSERT INTO - 데이터베이스로 새로운 데이터를 삽입

CREATE DATABASE - 새로운 데이터베이스를 생성

ALTER DATABASE - 데이터베이스를 수정

CREATE TABLE - 새로운 테이블을 생성

ALTER TABLE - 테이블을 수정

DROP TABLE - 테이블을 삭제

CREATE INDEX - 검색 키(search key) 같은 인덱스를 생성

DROP INDEX - 인덱스를 삭제

 

* SELECT 구문

- SELECT 구문은 데이터베이스로부터 데이터를 선택하기 위해 사용된다.

- 반환된 데이터는 result-set이라고 불리는 result table에 저장된다.

- 모든 필드를 선택하고 싶다면 '*'을 이용한다.

 

모든 열을 선택할 때에는 '*'

SELECT JOB, AGE

FROM COUNTRY;

 

-- COUNTRY 테이블로 부터 가져온 결과 예시

TEACHER   32

BUTCHER   27

POST OFFICER 30

SINGER  21

POLICE OFFICER 29

 

* 원하는 열에서 중복된 데이터를 제외하고 필터링하고 싶을 때는 'DISTINCT'를 사용한다.

-- 중복되는 country를 제외하고 필터링

SELECT DISTINCT Country

FROM Customers;

 

The SQL WHERE 구문

- WHERE은 기록을 필터하는데 사용된다.

- WHERE은 특정한 상태를 만족하는 기록들만 추출하는 데 사용된다.

 

-- COUNTRY 열에서는 MEXICO 만 해당하는 데이터를 필터링하는 경우

SELECT *

FROM CUSTOMERS

WHERE COUNTRY = 'MEXICO';

 

SQL은 텍스트 값을 감싸는 홑따옴표가 요구된다. (대부분은 큰따옴표도 가능)

숫자는 따옴표로 감싸면 안된다.

 

SELECT * FROM Customers

WHERE CustomerID=1;

 

WHERE에 쓰는 문구

* '=' : 같은 값만

* '>' : 더 큰 값만

* '<' : 더 작은 값만

* '>=': 크거나 같은 값만

* "<=": 작거나 같은 값만

*' <>': 같지 않은 값만 ( 버전에 따라!=)

*"BETWEEN" : 특정 범위

 

-- Products 테이블에서 Price 열의 값이 50에서 60 사이인 값만 필터링

SELECT *

FROM Products

WHERE Price BETWEEN 50 AND 60;

 

* 'LIKE' : 같은 패턴만

 

-- City 열에서 's'로 시작하는 값만

SELECT *

FROM Customers

WHERE City Like 's%';

 

SQL AND, OR 그리고 NOT 연산자

 

- WHERE 절은 AND, OR, NOT 연산자와 조합될 수 있다.

- AND, OR은 하나의 조건 이상에 기반한 레코드를 필터 하기 위해 사용된다.

    1. AND 연산자는 모든 조건들이 TRUE인 레코드들을 표시한다.

    2. OR 연산자는 어떤 조건이 TRUE인 레코드를 표시한다.

- NOT 연산자는 TRUE가 아닌 조건의 레코드를 표시한다.

 

예시

-- 'AND' : Country가 'Korea'이고 City가 'Seoul'인 값을 필터링할 경우

SELECT *

FROM Tourists

WHERE Country = 'Korea' AND City = 'Seoul';

 

-- 'OR' : City가 'Seoul' 이거나 'Incheon'인 값을 필터링

SELECT *

FROM Tourists

WHERE City = 'Seoul' OR City = 'Incheon';

 

-- 'NOT' : Country가 'Korea'가 아닌 값을 필터링

SELECT *

FROM Tourists

WHERE NOT Country = 'Korea';

 

-- 'AND'와 'OR'의 결합

SELECT *

FROM Tourists

WHERE Country = 'Korea' AND ( City = 'Seoul' OR City = 'Incheon');

 

-- 'NOT'과 'AND'의 결합

SELECT *

FROM Tourists

WHERE NOT COUNTRY = 'Korea' AND NOT COUNTRY = 'USA"

 

SQL ORDER BY 키워드

 

- ORDER BY 키워드는 오름차순 또는 내림차순으로 result-set을 정렬하기 위해 사용된다.

- 디폴트로 오름차순으로 정렬되며, 내림차순으로 설정할 때는 DESC 키워드를 사용한다.

 

 

--  Country 열의 값을 A-Z 순으로 정렬하여 필터링

SELECT *

FROM Tourists

ORDER BY Country;

 

-- Country 열의 값을 Z-A 순으로 정렬하여 필터링

SELECT *

FROM Tourists

ORDER BY Country DESC;

 

-- Country 열의 값을 A-Z 순으로 정렬하고 같은 Country 값이 있다면 TouristName을 A-Z 순으로 정렬

SELECT *

FROM Tourists

ORDER BY Country, TouristName;

 

-- Country 열의 값을 A-Z 순으로 정렬하고 같은 Country 값이 있다면 TouristName을 Z-A 순으로 정렬

SELECT *

FROM Tourists

ORDER BY Country ASC, TouristName DESC;

 

SQL INSERT INTO 구문

* INSERT INTO 구문은 테이블에 새로운 레코드를 삽입하기 위해 사용된다.

 

-- Tourists 테이블의 괄호 안에 속하는 열에 VALUES의 값들을 순서대로 삽입

INSERT INTO Tourists ( TouristName, ContactName, Address, City, PostalCode, Country)

VALUES ( 'Jeff', 'Johanson', 'Uljiro-3', 'Seoul', '12021', 'Korea');

 

Insert Data Only in Specified Columns

    * 특정 열에 데이터를 삽입하는 것도 가능하다.

 

-- 특정 열에 값들이 삽입되고, 열거되지 않은 열에는 'null' 자동 삽입

INSERT INTO Tourists ( TouristName, City, Country)

VALUES ('Johanson', 'Seoul', 'Korea');

 

SQL NULL VALUES

Null 값이란?

    * Null이 있는 필드는 값이 없는 필드이다.

    * 만약 테이블의 필드가 optional이라면 이는 새로운 레코드를 삽입하거나 해당 필드에 값을 추가하는 것이 없이

      갱신하는 것이 가능하다. 그리고 그 필드는 NULL 값으로 저장된다.

 

How to Test for NULL Values?

 

    * =, <, or <>와 같은 비교 연산자로 NULL 값을 테스트하는 것은 불가능하다.

    * 대신에 IS NULL, IS NOT NULL 연산자를 사용해야 한다.

 

-- 'IS NULL' : Address 열에 NULL 인 값을 필터링

SELECT TouristName, Contact Name, Address

FROM Tourists

WHERE Address IS NULL;

 

-- 'IS NOT NULL' : Address 열에 NULL이 아닌 값을 필터링

SELECT TouristName, ContactName, Address

FROM Tourists

WHERE Address IS NOT NULL;

 

SQL Wildcards

SQL Wildcard Characters

 

    * Wildcard Character는 문자열의 하나 이상의 문자를 대체하는 데 사용된다.

    * Wildcard Character는 SQL LIKE 연산자와 함께 사용된다.

    * LIKE 연산자는 열에서 특정한 패턴을 찾기 위해 WHERE 절에서 사용된다.

 

Wildcard Characters in SQL Server

 

1. '%' : 0 또는 그 이상의 문자를 표시한다.

ex) bl% : bl, black, blue, blob...

2. '-' : 하나의 문자를 표시한다.

ex) h_t : hot, hat, hit

3. '[]' : 브래킷 안의 문자 중 하나를 표시한다.

ex) h [oa] t : hot, hat    hit(x)

4. '!' : 브래킷 안에 없는 문자를 표시한다.

ex) h [! oa] t : hit  hot(x) hat(x)

5. '-' : 문자의 범위를 표시한다.

ex) c [a-c] t : cat cbt cct

 

실예시

'%'

-- City 열의 'ber'로 시작하는 값을 필터링

SELECT *

FROM Tourists

WHERE City LIKE 'ber%';

 

-- City 열의 'es'가 앞, 뒤, 앞뒤에 포함된 값을 필터링

SELECT *

FROM Tourists

WHERE City LIKE '% es%' ;

 

'_'

 

-- City 열에서 'L( ) n( ) on'에 해당하는 값을 필터링. ( ) 안에는 어떠한 문자 하나가 들어갈 수 있다.

SELECT *

FROM Tourists

WHERE City LIKE 'L_n_on';

 

'[ ]'

-- City 열에서 b, s, p로 시작하는 값을 필터링

SELECT *

FROM Tourists

WHERE City LIKE '[bsp]%';

 

-- City 열에서 a-c 사이의 문자로 시작하는 값을 필터링

SELECT * FROM Tourists

WHERE City LIKE '[a-c]%';

 

'[! ]'

-- City 열에서 b, s, p로 시작되지 않는 값을 필터링

SELECT *

FROM Tourists

WHERE City LIKE '[! bsp]%';

 

-- 또는 NOT LIKE 연산자 사용

SELECT *

FROM Tourists

WHERE City NOT LIKE '[bsp]%';

 

SQL Aliases

    * SQL alias는 테이블, 테이블의 열에 임시로 이름을 주는 데 사용된다.

    * allias는 더 읽기 쉬운 이름을 만드는 데 사용된다.

    * 하나의 allias는 쿼리가 지속되는 동안만 존재한다.

 

-- TouristID => ID, TouristName => Tourist로 보이도록 필터링

SELECT TouristID AS ID, TouristName AS Tourist

FROM Tourists;

 

-- 공백이 있는 allias는 " " 또는 [ ]로 묶기

SELECT TouristName AS Tourist, ContactName AS [Contact Person]

FROM Tourits;

 

-- Address, PostalCode, City, Country를 묶어서 Address로 보이게 필터링 

SELECT CustomerName, CONCAT(Addresss, '. ', PostalCode, ', ', City, ' , ', Country) AS Address

FROM Customers;

 

-- Customers 테이블을 c, Orders 테이블을 o로 해서 각 테이블에서 필요한 열의 WHERE 절의 해당하는 값을 필터링

SELECT o.OrderID, o.OrderDate, c.CustomerName

FROM Customers AS c, Orders AS o

WHERE c.CustomerName = "Around the Horn" AND c.CustomerID = o.CustomerID;

 

 

728x90

'Be Smart > SQL' 카테고리의 다른 글

데이터베이스 프로그래밍  (0) 2021.09.14
SQL 고급  (0) 2021.09.13
SQL 기초 1  (0) 2021.09.10
SQL 문법 정리  (0) 2021.08.04
SQL 기본 쿼리문 정리-2  (0) 2021.08.03

댓글