ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데이터베이스#3
    데이터베이스 2023. 2. 7. 23:01
    -- 교수 테이블에서 이름, 직급, 보직수당을 출력하여라
    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;

    '데이터베이스' 카테고리의 다른 글

    데이터베이스#10  (0) 2023.02.10
    데이터베이스#9  (0) 2023.02.09
    데이터베이스#4  (0) 2023.02.07
    데이터베이스#8  (0) 2023.02.07
    데이터베이스#7  (0) 2023.02.07
Designed by Tistory.