본문 바로가기

TIL

[데이터베이스와 SQL][SQL문정리]

728x90

데이터베이스와 SQL

데이터베이스란?

여러 사람이 공유하여 사용할 목적으로 통합하여 관리되는 데이터의 모음이다

최근에는 크게 관계형 데이터베이스(RDS, SQL)와 비 관계형(NoSQL, Non relational)으로 구분된다

데이터베이스 관리 시스템을 제공하는 서비스의 종류는 매우 많지만, 기본적으로 데이터의 검색과 분석에 사용되는 방법은 동일하다

데이터 베이스 종류는 다음과 같다

RDS, SQL, MySQL, Oracle DB, PostgreSQL

NoSQL, MongoDB, Redis

 

SQL(Structed Query Language)

관계형 데이터베이스에 접근하고 조작하기 위한 표준 언어이다

데이터베이스 종류에 따라 조금씩 문법이 다르지만 정보를 관리하는 기본적인 CRUD 기능을 가지고 있다.

SQL의 명령어 종류를 4가지로 나눌 수 있다

1.DDL (Data Define Language, 데이터 정의어)

-DDL은 SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의하거나 변경 또는 삭제할 때 사용하는 언어

-논리적 데이터 구조와 물리적 데이터 구조의 사상을 정의

-데이터베이스 관리자나 데이터베이스 설계자가 사용함.

명령어 기능
CREATE SCHEMA, DOMAIN, TABLE, VIEW, INDEX 정의 ex) CREATE 
ALTER TABLE에 대한 정의를 변경 
DROP SCHEMA, DOMAIN, TABLE, VIEW, INDEX 삭제

2.DML(Data Manipulation Language, 데이터 조작 언어)

-DML은 데이터베이스 사용자가 응용프로그램이나 질의어를 통하여 저장된 데이터를 실질적으로 처리하는 데 사용하는 언어.

-데이터베이스 사용자와 데이터베이스 관리 시스템 간의 인터페이스를 제공.

명령어 기능
SELECT 테이블에서 조건에 맞는 튜플 검색
INSERT 테이블에 새로운 튜플 삽입
DELETE 테이블에서 조건에 맞는 튜플 삭제
UPDATE 테이블에서 조건에 맞는 튜플의 내용을 변경

3.DCL( Data Control Language, 데이터 제어어)

-DCL은 데이터의 보안, 무결성, 회복, 병행 수행 제어 등을 정의하는 데 사용되는 언어.

-데이터베이스 관리자가 데이터 관리를 목적으로 사용

명령어 기능
COMMIT 명령에 의해 수행된 결과를 실제 물리적 디스크로 저장하고, 데이터베이스 조작 작업이 정상적으로 완료되었음을 관리자에게 알려줌
ROLLBACK 데이터베이스 조작 작업이 비정상적으로 종료되었을 때 원래 상태로 복구
GRANT 데이터베이스 사용자의 사용 권한 부여
REVOKE 데이터베이스 사용자의 사용 권한 취소

4.TCL(Transaction Control Language) 트랜잭션 제어 언어

 

 

SQL은 테이블 구조로 이루어진 데이터에 접근 및 조작할 수 있는 언어이다. 테이블은 칼럼과 레코드로 구성된 표이며 각 테이블은 고유의 이름으로 구분된다.

데이터가 저장된 표는 테이블, 관계/릴레이션(Relation)이라고 부른다

각 행에 해당하는 데이터를 로우(Row), 튜플(Tuple), 레코드(Record) 등으로 부른다.

각 열에 해당하는 데이터를 칼럼(Column), 애트리뷰트(Attribute), 필드(Field) 등으로 부른다.

 

- SELECT문 예제

Query문 SELECT 컬럼명 FROM 테이블명;
설명 해당 테이블에 속하는 컬럼의 데이터들을 검색
Query문 SELECT 컬럼명 FROM 테이블명 WHERE 조건;
설명 해당 테이블에 속하는 컬럼 중 조건에 맞는 데이터들을 검색
Query문 SELECT 컬럼명 FROM 테이블명 WHERE 조건 ORDER BY 컬럼명 ASC or DESC
설명 해당 테이블에 속하는 컬럼 중 조건에 맞는 데이터들의 검색결과를 ASC(오른차순) or DESC(내림차순) 정렬
Query문 SELECT 컬럼명 FROM 테이블명 WHERE 조건 ORDER BY 컬럼명 ASC or DESC LIMIT 개수
설명 Limit으로 개수를 제한

 

 그룹함수 : GROUP BY절에 지정된 그룹별 속성의 값을 집계할 때 사용

- WINDOW 함수 : GROUP BY 절을 이용하지 않고 속성의 값을 집계할 함수를 기술

그룹함수 설명
COUNT(속성명) 그룹별 튜플 수를 구하는 함수
SUM(속성명) 그룹별 합계를 구하는 함수
AVG(속성명) 그룹별 평균을 구하는 함수
MAX(속성명) 그룹별 최대값을 구하는 함수
MIN(속성명) 그룹별 최소값을 구하는 함수
STDEV(속성명) 그룹별 표준편차를 구하는 함수
VARIANCE(속성명) 그룹별 분산을 구하는 함수

- INSERT문 예제

Query문 INSERT INTO 테이블명(칼럼명1, 칼럼명2, 칼럼명3) VALUES(값1, 값2, 값3);
설명 테이블명에 있는 컬럼명에 순서에 맞게 값 입력(단, 칼럼명과 값의 개수는 동일해야함.)
Query문 INSERT INTO 테이블명 VALUES(값1, 값2, 값3);
설명 칼럼명을 입력하지 않은 경우, 테이블에 모든 칼럼에 값을 입력한다는 의미!(단, 칼럼명과 값의 개수는 동일해야함.)

 UPDATE문 예제

Query문 UPDATE 테이블명 SET 컬럼명 = 변경할 값;
설명 테이블에 있는 모든 데이터의 컬럼 값 변경
Query문 UPDATE 테이블명 SET 컬럼명 = 변경할 값 WHERE 조건;
설명 WHERE절 조건에 해당하는 데이터만 변경
Query문 UPDATE 테이블명 SET 컬럼명1 = 변경할 값1, 컬럼명2 = 변경할 값2 WHERE 조건;
설명 변경할 컬럼이 여러 개일 경우 콤마(,)를 사용해 여러 개의 값을 변경 가능

- DELETE문 예제

Query문 DELETE FROM 테이블명;
설명 테이블에 있는 모든 데이터 삭제
Query문 DELETE  FROM 테이블명 WHERE 조건;
설명 WHERE절 조건에 해당하는 데이터만 삭제

[ALTER] 테이블에 칼럼 추가, 변경, 삭제하려면

 

728x90

'TIL' 카테고리의 다른 글

[Spring Framework][사용하는 이유]  (0) 2022.10.14
[Spring][DI]  (0) 2022.10.13
[DB][SQL][WHERE][TRUNCATE,DELETE,DROP 차이]  (0) 2022.10.10
[HTTP][HEADER][캐시와 조건부 요청]  (1) 2022.10.10
[HTTP][헤더(일반정보,인증,쿠키)]  (0) 2022.10.09