ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 🚩 20241227_수업내용(dbeaver 부분조회*함수조회/연산자)
    카테고리 없음 2024. 12. 27. 17:30

    1. dbeaver

    1-1. dbeaver에서 부분조회

    ctrl+Enter = 실행

    dbeaver에서 부분조회
    하나의 조건 검색


    학생 테이블에 있는 컴퓨터 공학과 학생을 호출한다

     

     

    1-2. 중복 데이터 제거하여 조회하기

    중복데이터 없애 하나씩 보여주기

    컬럼명 앞에 <distinct> 를 붙여 호출하기


    - 90점 이상인 학생들만 출력

     

    - 80년도 12월 12일생 이상인 사람만 출력

     

     

    1-3. 여러 조건을 두고 검색하기(함수를 활용한 검색)

     

    기본 형태 count(컬럼명) <-함수

     

    컬럼에 있는 총 데이터가 몇개인가?

    select count(컬럼명) from 데이터명 where 컬럼명 >= '원하는데이터';

    점수가 80점 이상인 학생은 몇명인가?

     

    1-4. 별명짓기(as)

    = cnt라는 이름으로 출력하겠다.

     

     

    1-5. 함수를 이용한 검색2

     

    <sum> 값의 총합

    = 강좌 테이블에서 포인트의 총합을 구하겠다.

    숫자 타입만 총합 더하기가 가능하다 (문자열 더하기는 0으로 표현됨)

     

     

    <avg> 평균값

    B+인 학생들의 점수 총합을 구하겠다.

     

     

    <max / min> 최대값 / 최소값

    select mac(merits) as mac, min(merits) as min from enrollment;

     

    집단함수값(count/sum/avg/max/min)은 컬럼을 함께 사용해줘야함

     

    👀 문제 풀어보기
    1. 학생 테이블에서 지도교수는 총 몇명인가?
    A : select count(distinct advisor) from student;

    2. 강좌테이블에서 wed 총 시작 시간은 얼마인가?
    A : select sum(start_time) from lecture where day_week ='wed';

    3. 학생 테이블에서 컴퓨터공학과 학생들이 몇학년 들이 존재하는가? (중복없이)
    A : select distinct year from student where dept = '컴퓨터공학과';

     


    2. 연산자

    2-1. 수치함수

     

    - abs(n) 절대값

    - mod(n,b) b=나머지

    - sqrt(n) 루트값

     

    - length (str) 문자열 str의 길이

    - Lower (str) 문자열 str을 소문자로 변환함

    - Upper (str) 문자열 str을 대문자로 변환함

     

     

    2-2. 논리연산자

    조건을 연산하기 위해 사용하는 연산자

    and 양쪽 피연산자가 참

    or 피연산자 중 하나만 참

    not 둘다 참이 아님 현재를 부정하는 연산자. 참은 거짓, 거짓은 참읻

     

    연산자를 활용한 스크립트문 만들어보기

    and문
    or문
    not 연산자 - 조건문 앞에 1개

    👀 문제 풀어보기
    1. 등록 테이블에서 점수가 80점 이상이면서 강좌 5번인 학생의 학번만을 출력
    A : select s_no from enrollment where merits>=80 and c_no=5;

    2. 강의 테이블에서 시작시간이 2거나 요일이 thu인 강좌번호와 교수번호 출력
    A : select c_no, p_no from lecture where start_time = 2 or day_week='thu';

    3. 학생 테이블에서 지도교수가 20번이고 2학년인 학생의 주소를 대전으로 변경
    A : update student set s_address='대전' where advisor=20 and year=2;

    4. 학생 테이블에서 컴퓨터 공학과가 아니면서 3학년인 학생
    A: select * from student where not dept='컴퓨터공학과' and year='3';

    5. 학생 테이블에서 전기공학과도 아니고 2학년도 아닌 학생은?
    A : select * from student where not (dept='전기공학과' or year=2);


    작성 시 구문 정리를 해서 작성하는 버릇을 들이도록 함.

     

     

    2-3. 한 글자만 포함된 단어 검색하기

    <전>으로 시작하는 모든 글자 검색

    like- 포함 (문자열/숫자 상관 없이 검색 가능)

    % - 나머지글자

     

    ex. %과 => '과'로 끝나는 모든 글자를 찾음

    %공% => '공'이라는 글자가 중간에 껴진 글자를 찾음

    👀 문제 풀어보기
    1. 교수테이블에서 T400번대 연구실을 사용하고 있는 교수의 이름은?

    A : select p_name from professor where room_no like 'T40%';

    2. 교수테이블에서 전화번호 끝자리가 4인 교수 이름은?
    A: select p_name from professor where p_tel like '%4';

    3. 학생테이블에서 이름에 미가 포함되어있는 학생의 학과명과 학년을 출력
    A: select dept, year from student where s_name like '%미%';

    4. 학생 테이블에서 이름에 자 글자가 없어야 하고 서울에 살지 않는 학생의 이름과 학과, 학년을 출력
    A : select s_name, dept, year from student where not s_name like '%자%' and not s_address='서울';

    5. 학생 테이블에서 생일이 12월달인 학생만 출력
    A : select * from student where s_birth like '%-12-%'
    문제
    1. 학과 테이블에서 조교가 이씨인 학과이름과 전화번호를 출력
    select dept_name, location from department where assisitant like '이%';

    2. 교수 테이블에서 조교수이면서 호봉이 10이상인 사람이 몇명인지 출력
    select dept_name, location from department where assisitant like '이%';

    3. 학생 테이블에서 김씨가 아니면서 태어난 월이 10월인 학생의 이름, 학과, 학년 출력
    select s_name, dept, year from student where not s_name like '김%' and s_birth like '%-10-%';

    4. 등록 테이블에서 점수가 80점 이상 90점 미만인 학생 중에 학번이 99학번이고 강좌가 1번인 학생의 학번을 출력
    select s_no from enrollment where 80<=merits and merits<90 and c_no=1 and s_no like '99%';

    스페셜문제
    1. 등록 테이블에서 A+ 받은 학생의 강좌 번호를 알아내고 강좌 테이블에 적용하여 해당 강좌가 몇 학점이며 강좌이름은 무엇인지 출력
    select c_no from enrollment where grade='A+';

    select point, c_name from course where c_no=1 or c_no=6;


    2. 학생 테이블에서 컴퓨터 공학과인 학생의 학번을 알아내어 등록 테이블에 적용하여 강좌 번호가 무엇인지 찾고 찾은 번호를 강좌 테이블에 적용하여 강좌 이름과 학점을 출력

     

Designed by Tistory.