SQL & DDL(Data Definition Language)

도윤·2022년 7월 11일
0

기술 면접 준비

목록 보기
3/3

SQL

Structured Query Language의 줄임말로, 관계형 데이터베이스 시스템 (RDBMS)에서 데이터를 관리, 처리하기 위해 설계된 프로그래밍 언어이다.

SQL 문법의 종류는 다음 세가지 종류로 구분된다

  • Data Definition Language(DDL): Schema definition(Create,Alert,Rename,DROP,…)
  • Data Manipulation Language(DML) : SELECT,INSERT,UPDATE,DELETE
  • Data Control Language(DCL) : Security, Access Controls

DML은 데이터를 관리하기 위한 언어이고, DDL은 릴레이션을 정의하기 위한 언어이며, DCL은 데이터 관리를 접근하기 위한 언어이다

특징

  1. 데이터 연산에 대한 처리가 절차적으로 진행되지 않고, 데이터의 집합 단위로 처리된다 (Non-Procedural) 따라서 SQL 문장을 작성하는 사용자는 데이터가 어떻게 처리되는지는 알 필요가 없다는 장점.
  2. 표준 SQL 문법이 존재해 DBMS(orcle,MYSQL 등) 에 얽매이지 않고 사용할 수 있다.
  3. 릴레이션(Relation),튜플(Tuple),속성(attribute)과 같은 관계형 모델의 용어 대신 테이블(table),행(Row),열(Col)과 같은 일반적인 용어를 사용한다.[
  4. 대소문자 구분 X
  5. 세미콜론(;)으로 끝나야 하고, 고유 값은 따옴표(’ ‘)로 감싸준다
  6. 주석은 ‘—’를 앞에 붙여 사용하고 여러줄은 /* */로 감싸준다

DDL (Data Definition Language)

테이블과 인덱스 구조를 관리

CREATE

데이터베이스를 만드는 명령어

CREATE DATABASE db;

ALTER

이미 존재하는 테이블을 수정하고 싶을 때 사용. 테이블의 이름을 변경하거나, 열(Column)을 추가, 변경, 삭제할 수 있다.

  1. 열(Column) 추가 → ADD
mysql> ALTER TABLE tb ADD COLUMN Hobby VARCHAR(50) NOT NULL;
  1. 열(Column) 변경 → MODIFY/CHANGE
mysql> ALTER TABLE tb MODIFY COLUMN Hobby INT(11) NULL;
  1. 열(Column) 삭제 → DROP
mysql> ALTER TABLE tb DROP COLUMN Hobby2;
  1. 열(Column) 이름 변경
mysql> ALTER TABLE tb RENAME tb2

RENAME

ALTER 명령어를 이용하지 않고 RENAME만으로도 테이블의 이름을 변경해줄 수 있다.

mysql> RENAME TABLE tb TO tb2

DROP

DROP을 이용하여 테이블이나 데이터베이스 자체를 삭제할 수 있도 있다.

mysql> DROP DATABASE dp;
mysql> DROP TABLE tb;

DML(Database Manipulate Language)

사용자가 데이터베이스에 대해 검색, 등록, 삭제 등을 할 수 있도록 하는 데이터베이스 언어이다.

INSERT

데이터를 테이블에 추가할 때 사용한다. 입력하지 않은 값은 자동으로 NULL이 입력된다. 만약 입력하지 않은 열이 NOT NULL 속성을 가지고 있다면 default value를 가지고 있지 않다는 에러가 발생한다.

mysql> INSERT INTO tb (Id, Name, Age, Country) VALUES (1, 'Kim', 23, 'Korea');
mysql> INSERT INTO tb (Name, Age, Country) VALUES ('John', 20, 'USA')

SELECT

데이터 조회

  1. FROM,WHERE
  2. AND,OR,NOT
  3. 패턴 매칭(LIKE)
  4. ORDER BY
  5. DISTINCT

UPDATE

데이터베이스의 테이블에서 데이터를 갱신하는 기능

셀 단위로 데이터를 갱신할 수 있고, 만약 테이블이 존재하지 않은 열을 지정하면 에러가 발생한다.

UPDATE table_name SET column1='data1', column2='data2', ...  [WHERE condition]

DELETE

테이블에서 조건을 만족하는 행을 지우고 싶을 때 사용

mysql> DELETE FROM table_name [WHERE condition];

집계 함수(Aggregate Function)


집계함수는 여러 행으로부터 하나의 결괏값을 반환하는 함수이다. SELECT 구문에서만 사용되며, 이전에 다룬 기본 함수들이 행(row)끼리 연산을 수행했다면, 집계 함수는 열(Column)끼리 연산을 수행한다.

주로 평균, 합, 최대, 최소 등을 구하는 데 사용

  1. Count

특정 열(Column)의 행의 개수를 세는 함수이다. Count(*)로 작성하면 테이블에 존재하는 행의 개수가 반환되고, 특정 열에 대해서 Count를 수행하면 해당 열이 NULL이 아닌 행의 개수를 반환한다.

mysql> SELECT COUNT(*) FROM tb;
mysql> SELECT COUNT(Name) FROM tb;
mysql> SELECT COUNT(Name) AS name_cnt FROM tb;
mysql> SELECT COUNT(Name) AS "name cnt" FROM tb;
mysql> SELECT COUNT(Job) FROM tb;
  1. MIN/MAX

MIN은 최소, MAX는 최대값을 구하는 함수. 사용법은 Count와 동일

mysql> SELECT MAX(Age) FROM tb;
mysql> SELECT MIN(Age) FROM tb;
mysql> SELECT MAX(Age) max_age FROM tb;
  1. AVG/SUM

AVG는 선택한 열(Column)의 평균을 계산하며, SUM은 선택한 열(Column)의 합을 계산

숫자값에 대해서만 연산이 가능하며, NULL은 무시하고 계산한다.

따라서 NULL을 0으로 취급하며 평균을 구하고 싶다면 NULL을 0으로 지정하는 작업을 추가로 해야한다

  1. GROUP BY

GROUP BY 키워드를 이용하면 테이블의 일부 행을 대상으로 집계 함수를 사용할 수 있다.

mysql> SELECT Country, SUM(Age) FROM tb GROUP BY Country;
  1. HAVING

HAVING절은 이전의 WHERE와 비슷하게 작용

GROUP BY와 함께 쓰이는 조건문이라고 생각하면 되는데, WHERE에서는 집계 함수를 사용할 수 없는 반면 HAVING은 집계 함수와 함께 사용 가능하다는 장점이 있다.

0개의 댓글