본문 바로가기
[ SQL ]/SQL

[ SQL ] SQL(Structured Query Language)

by 환이s 2023. 1. 19.
728x90

JAVA를 어느 정도 공부했다면 데이터 베이스 또한 알아둬야 하기 때문에 오늘부터 SQL에 대해서 포스팅을 시작하려고 합니다!!

 

 

■ SQL이란?

SQL은 Structured Query Language의 줄임말로 구조화된 질의 언어이며, 자료를 관리 및 처리하기 위해 설계된 언어입니다. SQL은 1070년대 초에 IMB에서 최초 개발되었으며 관계형 모델이라는 이론에서 파생된 특징을 가지고 있는데, 현재 SQL의 표준으로 ANSI SQL이 정립되었습니다. 각 DBMS 프로그램에서 ANSI SQL을 기반으로 개발된 개별 SQL을 사용하며 서로 근소한 차이를 보입니다.

 

■ NoSQL이란?

NoSQl은 수없이 크고 작은 다양한 데이터의 처리 속도를 향상시키기 위해 RDBMS와는 달리 임시 저장공간에 데이터를 저장, 응답하는 매우 최적화된 key : value 저장 기법을 사용합니다.

 

1 ) 특징

 

  • 데이터간의 관계를 정의하지 않습니다.(table 간을 연결하여 조회할 수 있는 join 기능이 없습니다.)
  • 스키마가 없습니다.
  • 데이터 속성들을 동적으로 정의합니다.
  • 데이터 조회를 위해서는 비 SQL Interface를 통한 데이터 접근이 필요합니다.

 

2 ) 장/단점

 

  • 장점 : 데이터 분산에 용의 하고, 가변성이 있는 데이터 저장이 쉽습니다.
  • 단점 : 데이터가 일관성이 없고 복잡한 쿼리문을 사용하기 어렵습니다.

 

3 ) NoSQL종류

 

NoSQl도 종류가 있는데 꼭 알아두실 필요는 없지만 알아두시면 좋을 거 같아서 아래에 정리했습니다.

 

  • Document DataBase : Mongo DB, Cough DB
  • Wid Columnar DataBase : HBase, Cassandra, Hypertable
  • Graph DB : ArangoDB, 마크로직, Neo4j
  • Key - Value DB : Riak, Tokyo 등 

 

SQL과 NoSQL은  각각의 장단점이 있기 때문에 상황에 맞게 활용을 할 수 있는데 구조를 확인해보시면 좀 더 이해하기 쉬울 거 같습니다.

구조는 다음과 같습니다.

 

SQL vs NoSQL

 

■ SQL 명령어의 종류

 

SQL 명령어의 종류는 크게는 5가지의 종류로 나누어지며, 종류마다 정의는 아래와 같습니다.

 

종 류 문 법 설 명
DQL(Data Query Language) 데이터 질의어(query문) - select문 테이블 내의 데이터를 조회할 때 사용 합니다
DML(Data Manipulation Language) 데이터 조작어 - insert, update, delete 테이블 내의 데이터를 입력, 수정, 삭제할 때 사용 합니다
DDL(Data Definition Language) 데이터 정의어 - create, alter, drop 테이블 등의 객체를 생성, 변경, 삭제할 때 사용 합니다
TCL(Transaction Control Language) 트랜잭션 제어어 - commit, rollback, savepoint 어디서부터 롤백할지를 지정 합니다
DCL(Data Control Language) 데이터 제어어 - grant(권한부여), revoke(권한회수) DB 사용자에게 권한을 부여하거나 취소할 때 사용 합니다

※ PL/SQL : 제어문(조건문, 반복문)이 들어있는 SQL로써 오라클에서 지원하는 확장된 SQL입니다.

 

■ SQL  형식 

 

각 프로그래밍 언어가 가진 특성은 꼭 구별 지어 알아두어야 사용할 때 오류를 줄일 수 있습니다.

SQL은 다음과 같은 형식을 갖고 있습니다.

 

SQL

 

1) 기본형식

select 컬럼명1, 컬럼명2 ,.... from 테이블명

where 조건절 order by 정렬의 기준컬럼명[asc/desc]

 

※ 데이터베이스에서 원하는 데이터를 검색, 추출

2 ) Syntax

SELECT [ALL | DISTINCT] 열_리스트

[FROM 테이블_리스트]

[WHERE 조건]

[GROUP BY 열_리스트 [HAVING 조건]]

[ORDER BY 열_리스트 [ASC | DESC]];


3 ) distinct / all / order by / where

-distinct: 중복된 데이터를 허용하지 않음

-all: 중복된 데이터를 허용함(기본생략)

-order by : 정렬 - asc (오름차순, 생략가능), desc (내림차순)

-where 절 : 검색에 조건을 부여한다.


4 ) alias (별칭)

- 기본형식 :
컬럼명 [as] “별칭”
(큰따옴표는 생략가능하나 단, 별칭에 빈문자열이 있을때는 큰따옴표를 처리해야 한다. ex) "별칭 별칭")


5 ) 연산자의 종류

 

가) 산술연산자 : +, -, *, / (참고: 나머지연산은 mod(A,B)라는 함수를 써야함)

나) 비교연산자 : =, !=, >, >=, <, <=

다) 논리연산자 : and, or, not

7) SQL연산자: in, any, all, between, like, escape, is null, is not null

8) 결합연산자: ||
결합할 내용이 날짜나 문자인 경우에는 단일따옴표(' ')를 붙임

9) 연산자 우선순위

0순위: 괄호( )
1순위: 비교연산자, SQL연산자, 산술연산자
2순위: not
3순위: and
4순위: or
5순위: 결합연산자

 


마치며

 

오늘은 SQL이 무엇인지, 어떻게 작성하는지를 살펴보았습니다.

다음 포스팅에선 본격적으로 SQL에서 필수적으로 알아야 하는 예약어들과 함수에 대해서 배워보도록 하겠습니다.

 

728x90

'[ SQL ] > SQL' 카테고리의 다른 글

[ SQL ] View_Index_Sequence  (0) 2023.02.01
[ SQL ] 테이블과 제약 조건(constraint)  (2) 2023.01.31
[ SQL ] Transaction and Sub Query  (0) 2023.01.30
[ SQL ] JOIN  (2) 2023.01.22
[ SQL ] SQL 함수 정리  (1) 2023.01.21