-
🚩 20241227_수업내용(dbeaver 부분조회*함수조회/연산자)카테고리 없음 2024. 12. 27. 17:30
1. dbeaver
1-1. dbeaver에서 부분조회
ctrl+Enter = 실행
학생 테이블에 있는 컴퓨터 공학과 학생을 호출한다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 둘다 참이 아님 현재를 부정하는 연산자. 참은 거짓, 거짓은 참읻
연산자를 활용한 스크립트문 만들어보기
👀 문제 풀어보기
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. 학생 테이블에서 컴퓨터 공학과인 학생의 학번을 알아내어 등록 테이블에 적용하여 강좌 번호가 무엇인지 찾고 찾은 번호를 강좌 테이블에 적용하여 강좌 이름과 학점을 출력