SELECT문 2

mizzzzz
|2024. 4. 11. 21:37

WHERE절

조회하는 결과에 특정한 조건을 줘서 원하는 데이터만 보고 싶을 때 사용

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

 

전체 데이터가 너무 많을 때 조건으로 줘서 필요한 데이터만 추출

SELECT * FROM usertbl WHERE name = '김경호';

 

관계 연산자

OR : 했거나 /또는

AND : 하고 /면서 /그리고

NOT ... 등

 

+ 조건 연산자

= / < / > / <= / >= / <> / != ... 등

 

관계 연산자와 조건 연산자를 잘 조합하면 다양한 쿼리를 생성할 수 있음

 

BETWEEN ... AND

키가 숫자로 구성되어 있어서 연속적인 값을 가지므로 사용 가능

SELECT name, height FROM usertbl WHERE height >= 180 AND height <= 183;

SELECT name, height FROM usertbl WHERE height BETWEEN 180 AND 183;

 

IN()

키가 문자로 구성되어 있거나 연속적인 값이 아닐 때

동일하게 연속적인 값이 아닌 이산적인 값을 위해 사용

SELECT name, addr FROM usertbl WHERE addr='경남' OR addr='전남' OR addr='경북';

LIKE

문자열의 내용을 검색하기 위해서 사용

SELECT name, height FROM usertbl WHERE name LIKE '김%';

 

성이 '김'씨이고 그 뒤는 무엇이든(%) 허용한다는 의미

한 글자와 매치하기 위해서는 '_'을 사용

SELECT name, height FROM usertbl WHERE name LIKE '_종신';

 

이 외에도 '%'외 '_'를 조합해서 사용할 수 있음

 

서브쿼리 (하위쿼리)

쿼리문 안에 또 쿼리문이 들어 있는 것을 의미

SELECT name, height FROM usertbl WHERE height > 177;
SELECT name, height FROM usertbl WHERE height > (SELECT height FROM usertbl WHERE name = '김경호';

177이라는 키를 직접 써주는 것이 아니라 쿼리를 통해서 사용

 

ANY/ALL/SOME

ANY, SOME : 서브쿼리의 여러 개의 결과 중 한 가지만 만족해도 됨 (=ANY와 IN 동일한 의미)

SELECT name, height FROM usertbl 
	WHERE height >= ANY (SELECT height FROM usertbl WHERE addr = '경남');

173과 170을 반환하기 때문에

173보다 크거나 같은 사람 또는 170보다 크거나 같은 사람 모두 출력

 

ALL : 서브쿼리의 여러 개의 결과를 모두 만족

SELECT name, height FROM usertbl 
	WHERE height >= A (SELECT height FROM usertbl WHERE addr = '경남');

170보다 크거나 같고 173보다 크거나 같아야 하기 때문에

173보다 크거나 같은 사람만 해당

 

ORDET BY

결과물에 영향을 미치지는 않지만 결과가 출력되는 순서를 조절하는 구문

SELECT name, mDate FROM usertbl ORDER BY mDate;

SELECT name, mDate FROM usertbl ORDER BY mDate DESC;

기본적으로는 오름차순 ASC 정렬(생략 가능), 내림차순 정렬은 뒤에 DESC

SELECT name, mDate FROM usertbl ORDER BY height DESC, name;

여러 개 정렬할 경우 먼저 정렬할 순서대로 적으면 됨

 

DISTINCT

중복된 것은 하나만 남기는 구문

SELECT addr FROM usertbl ORDER BY addr;

 

SELECT DISTINCT addr FROM usertbl;

출력하는 개수를 제한하는 구문, 원하는 개수만 출력 LIMIT N(또는 시작, 개수)

USE employees;
SELECT emp_no, hire_date FROM employees
	ORDER BY hire_date
    	LIMIT 5;

CREATE TABLR ... SELECT

테이블을 복사해서 사용할 경우 주로 사용

형식 :
CREATE TABLE 새로운 테이블 (SELECT 복사할 열 FROM 기존테이블)

 

USE sqldb;
CREATE TABLE buytbl2 (SELECT * FROM buytbl);
SELECT * FROM buytbl2;

buytbl을 buytbl2로 복사하는 구문

 


 

'SQL' 카테고리의 다른 글

SELECT 3  (0) 2024.04.12
SELECT문  (0) 2024.04.11
데이터베이스 모델링  (0) 2024.04.05
데이터 활용  (0) 2024.04.04
1. 데이터베이스 관련 용어  (0) 2024.04.04