충북대학교 조완섭 교수님의 '데이터베이스 시스템' 과목의 < ch.4 SQL > 에서 복습하고 싶은 내용을 정리한 글입니다.
http://www.kocw.net/home/search/kemView.do?kemId=1197402
SQL문의 구조
SELECT <애트리뷰트 목록>
FROM <테이블 목록>
WHERE <조건>
교재의 기본 데이터테이블로 조건을 만족하는 SQL문을 작성하는 예제를 연습해봅니다~!
SELECTION 연산
[Q. 1] 이름이 'John B. Smith'인 종업원의 생일과 주소를 검색하라
SELECT FNAME, LNAME, BDATE, ADDRESS
FROM EMPLOYEE
WHERE FNAME = "John" AND MINIT="B" AND LNAME = "Smith";
[Q. 2] John Smith에 관한 모든 정보를 검색하라
SELECT *
FROM EMPLOYEE
WHERE FNAME = "John" AND MINIT="B" AND LNAME = "Smith";
[Q. 3] 급여가 25,000 이상인 종업원의 이름, 성별, 주소, 급여를 검색하라
SELECT FNAME, LNAME, SEX, ADDRESS, SALARY
FROM EMPLOYEE
WHERE SALARY > 25000;
[Q. 4] 급여가 25,000 이상인 남자 종업원의 이름, 성별, 주소, 급여를 검색하라
SELECT FNAME, LNAME, SEX, ADDRESS, SALARY
FROM EMPLOYEE
WHERE SALARY > 25000 AND SEX = 'M';
JOIN 연산
[Q. 5] 직원과 그의 주소 및 부서명은?
SELECT FNAME, LNAME, ADDRESS, DNAME
FROM EMPLOYEE, DEPARTMENT
WHERE DNO = DNUMBER;
또는
SELECT E.FNAME, E.LNAME, E.ADDRESS, D.DNAME
FROM (EMPLOYEE AS E INNER JOIN DEPARTMENT AS D ON E.DNO = D.DNUMBER);
[Q. 6] 'Research' 부서에서 일하는 모든 종업원들의 이름과 주소는?
SELECT FNAME, LNAME, ADDRESS, DNAME
FROM EMPLOYEE, DEPARTMENT
WHERE DNO = DNUMBER AND DNAME = "Research";
*WHERE절에서 DNAME="Research"는 DEPARTMENT에서 연구부서를 선택한 것
*DNUMBER=DNO는 DEPARTMENT와 EMPLOYEE 테이블을 결합하는 조인조건임
[Q. 7] Join 조건이 없으면 카티전프로덕트!
SELECT FNAME, LNAME, ADDRESS, DNAME
FROM EMPLOYEE, DEPARTMENT
*카티전 곱으로 테이블이 생성됨
[Q. 8] 3 Way Join - Stafford에 위치한 모든 프로젝트에 대하여 프로젝트 번호, 담당부서 번호, 부서 관리자의 성, 주소, 생일을 검색하라
SELECT PNUMBER, DNUM, LNAME, ADDRESS, BDATE
FROM PROJECT, DEPARTMENT, EMPLOYEE
WHERE DNUM = DNUMBER AND MGRSSN = SSN AND PLOCATION = "Stafford";
*두개의 조인조건을 수행함
DNUM = DNUMBER는 프로젝트와 담당부서를 조인
MGRSSN = SSN은 부서와 관리자정보를 조인
'SQL' 카테고리의 다른 글
[Colab/MySQL] Colab과 Mysql 연결하기 (1) | 2021.07.04 |
---|---|
[Python/MSSQL] Python과 MSSQL 연동하기 (pymssql) (0) | 2021.05.20 |
[Python/MySQL] Python과 MySQL 연동하기 (pymysql) (0) | 2021.05.20 |
[질의구조] 삽입, 삭제, 갱신 (0) | 2020.07.20 |
[질의구조] 모호한 속성 이름 설정 (0) | 2020.07.18 |