이번 포스팅에서는 데이터베이스에서는 빼놓을 수 없는 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 테이블의 모든 컬럼이 표시됩니다.
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을 더한 값으로 실제 판매 금액으로 출력합니다. 수학의 연산 우선 법칙을 그대로 적용합니다. 괄호를 사용하면 우선순위를 보다 명확하게 나타낼 수 있습니다.
'데이터베이스' 카테고리의 다른 글
[SQLD] 데이터베이스 제약조건 및 형변환 (46) | 2023.11.17 |
---|---|
[SQLD] SQL 비교연산자(관계, 논리), IN, OR, AND, NOT, Exists (57) | 2023.11.16 |
하둡과 빅데이터는 무슨 관계일까? (1) | 2023.11.14 |
인메모리(In-memory) DB 특징과 종류 비교 (0) | 2023.11.13 |
NoSQL의 특징 - RDBMS와 어떻게 다를까? (0) | 2023.11.10 |