Structured Query Language의 약어로 주로 관계형 데이터베이스에서 사용한다.
데이터베이스 전용 프로그래밍 언어이며, 데이터베이스에 쿼리를 보내 원하는 데이터를 가져오거나 삽입할 수 있다.
말그대로 구조화된 데이터에 조건을 달아 다루는 것이므로 데이터 구조가 고정되어야 하는 특징을 가진다.
데이터베이스 생성 접근 방법
CREATE DATABASE 데이터베이스 이름 //db생성
USE 데이터베이스 이름 //db접근
DESC 테이블이름 //db 안의 테이블에 접근
테이블 생성 방법
CREATE TABLE `content_category` (
`id` int PRIMARY KEY AUTO_INCREMENT,
`contentId` int NOT NULL,
FOREIGN KEY (`contentId`) REFERENCES `content` (`id`),
`categoryId` int NOT NULL,
FOREIGN KEY (`categoryId`) REFERENCES `category` (`id`)
);
데이터베이스 명령어는 많기 때문에 직접 문제를 풀어보면서 익히는게 효율적이라고 생각한다.
SELECT
FROM
WHERE
ORDER BY
DESC
LIMIT
DISTINCT
INNER JOIN
ORDER JOIN
연습자료 : https://www.w3schools.com/sql/sql_exercises.asp
SELECT * FROM user WHERE user.name
//user테이블 name 컬럼을 모두 조회
INSERT INTO user (name,email) VALUES ('hyeongeol','dlgusrjf@naver.com')
// user 테이블 name 컬럼에 hyeongeol, email 컬럼에 dlgusrjf@naver.com을 추가.
SELECT content.title, user.name FROM content
LEFT JOIN user ON user.id = content.userId
//content 테이블의 title 컬럼과 user 테이블의 name 컬럼을 조회한다. user 테이블의 name 컬럼이 없어도 title을 찾아야 한다.
SELECT content.title, user.name FROM content
LEFT JOIN user
ON user.id = content.userId
WHERE user.name IS NOT NULL
//content 테이블의 title 컬럼과 user 테이블의 name 컬럼을 조회한다. 단 user 테이블의 name이 NULL이 아닌 title만 찾아야 한다.
UPDATE content SET body = 'database is very easy' WHERE content.title = 'database sprint'
//content 테이블의 title 컬럼이 database sprint인 body 컬럼을 database is very easy로 수정한다.
INSERT INTO content (title,body,created_at,userId) VALUES ('k','kk',now(),'1')
ALTER TABLE CUSTOMER ADD createdDate DATETIME;
//CUSTOMER 테이블에 createdDate 열 추가, 형태는 datetime
ALTER TABLE CUSTOMER ADD isDeleted INT;
//CUSTOMER 테이블에 isDeleted 열 추가, 형태는 INT
SELECT *
FROM Orders
RIGHT JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;
SELECT *
FROM Orders
LEFT JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;
차이는 무엇일까?
관계형 데이터베이스는 엄격하게 정리된 데이터를 쿼리를 가지고 조회한다.
SELECT * FROM Items
고무신을 짚신으로 업데이트 하자
UPDATE Items SET name = "고무신" WHERE name = "짚신"
고무신을 지우자.
DELETE FROM Items WHERE name="고무신"
관계형 db에 대한 블로깅 추천
관계형 데이터 베이스는 고정된 스키마를 사용해야 한다.
스키마 : 테이블의 양식
테이블에서 기본키를 설정하는 방법
따로 id를 만들지 않고 두 가지 컬럼을 pk로 설정해서 기본키로 사용할 수 있다.
reference 키 참조
일대다
한 사람의 유저가 여러 주문(각 주문번호)을 생성할 수 있고
하나의 주문에는 하나의 유저(주문번호)만 주문할 수 있다.
다대다
하나의 주문에는 여러개의 상품이 담길 수 있다.
하나의 상품은 여러개 주문에 포함될 수 있다.
join을 하는 기준
user_id를 이용해 테이블을 합친다.
left , right join 구글링해서 정리하자!
SQL : 수직적확장에 유리
NOSQL : 수평적확장에 유리
어떤 서비스에는 어떤 데이터베이스가 쓰이는지 구글링 하고 정리하자.