손에잡히는 10분 SQL

do yeon kim·2022년 6월 26일
0

손에잡히는 10분 SQL

1장 SQL이해하기 6/27

SQL을 이해하기 전에 데이터베이스(관계형데이터베이스)에 대한 이해가 필요하다.
왜냐하면 SQL은 데이터베이스(관계형데이터베이스) 에서 사용하는 언어이기 때문이다.

우리는 현재 데이터베이스의 세계에 살고 있다고 말해도 과언이 아니다.
전화번호, E-mail, 주소 등 모두 데이터베이스의 세계 중 하나이다.

그렇다면 데이터베이스란 무었일까?
데이터베이스란 정리된 방식으로 데이터를 저장하는 물리적 공간을 의미한다.
데이터베이스의 종류에는 Oracle, MySQL, SQLite 등이 있다.


참고
데이터베이스시스템(DBMS)과 데이터베이스는 다른 의미이다.
데이터베이스는 데이터베이스관리시스템을 생성하고 조작하는 물리적 저장공간이다. 데이터베이스관리시스템과의 대화에 필요한 것이 SQL이다.



데이터베이스에는 테이블이 있다.
테이블은 특정한 형태의 데이터를 저장할 수 있는 구조화된 파일이다.


테이블에는 여러개의 데이터를 저장하는 것이 아닌 한 가지 종류의 데이터만을 저장해야 한다, 그래야지 후속 작업(탐색 등)에 편리하다. 테이블의 동일한 이름은 불가능하다.

테이블에는 열(Column, 필드)과 행(Row, 레코드)이 있다.

열(Column) 은 테이블의 데이터의 특성을 나타내는 것으로 데이터타입을 가지고 있어서, 들어노는 데이터에 대한 제한을 한다.

행(Row) 은 실제 데이터가 들어가는 공간이다. 열에서 정의한 데이터타입에 맞게 데이터를 추가한다.

기본키(Primary Key) 는 행들을 고유식별 할 수 있는 것이다. 테이블의 각 행을 구별해주는 열을 기본키라고 한다. 테이블의 행은 방대한 데이터가 들어 올 것이다. 이때 행과 행 사이의 식별 할 수 있는 것이 기본키에 해당한다. 특정행을 참조하는데 사용할 수 있다.


참고
기본키는 한 번 삭제되면 다시 할당 되지 않는다.
예를 들어 1,2,3,4 라는 기본키가 있다면 4를 삭제 할 경우 다음에 되는 기본키는 5이다.


이런 기본적인 바탕에서 말할 수 있는 것이 SQL(Structured Quert Language, 구조화된 질의 언어)이다.

SQL을 통해 데이터베이스관리시스템과 대화를 하고 데이터에 대한 조작을 할 수 있다.


참고
클라이언트 - 서버에 연결된 프로그램, 여기서는 사용자 프로그램
클라우드 서비스 - 사용자가 필요한 자료나 프로그램을 자신의 컴퓨터에 설치하지 않고 인터넷에 접속 해서 언제 어디서든 이용할 수 있는 서비스를 말한다.




2장 데이터 가져오기 6/28

SQL에서 가장 많이 사용되는 것은 SELECT문일 것이다.
SELECT문은 테이블에서 하나이상의 특정 행의 데이터를 가져오는 키워드이다.

SELECT문을 사용하시 위해서는 무엇을 가지고 올지, 어디서 가지고 올지를 알려주어야 한다.

  • 기본형태의 SELECT문
SELECT 컬럼 FROM 테이블이름;

참고
SELECT를 통해 데이터를 가지고 오면, 가지고 온 데이터가, 본래의 데이터와는 순서가 다를 수 있다.
기본적으로 정렬을 제공하지 않기 때문에 정렬을 사용하기 전 까지 SELECT문은 데이터가 무작위로 가져오게 된다.


  • 하나의 열을 가져오기
SELECT 컬럼이름 FROM 테이블이름;

테이블이름에 해당하는 테이블에서 컬럼이름에 해당하는 컬럼을 가지고 온다.

  • 두개 이상의 열을 가져오기
SELECT 컬럼1, 컬럼2 FROM 테이블이름;

,콤마로 구분해서 여러개의 컬럼을 가지고 올 수 있다.

  • 모든 열을 가져오기
SELECT * FROM 테이블이름;

* 키워드는 모든 행을 가지고 온다.
하지만 모든 행을 가지고 오는 것은 메모리에 부담이 될 수 있으므로, 웬만하면 사용을 제한하는 것이 좋다. 단 열의 이름을 모를 경우, 사용할 수 있다는 장점이 있다.

  • 중복방지 키워드
SELECT 컬럼 DISTINCT FROM 테이블이름;

컬럼에 대한 중복데이터가 있으면, 중복을 제거하고 데이터를 가지고 온다.
단, 여러 컬럼을 가지고 오는 경우, 중복으로 적용되기 때문에 그 점을 고려해서 사용해야 한다.

  • 결과 제한하기
SELECT 컬럼 FROM 테이블이름 LIMIT 3;

특정 행까지만 데이터를 가지고 온다.

  • 특정 행부터 결과를 제한해서 가지고 오기
SELECT 컬럼 FROM 테이블이름 LIMIT 3 OFFSET 2;

2번째 행부터(OFFSET) 3개의 행을 가지고 온다.

  • 주석사용하기
    한줄주석 -- , #
    여러줄 주석 /* */

참고
특정행을 가지고 올 경우 행의 시작은 0부터이다. 그러므로 첫번째 행은 OFFSET 0, 두번째 행은 OFFSET 1 에 해당한다.




3장 가져온 데이터 정렬하기 6/29

ORDER BY를 이용한 정렬하기
ORDER BY는 기본적으로 조건을 추가하는 절의 맨 마지막에 추가해 준다.
또한 오름차순이 기본적으로 설정되어 있다. 내림차순을 원하는 경우 정렬을 원하는 컬럼에 DESC를 추가해준다.

한개의 컬럼으로 정렬하기

SELECT 컬럼이름 FROM 테이블이름 ORDER BY 컬럼이름;
SELECT 컬럼이름 FROM 테이블이름 ORDER BY 컬럼이름 DESC;

여러개의 컬럼으로 정렬하기

SELECT 컬럼이름1,컬럼이름2 FROM 테이블이름 ORDER BY 컬럼이름, 컬럼이름 DESC;

여러개의 컬럼을 이용해서 정렬할 경우 각각의 컬럼에도 정렬을 설정할 수 있다.

열의 위치로 정렬하기
열 이름 적은 위치로 정렬을 지정할수도 있다.

SELECT 컬럼이름1,컬럼이름2 FROM 테이블이름 ORDER BY 1, 2;

가장 큰 장점은 컬럼을 다시 적지 않아도 된다는 점이다.
하지만 만약 가지고 오는 컬럼이 바뀌게 되면 정렬의 순서도 가지고 온 값으로 정렬하기 때문에 바뀌게 된다.

ORDER BY는 SELECT문의 맨마지막에 와야한다.



4장 데이터 필터링 6/29

WHERE절을 이용해서 검색조건을 지정할 수 있다.

SELECT문에서는 WHERE절로 검색 조건을 지정하여 데이터를 필터링 할 수 있다.
WHERE절을 테이블이름 바로 뒤에 온다.

SELECT 컬럼이름 FROM 테이블이름 WHERE절 조건 ORDER BY 컬럼이름; 

참고
데이터를 요청한 클라이언트 쪽에서도 필터링은 가능하다. 하지만 데이터베이스는 데이터를 저장과 조작에 있어 특화된 프로그램이므로, 클라이언트쪽에서 필터링을 할 경우 서버에 필요하지 않은 데이터 통신이 늘어나게 되며, 낭비가 발생한다.
그러므로 데이터베이스를 이용한 필터팅을 선호한다.


WHERE절 연산자

  • =
    같다

  • <> or !=
    같지 않다.

  • <
    같지 않다.

  • <=
    보다 작거나 같다

  • !<
    보다 작지 않다

  • >
    보다 크다

  • >=
    보다 크거나 같다

  • !>
    보다 크지 않다

  • BETWEEN
    두 개의 특정한 값 사이

  • IS NULL
    값이 NULL이다.



5장 고급 데이터 필터링 6/30

where 절 조합하기

논리연사자 AND,OR

AND와 OR를 이용해서 여러개의 조건을 지정할 수 있다.
AND연산자는 AND로 연결된 모든 조건을 충족하는 컬럼을 가지고 온다.
OR연산자는 OR로 연결된 조건들이 하나라도 충족하면 컬럼을 가지고 온다.
OR연산자를 이용해서 조건을 나열 시 좋은 조건문의 조건은 첫번째 조건이 일치하면, 두번째 조건을 비교하지 않아도 되는 조건문이다.


우선순위
WHERE절은 수에 제한 없이 AND와 OR연산자의 사용이 가능하다. 하지만 많은 AND와 OR를 사용하다보면 원하는 결과를 가지고 오지 못하는 경우도 존재한다.
그 경우는 연산자의 우선순위를 생각하지 않았기 때문이다.

연산자의 우선순위는 괄호를 이용해서 우선순위를 확실하게 표현할 수 있다.

IN 연산자
IN연산자는 조건의 범위를 지정할 때 사용한다.
IN은 괄호안에 콤마,를 이용해서 조건을 구분해서 나열한다.
IN연산자는 OR연산자와 같은 기능을 수행한다.

IN을 사용하는 이유

  • 조건이 많을 때 IN연산자가 OR연산자 보다 깔끔하고 읽기 쉽다.
  • AND와 OR를 함께 사용하는 경우 우선순위를 관리하기 쉽다.
  • IN연산자가 OR연산자보다 속도가 빠르다.
  • 가장 큰 특징은 SELECT문을 포함할 수 있다는 것이다.

NOT연산자
NOT연산자는 뒤에 오는 조건을 거꾸로 만든다는 것이다. NOT TRUE는 FALSE가 된다. NOT키워드는 필터링 하려는 열 뒤가 아니라 앞에 적는다.

WHERE 절에서 조건을 부정하기 위해서 사용하는 키워드 이다.

0개의 댓글