SQL 중간 정리

jun17114·2021년 1월 9일
1
post-thumbnail

SQL 중간 정리

Databse는 백엔드와 밀접하게 관련된 분야로 그것을 조작하기 위해서는 SQL을 사용합니다. Django에서는 이 SQLORM이 역할을 해주고 있지만 SQL을 이해하는 것이 도움이 된다고 합니다. 최근 공부하고 있는 데이터베이스의 기본적인 특성과 새로 알게된 SQL 구문들을 정리해보려고 합니다.

Database?

Data는 컴퓨터 안에 기록되어 있는 숫자를 의미하고, 이러한 데이터의 집합을 Database라고 합니다. 컴퓨터 안에 기록되는 것을 모두 데이터베이스라고 할 수 있습니다. 이런 Database를 관리하는 소프트웨어가 DBMS라고 합니다. DBMS를 통해서 우리는 데이터를 참조, 추가, 삭제, 갱신 등의 행위를 할 수 있습니다.

하지만 DBMS만 있으면 되는 것이 아니라 SQL이 또 필요합니다. SQLDBMS와 대화하기 위한 언어라고 생각하면 됩니다.

SQL?

SQL는 대화하기 위한 언어라고 했죠. IBM에서 개발한 SEQUEL이라는 관계형 데이터베이스 조작용 언어를 기반으로 만들어진 SQL의 명령은 세가지로 나눌 수 있습니다.

  • DML(Data Manipulation Language) : 데이터베이스에 새롭게 데이터를 추가하거나 삭제하거나 갱신 할때 사용되는 명령어
  • DDL(Data Definition Language) : 데이터를 정의하는 명령어, 데이터 베이스 객체를 생성하거나 삭제한다.
  • DCL(Data Control Language) : 트랜잭션을 제어하는 명령어, 데이터 접근권한을 제어하는 명령어

트랜잭션 : 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위

SQL 구문

SELECT

SELECT * FROM users;

SELECTDML에 속하는 명령으로 자주 사용합니다. 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는 행을 선택하는 구입니다. 위의 명령어는 id6인 행의 모든 열을 가져오게 됩니다. 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는 검색 결과의 행 순서를 바꿔줍니다. 오름차순, 또는 내림차순으로 정렬해줍니다.

  • ASC : 오름차순
  • DESC : 내림차순

정수형, 날짜형, 문자열 데이터 모두 대소관계를 판별해서 정렬해줍니다.


0개의 댓글