SELECT - 테이블에서 행을 검색
INSERT - 테이블에 행을 입력
UPDATE - 테이블의 데이터(행)을 수정
DELETE - 테이블의 행을 삭제
CREATE - 테이블을 생성
ALTER - 테이블을 구조 수정
DROP - 테이블을 삭제
GRANT - 권한을 할당
REVOKE - 권한을 해제
SELECT tname FROM tab; -> 테이블 목록을 확인할 수 있다.
DESC 테이블명; -> 테이블의 구조 ( 테이블의 컬럼 구성)
VARCHAR2 (숫자->사용 할 수 있는 바이트 수)
DATE (연원일시분초 저장되어있음)
dept (부서)
emp (사원)
student (학생)
professor (교수)
course (과목)
score (기말고사 점수)
SQL 명령어
as생략가능
" " 공백이 들어갔을 때, 별명이 숫자로 시작할 때 씀 = 공백자리에_써도 된다.
null은 연산시 값이 null로 되는데 더하거나 뺄때는 숫자 0으로
곱하거나 나누는것이면 1로 항등원으로 바꿔준다.
NVL(comm,0) , NVL(comm,1)
연결 연산자와 중복 제거
' '안에는 대소문자 구분한다.
SELECT [DISTINCT | ALL] 컬럼, 컬럼, ... DISTINCT 중복되지않게 한번만 출력
실습
1. Student, course, professor, score table의 구조를 검색한다.
2. 모든 학생의 정보를 검색한다.
SQL> SELECT FROM ;
3. 모든 교수의 정보를 검색한다.
SQL> SELECT * FROM professor;
4. 모든 과목의 정보를 검색한다.
SQL> SELECT * FROM course;
5. 기말고사 시험 점수를 검색한다.
SQL> SELECT result 시험_점수 FROM score;
6. 학생들의 학과와 학년을 검색한다.
SQL> SELECT major 학과, syear 학년 FROM student;
7. 각 과목의 이름을 검색한다.
SQL> SELECT cname 과목명 FROM course;
8. 모든 교수의 직위를 검색한다.
SQL> SELECT pno 교수번호, pname 이름, orders직위 FROM professor;
9. 각 과목의 학점수와 담당교수 번호를 검색한다.
SQL> SELECT cname 과목명, pno 담당_교수_번호, st_num 학점수 FROM course;
10. 각 학생들이 속한 학과와 학년을 검색한다.
SQL> SELECT sname 이름, major 학과, syear 학년 FROM student;
1. 각 학생의 평균 평점을 검색한다.(별명을 이용)
select sno 학번, sname 이름, avr 평균평점 from student;
2. 각 과목의 학점수는 검색한다.(별명을 이용)
select cname 과목명, st_num 학점수 from course;
3. 각 교수의 지위를 검색한다.(별명을 이용)
select pname 이름, orders 직위 from professor;
4. 급여를 10% 인상했을 때 연간 지급되는 급여를 검색한다.
select (sal*1.1)*12 급여 from emp;
5. 현재 학생의 평균 평점은 4.0 만점이다. 이를 4.5 만점으로 환산해서 검색한다.
select avr*4.5/4.0 환삼평점 from student;
6. 급여가 10% 인상될 경우 각 사원의 연봉을 검색한다.
select (sal*1.1)*12 연봉, ename 이름 from emp;
7. 1년 동안 지급되는 급여와 10% 인상되어 1년 동안 지급되는 급여 간에 차액을 검색한다.
select (sal*1.1*12)-sal 차액 from emp;
8. 각 학생들의 평균평점을 4.5 만점으로 환산한 경우 각각 평점의 상승폭은 얼마인지 검색한다.
select (avr*4.5/4.0)-avr 상승폭 from student;
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.0)||'입니다.' from student;
8. '____과목의 담당 교수 번호는 ____입니다.' 형태로 과목의 정보를 출력한다.
select section||'과목의 담당 교수 번호는'||pno||'입니다.' from professor;
9. 학교에 개설된 과목들은 몇 학점짜리인지 검색한다.
select distinct cname 과목, st_num 학점 from course;
10. 학생들이 수강중인 과목의 과목번호를 검색한다.
select distinct cname 과목명, cno 과목번호 from course;
1. 성적순으로 학생의 이름을 검색한다.
select avr 성적, sname 이름 from student order BY 성적 desc;
2. 학과별 성적순으로 학생의 정보를 검색한다.
select avr 성적, sname 이름, major 학과 from student order by 성적 desc;
3. 학년별 성적순으로 학생의 정보를 검색한다.
select syear 학년, sname 이름, avr 성적 from student order by 학년,성적 desc;
4. 학과별 학년별로 학생의 정보를 성적순으로 검색한다.
select major 학과, syear 학년, sno 학번, sname 이름, sex 성별, avr 성적 from student order by 학과,학년 desc ,성적 desc;
5. 학점 순으로 과목 이름을 검색한다.
select cname 과목명, st_num 학점수 from course order by 학점수 desc;
6. 각 학과별로 교수의 정보를 검색한다.
select section 소속학과, pno 교수번호, pname 이름, orders 직위, hiredate 부임일 from professor order by 소속학과;
7. 지위별로 교수의 정보를 검색한다.
select orders 직위, pno 교수번호, section 소속학과, pname 이름, hiredate 부임일 from professor order by 직위 desc;
8. 각 학과별로 교수의 정보를 부임일자 순으로 검색한다.
select section 소속학과, pname 이름, hiredate 부임일 from professor order by 소속학과,부임일 desc;
9. 급여가 10% 인상된 경우 부서별로 각 사원의 연봉을 연봉순으로 검색한다.
select job 부서, ename 이름, (sal*1.1*12)+NVL(comm,0) "급여가_10%_인상된_연봉" from emp order by 1.3 desc;
10. 보너스가 100% 인상된 경우 업무별로 각 사원의 연봉을 연봉순으로 검색한다.
select job 부서, ename 이름, (sal*12)+NVL(comm,0)*2 "보너스_100%_포함된_연봉" from emp order by 1,3 desc;