SQL(Structured Query Language)

SQL은 관계형 데이터베이스 시스템(RDBMS)에서 데이터 관리를 위해 설계된 특수한 목적을 가진 언어입니다.

데이터베이스 스키마 생성 및 수정, 자료의 검색 및 관리 등의 작업을 수행합니다.

 

 

종류

  • DDL(Data Definition Language) - 데이터 정의 언어
    • 관계형 데이터베이스의 구조(스키마, 테이블)를 정의하기 위한 명령어
    • ex) CREATE, DROP, ALTER
  • DML(Data Manipulation Language) - 데이터 조작 언어
    • 데이터를 저장, 조회, 수정, 삭제 등을 하기 위한 명령어
    • ex) INSERT, SELECT, UPDATE, DELETE
  • DCL(Data Control Language) - 데이터 제어 언어
    • 데이터베이스 사용자의 권한 제어를 위해 사용하는 명령어
    • ex) COMMIT, REVOKE, GRANT, ROLLBACK

 

Table 생성, 수정 및 삭제 (DDL)

  • CREATE
CREATE TABLE table (
	column1 datatype PRIMARY KEY,
    column2 datatype,
    ...
);


ex)
CREATE TABLE my_table(
	id INTEGER PRIMARY KEY,
    name TEXT NOT NULL,
    age INT NOT NULL,
    ...
)

SQL은 세미콜론(;)까지가 명령문입니다.

NOT NULL은 빈 데이터를 허용하지 않는다는 의미입니다.

 

  • DELETE
DROP TABLE my_table;

 

  • ALTER
-- 테이블 이름 변경 --
ALTER TABLE previous_table_name
RENAME TO new_table_name;

-- 새로운 컬럼 추가 --
ALTER TABLE my_table
ADD COLUMN new_column datatype;

 

 

데이터 추가, 조회, 수정 및 삭제 (DML)

  • INSERT
INSERT INTO table (column1, column2, ...)
VALUES(value1, value2);
  • SELECT
(1) 테이블의 모든 컬럼 조회
SELECT * FROM table;

(2) 특정 위치의 컬럼 가져오기
SELECT column1, column2
FROM table
LIMIT num OFFSET num;

(3) where 조건에 맞는 컬럼 조회
SELECT column1, column2
FROM table
WHERE column=value;

(4) 중복없이 컬럼 조회
SELECT DISTINCT column FROM table;
  • DELETE
DELETE FROM table
WHERE condition;

ex)
DELETE FROM cities
WHERE name='서울';
  • UPDATE
UPDATE table
SET column1=value1, column2=value2, ...
WHERE condition;

ex)
UPDATE cities
SET name='부산'
WHERE name='서울';

 

 

몇 가지 유용한 문법

  • COUNT (레코드 개수)
SELECT COUNT(*) FROM users;
  • AVG (레코드 평균값)
SELECT AVG(age)
FROM users
WHERE age >= 30;
  • MAX, MIN, SUM, etc.

 

WILDCARDS (LIKE)

문자를 대체하는 와일드카드를 이용하여 값과 비교합니다.
  • _ (반드시 한 개의 문자)
-- 20대인 사람들만 가져올 때 --
SELECT *
FROM users
WHERE age LIKE '2_';
  • % (0개 이상의 문자열)
-- 지역번호가 02인 사람만 가져올 때 --
SELECT *
FROM users
WHERE phone LIKE '02-%';
  • 두 개의 와일드카드를 여러번 사용, 조합하여 사용할 수도 있습니다.
-- 전화번호가 010으로 시작하고 999로 끝나는 사람들 조회 --
SELECT * FROM users
WHERE phone LIKE '010-%-_999';

 

ORDER BY (정렬)

데이터를 기준에 따라 정렬합니다.
SELECT columns FROM table
ORDER BY column1, column2 ASC | DESC;
  • ASC : 오름차순, Default
-- 나이 오름차순 정렬 상위 10명 조회 --
SELECT * 
FROM users
ORDER BY age ASC
LIMIT 10;
  • DESC : 내림차순
-- 나이 내림차순 이름 오름차순 상위 10명 조회 --
SELECT * FROM users ORDER BY age DESC, name ASC LIMIT 10;

 

 

GROUP BY (요약)

SELECT column1, aggregate_function(column_2)
FROM table
GROUP BY column1, column2;

ex)
-- 각 성씨가 몇 명인지 조회 --
SELECT last_name, COUNT(*)
FROM users
GROUP BY last_name;

 

+ Recent posts