천천히 빛나는

MySQL : SELECT 문 + 기본 예제 (1) 본문

STUDY/MYSQL

MySQL : SELECT 문 + 기본 예제 (1)

까만콩 •ᴥ• 2023. 10. 20. 04:28

SELECT 문

SELECT 필드이름
FROM 테이블이름
WHERE 조건

Select를 사용하여 조건에 따른 데이터를 검색할 수 있다

 

SELECT * FROM 테이블명;

*을 이용해서 모든 데이터를 출력할 수 있다

 

SELECT * 
FROM 테이블명 
WHERE 속성1 BETWEEN 값1 AND 값2;

SELECT * FROM Company WHERE age BETWEEN 23 AND 35;

BETWEEN은 속성 1의 값이 값 1과 값 2 사이에 있는 것을 모두 출력해준다

 

SELECT *
FROM 테이블명
WHERE 속성 1
IN 조건;

SELECT * FROM Company WHERE Age IN (23, 24, 25);
SELECT * FROM Company WHERE Age = 23 OR Age = 24 OR Age = 25;

IN에 해당되는 조건인 것들만 모두 출력해준다. NOT IN으로 해당되지 않는 것만 출력할 수도 있다.

 

SELECT *
FROM 테이블명
WHERE 속성 LIKE 'A_';

A + 1글자 값을 가진 행을 보여준다. A + 2글자 값이라면 A__라고 쓰면 된다.

 

SELECT * 
FROM 테이블명 
WHERE 속성1 LIKE 'A%';

A로 시작하는 값을 가졌다면 출력한다. 반대로 %A라고 하면 A가 끝에 오고, %A%로 하면 A를 포함하게 된다.

%는 임의의 개수의 문자, _는 임의의 한 문자이다.

 

// 중복 제거 방식
SELECT DISTINCT SALARY
FROM EMPLOYEE;

// 기존 방식
SELECT (ALL) SALARY
FROM EMPLOYEE;

중복된 투플들이 나타날 수 있으므로 DISTINCT를 사용하여 중복된 값을 제거할 수 있다. 기존에는 ALL이 생략되어 있어서 중복된 값도 출력된다.

 

( SELECT DISTINCT PNUMBER // Smith가 관리자인 projects
FROM PROJECT, DEPARTMENT, EMPLOYEE
WHERE DNUM=DNUMBER AND MGRSSN=SSN AND LNAME='Smith')
UNION
( SELECT DISTINCT PNUMBER // Smith가 참여하는 projects
FROM PROJECT, WORKS_ON, EMPLOYEE
WHERE PNUMBER=PNO AND ESSN=SSN AND LNAME='Smith') ;

UNION으로 합집합을 나타낼 수 있다. EXCEPT는 차집합, INTERSECT는 교집합이다. 모두 중복을 제거하고 출력하므로 중복을 허용하고 싶으면 UNION ALL과 같이 뒤에 ALL을 붙이면 된다.

예를 들어 테이블 R에 {a1, a2, a2, a3}가 있고 테이블 S에 {a1, a2, a4, a5}가 있다고 하자. UNION ALL을 하면 {a1, a1, a2, a2, a2, a3, a4, a5}가 담긴 하나의 테이블이 생긴다.

 

SELECT E.FNAME, E.LNAME, 1.1*E.SALARY AS INCREASED_SAL
FROM EMPLOYEE AS E, WORKS_ON AS W, PROJECT AS P
WHERE E.SSN=W.ESSN AND W.PNO=P.PNUMBER
AND P.PNAME=‘ProductX’;

1.1*E.SALARY와 같이 출력되는 값에 바로 산술식을 적용할 수도 있다.

 

SELECT * 
FROM 테이블명 
ORDER BY 속성1 순서; // DESC(내림차순) 또는 ASC(오름차순, 디폴트값)

ORDER BY DNAME DESC, LNAME ASC, FNAME ASC

ORDER BY를 이용해서 오름차순 또는 내림차순으로 정렬할 수 있다.

 

 

SELECT 문 기본 예제

다음은 기본 예제이다. WHERE 조건은 내부 조인(INNER JOIN)의 동등조인을 나타내는 것으로 테이블이 주어지지 않았기 때문에 신경쓰지 않아도 된다. (무슨 말인지 몰라도 괜찮다, 그냥 WHERE 부분을 굳이 신경쓰지 않아도 된다는 뜻이다.)

 

예제 1) 이름이 John Smith인 사원의 생일(BDATE)와 주소(ADDRESS)를 검색하시오

SELECT BDATE, ADDRESS
FROM EMPLOYEE
WHERE FNAME='John' AND LNAME='Smith';

 

예제 2) 'Research' 부서에서 일하는 모든 사원의 이름(FNAME, LNAME)과 주소를 검색하시오

SELECT FNAME, LNAME, ADDRESS
FROM EMPLOYEE, DEPARTMENT
WHERE DNAME='Research' AND DNUMBER=DNO;

여기서 DNUMBER=DNO이 뜻하는 것은 EMPLOYEE 테이블과 DEPARTMENT 테이블을 연결시키기 위함이다.

 

예제 3) 종업원에 대해, 종업원의 성과 이름, 직속 감독자의 성과 이름을 검색하시오 

SELECT E.FNAME, E.LNAME, S.FNAME, S.LNAME
FROM EMPLOYEE E, EMPLOYEE S // = EMPLOYEE AS E, EMPLOYEE AS S
WHERE E.SUPER_SSN=S.SSN ;

 

예제 4) 프로젝트에 참여하는 종업원을 부서의 알파벳 순서대로, 각 부서 내에서는 성과 이름의 알파벳 순서대로 출력하시오.

SELECT DNAME, LNAME, FNAME, PNAME
FROM DEPARTMENT, EMPLOYEE, WORKS_ON, PROJECT
WHERE DNUMBER=DNO AND SSN=ESSN AND PNO=PNUMBER
ORDER BY DNAME, LNAME, FNAME;

ORDER BY를 사용한 코드이다

 

 

 

https://dev-coco.tistory.com/57

 

[MySQL] 조건에 따른 SELECT문 활용

SELECT 문은 기본적으로 데이터를 검색하는 기능으로 CRUD 중 READ에 해당되는 기능을 수행합니다. 기본적인 구문은 아래와 같습니다. SELECT (속성1, 속성2, ... ) FROM (테이블명) WHERE (조건식); (조건식)

dev-coco.tistory.com

위 티스토리를 참고하여 작성하였다.

'STUDY > MYSQL' 카테고리의 다른 글

MySQL : IS NULL 문 고득점 Kit  (0) 2023.10.21
MySQL : GROUP BY 문 고득점 Kit  (0) 2023.10.21
MySQL : SUM, MAX, MIN 문 고득점 Kit  (1) 2023.10.20
MySQL : SELECT 문 고득점 Kit  (1) 2023.10.20
MySQL : SELECT 문 + 기본 예제 (2)  (1) 2023.10.20