'SQL 전문가 가이드'에 해당되는 글 44건

  1. 2013.09.26 부정 연산자
  2. 2013.09.26 논리 연산자
  3. 2013.09.26 SQL 연산자
  4. 2013.09.24 비교 연산자

 

과목 II SQL 기본 및 활용

제1장 SQL 기본

제5절 WHERE 절

6. 부정 연산자

 

 

[예제] 삼성블루윙즈 소속인 선수들 중에서 포지션이 미드필더(MF:Midfielder)가 아니고, 키가 175 센티미터 이상 185 센티미터 이하가 아닌 선수들의 자료를 찾아본다.

 SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키
 FROM PLAYER
 WHERE TEAM_ID = 'K02'
 AND NOT POSITION = 'MF'
 AND NOT HEIGHT BETWEEN 175 AND 185;

 

 

[실행결과]

(12개 행이 영향을 받음)

 

 


 

 

[준비]

 UPDATE PLAYER
 SET NATION = NULL
 WHERE NATION = '';

처음 테이블 생성시에 NATION 칼럼 값을 NULL이 아닌 공백으로 입력했었습니다.

따라서 NATION 칼럼의 공백 값들을 NULL 값으로 수정 합니다.

 

 

[예제] 국적(NATION) 칼럼의 경우 내국인들은 별도 데이터를 입력하지 않았다. 국적 칼럼이 NULL이 아닌 선수와 국적을 표시하라.

 SELECT PLAYER_NAME 선수이름, NATION 국적
 FROM PLAYER
 WHERE NATION IS NOT NULL;

 

 

[실행결과]

(27개 행이 영향을 받음)

 

'SQL 전문가 가이드' 카테고리의 다른 글

숫자형 함수  (0) 2013.09.27
문자형 함수  (0) 2013.09.26
논리 연산자  (0) 2013.09.26
SQL 연산자  (0) 2013.09.26
비교 연산자  (0) 2013.09.24
Posted by G4.
,

 

과목 II SQL 기본 및 활용

제1장 SQL 기본

제5절 WHERE 절

5. 논리 연산자

 

 

[예제] 예를 들어 “소속이 삼성블루윙즈”인 조건과 “키가 170 센티미터 이상”인 조건을 연결해 보면 “소속이 삼성블루윙즈이고 키가 170 센티미터 이상인 조건을 가진 선수들의 자료를 조회”하는 것이 되는 것이다. 

 SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키
 FROM PLAYER
 WHERE TEAM_ID = 'K02' AND HEIGHT >= 170;

 

 

[실행결과]

(45개 행이 영향을 받음)

 

 


 

 

 

[예제] “소속이 삼성블루윙즈이거나 전남드래곤즈”인 조건을 SQL 비교 연산자로, “포지션이 미드필더(MF)”인 조건을 비교 연산자로 비교한 결과를 논리 연산자로 묶어서 처리한다.

 SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키

 FROM PLAYER

 WHERE TEAM_ID IN ('K02','K07')

 AND POSITION = 'MF';

 

 

[실행결과]

(40개 행이 영향을 받음)

 

 


 

 

 

[예제] 요구 사항을 하나씩 하나씩 AND, OR 같은 논리 연산자를 사용하여 DBMS가 이해할 수 있는 SQL 형식으로 질문을 변경한다. 요구 사항을 순서대로 논리적인 조건을 적용한다.

------------------------------------------------------------------

소속팀이 삼성블루윙즈이거나 전남드래곤즈에 소속된 선수들이어야 하고,

포지션이 미드필더(MF:Midfielder)이어야 한다.

키는 170 센티미터 이상이고 180 이하여야 한다.

1) 소속팀이 삼성블루윙즈 OR 소속팀이 전남드래곤즈

2) AND 포지션이 미드필더

3) AND 키는 170 센티미터 이상

4) AND 키는 180 센티미터 이하

------------------------------------------------------------------ 

 SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키
 FROM PLAYER
 WHERE TEAM_ID = 'K02' OR TEAM_ID = 'K07'
 AND POSITION = 'MF'
 AND HEIGHT >= 170
 AND HEIGHT <= 180;

책에 설명대로 괄호가 누락됨으로서 OR 논리 연산자보다 AND 논리 연산자를 먼저 실행하기 때문에 잘못된 결과를 나타낸 것입니다.

 

 

[실행결과]

(66개 행이 영향을 받음)

 

 


 

 

 

 

[예제] 잘못된 결과를 보여 준 SQL 문장을 괄호를 사용하여 다시 적용한다.

 SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키
 FROM PLAYER
 WHERE (TEAM_ID = 'K02' OR TEAM_ID = 'K07')
 AND POSITION = 'MF'
 AND HEIGHT >= 170
 AND HEIGHT <= 180;

 

 

[실행결과]

(33개 행이 영향을 받음)

 

 


 

 

 

[예제] IN (list)와 BETWEEN a AND b 연산자를 활용하여 같은 결과를 출력하는 SQL 문장을 작성한다. 두개의 SQL 문장은 DBMS 내부적으로 같은 프로세스를 거쳐 수행되므로 당연히 실행 결과도 같다.

 SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키
 FROM PLAYER
 WHERE TEAM_ID IN ('K02','K07')
 AND POSITION = 'MF'
 AND HEIGHT BETWEEN 170 AND 180;

 

 

[실행결과]

(33개 행이 영향을 받음)

 

'SQL 전문가 가이드' 카테고리의 다른 글

문자형 함수  (0) 2013.09.26
부정 연산자  (0) 2013.09.26
SQL 연산자  (0) 2013.09.26
비교 연산자  (0) 2013.09.24
SAVEPOINT  (0) 2013.09.24
Posted by G4.
,

 

과목 II SQL 기본 및 활용

제1장 SQL 기본

제5절 WHERE 절

4. SQL 연산자

 

 

* IN (list) 연산자

 

[예제] 소속팀 코드와 관련된 IN (list) 형태의 SQL 비교 연산자를 사용하여 WHERE 절에 사용한다.

--------------------------------------------------------------

1) 소속팀코드 IN (삼성블루윙즈 코드(K02), 전남드래곤즈 코드(K07))

2) 포지션 LIKE 미드필더(MF)

3) 키 BETWEEN 170 센티미터 AND 180 센티미터

-------------------------------------------------------------- 

 SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키

 FROM PLAYER

 WHERE TEAM_ID IN ('K02','K07');

첫 번째 조건만 WHERE 절로 작성했습니다.

 

 

[실행결과]

(100개 행이 영향을 받음)

 

 


 

 

[준비] 별도 제공한 SQL SCRIPT를 통해 모든 테이블의 데이터를 새롭게 생성 (SQL 전문가 가이드 실습용 파일.zip)

압축파일의 [2.부서_사원_sqlserver용_2010년.sql] 을 이용하여 입력합니다.

 

 

[예제] 사원 테이블에서 JOB이 MANAGER이면서 20번 부서에 속하거나, JOB이 CLERK이면서 30번 부서에 속하는 사원의 정보를 IN 연산자의 다중 리스트를 이용해 출력하라. 

 SELECT ENAME, JOB, DEPTNO
 FROM EMP
 WHERE JOB IN ('MANAGER','CLERK') AND DEPTNO IN (20,30);

 

 

[실행결과] 

(5개 행이 영향을 받음)

 

 


 

 

 

* LIKE 연산자

 

[예제] 요구 사항의 두 번째 조건에 대해서 LIKE 연산자를 WHERE 절에 적용해서 실행한다.

 SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키
 FROM PLAYER
 WHERE POSITION LIKE 'MF';

 

 

[실행결과]

(162개 행이 영향을 받음)

 

 


 

 

 

[예제] “장”씨 성을 가진 선수들의 정보를 조회하는 WHERE 절을 작성한다.

 SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키
 FROM PLAYER
 WHERE PLAYER_NAME LIKE '장%';

 

 

[실행결과]

(13개 행이 영향을 받음)

 

 


 

 

* BETWEEN a AND b 연산자

 

[예제] 세 번째로 키가 170 센티미터 이상 180센티미터 이하인 선수들의 정보를 BETWEEN a AND b 연산자를 사용하여 WHERE 절을 완성한다.

SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키
 FROM PLAYER
 WHERE HEIGHT BETWEEN 170 AND 180;

 

 

[실행결과]

(259개 행이 영향을 받음)

 

 


 

 

* IS NULL 연산자

 

[준비]

 UPDATE PLAYER
 SET POSITION = NULL
 WHERE POSITION = '';

처음 테이블 생성시에 몇 선수들의 POSITION 칼럼 값을 NULL이 아닌 공백으로 입력했었습니다.

따라서 POSITION 칼럼의 공백 값들을  NULL 값으로  수정 합니다.

 

 

[예제] POSITION 칼럼(Column) 값이 NULL 값인지를 판단하기 위해서는 IS NULL을 사용하여 다음과 같이 SQL 문장을 수정하여 실행한다.

 SELECT PLAYER_NAME 선수이름, POSITION 포지션, TEAM_ID
 FROM PLAYER
 WHERE POSITION IS NULL;

 

 

[실행결과]

(3개 행이 영향을 받음)

 

'SQL 전문가 가이드' 카테고리의 다른 글

부정 연산자  (0) 2013.09.26
논리 연산자  (0) 2013.09.26
비교 연산자  (0) 2013.09.24
SAVEPOINT  (0) 2013.09.24
ROLLBACK  (0) 2013.09.23
Posted by G4.
,

 

과목 II SQL 기본 및 활용

제1장 SQL 기본

제5절 WHERE 절

3. 비교 연산자

 

 

[예제] 첫 번째 요구 사항인 소속팀이 삼성블루윙즈라는 조건을 WHERE 조건절로 옮겨서 SQL 문장을 완성하여 실행한다.

------------------------------------------------------------------

소속팀이 삼성블루윙즈이거나 전남드래곤즈에 소속된 선수들이어야 하고,

포지션이 미드필더(MF:Midfielder)이어야 한다.

키는 170 센티미터 이상이고 180 이하여야 한다.

------------------------------------------------------------------

1) 소속팀코드 = 삼성블루윙즈팀 코드(K02)

2) 소속팀코드 = 전남드래곤즈팀 코드(K07)

3) 포지션 = 미드필더 코드(MF)

4) 키 >= 170 센티미터

5) 키 <= 180 센티미터

------------------------------------------------------------------ 

 SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키

 FROM PLAYER

 WHERE TEAM_ID = 'K02' ;

 

 

[실행결과]

(49개 행이 영향을 받음)

 

 


 

 

 

[예제] 세 번째 요구 사항인 포지션이 미드필더(MF)인 조건을 WHERE 조건절로 옮겨서 SQL 문장을 완성하여 실행한다.

 SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키

 FROM PLAYER

 WHERE POSITION = 'MF';

 

 

[실행결과]

(162개 행이 영향을 받음)

 

 


 

 

[예제] 네 번째 요구 사항인 "키가 170 센티미터 이상"인 조건도 WHERE 절로 옮겨서 SQL 문장을 완성하여 실행한다.

 SELECT PLAYER_NAME 선수이름, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키

 FROM PLAYER

 WHERE HEIGHT >= 170;

 

 

 

[실행결과]

(439개 행이 영향을 받음)

 

 

'SQL 전문가 가이드' 카테고리의 다른 글

논리 연산자  (0) 2013.09.26
SQL 연산자  (0) 2013.09.26
SAVEPOINT  (0) 2013.09.24
ROLLBACK  (0) 2013.09.23
COMMIT  (0) 2013.09.23
Posted by G4.
,