SQL 기초 (조회, 별칭, 연산, 문자열 연결)

김하은·2023년 3월 25일
0

SQL

목록 보기
1/12
post-thumbnail

📖 데이터 조회하기

✍ 데이터는 select 구문을 이용하여 지정된 데이터를 호출(query)할 수 있다.

기본 형식

SELECT 검색 대상
FROM 검색 대상 집합 (테이블, 뷰, 서브쿼리)
WHERE 행 제한을 위한 조건식

-- 전체 컬럼 검색
SELECT * 
FROM 테이블명
WHERE 조건;

-- 특정 컬럼 검색
SELECT 컬럼1, 컬럼2
FROM 테이블명
WHERE 조건

ex) emp 테이블에 있는 전체 칼럼(*)을 검색

SELECT *
FROM emp;

ex) dept테이블의 전체 컬럼의 데이터를 검색

SELECT ename, job, deptno
FROM emp; 

ex) emp 테이블의 empno, mgr, hiredate, deptno 출력

SELECT empno, mgr, hiredate, deptno
FROM emp;

✍SQL 문장 작성 순서 (분석 순서)

5. SELECT : 검색 대상 표현식
1. FROM : 검색 대상 집합 (테이블, 뷰, 서브쿼리)
2. WHERE : 행 제한을 위한 조건식
3. GROUP BY : 그룹 생성을 위한 표현식
4. HAVING : 그룹 제한을 위한 조건식
6. ORDER BY : 정렬 위한 표현식

  1. FROM문을 활용하여 검색 대상 집합(테이블, 뷰, 서브쿼리)을 정의함
  2. WHERE절을 활용하여 행 제한을 위한 조건식을 작성함
  3. 그룹 생성을 할 경우 GROUP BY문을 활용하여 그룹 생성을 함
  4. 그룹 제한 조건이 있는 경우 HAVING을 활용하여 그룹 제한을 위한 조건식을 작성함
  5. SELECT문을 활용하여 검색 대상을 작성함
  6. ORDER BY 문을 활용하여 정렬을 함.

(실행 순서라는 표현은 실행 계획에 영향을 받는 부분이기 때문에 실행 순서라고 보기에는 어폐가 있음.)



📖 테이블과 컬럼명에 별칭(alias) 처리하기

✍테이블명과 컬럼명에 as라는 키워드를 쓰거나 공백을 통해서 별칭을 선언하여, 컬럼명이나 테이블명으로 활용할 수 있다.

SELECT empno,
empno AS no, -- as 키워드를 이용해서 별칭 사용 
ename AS name,
hiredate hire, -- " "공백을 삽입하여 별칭으로 처리
deptno dno
FROM emp; 

ex) 다음과 같이 별칭으로 as, 공백을 이용하여 컬럼을 출력하세요.
(empno ==> eno, ename ==> name, mgr ==> management, sal ==> salary)

SELECT empno AS eno,
ename AS name,
mgr management,
sal salary
FROM emp; -- 기본적인 테이블 처리 문법은 아래와 같이 테이블명.컬럼명으로 적는데, 테에블이 하나밖에 없을 때는 테이블명을 생력한다. 

SELECT emp.empno
FROM emp;

✍ 테이블명은 한칸 띄워 alias를 사용하여 처리한다.

SELECT e.empno, ename
FROM emp e;  

ex) 전체 컬럼을 출력하고, 추가적으로 처리할 때는 아래와 같이 처리한다.

SELECT empon NO, e.*
FROM emp e; -- 컬럼의 alias에 공백이나 허용되지 않는 특수문자를 사용할 때는 컬럼명 "alias명" 으로 사용하여 처리한다. 

✍ " " : 공백이나 특수문자를 넣어서 alias를 활용할 때 사용한다.

SELECT empno "번 호", -- 중간에 공백을 넣어서 alias를 활용할 때 사용한다.
sal "#급여" -- alias명으로 허용되지 않는 특수문자를 사용할 때도 "특수문자"로 처리한다. 
FROM emp; 

ex) 해당 컬럼을 alias로 처리하여 출력하세요. empno("사 원 번 호"), ename("@사원명@"), sal("급여")

SELECT empno "사 원 번 호", ename "@사원명@", sal 급여
FROM emp;


📖 데이터의 산출 연산 처리와 문자열 연결.

✍ 1. 숫자형 데이터가 있는 컬럼은 연산처리가 가능하다.
사칙연산자(+,-,*,/), %(지원하지 않음 - mod(데이터1, 데이터2))

SELECT empno, empno + 10 "10더함", sal, sal*0.5 "급여의 50%", deptno, 
sal*(deptno/100) "급여와 부서의 연산" MOD(sal, deptno) "나머지" 
FROM emp;

ex) 사원번호를 만단위체계로 바꾸려고 10000을 더하여 처리하고, sal와 comm을 합산하여 총급여로 표현하세요

SELECT empno + 10000 사원번호, comm, sal+comm 총급여, sal+nvl(comm,0) 총급여2
FROM emp; -- cf) null값 데이터는 연산처리하면 null 처리된다. -- cf) nvl(컬럼) 컬럼이 null(데이터가 없을 때, 초기데이터), 초기데이터로 처리

✍ 2. 컬럼과 문자열 연결 처리 ||

기본 형식

select 컬럼명 || '연결할문자열', 컬럼명1 || 컬럼명2

SELECT empno || '번' 사원번호
 ename || empno "이름과 사원번호"
 deptno || '/' || empno || '/' || ename "부서번호/사원명/이름" FROM emp;
SELECT * FROM emp;

ex) 사원명 @@@의 사원번호는 @@@ 입니다. ename, depno를 활용하여 출력하세요

SELECT '사원명' || ename || '의 사원번호는' ||empno|| '입니다.'
FROM emp; 

ex) 사원명의 월급여(sal의 1/12)를 아래 형식으로 출력하세요. ename, sal
@@@의 월급여는 @@입니다.

SELECT ename||'의 월급여는'|| sal/12 || '입니다' show
FROM emp; 
-- round():반올림, ceil():올림, floor:내림 ==> 내장 함수시 진행
SELECT ename || '님의 사원번호는' || empno || '이고, 올해 연말보너스는 연봉의 20%인 ' || 
sal*1.2 || '원입니다.' show 
FROM emp;

SELECT ename || '님의 입사일은 ' || hiredate || '이고, 현재 연봉의 1/13인 월급여는' || 
sal/13 || '만원.' show 
FROM emp;

SELECT ename || '님의 이번달 보너스는 연봉' || sal || '의' || deptno || '%기준으로' || 
sal*(deptno/100) ||'만원 지급합니다.'show 
FROM emp;
profile
개발자국

0개의 댓글