: SQL(Structured Query Language)은 MySQL 같은 관계형 데이터베이스에서 데이터를 읽거나 생성 및 수정하기 위해 사용하는 언어이다.
니콜라스 曰: CRUD 만 제대로 알고 있어도 취업 가능하다.
SQL에는 여러 구문이 있으나 기본적으로 SELECT, INSERT, UPDATE, DELETE, 그리고 JOIN은 필수적으로 이해해야 한다.
: 관계형 데이터베이스 시스템에서 데이터를 읽어 들일 때 사용하는 SQL 구문이다.
아래는 SELECT 구문의 기본적인 문법이다.
SELECT
column1,
column2,
column3,
column4,
FROM tabe_name
users라는 테이블에서 id, name, age, gender 라는 칼럼 값을 읽고 싶다면 다음과 같이 SELECT 구문을 사용하면 된다.
SELECT
id,
name,
age,
gender,
FROM users
SELECT 구문은 WHERE 구문과 같이 사용하여 검색이나 필터의 기능 또한 구현할 수 있다.
users라는 테이블에서 이름이 Paul 인 사용자의 id, name, age, gender라는 칼럼 값을 읽고 싶다면 아래와 같이 구현한다.
SELECT
id,
name,
age,
gender
FROM users
WHERE name = "Paul"
: 관계형 데이터베이스 시스템에서 데이터를 생성할 때 사용한다.
기본적인 문법은 다음과 같다.
INSERT INTO table_name (
column1,
column2,
column3
) VALUES (
column1_value,
column2_value,
column3_value
)
만일 users 테이블에서 아래의 값을 생성해야 한다고 가정해 보자.
{
"id" : 1,
"name" : "Paul",
"age" : 35,
"gender" : "남자",
위의 데이터를 users 테이블에 생성하기 위해서는 다음과 같은 INSERT 구문을 사용할 수 있다.
INSERT INTO users (
id,
name,
age,
gender
) VALUES (
1,
"Paul",
35,
"남자"
)
만일 하나 이상의 데이터를 생성하고 싶다면 다음과 같이 INSERT 구문을 사용하면 된다.
INSERT INTO users (
id,
name,
age,
gender
) VALUES (
1,
"Paul",
35,
"남자"
), (
2,
"David"
28,
"남자"
), (
3,
"Jacob",
33,
"남자"
)
: 관계형 데이터베이스 시스템에서 데이터를 수정할 때 사용한다.
기본 문법은 다음과 같다.
UPDATE table_name SET column1 = value1 WHERE column2 = value2
앞서 봤듯이 UPDATE 구문은 주로 WHERE 구문과 같이 사용된다.
만약 users 테이블에 이름이 "David" 인 사용자의 나이를 25세로 수정해야 한다면
다음과 같이 UPDATE 구문을 사용하면 된다.
UPDATE users SET age = 25 WHERE name = "David"
: 관계형 데이터베이스 시스템에서 데이터를 삭제할 때 사용한다.
기본 문법은 다음과 같다.
DELETE FROM table_name WHERE column = value
UPDATE 구문과 마찬가지로 DELETE 구문도 주로 WHERE 구문과 같이 사용된다.
테이블에서 모든 로우를 지워야 하는 경우는 자주 있지 않으므로 DELETE 구문은 대부분 WHERE 구문과 같이 사용된다.
users 테이블에서 나이가 20세 이하인 사용자들을 삭제해야 한다고 하면 다음과 같이 사용할 수 있다.
DELETE FROM users WHERE age < 20
: 관계형 데이터베이스 시스템에서 데이터를 연결할 때 사용한다.
JOIN 구문의 기본적인 문법은 다음과 같다.
SELECT
table1.column1,
table2.column2
FROM table1
JOIN table2 ON table1.id = table2.table1.id
사용자의 이름을 users 테이블에서 읽어 들이고, 해당 사용자의 주소를 users_address라는 테이블에서 읽어 들인다면 다음과 같이 사용할 수 있다.
SELECT
users.name,
user_address.address
FROM users
JOIN user_address ON users.id = user_address.user_id