본문 바로가기
Database/SQL

SQL (1) - select 문

by 슬픈 야옹이 2023. 2. 3.

아. sql 쓰기 싫었는데.

갈수록 어려워져서 정리를 해놓을 필요성을 느껴 포스트를 쓰게 되었다.

 

본문 내용이 기므로 결론을 먼저 정리하고 시작하겠다.

 

select문 사용법과 예시

SELECT [열1, 열2, ... | *]
from [테이블 이름];

-- 예시
select eno, ename, job
from emp;

select * from emp;

 

DESC

DESC [테이블 이름];

-- 예시
desc emp;

desc dept;

 

select 절을 이용한 수식 검색

select [수식] 
from dual;

-- 예시
select 2+3
from dual;

 

select절에 별명 지정

select 열1 as "별명1", 열2 as "별명2", ...
from 테이블

-- 예시
select eno as "사번", ename as "이름", job as "업무"
from emp;

 

 

SQL이란

SQL은 Structured Query Language 의 약자로, 번역하면 '구조화된 질의 언어' 정도의 의미다.

 

SQL은 RDB (Relational DataBase)에서의 데이터 관리에 사용되는 특수 목적의 언어다.

 

이게 무슨 의미냐면, RDB가 아닌 다른 시스템에서는 쓰이지 않는다는 의미다.

 

DB에는 RDB말고도 몇 가지 종류가 있는데, 포스트의 범위를 벗어나므로 서술하지 않는다.

 

이 포스트의 카테고리를 DB가 아니라 SQL로 명명한 이유도 비슷한 이유다. (SQL은 RDB용 언어라는 것)

 

어찌되었든, SQL과 DB는 따로 봐야 한다는 것이 지금 나의 생각이다.

SQL을 다룰 줄 안다는 것이 DB를 다룰줄 안다는 것을 의미하지는 않기 때문이다.

 

한가지 덧붙이자면,

SQL은 ANSI(American National Standards Institute, 미국 표준 협회)에서 제정한 표준 문법이 있다.

 

RDBMS를 제작 및 배포하는 회사에서 이러한 표준 SQL(ANSI SQL)을 기준으로 SQL 문법을 정의하고,

여기에 각 RDBMS별로 별도의 문법을 추가하여 배포하는 식이다.

 

즉, SQL 문법을 한 번 배워두면 RDBMS의 종류에 상관없이 문법이 비슷비슷하기 때문에,

사용하는 RDBMS가 바뀌어도 금방 배울 수 있다는 장점이 있다.

 

 

서론이 길었다.

이 카테고리의 모든 SQL문은 oracle database 19c 환경에서 실행 작성되었으며,

이 포스트에서는 SQL의 select문에 대해 다룬다.

 

 

SELECT문

select문은 모든 sql의 기본이 되는 문장으로서, 테이블로부터 지정한 컬럼(열)을 검색한다.

 

SELECT [열1, 열2, ... | *]
from [테이블 이름];

 

열을 명시하는 칸에 *을 사용하면 모든 열을 조회한다는 의미이며, 반드시 단독으로 쓰인다.

 

다만, 협업 프로젝트 등 다른 사람과 함께 sql 파일을 볼 일이 있다면 *은 쓰지 말고 열 이름을 모두 명시하는 것이 좋다.

 

사용 예시는 다음과 같다.

select eno, ename, job
from emp;

select * from emp;

 

sql문은 ; (세미콜론)으로 문장의 끝을 표시한다.

세미콜론을 입력하기 전까진 줄바꿈하면서 입력해도 상관 없다.

 

또, sql은 대소문자를 구분하지 않는다.

다만, sql 키워드를 다른 일반적인 식별자와 구분하기 위해 대문자로 많이 표기하는 편이다.

 

물론 문자열 데이터를 별도로 입력할 때는 대소문자를 구분한다.

 

실행 결과는 다음과 같다.

select문 실행결과 1

 

select문 실행결과 2

 

 

 

 

DESC

테이블의 구조를 검색한다.

각 컬럼의 이름과 타입을 확인할 수 있다.

 

DESC [테이블 이름];

 

사용 예시는 다음과 같다.

desc professor;

 

desc 사용 예시

 

 

 

select문 예제

예제 1. Emp 테이블과 dept 테이블의 구조와 내용을 검색한다.

desc emp;
select * from emp;

desc dept;
select * from dept;

 

실행 결과

desc emp;

 

select * from emp;

 

desc dept;

 

select * from dept;

 

 

예제 2. 사원의 이름과 업무를 검색한다.

select eno, ename, job
from emp;

 

실행 결과

 

 

select 절을 이용한 수식 검색

select 절에 수식을 입력하면 결과를 확인할 수 있다.

사용법은 다음과 같다.

 

select [수식] 
from dual;

 

다음은 간단한 사용 예시다.

select 2+3
from dual;

 

 

예시에서는 간단한 수식을 사용했지만, 복잡한 연산이나 후에 소개할 다양한 연산 함수도 사용할 수 있다.

 

예시에 사용된 dual 테이블은 아무 데이터도 없는 더미 테이블이며,

예시처럼 함께 출력할 데이터 없이 수식만 계산할 때 많이 사용한다.

 

 

select 절에 별명 지정

select 절에 명시한 열에 대해 별명을 붙여 출력할 수 있다.

붙인 별명은 해당 sql문이 실행될 때에만 반영된다.

 

사용 방법은 다음과 같다.

select 열1 as "별명1", 열2 as "별명2", ...
from 테이블

 

사용 예시는 다음과 같다.

 

select eno as "사번", ename as "이름", job as "업무"
from emp;

 

실행 결과

 

 

간단한 응용 예시를 하나 더 살펴보자.

select eno as "사번", ename as "이름", job as "직무", (sal * 12 + nvl(comm, 0)) as "연봉"
from emp;

실행 결과

 

예시에 사용된 nvl은 sql 함수로, 해당 열의 null을 0으로 처리한다.

 

'Database > SQL' 카테고리의 다른 글

SQL (4) - WHERE 절  (2) 2023.04.12
SQL (3) - ORDER BY  (0) 2023.02.04
SQL (2) - 연결 연산자와 distinct  (0) 2023.02.04