For job interview, about DB 면접 공부하기-데이터베이스

3 minute read

1. SQL basic query 기본 쿼리문

SELECT [ALL/DISTINCT/DISTICTROW] [table name] [attribute name]
FROM [table name]
WHERE [condition]
GROUP BY [attribute name]
HAVING [condition]
ORDER BY [attribute name] [ASC/DESC];
INSERT
INTO [table name] [attribute name]
VALUES [data];
DELETE
FROM [table name]
WHERE [condition];
UPDATE [table name]
SET [attribute name] = [data]
WHERE [condition];
CREATE VIEW [view name]([attribute name])
AS SELECT ....;
DROP VIEW [view name] {[RESTRICT/CASCADE]};

2. Join 조인

|customer_id|first_name|last_name |state|
|———–|———-|——— |—–| |1 |George |Washington|VA | |2 |John |Adams |MA | |3 |Thomas |Jefferson |VA | |4 |James |Madison |VA |

order_id order_date amount customer_id
1 07/04/1776 $234.56 1
2 03/14/1760 $78.50 3
3 05/23/1784 $124.00 2
4 09/03/1790 $65.50 3
5 07/21/1795 $25.50 10

1. (Inner) Join : returns records that have matching values in both tables

SELECT first_name, last_name, order_date, order_amount
FROM customers c
INNER JOIN orders o
ON c.customer_id = o.customer_id;

> result

first_name last_name order_date order_amount
George Washington 07/4/1776 $234.56
John Adams 05/23/1784 $124.00
Thomas Jefferson 03/14/1760 $78.50
Thomas Jefferson 09/03/1790 $65.50

2. Left (Outer) Join : returns all records from the left table, and the matched records from the right table

SELECT first_name, last_name, order_date, order_amount
FROM customers c
LEFT JOIN orders o
ON c.customer_id = o.customer_id

> result

first_name last_name order_date order_amount
George Washington 07/04/1776 $234.56
John Adams 05/23/1784 $124.00
Thomas Jefferson 03/14/1760 $78.50
Thomas Jefferson 09/03/1790 $65.50
James Madison NULL NULL

3. Right (Outer) Join : returns all records from the right table, and the matched records from the left table

SELECT first_name, last_name, order_date, order_amount
FROM customers c
RIGHT JOIN orders o
ON c.customer_id = o.customer_id

> result

first_name last_name order_date order_amount
George Washington 07/04/1776 $234.56
Thomas Jefferson 03/14/1760 $78.50
John Adams 05/23/1784 $124.00
Thomas Jefferson 09/03/1790 $65.50
NULL NULL 07/21/1795 $25.50

4. Full (Outer) Join : retruns all records when there is a match in either left or right table

SELECT first_name, last_name, order_date, order_amount
FROM customers c
FULL JOIN orders o
ON c.customer_id = o.customer_id

> result

first_name last_name order_date order_amount
George Washington 07/04/1776 $234.56
Thomas Jefferson 03/14/1760 $78.50
John Adams 05/23/1784 $124.00
Thomas Jefferson 09/03/1790 $65.50
NULL NULL 07/21/1795 $25.50
James Madison NULL NULL



3. Stored Procedure 저장 프로시저

  • Definition 정의 : a prepared SQL code that you can save, so the code can be reused over and over again.
  • Example 예시
CREATE PROCEDURE [procedure_name]
AS
[sql_statement]
GO;
 EXEC [procedure_name]; 



4. DB 무결성

  • 개체 무결성 : 릴레이션에서 기본키를 구성하는 속성은 NULL 값이나 중복값을 가질 수 없다. (유일한 식별자!)
  • 참조 무결성 : 외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야 한다. 즉, 참조되는 테이블의 행을 이를 참조하는 참조키가 존재하는 한 삭제할 수 없고, 기본키를 변경할 수 없다.
  • 도메인 무결성 : 특정 속성의 값이 그 속성이 정의된 도메인에 속한 값이어야 한다. (ex. 성별 속성의 도메인은 ‘남’과 ‘여’로, 그 외의 값은 입력할 수 없다. 자료형, 값의 범위 등 제한!)



5. NoSQL (Not Only SQL) vs RDBMS (Relational DataBase Management System)

1. RDBMS 관계형 데이터베이스 관리 시스템

  • 관계형 데이터 모델 : 테이블을 이용해서 데이터 상호 관계를 정의하는 DB 구조로, 데이터 간의 관계를 기본키(Primary Key)와 이를 참조하는 외래키(Foreign Key)로 표현한다.
  • Features 특징 : SQL 사용, 데이터 무결성, 트랜잭션
  • 대표적인 DBMS : Oracle, MySQL, DB2, …
    @ Primary Key 기본키 : 특정 튜플을 유일하게 구별할 수 있는 속성
    @ Foreign Key 외래키 : 릴레이션 R1(테이블 1)이 릴레이션 R2(테이블2)를 참조하고 있을 때 R2의 기본키와 같은 값인 R1의 키가 외래키이다.

2. NoSQL

  • HBase, MongoDB, Redis, …
  • 2000년 후반 인터넷이 활성화되고 소셜네트워크 서비스 등이 등장하면서 관계형 데이터 또는 정형데이터가 아닌 데이터, 즉 비정형 데이터라는 것을 보다 쉽게 담아서 저장하고 처리할 수 있는 구조를 가진 데이터 베이스들이 관심을 받게 되면서 NoSQL 데이터베이스가 각곽을 받게 되었다.
  • 비관계형 데이터베이스 : 단순 검색 및 추가 작업을 위한 매우 최적화된 키 값 저장 공간으로, 상당한 성능 이익을 내는 것이 목적이다. 빅데이터와 실시간 웹 애플리케이션의 상업적 이용에 널리 쓰인다.
  • Features 특징
    • 테이블간의 조인 기능이 없음
    • 직접 프로그래밍을 하는 등의 비SQL 인터페이스를 통한 데이터 접근
    • 대부분 여러 대의 데이터베이스 서버를 묶어서 하나의 데이터베이스를 구성 (클러스터링)
    • 관계형 데이터베이스에서는 지원하는 데이터 처리 완결성(Transaction ACID) 미보장
    • 데이터의 스키마와 속성들을 다양하게 수용 및 동적 정의
    • 데이터베이스의 중단 없는 서비스와 자동 복구 기능 지원
    • 다수가 오픈소스
    • 확장성, 가용성, 고성능

6. MySQL vs MariaDB

1. MySQL

  • Definition 정의 : 오픈소스 관계형 데이터베이스 관리 시스템 (RDBMS) - Oracle 라이센스
  • Features 특징
    • 크로스 플랫폼 cross-platform 지원 (Linux, Unix, Windows 등에서 사용 가능)
  • 도구 : MySQL Workbench, DBeaver, HeidiSQL(MariaDB 사용시 편리) 등

2. MariaDB

  • Definition 정의 : 오픈소스 관계형 데이터베이스 관리 시스템 (RDBMS)
  • Features 특징
    • 사용방법, 구조 모두 MySQL과 동일
    • MySQl보다 가볍고 빠르며 라이센스가 더 자유로움
    • MySQL과 달리, Javascript와 Python을 위한 스크립팅 기능을 제공하지 않음
    • MySQL과 달리, 비밀번호를 검사하여 보안을 향상시키기 위한 validate_password 플러그인을 지원하지 않음



※ 참고 사이트 : http://www.sql-join.com/sql-join-types, https://www.w3schools.com/sql/sql_join.asp, https://aws.amazon.com/ko/relational-database/, https://www.samsungsds.com/global/ko/support/insights/1195843_2284.html, https://www.eversql.com/mariadb-vs-mysql/, 위키백과

Tags:

Updated: