Databse
는 백엔드와 밀접하게 관련된 분야로 그것을 조작하기 위해서는 SQL
을 사용합니다. Django
에서는 이 SQL
을 ORM
이 역할을 해주고 있지만 SQL
을 이해하는 것이 도움이 된다고 합니다. 최근 공부하고 있는 데이터베이스의 기본적인 특성과 새로 알게된 SQL
구문들을 정리해보려고 합니다.
Data
는 컴퓨터 안에 기록되어 있는 숫자를 의미하고, 이러한 데이터의 집합을 Database
라고 합니다. 컴퓨터 안에 기록되는 것을 모두 데이터베이스라고 할 수 있습니다. 이런 Database
를 관리하는 소프트웨어가 DBMS
라고 합니다. DBMS
를 통해서 우리는 데이터를 참조, 추가, 삭제, 갱신 등의 행위를 할 수 있습니다.
하지만 DBMS
만 있으면 되는 것이 아니라 SQL
이 또 필요합니다. SQL
은 DBMS
와 대화하기 위한 언어라고 생각하면 됩니다.
SQL
는 대화하기 위한 언어라고 했죠. IBM에서 개발한 SEQUEL이라는 관계형 데이터베이스 조작용 언어를 기반으로 만들어진 SQL
의 명령은 세가지로 나눌 수 있습니다.
데이터 베이스 객체
를 생성하거나 삭제한다.
트랜잭션
: 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위
SELECT
SELECT * FROM users;
SELECT
는 DML
에 속하는 명령으로 자주 사용합니다. SELECT
로 데이터베이스의 데이터를 읽어올 수 있습니다. *
는 애스터리크스라고 부르며 모든 열을 의미하는 메타 문자입니다. 위의 명령어는 users
테이블의 모든 열을 읽어옵니다.
SELECT와 FROM이 구를 결정하는 예약어입니다.
DESC
DESC posts;
DESC
는 테이블 구조를 참조하는 명령어입니다. 테이블에 어떤 열이 있는지 확인할 때 사용합니다.
Field | Type | NULL | Key | Default | Extra |
---|---|---|---|---|---|
id | int | NO | PRI | NULL | auto_increcment |
title | varchar(150) | NO | NULL | ||
content | longtext | NO | NULL | ||
writer_id | int | NO | NULL |
DESC
는 위의 표처럼 출력합니다. Type
에는 여러 종류의 자료형이 들어갑니다.
WHERE
SELECT * FROM posts WHERE id = 6;
SELECT
는 열을 선택하는 구라면 WHERE
는 행을 선택하는 구입니다. 위의 명령어는 id
가 6
인 행의 모든 열을 가져오게 됩니다. id = 6
은 조건식으로 비교한 결괏값이 참인지 거짓인지를 반환합니다. 서로 다를때는 <>
를 사용합니다.
꼭 비교하는 것이 정수일 필요는 없습니다. WHERE name='jang'
처럼 문자열을 검색할 수도 있습니다.
LIKE
SELECT * FROM posts WHERE content LIKE 'Ca%'
LIKE
는 부분 검색을 하는 술어입니다. %
를 앞이나 뒤에 붙여서 사용하게 됩니다. 위의 명령어는 전방 일치로 Ca
로 시작하는 content
가 있는 행만 가져옵니다.
ORDER BY
SELECT * FROM users ORDER BY age ASC;
ORDER BY
는 검색 결과의 행 순서를 바꿔줍니다. 오름차순, 또는 내림차순으로 정렬해줍니다.
정수형, 날짜형, 문자열 데이터 모두 대소관계
를 판별해서 정렬해줍니다.