DAY 22
oracle 다운
https://www.oracle.com/kr/database/technologies/oracle-database-software-downloads.html
오라클과 MYSQL차이
- 오라클 : 버전뒤에 C를 사용 (클라우드) , 전체 어플리케이션 플랫폼
- MYSQL : 변형 DB , 오라클에 비해 경량
oracle설치 시 주의할점!
계정이 한글이면 X -> 영어로 변경
오라클 설치
오라클 접속
- 나오려면 exit
- Service XE , OracleXETNSListener이 실행 안되어 있으면 연결 안됨 -> 확인!!
SYSAUX.DBF
SYSTEM.DBF -> 계정 만들고
USERS.DBF -> 계정당 작업했던 내역 / user_ 형식으로 확인 가능
TEMP.DBF -> 오버플로우 했을 때 저장
Q1) sql확장자 파일을 실행시키는 방법
1. C:\USers\Playdata > sqlplus / as sysdba
2. SQL> @"C:\USers\Playdata\Desktop\scott.sql"
3. SQL> EXIT
4. C:\USers\Playdata > sqlplus scott/TIGER
5. SQL> show user
=> USER is "SCOTT"
Q2) 생성된 전체 테이블 보는 방법
SQL > SELECT * FROM TAB;
* 오라클 식별자 및 명령어 구문의 특징
1) 자바의 식별자 생성 규칙과 동일하다
2) 단 명령 구문은 대소문자 구분하지 않는다.
3) VALUE는 대소문자를 명확하게 구분한다.
- SELECT ~ FROM 명령문
SELECT
FROM
WHERE
HAVING
GROUP BY
ORDER BY
SELECT 컬럼명[*],[별칭]..
FROM 테이블,
Q3) 대상 테이블의 내용을 확인하자
SELECT *
FROM EMP;
Q4) DEPT테이블의 내용을 확인하자
Q5) BONUS 테이블의 내용을 확인하자
Q6) 테이블의 구조를 확인하자
DESC 테이블명;
//
숫자 NUMBER (자리수, 소수이하자리수)
문자 CHAR
문자열 VARCHAR 2000 VARCHAR2 4000
날짜 DATE
시간 TIME
// 테이블에 따라 오버플로우가 나면 오류가 남
Q7) 사원테이블의 사원의 이름과 사원의 번호, 봉급을 출력하자.
SELECT ENAME,EMPNO,SAL
FROM EMP;
Q8) 사원의 이름과 입사일을 출력해보자
SELECT ENAME,HIREDATE
FROM EMP;
Q9) 사원의 이름과 매니저 부서번호를 출력해보자
SELECT ENAME, MGR,DEPTNO
FROM EMP;
Q10) 사원의 이름과 입사일 커미션을 출력해보자
SELECT ENAME, HIREDATE, COMM
FROM EMP;
Q11) 컴럼을 나열하는 곳에 별칭을 줄 수 있다.
SELECT 컬럼명 별칭 , 컬럼명 AS별칭, 컬럼명 AS "별 칭" // 공백이 있으면 "" 필수 / /오라클은 AS 선택 안붙여도 됨
FROM 테이블명
- 사원의 이름과 입사일 커미션을 출력해보자, 단 문제내용의 컬럼명을 동일하게 한글로 표시해라
SELECT ENAME "사원의 이름", HIREDATE 입사일, COMM AS 커미션
FROM EMP;
Q12) 연결문자열 ||
SELECT ENAME||'님'
FROM EMP;
Q13) 연결문자열 ||
SELECT ENAME||'님' AS "사원의 이름"
FROM EMP;
Q14) 아래와 같이 출력되오록 해보자
사원 00은 00일에 입사를 하고 00 월급을 받는다.
SELECT '사원'||ENAME||'은' , HIREDATE || '일에 입사를 하고', SAL || '월급을 받는다' AS RES(별칭이 길면 주는데 안줘도 됨)
FROM EMP;
Q15) 사칙연산을 컬럼 연산으로 구현할 수 있다.
사원의 테이블에서 사원의 이름과 연봉을 구해라
SELECT ENAME,SAL ,SLA*12 AS연봉
FROM EMP;
Q16) 사원의 이름, 봉급, 커미션, 연봉을 구하되 다음과 같이 연봉을 구한다
연봉 = (봉급*12)-커미션
별칭도 문제의 한글 컬럼 속성과 같이 출력한다.
SELECT ENAME "사원의 이름" , SAL 봉급 , COMM 커미션 , (SAL*12)-NVL(COMM,0) 연봉 FROM EMP;
//NVL(컬럼명,널이라면 채울수 있는 값) => NULL값이라면 뒤에있는 값으로 채워서 계산해라
//NVL2(컬럼명, 널이아니라면, 널이라면) -> 조건문??
Q17) 사원의 테이블에서 사원의 이름과 매니저를 출력하되 매니저가 없으면 없다라고 출력하자.
SELECT ENAME 사원의이름 , NVL(TO_CHAR(MGR),'없음') 매니저 FROM EMP; // TO_CHAR() 캐스팅
Q18) 사원의 이름 , 봉급, 커미션, 연봉을 구하되 다음과 같이 연봉을 구하되 값이 NULL일 경우에 연봉으로 채워라
NVL2로 연산해보자
> SQL> SELECT ENAME,SAL,COMM,NVL2(COMM,(SAL*12)-COMM,SAL*12) FROM EMP;