-
-- 교수 테이블에서 이름, 직급, 보직수당을 출력하여라 SELECT name, position, comm from professor; -- 교수 테이블에서 보직수당이 없는 교수의 이름, 직급, 보직수당을 출력하여라 -- is not null is null 예제 SELECT name, position, comm from professor where comm is not null; -- ? 교수 테이블에서 급여에 보직수당을 더한 값은 sal_com이라는 별명으로 출력하여라 -- NVL(null이 올 수 있는 컬럼 값, 널 일경우 대체값) 스칼라함수 select name, position, sal, NVL(comm,0), sal+NVL(comm,0) as "sal_com" from professor; -- 102번 학과의 학생 중에서 1학년 또는 4학년 학생의 이름, 학년, 학과 번호를 출력하여라 SELECT NAME, GRADE, DEPTNO FROM STUDENT WHERE (GRADE =1 OR GRADE = 4) AND DEPTNO =102; SELECT NAME, GRADE, DEPTNO FROM STUDENT WHERE GRADE IN (1,4) AND DEPTNO =102; -- 1학년 이면서 몸무게가 70kg 이상인 학생의 집합(stud_heavy)과1학년 이면서 101번 학과에 소속된 학생(stud_101)으로 구성된 두 개의 테이블 생성 CREATE table stud_heavy as select * from student where weight >=70 and grade = 1; create table stud_101 as select * from student where deptno = 101 and grade = 1; -- union | union all | intersect | minus select * from stud_heavy minus select * from stud_101; -- order by order by studno(컬럼명 대신 행 번호를 써도됨) select * from student order by studno; -- 학생 테이블에서 이름을 가나다순으로 정렬하여 이름, 학년, 전화번호를 출력하여라 select name, grade, tel from student order by 1; select ename, job, deptno, sal from emp order by deptno, sal desc; -- 학생 테이블에서 학번이 '20101'인 학생의 사용자 아이디를 소문자와 대문자로 변환하여 출력하여라 select userid, upper(userid), lower(userid) , upper(null) from student where studno = '20101'; -- 문자열 길이 반환 함수 select length('홍길동'), lengthb('홍길동') from dual; -- 부서 테이블에서 부서 이름의 길이를 문자 수와 바이트 수로 각각 출력하여 select dname, length(dname), lengthb(dname) from department; -- substr (길이를 벗어나면 가져올 값이 없으면 null) select substr('ABCDE', -2, 3) from dual; select substrb('가나다',2,5)from dual; -- 학생 테이블에서 1학년 학생의 주민등록 번호에서 생년월일과 태어난 달을 추출하여 이름, 주민번호, 생년월일, 태어난 달을 출력하여라 select name, idnum, CONCAT(substr(idnum, 1,6),'년생') as "생년월일", CONCAT(substr(idnum, 3,2),'월') as "월" , DECODE(substr(idnum, 7, 1), 1, '남자','여자') as "성별" from student where grade ='1'; select * from student; select mod(3,2) from dual; --'CD'에 해당하는 문자 인덱스를 찾음 5는 5번인덱스 뒤부터(음수는 오른쪽 기준) 2는 2번째 CD가 나오는 인덱스 찾음 찾는 값이 없으면 0을 출력 SELECT INSTR('ABCDABCDABCD', 'CD',1, 2) FROM DUAL; --교수테이블에서 직급 칼럼의 왼쪽에 '*' 문자를 삽입하여 10바이트로 출력하고 교수 아이디 칼럼은 오른쪽에 '+'문자를 삽입하여 12바이트로 출력하여라 SELECT LPAD(POSITION, 10, '*'), RPAD(USERID, 12, '+'), RPAD(SUBSTR(USERID, 1,3),LENGTH(USERID), '*') FROM PROFESSOR; -- 부서 테이블에서 부서 이름의 마지막 글자인 '과'를 삭제하여 출력하여라 SELECT DNAME, RTRIM(DNAME,'과') FROM DEPARTMENT; -- 양쪽 끝에 공백 제거 중간은 제거 안됨 SELECT TRIM(' 가나다 ***') FROM DUAL; -- 'A'문자를 'F'로 바꿈 SELECT REPLACE('ABCDEABCDE','A','F') FROM DUAL; -- 교수 테이블에서 101학과 교수의 일급을 계산(월 근무일은 22일)하여 소수점 첫째 자리와 셋째 자리에서 반올림 한 값과 소숫점 왼쪽 첫째 자리에서 반올림하고 값을 출력하여 SELECT NAME, SAL, SAL/22 AS"일급", ROUND(SAL/22), ROUND(SAL/22,2), ROUND(SAL/22,-1) FROM PROFESSOR; -- 교수 테이블에서 101번 학과 교수의 급여를 보직수당으로 나눈 나머지를 계산하여 출력하여라 SELECT NAME, SAL, COMM, MOD(SAL,COMM) FROM PROFESSOR WHERE DEPTNO ='101'; -- 교수 번호가 9908인 교수의 입사일을 기준으로 입사 30일 후와 60일 후의 날짜를 출력하여라 SELECT NAME, HIREDATE, HIREDATE+30, HIREDATE+60 FROM PROFESSOR WHERE PROFNO = 9908; -- 수요일 SELECT TO_CHAR(SYSDATE,'YY/MM/DD HH24:MI:SS') ,CONCAT(TRUNC(TO_DATE('23/06/30 18:30:00','YY/MM/DD HH24:MI:SS')-SYSDATE),'일') AS "D-DAY" FROM DUAL; -- 태어난지 10000일 되는날 SELECT SYSDATE-10000 FROM DUAL;