본문 바로가기
데이터베이스

[SQLD] SQL의 이해 및 구문

by 데이널 2023. 11. 15.

이번 포스팅에서는 데이터베이스에서는 빼놓을 수 없는 SQL에 대해 알아보도록 하겠습니다. 우리가 데이터베이스를 설치하고 접속했을 때 가장 먼저 해 볼 수 있는 것이 SQL 쿼리를 실행하는 것입니다. 그 만큼 필수로 알아야 한다는 이야기입니다. 

 

 

SQL이란

SQL은 Structured Query Language의 약자로 데이터베이스를 관리하고 조작하기 위해 특별히 설계된 프로그래밍 언어입니다. ANSI(미국 표준 협회)에서 제정한 관계형 데이터베이스를 위한  표준 언어라고 할 수 있습니다. SQL을 통해서만 RDBMS안에 있는 데이터를 얻을 수 있습니다. 기본 원칙은 모든 SQL 문은 세미콜론(;)에 의해 종료됩니다. SQL은 대소문자를 구별하지 않습니다.

SQL 구문의 종류

  • DML(Data Manipulation Language) : 데이터를 검색하거나 변경하는 데이터조작 언어
  • DDL(Data Definition Language) : 데이터의 구조를 정의하는 데이터 정의 언어
  • DCL(Data Control Language) : 데이터베이스 사용자에게 부여한 특권을 정의하는 데이터 제어 언어
구분 명령어 설명
데이터 검색 SELECT 데이터베이스에서 데이터를 검색
데이터 조작어(DML) INSERT 데이터베이스의 테이블에서 새 행(ROW)입력, 기존 행 변경 및 필요 없는 행 제거
UPDATE
DELETE
MERGE
TRUNCATE
데이터 정의어 (DDL) CREATE 테이블에서 데이터 구조를 설정, 변경 및 제거
ALTER
DROP
RENAME
트랜잭션 제어 COMMIT DML문이 변경한 내용을 관리


SQL> savepoint s1;
SQL> rollback to s1;
ROLLBACK
SAVEPOINT
데이터 제어(DCL) GRANT 데이터베이스 및 해당 구조에 대한 액세스 권한을 부여하거나 제거
REVOKE

 

SQL 구문

SELECT : 표시할 대상 열(컬럼)을 기술합니다. 

FROM : 대상 열을 포함하는 해당 테이블을 정의합니다. 
WHERE : 조회되는 행(ROW)을 제한하는 부분입니다. WHERE 조건절을 사용할지 않아도 문제는 되지 않습니다.
ORDER BY : 조회된 ROW 가운데 지정된 컬럼 기준으로 정렬할 때 사용합니다. 

SELECT [DISTINCT] {*, COLUMN expression [ALIAS],…….}
FROM   TABLE
WHERE  조건절
ORDER BY [컬럼1],[컬럼2],……..[ASC/DESC]

 

만약 SELECT * FROM TB_EMP; 구문이 있다면  * 는 테이블에 있는 데이터의 모든 컬럼 표시하라는 의미입니다. TB_EMP 테이블의 모든 컬럼이 표시됩니다. 

 

SQL 표준 가이드
SQL 표준 가이드

 

SELECT문에는 조회하고자 하는 컬럼을 쉼표( , )로 구분하여 지정합니다. TB_EMP(사원) 테이블의 사원번호,사원명,직급을 조회하는 구문입니다. 그런데 보통 프로젝트를 시작할 때 그 회사만의 SQL 작성 표준 가이드를 배포합니다. 왜냐하면 SQL의 포멧이 일관되게 작성되게 하기 위해서입니다. 예를 들어 오른쪽과 같이 쉼표( , )를 컬럼 앞에 두면 작성 효율성을 높일 수 있습니다. 만약 조회하고 싶지 않는 컬럼이 있으면 앞에 코멘트 표시( -- )를 써주면 컬럼을 삭제하지 않아도 실행이 가능합니다. 

 

ALIAS(별칭)

SQL에서 별칭은 쿼리 기간 동안 테이블이나 열에 할당된 임시 이름입니다. 별칭은 쿼리 출력을 더 읽기 쉽게 만들거나 복잡한 쿼리를 단순화하는 데 사용됩니다. SQL에는 테이블 별칭과 열 별칭이라는 두 가지 주요 별칭 유형이 있습니다.

select salary
from   (
         select sal "Salary"
         from   scott.emp
       )
;

서브쿼리에서 “” 안에 alias를 사용하여 오류 발생.
select salary
from   (
         select sal Salary
         from   scott.emp
       )
;

“”를 사용하지 않고 alias사용하여정상 실행

 

산술연산의 우선순위

산술연산은 데이터타입이 number일 경우 가능합니다. charater 데이터타입의 컬럼에 산술연산을 할 경우 데이터베이스 내부에서 number 데이터타입으로 변환한 후 연산을 수행합니다. 

select  prod_nm
         , prod_base_atm
         , ( prod_base_atm * 0.8) + 1000 as real_sale_atm
from tb_prod
;

 

위 예시를 계산한다고 할 때 제품 단가(prod_base_atm)의 80%(20% 세일)에 1000을 더한 값으로 실제 판매 금액으로 출력합니다. 수학의 연산 우선 법칙을 그대로 적용합니다. 괄호를 사용하면 우선순위를 보다 명확하게 나타낼 수 있습니다.