연결 연산자

SELECT 컬럼 || '리터럴' || ......
FROM  테이블;

 

중복 제거

SELECT [DISTINCT | ALL] 컬럼, 컬럼, ...
FROM  테이블;

 

예제 1.  다양한 방법으로 사원의 이름을 급여 또는 업무와 함께 검색한다.

SELECT ename||sal 이름_급여
FROM emp;

SELECT ename||' '||sal  이름_급여
FROM emp;

SELECT ename||'의 업무는 '||job||'입니다.'
FROM emp;

 

예제 2.  주의해야 할 연결 연산자를 이용

SELECT ename||' '||sal+100
FROM emp;

위와 같이 하면 오류가 난다. (연산자 우선순위 때문)

괄호를 붙여주도록 한다.

SELECT ename||' '||(sal+100)
FROM emp;

 

예제 3. 직원들의 업무는 어떤 것이 있는지 검색한다.(업무의 종류를 검색한다.)

SELECT job 업무 FROM emp;

기본으로 출력되는 것이 ALL이기 때문에 전체가 출력된다.

아래와 같이 출력하면 중복을 제거해 출력한다.

SELECT DISTINCT job 업무 FROM emp;

 

실습

1. '____학과인 ____학생의 현재 평점은 __입니다.' 형태로 학생의 정보를 출력한다. 

SELECT major||'학과인 '||sname||' 학생의 현재 평점은 '||avr||'입니다.'
FROM student;

 

2. '____과목은 ____학점 과목입니다.' 형태로 과목의 정보를 출력한다. 

SELECT cname||'과목은 '||st_num||'학점 과목입니다.'
FROM course;

 

3. '____교수는 ____학과 소속입니다.' 형태로 교수의 정보를 출력한다.

SELECT pname||'교수는 '||section||' 학과 소속입니다.'
FROM professor;


4. 학교에는 어떤 학과가 있는지 검색한다.(학생 테이블 기반으로 검색한다.)

SELECT DISTINCT major 학과 
FROM student;

 

5. 학교에는 어떤 학과가 있는지 검색한다.(교수 테이블 기반으로 검색한다.)

SELECT DISTINCT section 학과 
FROM professor;

 

6. 교수의 지위는 어떤 것들이 있는지 검색한다.

SELECT DISTINCT orders 교수_지위
FROM professor;

 

7. '____학생의 4.5 환산 평점은 ____입니다.' 형태로 학생의 환산 평점을 출력한다.

SELECT sname||'학생의 4.5 환산 평점은 '||(avr*4.5/4)||'입니다.'
FROM student;

 

8. '____과목의 담당 교수 번호는 ____입니다.' 형태로 과목의 정보를 출력한다.

SELECT cname||'과목 담당 교수번호는 '||pno||'입니다.'
FROM course;

 

9. 학교에 개설된 과목들은 몇 학점짜리인지 검색한다.

SELECT cno 과목번호, cname 과목이름, st_num 학점수
FROM course;

 

10. 학생들이 수강중인 과목의 과목 번호를 검색한다.

SELECT DISTINCT cno "수강 과목번호"
FROM course;

별명을 이용한 검색

SELECT 컬럼 as "별명", 컬럼 as "별명", ... 
FROM  테이블;

as" "는 생략 가능

_ : 공백 표시

 

수식을 이용한 검색

SELECT 수식 [as 별명], ...
FROM  테이블;

 

NULL 연산 위한 NVL 함수

NVL(컬럼, 치환 값)

치환 값은 연산자의 항등원으로 바꾼다.

+, - : 0

*, / : 1

계산한 값이 정확하지 않을 수도 있기 때문에 이런 경우 확실히 적어주는 것이 좋다.

 

 

예제 1. 각 사원의 이름과 담당업무를 검색해서 결과를 보고한다.

SELECT eno 사번, ename 이름, job 업무 FROM emp;

 

예제 2. 각 사원의 연간 수급하는 급여를 검색한다.

select eno 사번, ename 이름, sal*12 연간_급여
from emp;

 

예제 3. 별명에 반드시 이중 인용 부호가 필요한 경우를 확인한다.

select ename "10name" from emp;

 

예제 4. 사원의 연봉을 검색한다. (연봉 = 12개월분 급여(sal) + 보너스(comm))

select eno 사번, ename 이름, sal 급여, comm 보너스, sal*12+comm 연봉
from emp;

보너스 값 NULL이라 연봉이 NULL이 나옴

 

예제 5. 사원의 연봉을 검색한다.

select eno 사번, ename 이름, sal*12+NVL(comm,0) 연봉
from emp;

 

실습

1. 각 학생의 평균 평점을 검색한다.(별명을 이용)

SELECT sno 학번, sname 이름, avr 평균_평점
FROM student;


2. 각 과목의 학점수는 검색한다.(별명을 이용)

SELECT cno 과목번호, cname 과목이름, st_num 학점수
FROM course;


3. 각 교수의 지위를 검색한다.(별명을 이용)

SELECT pno 교수번호, pname 이름, orders 지위
FROM professor;

 

4.  급여를 10% 인상했을 때 연간 지급되는 급여를 검색한다.

SELECT eno 사번, ename 이름, (sal*1.1*12) 연간_급여
FROM emp;


5. 현재 학생의 평균 평점은 4.0 만점이다. 이를 4.5 만점으로 환산해서 검색한다.   

SELECT sno 학번, sname 이름, (avr*4.5/4) "4.5만점 환산"
FROM student;

 

6. 급여가 10% 인상될 경우 각 사원의 연봉을 검색한다. 

SELECT eno 사번, ename 이름, (sal*1.1*12)+NVL(comm,0) 연봉
FROM emp;


7. 1년 동안 지급되는 급여와 10% 인상되어 1년 동안 지급되는 급여 간에 차액을 검색한다.

SELECT eno 사번, ename 이름, (sal*1.1*12)-(sal*12) "1년 급여 차액"
FROM emp;


8. 각 학생들의 평균 평점을 4.5 만점으로 환산한 경우 각각 평점의 상승폭은 얼마인지 검색한다.

SELECT sno 학번, sname 이름, (avr*4.5/4)-avr "4.5만점 환산 상승폭"
FROM student;

SELECT

형식

SELECT [ 컬럼, 컬럼, ... | * ]  
FROM  테이블;

- [ ; ] 로 끝내기

- 대소문자 구별 X

- 반드시 출력 결과 존재

 

테이블 구조 검색

DESC 테이블;

- 컬럼의 이름, 데이터 타입 확인

 

테이블 목록 검색

SELECT * FROM tab;  # tab : 가상 테이블

- 현재 스키마(shema)의 모든 테이블 목록 검색 (스키마 = 유저)

 

수식 검색

SELECT 수식
FROM  dual;

 

* 테이블은 2차원 배열과는 다르다.

 

 

예제

select * from tab;

실행 결과

 

DESC emp;

실행 결과

 

SELECT * FROM emp;

실행 결과

 

DESC dept;

실행 결과

 

 

SELECT * FROM dept;

실행 결과

 

SELECT eno, ename, job FROM emp;

실행 결과

 

 

SELECT eno, ename, sal FROM emp;

실행 결과

 

SELECT 2+3 FROM dual;

실행 결과

 

 

실습

1. student, course, professor, score table의 구조 검색

DESC student;
DESC professor;
DESC course;
DESC score;

각각 실행한다.

실행 결과

 

2. 모든 학생의 정보를 검색

SELECT * FROM student;

실행 결과 (아래 정보 생략)

 

3. 모든 교수의 정보를 검색

SELECT * FROM professor;

실행 결과

 

4. 모든 과목의 정보를 검색

SELECT * FROM course;

실행 결과 (아래 정보 생략)

 

5. 기말고사 시험 점수를 검색

SELECT * FROM score;

실행 결과 (아래 정보 생략)

 

6. 학생들의 학과와 학년을 검색

SELECT sno, sname, major, syear FROM student;

실행 결과 (아래 정보 생략)

 

7. 각 과목의 이름을 검색

SELECT cname FROM course;

실행 결과 (아래 정보 생략)

 

8. 모든 교수의 직위를 검색

SELECT pno, pname, orders FROM professor;

실행 결과 (아래 정보 생략)

 

9. 각 과목의 학점수와 담당교수 번호를 검색

SELECT cno, cname, st_num, pno FROM course;

실행 결과 (아래 정보 생략)

 

10. 각 학생들이 속한 학과와 학년을 검색

SELECT sno, sname, major, syear FROM student;

실행 결과 (아래 정보 생략)

+ Recent posts