본문 바로가기

DB/MySQL

MySQL 간단한 검색 예제

반응형

이 예제는 제주대학교 통신컴퓨터공학부 곽호영교수님께서 쓰신 pdf파일에 있는 예제를 사용하였습니다.


<이 예제에서 사용한 education데이터 베이스와 테이블 이름 들>


예제1 ) 전체 교수 리스트를 출력하는 SQL 검색문을 작성하라.


검색문을 작성할 때는 select문을 쓰는데 예제 1번에서는 교수 리스트를 출력하라고 했으니 prof라는 교수 테이블의 모든것을 불러오면 되기 때문에 select * from prof; 명령어를 사용하면 교수테이블의 모든 리스트를 가져올 수 있다.


예제 2) 전체 교수 리스트를 이름 순서로 출력하는 검색 문을 작성하라.

예제 1에서 교수 리스트를 그냥 출력했다면 예제2는 정렬하고 출력해야 하기 때문에 뒤에 order by'정렬할 필드명';을 써준다. 정렬에는 오름차순과 내림차순이 있는데 기본은 오름차순이다.


예제 3) 전체 교수 리스트를 학과별로 출력하는 검색 문을 작성하라.

예제 2번과 유사한 문제로 이번에는 학과별로 출력하는 문제 이기 때문에 학교 필드명인 pdept를 정렬 옵션으로 주면 학과별로 출력을 할 수 있다.


예제 4) 국문과 교수 리스트를 이름순서로 출력하는 검색 문을 작성하라.

이번 문제는 조건문인데 조건문은 where 뒤에 조건은 써주면 된다. 국문학과 교수님을 출력하는 것이므로 where pdept = '국문학과';를 뒤에 조건으로 달아주면 국문학과 교수님들만 출력을 할 수 있다.


예제 5) 전체 교수 리스트를 이름 역순으로 출력하는 검색문을 작성하라.

예제 2번이 오름차순으로 출력이라면 이번 예제는 내림차순으로 출력하는 것이다. 내림차순은 정렬 조건뒤에 desc를 붙여주면 내림차순으로 정렬 할 수 있다.


예제 6) MySQL 과목을 강의 하는 교수님의 이름, 전화번호와 강의실을 검색하는 문장을 작성하라.

출력하고자 하는 필드는 교수님 이름과 전화번호, 강의실인데 필요한 테이블은 교수테이블인 prof와 개설 과목 테이블은 course, 강의 테이블은 lecture가 필요하다. from 테이블명 as 별명 구문은 SQL에서 별명으로 참조할 수 있는 역할이다. 이렇게 하면 특정 테이블의 필드를 쉽게 참조할 수 있다. 조건으로 course의 cname가 MySQL이고 coure의 ccode가 lecture의 lccode와 같고 lecture의 lpcode와 prof의 pcode가 같은 조건을 주면 원하는 레코드를 출력 할 수 있다.


예제 7) 'Hyun kwang'교수님이 강의하는 과목명, 강의 시수와 강의실을 검색하는 문장을 작성하라.

예제 6번과 비슷한 문제로 원하는 필드명은 과목명과 강의 시수를 출력하는데 필요한 테이블은 prof와 course, lecture테이블으 필요하고 조건은로는 prof의 pname = 'Hyun kwang'이고 prof의 pcode가 lecture의 lpcode와 같으며 lectue의 lccode와 course의 ccode가 같은 조건을 넣어주면 원하는 레코드를 출력할 수 있다.


예제 8) 각 학생이 수강 신청한 과목에 대해서 학생이름, 전화번호, 과목명, 강의실, 강의 시수를 검색하는 문장을 작성하라.

원하는 필드는 학생이름, 전화번호, 과목명, 강의실, 강의 시수이고 조건으로 student의 scode가 register의 rscode와 같고 register의 rccode가 course의 ccode와 같은 조건으로  sname과 cname을 기준으로 정렬하면 원하는 결과를 얻을 수 있다.


예제 9) 각 학생이 신청한 총 학점을 구하는 검색식을 작성하라.

조건으로 student의 scode가 register의 rscode와 같고 register의 rccode가 course의 ccode가 같은 조건으로 student의 sname를 기준으로 그룹을 지정한 명령어 이다. group by '필드명' 명령어는 원하는 필드를 기준으로 그룹을 지정하는 명령어 이다.


예제 10) 각 학과별 교수님은 몇 분인지 구하는 검색식을 작성하라.

select문장에서 count(*) 함수는 croup by 구절에서 명시된 필드를 기준으로 그룹화 한뒤 그 그룹의 레코드 수를 구하는 식이다.


예제 11) 페이지 크기가 2일때, (예제-8)의 결과에서 두 번째 페이지를 검색하는 SQL문장을 작성하라.

나머지는 예제 8과 동인한 상태에서 마지막 구절에 limit절인데 첫번째 인자값은 0번부터 시작 레코드를 가르키는 것이고 두번째 인자 값은 시작 부터 몇개를 출력할지를 정하는 것으로 limit는 3번째 레코드 부터 2개를 출력하겠다는 뜻이다.


예제 12) 교수테이블에서 'Hyun kwang'교수님의 이름을 'Kwangsic'교수님으로 변경하는 문장을 작성하라.

여기서 사용한 구믄은 update구문이다. 'update 테이블명 set 바꿀내용 where 조건'으로 사용하는 구문이다. update prof set pname = 'Kwangsic' where pname = 'Hyun kwnag';명령어를 쳐주면 잘 바뀐것을 확인 할 수 있다.


예제 13) 지도 테이블의 교수코드가 'P007'인 레코드들을 모두 'P005'로 

예제 12와 같이 update 구문을 사용하여 update advise set apcode = 'P005' where apcode = 'P007'; 명령어를 써주면 잘 바뀐것을 확인 할 수 있다.


예제 14) 강의 시수가 2인 과목들의 강의 시수를 하나 증가 시키고, 강의실을 Lab1로 변경하라.

update문을 사용하여 update course set ctime = ctime+1, croom = 'Lab1' where ctime = 2; 명령어를 쳐주면 강의 시수가 2인 과목들을 조건대로 변경해 줄 수 있다.


예제 15) 국문학과 학생 레코드를 삭제하는 문장을 작성하라.

여기서 사용할 문장은 delete 문으로 'delete from 테이블명 where 조건'으로 사용 할 수 있다. 여기서는 국문학과 학생 레코드를 삭제하는 것이므로 delete form student where sdept = '국문학과'; 라고 쳐주면 국문학과 학생레코드가 사라진 것을 확인 할 수 있다.


아주 간단한 예제로 MySQL 검색 명령어에 대해서 알아 보았다.

반응형