MySQL 공부_0527 (스키마, 서브쿼리, 뷰)

yeeun lee·2020년 5월 27일
0

아래 내용은 SQL 첫걸음(아사이 아츠시 저)과 위키백과를 참고했다 🤓

스키마

데이터베이스 객체는 스키마라는 그릇 안에 만들어진다. 그래서 데이터 베이스 객체는 스키마 객체라고도 불린다. 데이터베이스에 테이블을 작성해서 구축해나가는 작업을 스키마 설계라고 부른다. 스키마는 SQL 명령의 DDL을 이용해서 정의한다.

데이터베이스 제품에 따라 스키마가 무엇인지는 차이가 있다. MySQL에서는 CREATE DATABASE 명령으로 작성한 데이터베이스가 스키마가 된다. 오라클 등에서는 데이터베이스, 데이터베이스 사용자가 계층적 스키마가 된다.

테이블과 스키마는 무언가를 담는 그릇 역할을 한다는 점에서 비슷하다. 테이블 안에서는 열을 정의하고, 스키마 안에서는 테이블을 정의할 수 있다. 객체의 이름이 같아도 스키마가 서로 다르면 상관 없기 때문에, 그릇 안에서는 중복하지 않도록 이름을 지정하기 때문에 네임스페이스라고도 부른다.

- DDL 명령

Data Definition Language. 데이터 정의어로써 테이블과 같은 데이터 구조를 정의하는데 사용된다. 또한 데이터 구조를 정의함에 있어서 발생할 수 있는 이슈로 생성, 변경, 삭제, 이름 변경의 명령어도 함께 포함하고 있다.

ex. CREATE, DROP, ALTER, TRUNCATE

서브쿼리

select 명령에 대한 데이터 질의로, 상부가 아닌 하부의 부수적인 질의를 의미한다. 즉, SQL 명령문(select구, from구, where구 등) 안에 지정하는 하부 명령으로 괄호로 묶어 지정한다.

  • where에서 주로 사용된다.
  • where구는 select, delete, update 구에서 사용된다.
  • 데이터를 추가, 갱신할 경우 동일한 테이블을 서브 쿼리에서 사용할 수 없다.
# sample table에서 a열의 최소값 찾기
SELECT MIN(a) FROM sample; 

# sample table의 a열 최소값을 삭제하기
DELETE FROM sample WHERE a = (SELECT MIN(a) FROM sample); 

SQL은 순차형 언어처럼 변수가 존재하지 않지만, 변수를 다음과 같이 사용할 수는 있다.

변수 = (SELECT MIN(a) FROM sample);
DELETE FROM sample WHERE a = 변수;

스칼라값

SELECT 명령이 하나의 값만 반환하는 것. 서브 쿼리의 패턴은 총 네 가지이다. 이 중에서 하나의 값만을 반환하는 것을 스칼라 값이라고 하고, 서브쿼리로 사용하기 쉽다는 장점을 갖기 때문에 중요하다. 연산자를 사용해서 비교할 때는 스칼라 값끼리 비교한다.

  • 하나의 값을 반환
  • 하나의 행이 반환되지만 열이 복수
  • 복수의 행이 반환되지만 열은 하나
  • 복수의 행, 복수의 열 반환

view

명령을 실행한 결과를 기록하는 데이터베이스 객체. 일반적으로 SELECT 명령을 실행해서 어떤 값들을 도출하면 그 값들은 일시적으로 보여질 뿐이지만, 만약 view를 사용한다면 SELECT 명령으로 구성된 객체가 되고, 실체는 없지만 테이블처럼 취급할 수 있다.

- 생성, 삭제

CREATE VIEW name AS SELECT 명령 

#생성 예시
CREATE VIEW sample_view_6 AS SELECT * FROM  sample54 

#삭제 예시
DROP VIEW sample_view_67;

- 장점, 단점

장점

  • 서브 쿼리 부분을 뷰로 대체해서 select 명령을 더 간단하게 표현할 수 있다.
  • 자주 사용하거나 복잡한 select 명령을 뷰로 만들어 간단하게 표현 가능하다.

단점

  • 뷰를 참조할 때마다 select 명령이 실행되어 CPU 를 사용하게 됨
  • materialinzed view를 사용하면 데이터를 일시적으로 저장했다가 쿼리가 종료될 때 함께 삭제되는 뷰와 달리, 데이터를 저장하고 그대로 사용하게 된다.
profile
이사간 블로그: yenilee.github.io

0개의 댓글