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;
'개발일기 > Database' 카테고리의 다른 글
[MYSQL] 날짜, 시간 형식 지정 / 계산하기 (0) | 2023.02.13 |
---|---|
[DB] 관계형 데이터베이스(RDBMS)? 주요 용어 정리 (0) | 2022.04.14 |