지극히 개인적인 공부 노트/데이터베이스(Database) 9

[SQL] 키(Key)(feat. 유일키, 복합키, 외래키)

키(Key)란, 데이터베이스에서 튜플(또는 레코드, 행) 간 구분을 위한 값 또는 속성이다. 키는 유일키, 복합키, 외래키 등이 있으며, SQL에서 이러한 키를 설정하는 방법은 아래와 같다. 유일키(Primary Key) 테이블에서 튜플(레코드, 행)을 구분 지어주는 고유 식별 값(속성)이다. 유일키로 설정되는 값(속성)은 중복되거나 NULL이 될 수 없다. -- 여기서 테이블명이나 속성명 등은 따옴표가 아니라 백틱(`)으로 감싸준다는 것을 명심할 것 CREATE TABLE `테이블명`{ `속성명1` 타입, `속성명2` 타입, ... PRIMARY KEY(`유일키로 설정할 속성명`) }; 복합키(Composite Key) 두 개 이상의 속성을 활용하여 일종의 묶음으로써 다른 값(속성) 묶음과 구분 지어주..

[SQL] 대표적인 DDL 명령어(feat. CREATE, SHOW, USE, ALTER, DROP)

DDL은 'Data Definition Language'의 약자로, 데이터베이스를 정의하는 언어를 의미한다. 데이터베이스나 테이블 자체에 대해 생성, 수정, 삭제 등의 작업을 수행할 때 사용한다. DDL에서는 대부분 데이터베이스나 테이블 이름, 컬럼 이름 등에 대해 따옴표(', ")가 아닌 백틱(`)으로 감싸주기 때문에 이를 유의하며 쿼리를 사용해야 한다. 생성, CREATE 데이터베이스 또는 테이블을 생성할 수 있는 쿼리문. 데이터베이스나 테이블 이름은 백틱(`)으로 감싸준다. -- 데이터베이스 생성 CREATE DATABASE `MyDB`; -- 테이블 생성 CREATE TABLE `tb_MyTable`( '속성명' 타입, -- 테이블을 생성할 때 속성명은 따옴표로 감싸줘도 됨. '속성명2' 타입, ..

[SQL] 뷰(VIEW) 간단 정리

SQL에서 뷰(VIEW)란, 다른 테이블에서 파생된 테이블을 의미한다. 하지만 물리적으로 데이터가 저장되는 것이 아니라 논리적으로만 존재하며, 뷰를 사용한 질의 시에는 DBMS(DB 관리 시스템, DB 관리자)에서 뷰의 정의를 잘 파악하고 필요시 재작성하여 수행해야 한다. 1. 뷰의 장점 뷰는 SQL에서 아래와 같은 장점을 가진다. 1) 독립성: 테이블 구조가 변경되어도 뷰에서 조회하는 컬럼이나 컬럼명, 테이블명 등이 그대로라면, 뷰를 사용하고 있는 응용 프로그램은 변경하지 않아도 된다. 2) 편리성: 자주 사용되는 복잡한 쿼리를 미리 뷰로 정의해두면, 추후 쿼리는 간단한 형태로 표현, 조회 등이 가능하다. 3) 보안성: 사용자의 권한에 따라 열람 가능한 데이터를 다르게 할 수 있다. 권한에 따라 확인 ..

[SQL] JOIN 활용하기

1. JOIN이란? SQL에서 두 개 이상의 테이블을 연결 또는 결합하여 데이터를 출력하는 연산이다. 연산자에 따라 EQUI JOIN, Non EQUI JOIN으로 분류할 수 있고, 사용 형태에 따라 FROM을 활용한 JOIN, Self JOIN 등이 있다. 1) EQUI JOIN - 등가 교집합 - 두 개의 테이블 간에 서로 정확하게 일치하는 경우를 활용하는 JOIN ⇒ '등가 연산자(=)'를 사용한 JOIN - 대부분 기본키-외래키 관계를 기반으로 발생하나, 모든 조인이 그런 것은 아니다. 2) Non EQUI JOIN - 비등가 교집합 - 두 개의 테이블 간에 서로 정확하게 일치하지 않는 경우를 활용하는 JOIN ⇒ '등가 연산자 이외의 연산자(>, >=,

[SQL] 일반 집합 연산(feat. UNION, INTERSECT, EXCEPT)

SQL에서 일반 집합 연산이란, 두 개 이상의 테이블에서 조인을 사용하지 않고, 연관된 데이터를 조회하는 연산이다. 이 글에서는 합집합(UNION), 교집합(INTERSECT), 차집합(EXCEPT)에 대해 정리했다. 단, 일반 집합 연산은 테이블에서 SELECT한 컬럼의 수와 각 컬럼의 데이터 타입이 테이블 간 상호 호환 가능해야 한다. 합집합, UNION UNION은 두 개의 테이블을 하나로 만드는 연산이다. 사용할 컬럼의 수와 데이터 형식이 일치해야 하며, 합친 후에 테이블에서 '중복되는 데이터는 제거'한다. 중복 제거를 위해 UNION은 테이블을 합칠 때, 정렬 과정을 발생시키는데, 올바른 정렬을 위해서는 ORDER BY 구문을 추가로 사용해주는 것이 좋다. 사용 예시는 아래와 같다. SELECT..

[SQL] 서브 쿼리와 서브 쿼리의 분류(feat. 반환, 위치에 따른 분류)

1. 서브 쿼리란? 서브 쿼리는 하나의 쿼리(메인 쿼리) 안에 포함된, 종속되는 또 하나의 쿼리를 의미한다. 알고 있지 못한 기준을 이용한 검색에 유용하고, 메인 쿼리가 실행되기 이전에 한 번만 실행되며, 한 문장에서 여러 번 사용이 가능( ex) 서브 쿼리의 서브 쿼리)하다. 사용 예시와 주의 사항은 아래와 같다. -- 예시. 특정 사원(A)의 급여보다 높은 급여를 받는 사원 조회 -- 1. 기존 메인 쿼리만을 이용한 방법 SELECT * FROM employee WHERE 급여 > 2500; -- 특정 사원의 급여를 알고 있는 상태에서 가능 -- 2. 서브 쿼리를 이용한 방법 SELECT * FROM employee WHERE 급여 > (SELECT 급여 FROM employee WHERE 이름='A..

[SQL] 기초적인 SQL 내장 함수(feat. COUNT, SUM, AVG, MAX, MIN, GROUP BY)

SQL에도 데이터나 행의 그룹의 값을 계산하거나, 조작하는 함수가 존재하는데, 이 글에는 아주 기초적인 SQL 내장 함수를 코드 작성 방법만 간단하게 정리했다. COUNT 검색한 결과의 데이터 개수를 가져오는 내장 함수 SELECT COUNT(COL) FROM myData; -- 특정 컬럼 COL의 레코드 개수 SELECT COUNT(*) FROM myData; -- 모든 컬럼의 데이터 개수. 즉 데이터의 전체 크기를 파악 SUM 지정한 컬럼의 값을 모두 더하여 총합을 구하는 내장 함수 SELECT SUM(COL) FROM myData; -- 컬럼 COL에 대한 합계 AVG 지정한 컬럼의 값의 평균값을 구하는 내장 함수 SELECT AVG(COL1), AVG(COL2), AVG(COL3) FROM myD..

[SQL] 대표적인 DML 명령어(feat. LIKE, ORDER BY, INSERT, UPDATE, DELETE)

DML이란 Data Manipulation Language(데이터 조작어)로써, 말 그대로 데이터를 조작(검색, 삽입, 수정, 삭제 등)하는 데 사용되는 명령어를 의미한다. LIKE - 유사한 데이터 검색 특정 문자가 포함된 문자열을 찾고 싶을 때 사용하는 명령어이다. 대소문자를 우선 순위로 구분하는데, 예를 들어 AB, Ab, aB, ab가 있는 테이블에서 ab로 검색을 한다면 ab, aB, Ab, AB 순으로 정렬되어 검색된다. LIKE는 주로 WHERE과 함께 사용되며, 아래 예시와 같이 사용되는 퍼센트 기호(%)는 '와일드 카드'라고 부른다. SELECT (컬럼명) FROM (테이블명) WHERE (컬럼명) LIKE (찾으려는 레코드의 일부 또는 전체); -- 와일드 카드(%) 이용 예시 WHER..

[SQL] 테이블에서 데이터 검색 및 조회하기(feat. 테이블, 컬럼, 레코드)

1. 테이블(Table) 데이터베이스에서 테이블이란 컬럼(Column)과 레코드(Record)로 구성된 표를 말하는데, 사실상 우리가 평소에도 알고 있는 표를 떠올리면 된다. 여기서 컬럼은 각 자료의 영역, 속성을 의미하는 열, 레코드는 각 열에 따른 데이터 값을 지닌 행이다. 데이터베이스에서 테이블은 각각의 고유한 이름으로 구분되어야 하며, 컬럼과 레코드도 각 단어의 의미를 알고 구분해야 한다. 2. 데이터 검색 및 조회하기 주어진 테이블에서 데이터를 검색하고 가져올 때, 출력할 때 사용하는 대표적인 명령어는 아래와 같다. SQL은 한 문장의 명령어 끝에 세미콜론(;)을 작성함으로써 다른 명령어와 구분을 해야 하고, 세미콜론 없이 엔터로만 구분되어 있다면, 하나의 명령어로 인식한다. 또, 명령어 자체는..