SQL Server 2014: 실습9 SELECT, FROM, WHERE, BETWEEN, AND, IN, LIKE, ANY, ALL 등

뇌를 자극하는 SQL Server 2012 기본편 201페이지

–앞으로 사용할 DB 생성–

clip_image001

sqlDB 데이터베이스 생성

–사용할 테이블 생성–

clip_image002

테이블 userTbl, buyTbl 작성

–데이터 입력–

clip_image003

데이터 입력.

clip_image004

userTbl 정보

clip_image005

buyTbl 정보

–DB 백업–

clip_image006

USE tempdb;
BACKUP DATABASE sqlDB TO DISK=’D:\DB_Backup\sqlDB2016.bak’ WITH INIT;

참고로 백업 및 복원은 http://archmond.net/?p=7083 에서 알아봤음.

–기본 WHERE 절–

WHERE절은 조회 시 조건을 줄 수 있다.

clip_image007

USE sqlDB;
SELECT * FROM userTbl WHERE name=’김경호’;

김경호 사용자만 추출

clip_image008

SELECT * FROM userTbl WHERE birthYear >= 1970 AND height >= 182;

1970년 이후 출생, 182cm 이상인 사람

clip_image009

SELECT userID, name FROM userTbl WHERE birthYear >= 1970 OR height >= 182;

1970년 이후 출생 or(또는) 182cm 이상인 사람은 7명

–BETWEEN, AND 사용–

clip_image010

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

키가 180에서 183cm인 사람 찾기

clip_image011

SELECT userID, name FROM userTbl WHERE height BETWEEN 180 AND 183;

동일한 값을 찾기 위해 BETWEEN A AND B를 사용함.

–IN 사용–

clip_image012

SELECT userID, name FROM userTbl WHERE addr=’경남’ OR addr=’전남’ OR addr=’경북’;

지역이 경남, 전남, 경북인 사람 찾기

–LIKE–

clip_image013

SELECT name, height FROM userTbl WHERE name LIKE ‘김%’;

성이 김씨인 사람 찾기

clip_image014

SELECT name, height FROM userTbl WHERE name LIKE ‘_종신’;

앞 한 글자 + 종신 이라는 이름을 가진 사람 찾기. %는 무엇이든. _는 한 글자. 도서에 의하면 검색 문자열의 앞에 _나 %가 들어가면 SQL Server 성능에 나쁜 영향을 끼칠 수 있다고 함.(name 열의 인덱스가 있어도 전체 데이터를 검색한다고 함)

–서브쿼리(SubQuery, 하위쿼리)–

쿼리문 속에 또다시 쿼리문이 있는 서브쿼리.

clip_image015

먼저 김경호의 키는 177이다.

clip_image016

SELECT name, height FROM userTbl WHERE height > (SELECT height FROM userTbl WHERE name=’김경호’);

김경호보다 키가 큰 사람 출력.

clip_image017

김경호가 177cm이므로 방금 전 쿼리와 동일한 결과가 나옴.

–ANY구문–

clip_image018

SELECT name, height FROM userTbl WHERE height >= (SELECT height FROM userTbl WHERE addr=’경남’);

지역이 경남인 사람보다 키가 크거나 같은 사람을 찾기. 오류가 난다. 하위 쿼리가 값을 둘 이상 반환했다고 알려줌.

clip_image019

서브쿼리가 173, 170 이렇게 두 개의 값을 반환하기 때문.

clip_image020

SELECT name, height FROM userTbl WHERE height >= ANY (SELECT height FROM userTbl WHERE addr=’경남’);

>= 연산자 뒤에 ANY를 넣는 것으로 170, 173cm보다 큰…(결국 170보다 큰) 사람을 반환함

–ALL구문–

clip_image021

이번엔 ALL을 써보자. 7명만 출력됨. 170보다 크거나 같을 뿐 아니라, 173보다도 크거나 같아야 한다 -> 결국 173보다 크거나 같은 사람만 반환.

–ANY 구문–

clip_image022

SELECT name, height FROM userTbl WHERE height = ANY (SELECT height FROM userTbl WHERE addr=’경남’);

170이거나 173cm인 사람을 출력.

–IN 구문–

clip_image023

SELECT name, height FROM userTbl WHERE height IN (SELECT height FROM userTbl WHERE addr=’경남’);

=ANY와 IN은 같은 의미.

이것도 살펴보세요!

WSL 개발 환경 설정

WSL로 개발 환경 설정하는 법 https://learn.microsoft.com/ko-kr/windows/wsl/setup/environment 1. 아래 명령으로 WSL을 설치하고, 리눅스 사용자 이름과 암호 …

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다