테이블의 관계의 구조를 생성하는데 사용되는 언어이다.
테이블 내의 데이터를 조회, 생성, 삭제, 수정하는데 사용되는 언어이다.
데이터의 사용 권한을 관리하는데 사용되는 언어이다.
권한의 종류
MySQL을 기준으로 작성되었습니다.
SELECT, INSERT, DELETE, UPDATE 주요 문법 이외에도 WHERE, JOIN과 같이 데이터베이스를 조작하는데 도움이 되는 문법이 존재한다.
테이블의 데이터를 조회한다.
--ORDERS 테이블의 모든 컬럼 조회
SELECT * FROM ORDERS;
--ORDERS 테이블 중 원하는 컬럼만 조회
SELECT ID, NAME FROM ORDERS;
중복된 값을 제외하고 조회한다.
SELECT DISTINCT COUNTRY
FROM Customers
;
테이블에 데이터를 생성한다.
--ORDERS 테이블에 데이터를 추가한다.
INSERT INTO ORDERS (ID, NAME, ORDER_INFO) VALUES('1', 'JHON', 'Chiken');
--컬럼의 순서를 맞춘다면 테이블을 컬럼명을 명시하지 않아도 된다.
INSERT INTO ORDERS VALUES('1', 'JOHN', 'Chiken');
테이블 내에 데이터를 삭제한다.
--ORDERS 테이블의 모든 데이터를 삭제한다.
DELETE FROM ORDERS;
--ORDERS 테이블의 ID가 1인 데이터를 삭제한다.
DELETE FROM ORDERS
WHERE ID = 1
;
테이블 내의 데이터를 수정한다.
--ORDERS 테이블의 모든 행에 대해 ORDER_INFO 컬럼의 데이터를 수정한다.
UPDATE ORDERS
SET ORDER_INFO = 'Pizza'
;
--ORDERS 테이블의 ID가 1인 행의 ORDER_INFO 컬럼의 데이터를 수정한다.
UPDATE ORDERS
SET ORDERS_INFO = 'Pizza'
WHERE ID = 1
;
명령어에 대한 조건을 설정한다.
--ORDERS의 ORDERS_INFO가 Pizza인 행만 조회한다.
SELECT *
FROM ORDERS
WHERE ORDERS_INFO = 'Pizza'
--ORDERS의 ORDERS ID가 10 이하인 행만 조회한다.
SELECT *
FROM ORDERS
WHERE ID <= 10
;
WHERE과 함께 사용할 수 있는 연산자는 아래와 같다.
WHERE 절과 함께 논리연산자를 사용할 수 있다.
--이름이 JHON이고 ORDERS_INFO가 Pizza인 데이터를 조회한다.
SELECT *
FROM ORDERS
WHERE NAME = 'JHON' AND
ORDERS_INFO = 'Pizza'
;
--이름이 JHON 또는 Mary인 데이터를 조회한다.
SELECT *
FROM ORDERS
WHERE NAME ='JHON' OR
NAME = 'MARY'
--이름이 JHON이 아닌 데이터를 조회한다.
SELECT *
FROM ORDERS
WHERE NOT NAME = 'JHON'
;
테이블의 데이터를 정렬해서 보여줄 수 있다.
--ORDERS 테이블을 ID 오름차순으로 정렬한다.
SELECT *
FROM ORDERS
ORDER BY ID
;
-- ORDERS 테이블을 ID 내림차순으로 정렬한다.
SELECT *
FROM ORDERS
ORDER BY ID DESC
;
데이터베이스의 null값은 필드가 비어있다는것을 의미한다. 그래서 <,>,such as와 같은 연산자는 사용이 불가능하고 IS NULL과 IS NOT NULL과 같은 연산자로 NULL값 유무를 판단할 수 있다.
--ORDER테이블의 ORDER_INFO가 NULL인 데이터를 조회한다.
SELECT *
FROM ORDERS
WHERE ORDERS_INFO IS NULL
;
--ORDER테이블의 ORDER_INFO가 NULL이 아닌 데이터를 조회한다.
SELECT *
FROM ORDERS
WHERE ORDERS_INFO IS NOT NULL
;
테이블의 데이터가 많이 존재할 때, 데이터의 일부분만 확인하고자 할때 사용된다.
ORDER BY와 함께 사용할 경우 상위 10개 또는 하위 10개 데이터를 조회하는 식으로 사용할 수 있다.
--ORDER 테이블의 PRICE가 가장 높은 10개의 데이터를 조회해라
SELECT *
FROM ORDERS
ORDER BY PRICE DESC
LIMIT 10
;
최솟값 또는 최댓값 그리고, 평균, 갯수, 합을 얻을 수 있다.
--PRICE가 가장 낮은 데이터를 출력한다.
SELECT MIN(PRICE)
FROM ORDERS
;
-- PRICE가 가장 높은 데이터를 출력한다
SELECT MAX(PRICE)
FROM ORDERS
;
검색 시 단어를 포함하여 검색할 수 있다.
--ORDERS_INFO에 P로 시작하는 단어를 검색한다.
SELECT *
FROM ORDERS
WHERE ORDERS_INFO LIKE 'p%'
;
이 외에도 조회하는데 도움이 되는 문법이 있다.
찾으려는 단어가 두개 이상일 때 IN을 사용한다.
--ORDERS_INFO가 Cheiken과 Pizza인 경우에 대해 조회한다.
SELECT *
FROM ORDERS
WHERE ORDERS_INFO IN ('Cheiken', 'Pizza')
;
특정 컬럼에 대해 범위를 두고 조회할 때 사용된다.
--ORDERS 테이블의 ID가 1이상 10이하인 데이터를 조회한다.
SELECT *
FROM ORDERS
WHERE ID BETWEEN 1 AND 10
;
테이블 또는 컬럼의 일시적인 별명을 만들어 주는데 사용한다.
--NAME을 NICKNAME으로 변경해서 출력한다.
SELECT o.ID, o.NAME AS NICKNAME, o.ORDERS_INFO
FROM ORDERS AS o
;
두 개의 테이블을 연관성이 있는 컬럼으로 묶어 조회한다.
--Table1과 Table2를 ID로 JOIN한다.
SELECT *
FROM TABLE1 i
INNER JOIN TABLE2 j
ON i.ID = j.ID
;
두 개의 SELECT 결과물을 합친다.
--TABLE1과 TABLE2의 NAME컬럼을 내림차순으로 조회한다.
SELECT NAME
FROM TABLE1
UNION
SELECT NAME
FROM TABLE2
ORDER BY NAME DESC
;
컬럼의 동일한 데이터를 묶고, 카운트와 같이 사용하여 동일 데이터 별 갯수를 계산할 수 있도록 도와준다.
SELECT COUNT(NAME)
FROM TABLE1
GROUP BY NAME
이 외에도 많은 sql 문법이 존재하며, 많은 문법들은 이 글을 작성하기 위해 참조한 글을 확인해보자