SQL Server 2014: 실습9 SELECT, FROM, WHERE, BETWEEN, AND, IN, LIKE, ANY, ALL 등
–앞으로 사용할 DB 생성–
sqlDB 데이터베이스 생성
–사용할 테이블 생성–
테이블 userTbl, buyTbl 작성
–데이터 입력–
데이터 입력.
userTbl 정보
buyTbl 정보
–DB 백업–
USE tempdb;
BACKUP DATABASE sqlDB TO DISK=’D:\DB_Backup\sqlDB2016.bak’ WITH INIT;
참고로 백업 및 복원은 https://archmond.net/?p=7083 에서 알아봤음.
–기본 WHERE 절–
WHERE절은 조회 시 조건을 줄 수 있다.
USE sqlDB;
SELECT * FROM userTbl WHERE name=’김경호’;
김경호 사용자만 추출
SELECT * FROM userTbl WHERE birthYear >= 1970 AND height >= 182;
1970년 이후 출생, 182cm 이상인 사람
SELECT userID, name FROM userTbl WHERE birthYear >= 1970 OR height >= 182;
1970년 이후 출생 or(또는) 182cm 이상인 사람은 7명
–BETWEEN, AND 사용–
SELECT userID, name FROM userTbl WHERE height >= 180 AND height <= 183;
키가 180에서 183cm인 사람 찾기
SELECT userID, name FROM userTbl WHERE height BETWEEN 180 AND 183;
동일한 값을 찾기 위해 BETWEEN A AND B를 사용함.
–IN 사용–
SELECT userID, name 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 ‘_종신’;
앞 한 글자 + 종신 이라는 이름을 가진 사람 찾기. %는 무엇이든. _는 한 글자. 도서에 의하면 검색 문자열의 앞에 _나 %가 들어가면 SQL Server 성능에 나쁜 영향을 끼칠 수 있다고 함.(name 열의 인덱스가 있어도 전체 데이터를 검색한다고 함)
–서브쿼리(SubQuery, 하위쿼리)–
쿼리문 속에 또다시 쿼리문이 있는 서브쿼리.
먼저 김경호의 키는 177이다.
SELECT name, height FROM userTbl WHERE height > (SELECT height FROM userTbl WHERE name=’김경호’);
김경호보다 키가 큰 사람 출력.
김경호가 177cm이므로 방금 전 쿼리와 동일한 결과가 나옴.
–ANY구문–
SELECT name, height FROM userTbl WHERE height >= (SELECT height FROM userTbl WHERE addr=’경남’);
지역이 경남인 사람보다 키가 크거나 같은 사람을 찾기. 오류가 난다. 하위 쿼리가 값을 둘 이상 반환했다고 알려줌.
서브쿼리가 173, 170 이렇게 두 개의 값을 반환하기 때문.
SELECT name, height FROM userTbl WHERE height >= ANY (SELECT height FROM userTbl WHERE addr=’경남’);
>= 연산자 뒤에 ANY를 넣는 것으로 170, 173cm보다 큰…(결국 170보다 큰) 사람을 반환함
–ALL구문–
이번엔 ALL을 써보자. 7명만 출력됨. 170보다 크거나 같을 뿐 아니라, 173보다도 크거나 같아야 한다 -> 결국 173보다 크거나 같은 사람만 반환.
–ANY 구문–
SELECT name, height FROM userTbl WHERE height = ANY (SELECT height FROM userTbl WHERE addr=’경남’);
170이거나 173cm인 사람을 출력.
–IN 구문–
SELECT name, height FROM userTbl WHERE height IN (SELECT height FROM userTbl WHERE addr=’경남’);
=ANY와 IN은 같은 의미.
참고 사이트
'IT이야기 > MS-SQL' 카테고리의 다른 글
[MSSQL] 문자열 자르기 (LEFT,RIGHT,SUBSTRING) 사용법 & 예제 (0) | 2021.08.13 |
---|---|
DB Lock 및 Kill 방법 (0) | 2021.08.12 |
JOIN의 종류설명 및 사용법 & 예제 (0) | 2019.10.29 |
조건문 (CASE WHEN, IF) 함수 사용법 & 예제 (0) | 2019.10.29 |
SET NOCOUNT 사용법 (0) | 2019.10.29 |