본문 바로가기

IT

SQL(Structured Query Language)이란?

SQL(Structured Query Language)은 관계형 데이터베이스에서 데이터 조작과 데이터 정의를 하기 위해 사용하는 언어이다.
즉, 독자적인 문법을 갖는 관계형 데이터 베이스(RDB)표준 언어이다.

(관계형 데이터베이스는 엑셀이라고 생각하시면 간단합니다.)

.SQL이 데이터베이스를 조작하는 ‘언어’이긴 하지만 일반적인 프로그래밍 언어(C, 자바, 파이썬 등)와는 조금 다른 특성을 갖습니다.


ex ) select * from dept

ex ) delete dept where ename = 'Anderson'
이런식의 표현이 SQL의 교육에서 자주 보는 쿼리이다.

SQL은 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리 및 처리하기 위해 설계된 특수 목적의 프로그래밍 언어이며 질의(Query) 언어라고 불리기도 합니다. 

 

어느 일정한 틀이나 패턴에 맞게 조건들을 나열하기만 하면 SQL은 우리가 원하는 결과를 가져다준다.

즉, SQL은 절차적 언어처럼 처리 과정을 일일이 기술할 필요가 없는 구조화된 쿼리 언어이며, DataBase에 Query(쿼리)를 보내 원하는 데이터를 가져오거나 삽입, 삭제 등을 할 수 있다.

[절차적언어의 예 ) if a= b then c else d 이런식으로 절차적으로 기술하는것.]

 


사용자 <-> DataBase 
사용자가 SQL을 입력하면 DataBase의 자료를 얻어낼 수 있다.

ex ) 사용자가 select * from emp 를 하면 DataBase의 자료를 얻어와서 

이런식의 결과를 가져온다.

 

SQL의 특징

1) 배우고 사용하기 쉬운 언어이다.
2) 절차적인 언어가 아니라 선언적 언어이다.

    [절차적 언어 : 개발자가 처리 순서를 처음부터 끝까지 정해줘야한다.(ex : JAVA, C)]

    [SQL : 개발자가 처리절차를 지정하지 않고 원하는 결과를 정의하여 요청한다.]
3) DBMS의 종류에 얽매이지 않고 사용할 수 있는 장점이 있습니다.
    [RDB를 다루는 DBMS는 여러 종류가 있지만 (MysQL, Oracle 등), 공통으로 표준 SQL을 사용할 수 있습니다.]

    [SQL은 특정 회사에서 만드는 것이 아니라 국제표준화기구에서 SQL에 대한 표준을 정해서 발표하고 있습니다.]  
    [이를 표준 SQL이라고 합니다.]  
    [그런데 문제는 SQL을 사용하는 DBMS를 만드는 회사가 여러 곳이기 때문에 표준 SQL이
각 회사 제품의 특성을

     모두 포용하지 못한다는 점입니다. ]

    [그래서 DBMS를 만드는 회사에서는 되도록 표준 SQL을 준수하되, 각 제품의 특성을 반영한 SQL을 사용합니다.]

DBMS(https://y34d.tistory.com/80)

DataBase가 SQL을 이해하는 방법

1. 띄어쓰기로 구분
DataBase가 SQL을 이애할때는 띄어쓰기를 기준으로 단어를 분류합니다.
ex) SELECT와 SEL ECT는 다릅니다.

2. 예약어로 매칭
SQL문법은 SQL질의 요청에서 특별한 의미를 가지는 단어들을 미리 정해놨습니다.
ex) SELECT, INSERT, DELETE 등 

3. 예약어 규칙
SELECT 다음에는 FROM 이 나오고 그 이후에는 테이블이 나오는 규칙을 가지고 있습니다.
ex) select dept, ename from emp

 

4. 대소문자를 가리지 않는다.

select ename from emp 와 SELECT ENAME FROM EMP는 동일한 결과값이 나옵니다.

그러나 대소문자 구분을 통해서 가독성을 높이는것이 좋습니다.

 


SQL의 종류

구분 명령문 설명
QUERY SELECT - 데이터 베이스에서 데이터를 검색할때 사용한다.
DML
(Data Manipulation Language)
INSERT
UPDATE
DELETE
MERGE
- 테이블에서 새 행을 입력한다.
- 기존 행 변경한다.
- 행을 제거한다.
- 데이터가 테이블에 존재하지 않으면 INSERT, 존재하면 UPDATE를 수행한다.
DDL
(Data Definition Language)
CREATE
ALTER
DROP
RENAME
TRUNCATE
- 테이블 등 데이터 구조(객체)를 생성한다.
- 객체를 수정할 때 사용한다.
- 객체 제거 시 사용한다.
- 객체 이름을 변경할 때 사용한다.
- 객체내의 모든 행을 삭제한다.
TCL
(Transaction Control Language)
COMMIT
ROLLBACK
SAVEPOINT
- DML문이 변경한 내용을 관리한다. 데이터에 대한 변경내용은 논리적인 트랜잭션으로 그룹화 될 수 있다.
DCL
(Data Control Language)
GRANT
REVOKE
- ORACLE 데이터베이스 및 해당 구조에 대한 액세스 권한을 부여하거나 제거한다.

이중 개발자가 일반적으로 DB를 사용할 때 사용하는 언어의 중요도는 DML > DDL > DCL 순입니다.

DataBase를 조회하고, 관리하는 DML을 가장 많이 사용하며, DB의 테이블의 스키마(설계 수준)를 수정하는 DDL을 그다음으로 많이 씁니다

DCL이나 DDL은 주로 DBA가 자주 사용합니다. 일반적인 개발자들은 DCL과 DDL을 사용할일이 많지는 않습니다.

 

 

'IT' 카테고리의 다른 글

[Oracle] 형 변환  (0) 2022.06.29
DBMS(DataBase Management System)란?  (0) 2022.06.28
32bit와 64bit의 차이?  (0) 2020.06.16
VIEW 테이블(가상 테이블) (뷰)  (0) 2020.06.04
[용어 정리] SOLID란?  (0) 2020.05.24