본문 바로가기
낙서장/SQL

데이터 조회

by "뭉치" 2021. 8. 10.
728x90

테이블 내용 조회

 

가장 사용 용도가 많고 사용 방법이 화려한(?) 명령어절이 아닐까 한다. 컬럼명 대신 '*'를 사용하면 모든 컬럼이 대상이 된다. 실제 현업에서는 사용을 극도로(^^!) 제한하고 있는 문자 이기도 하다.

 

1. 기본유형

 

SELECT   컬럼명1, 컬럼명2, ...
FROM      테이블명
WHERE  조건

 

예1] member 테이블의 모든 내용을 조회해 보자.
SELECT * FROM member


예2] member 테이블의 id가 1001 사람의 내용을 조회해 보자.
SELECT  *  FROM member WHERE id='1001'

 

2. LIKE 연산자 사용

 

SELECT   컬럼명1, 컬럼명2, ...
FROM      테이블명
WHERE   컬럼명

LIKE '%조회할문자%' [ ESCAPE '' ]  -매직 like 김%

 

''안에 %의 의미는 모든 이라는 의미가 있다.

만약 조회할 문자안에 '%' 등과 같은 특수 문자가 포함되어 있을 경우 이를 구분해 주어야 하는데 이때 사용하는 명령어가 ESCAPE 이다.

 

예3] member 테이블의 내용중 이름이 박씨성만 찾아보자.
SELECT * FROM member WHERE irum LIKE '박%'
 
예4] member 테이블의 내용중 전화번호에 '3'이 있는 데이터를 조회해 보자.
SELECT * FROM member  WHERE phone LIKE '%3%'
 
예5] 주소에 %가 들어 있는 데이터를 조회해 보자.
SELECT * FROM member WHERE address LIKE '%%%' ESCAPE 'W';

 

3. IN 연산자

 

WHERE 절에서 사용되며 OR연산을 연속해서 사용하는 효과를 볼 수 있다.

 

OR연산자 사용 예 IN 연산자 사용 예
SELECT  *  FROM  member
WHERE  id='1001'  OR  id='1002'  OR  id='1003' ;
SELECT  *  FROM  member
WHERE  id  IN('1001', '1002', '1003');

 

4. BETWEEN AND 연산자

 

특정 범위 내에 있는 값을 가져오기 위해 사용되며, AND 연산자를 대신하여 사용될 수 있다.

 

AND 연산자 사용 예 BETWEEN AND 연산자 사용 예
SELECT  *  FROM  video
WHERE amt >=500 AND amt <= 1500

[사이에 있는 값]
SELECT  *  FROM  member
WHERE amt  BETWEEN 500 AND 1500


 

5. 논리 연산자

 

오라클에서 사용되는 논리연산자는 NOT, AND OR를 사용한다.

이때 NOT연산자는 IN, LIKE, BETWEEN a AND b와 같이 사용될 수 있다.

 

예1] member 테이블에서 address 가 부산과 인천이 아닌 사람을 찾아보자.
SELECT  FROM  member WHERE address NOT IN('부산', '인천');


예2] member 테이블에서 김씨가 아닌 사람을 찾아보자.
SELECT  *  FROM member WHERE irum NOT LIKE '김%';


예3] video 테이블에서 amt가 500 과 1500 사이가 아닌 자료를 찾아 보자.
SELECT  *  FROM  video  WHERE amt   NOT  BETWEEN  500  AND  1500

 

6. NULL 인 자료 찾기

 

테이블의 값중에 null이 발생된 자료는 관계 연산자를 통하여 찾을 수 없다. 즉, irum = null 이라고 조건을 걸어도 원하는 데이터를 찾을 수 없다는 말이다. 이때 값이 null인 것을 찾기 위해서는 IS NULL 을 사용해야 한다.

또한 null 이 아닌 자료를 찾기 위해선 IS NOT NULL로 찾아야 한다.

 

예1] video 테이블에서 제목이 널인 것만 찾아 보자.
SELECT  *  FROM  video  WHERE  jemok  IS   NULL ;  (jemok == null 이라는 것을 sql은 모른다.)
jemok is not null (제목이 null이 아닌것)

 

7. DISTINCT

 

중복되는 컬럼을 한번만 보여준다.

 

예] 주소를 중복되지 않게 출력하기.
SELECT DISTINCT address FROM member;

 

8. ORDER BY

 

데이터를 정렬해서 보여준다. 정렬방식은 ASC(오름차정렬), DESC(내림차정렬)을 사용할 수 있고 생략되면 기본적으로 오름차 정렬된다.

 

예1] member 테이블의 내용을 이름순으로 정렬하시오.
SELECT  *  FROM  member   ORDER  BY  irum


예2] 학년순으로 정렬하되, 학년이 같으면 이름순으로 내림차 정렬하시오.
SELECT  *  FROM  member   ORDER  BY  class ,  irum  DESC

 

9. GROUP BY / HAVING -- **백미**

 

학년별, 과목별 ...등과 같이 어떤 요소를 묶어 집계를 내고자 할때 사용되는 절이다. 그러나 GROUP BY절을 사용할때 주의할 사항은 SELECT절에서 나열 될수 있는 컬럼들의 조건이다.

첫번째 조건, 반드시 집계함수를 사용해야 한다.
두번째 조건, GROUP BY절에 명시된 컬럼이여야 한다.

 

집계함수

집계함수명 설명
SUM(컬럼명) 해당 컬럼의 합계를 계산한다.
AVG(컬럼명) 해당 컬럼의 평균을 계산한다.
COUNT(컬러명) 갯수를 센다.
MAX, MIN 최대값, 최소값을 구한다.

 

예1] 학년별 국어 점수의 평균을 구하시오
SELECT class, avg(kor)   FROM  member   GROUP  BY kor;


각 부서별 *** 정리해 주시오. 라고 할때 유용하다?
[출처] 데이터조회 (itdocument)




728x90

'낙서장 > SQL' 카테고리의 다른 글

조회수 카운트 업  (0) 2021.08.10
select,insert .....등  (0) 2021.08.10
데이터 수정  (0) 2021.08.10
데이터의 삭제  (0) 2021.08.10
연습 테이블 목록  (0) 2021.08.08

댓글