Download presentation
Presentation is loading. Please wait.
1
SELECT 문 사원 테이블의 모든 정보를 출력하는 예제 1. 비교 연산자 SELECT 문의 형태
select * from employee
2
SELECT 문 특정 칼럼만을 출력하는 예제 1. 비교 연산자 SELECT 문의 형태
select eno, ename, salary from employee
3
출력되는 컬럼의 수가 다르지만 두 가지 형태 모두 SELECT 절과 FROM 절만 사용하였기에 출력되는 로우 개수는 동일
1. 비교 연산자 SELECT 문 예 select * from employee 예 select eno, ename, salary from employee 출력되는 컬럼의 수가 다르지만 두 가지 형태 모두 SELECT 절과 FROM 절만 사용하였기에 출력되는 로우 개수는 동일
4
SELECT 문에 WHERE 절을 추가하는 예제
1. 비교 연산자 SELECT 문에 WHERE 절 추가 SELECT 문에 WHERE 절을 추가하는 예제 예 select * from employee where salary>= 500 사원(EMP) 테이블에서 급여(SAL)가 500 이상인 사원 출력 조건에 맞는 로우만 찾기에 출력되는 로우 개수가 줄어듦
5
로우를 제한하는 조건을 SELECT 문에 WHERE 절을 추가하여 제시
1. 비교 연산자 SELECT 문에 WHERE 절 추가 조건절 로우를 제한하는 조건을 SELECT 문에 WHERE 절을 추가하여 제시 형식 SELECT * [column1, column2, .. ,columnn] FROM table_name WHERE 조건절; 조건절의 구성 예 WHERE salary >= 500; #5 #6 #7 #5 컬럼 #6 연산자 #7 비교대상값
6
1. 비교 연산자 비교 연산자 WHERE 절에 조건을 설정하기 위한 연산자로 =(같다), >(크다), >=(크거나 같다), <(작다), <=(작거나 같다), <>(같지 않다)와 같은 연산자 연산자 의 미 예 제 = 같다. select eno, ename, salary from employee where sal=500; > 보다 크다. where sal>500; < 보다 작다. where sal<500; >= 보다 크거나 같다. where sal>=500; <= 보다 작거나 같다. where sal<=500; <>, !=, ^= 다르다. where sal<>500;
7
VS 1. 비교 연산자 예 select * from employee 예 select * from employee
where dno=10 사원(employee) 테이블에서 10 번 부서 소속사원 출력 특정 조건에 해당되는(부서번호가 10번인) 사원에 관한 정보만 출력되기에 로우 개수가 줄어듬
8
문자열이나 날짜는 반드시 단일 따옴표 안에 표시
1. 비교 연산자 1) 문자 데이터 조회 문자 데이터 조회 비교 연산자를 하기 위해서 다루었던 컬럼들이 수치 형태가 아니고 문자 데이터일 때 조회하는 방법 문자 데이터를 조회하는 오류 예제 예 select * from employee where ename=이문세 이문세를 컬럼으로 간주하고 에러 발생 #3 문자열이나 날짜는 반드시 단일 따옴표 안에 표시
9
이름이 이문세인 사원의 사원번호(eno)과 사원이름(ename)과 급여(salary)를 출력
1. 비교 연산자 1) 문자 데이터 조회 문자 데이터 조회 비교 연산자를 하기 위해서 다루었던 컬럼들이 수치 형태가 아니고 문자 데이터일 때 조회하는 방법 문자 데이터를 조회하는 예제 예 select * from employee where ename=‘이문세’ 이름이 이문세인 사원의 사원번호(eno)과 사원이름(ename)과 급여(salary)를 출력
10
날짜 데이터 조회 날짜 데이터를 조회하는 예제 1. 비교 연산자 2) 날짜 데이터 조회
비교 연산자를 하기 위해서 다루었던 컬럼들이 수치 형태가 아니고 날짜일 때 조회하는 방법 날짜도 문자열과 마찬가지로 단일 따옴표 안에 기술 날짜 데이터를 조회하는 예제 예 select * from employee where hiredate<='2008/01/01' 사원(EMP) 테이블에서 입사일(HIREDATE)이 '2008/01/01' 이후인 사원만 출력
11
2. 논리 연산자 실무 Tip! 조건을 여러 개 조합해서 결과를 얻어야 할 경우 조건을 연결해 주기 위해 논리연산자를 사용합니다. Q 10번 부서 소속인 사원들 중에서 직급이 과장인 사원을 찾아야 할 경우 어떻게 검색해야 할까요? 논리 연산자 조건을 여러 개 조합해서 결과를 얻어야 할 경우에는 조건을 연결해 주기 위해 사용 연산자 의미 예 제 AND 두 가지 조건을 모두 만족해야만 검색할 수 있음 select * from employee where dno=10 and job='과장‘; OR 두 가지 조건 중에서 한 가지만 만족하더라도 검색할 수 있음 select * from employee where dno=10 or job='과장'; NOT 조건에 만족하지 못하는 것만 검색 select * from employee where not dno=10;
12
AND 연산자 AND 연산자를 사용한 예제 2. 논리 연산자 1) AND 연산자
조건 1 조건2 && 참 거짓 AND 연산자 두 가지 조건을 모두 만족할 경우에만 검색할 수 있도록 하는 연산자 AND 연산자 진리표 AND 연산자를 사용한 예제 [조건1] 10번 부서 소속인 사원 : dno=10 [조건2] 직급이 과장인 사원 : job='과장' 예 select * from employee where dno=10 and job='과장'; employee 테이블에서 부서번호(DNO)가 10이고, 직급(JOB)이 '과장'인 자료의 사원명, 부서번호, 직급 칼럼을 표시
13
employee 테이블에서 부서번호(DNO)가 10이거나 직급(JOB)이 '과장'인 사원 출력
2. 논리 연산자 2) OR 연산자 조건 1 조건2 || 참 거짓 OR 연산자 두 가지 조건 중 한 가지만 만족하더라도 검색할 수 있도록 하는 연산자 OR 연산자 진리표 OR 연산자를 사용한 예제 [조건1] 10번 부서 소속인 사원 : dno=10 [조건2] 직급이 과장인 사원 : job='과장' select * from employee where dno=10 or job='과장'; employee 테이블에서 부서번호(DNO)가 10이거나 직급(JOB)이 '과장'인 사원 출력 예
14
OR 연산자 OR 연산자를 사용한 예제 2. 논리 연산자 2) OR 연산자
조건 1 조건2 || 참 거짓 OR 연산자 두 가지 조건 중 한 가지만 만족하더라도 검색할 수 있도록 하는 연산자 OR 연산자 진리표 OR 연산자를 사용한 예제 직급이 '과장'이라는 조건 만족 부서번호가 10인 조건 만족 직급이 '과장'이고, 부서번호가 10인 조건 모두 만족
15
OR 연산자 2. 논리 연산자 2) OR 연산자 두 가지 조건 중 한 가지만 만족하더라도 검색할 수 있도록 하는 연산자
조건 1 조건2 || 참 거짓 OR 연산자 두 가지 조건 중 한 가지만 만족하더라도 검색할 수 있도록 하는 연산자 OR 연산자 진리표 동일한 조건에 대해서 AND 연산을 하면 조건에 모두 만족해야하므로 로우의 개수가 줄어들게 되고, OR 연산을 사용하면 조건에 맞는 로우의 개수가 늘어나게 됨
16
Q NOT 연산자 NOT 연산자를 사용한 예제 2. 논리 연산자
10번 부서에 소속된 사원만 제외하고 나머지 사원의 정보를 출력하려면 어떻게 해야 할까요? NOT 연산자 조건 NOT 참 거짓 참은 거짓으로 거짓은 참으로 즉, 반대되는 논리값을 구하는 연산자 NOT 연산자 진리표 NOT 연산자를 사용한 예제 예 select * from employee where not dno=10 employee 테이블에서 부서번호(DNO)가 10이 아닌 사원 출력
17
실무 Tip! Q NOT 연산자 <> 연산자를 사용한 예제 2. 논리 연산자
확인 확인 2. 논리 연산자 조건 NOT 참 거짓 조건 NOT 참 거짓 특정 조건을 제외하고 나머지 정보만 출력해야 할 경우 반대되는 논리값을 구하는 NOT 연산자를 사용합니다. 3) NOT 연산자 Q 10번 부서에 소속된 사원만 제외하고 나머지 사원의 정보를 출력하려면 어떻게 해야 할까요? NOT 연산자 진리표 NOT 연산자 진리표 NOT 연산자 조건 NOT 참 거짓 참은 거짓으로 거짓은 참으로 즉, 반대되는 논리값을 구하는 연산자 NOT 연산자 진리표 <> 연산자를 사용한 예제 NOT 연산자를 사용하지 않더라도 “같지 않다”를 의미하는 <> 연산자를 이용하여 다음과 같이 표현해도 동일한 결과를 얻을 수 있음 예 select * from employee where dno<>10 employee 테이블에서 부서번호(DNO)가 10이 아닌 사원 출력
18
employee 테이블에서 급여(salary)가 400에서 500사이인 사원 출력
2. 논리 연산자 4) 논리 연산자의 다양한 활용 논리 연산자를 다양하게 활용한 예제 AND 연산자를 사용하는 경우 [조건1] 급여가 400 이상 : salary>=400 [조건2] 급여가 500 이하 : salary<=500 논리 AND 연산자의 사용 예 예 select * from employee where salary>=400 and salary<=500 employee 테이블에서 급여(salary)가 400에서 500사이인 사원 출력
19
employee 테이블에서 급여(salary)가 400 미만이거나 500 초과인 사원 출력
2. 논리 연산자 4) 논리 연산자의 다양한 활용 논리 연산자를 다양하게 활용한 예제 OR 연산자를 사용하는 경우1 [조건1] 급여가 400 미만 : salary<400 [조건2] 급여가 500 초과 : salary>500 논리 OR 연산자의 사용 예 예 select * from employee where salary<400 or salary>500 employee 테이블에서 급여(salary)가 400 미만이거나 500 초과인 사원 출력
20
논리 연산자를 다양하게 활용한 예제 OR 연산자를 사용하는 경우2 2. 논리 연산자 4) 논리 연산자의 다양한 활용
[조건1] 커미션이 80 : commission=80 [조건2] 커미션이 100 : commission=100 [조건3] 커미션이 200 : commission=200 예 select * from employee where commission=80 or commission=100 or commission=200
21
400에서 500 사이의 급여를 받는 사원과 같이 특정 범위 내에 속하는 데이터인지를 알아보기 위해서는 어떻게 해야 할까요?
3. BETWEEN AND 연산자 400에서 500 사이의 급여를 받는 사원과 같이 특정 범위 내에 속하는 데이터인지를 알아보기 위해서는 어떻게 해야 할까요? Q 예 select * from employee where salary>=400 and salary<=500 형식 column_name BETWEEN A AND B 예 select * from employee where salary between 400 and 500
22
급여가 400 미만이거나 500 초과인 사원을 검색하기 위해서는 어떻게 해야 할까요?
3. BETWEEN AND 연산자 급여가 400 미만이거나 500 초과인 사원을 검색하기 위해서는 어떻게 해야 할까요? Q 예 select * from employee where salary<400 or salary>500 예 select * from employee where salary not between 400 and 500
23
BETWEEN AND 연산자에 문자, 날짜를 활용한 예제
비교 대상이 되는 값은 단일 따옴표로 둘러싸야 함 BETWEEN AND 연산자에 문자, 날짜를 활용한 예제 예 select * from employee where hiredate between '2003/01/01' and '2003/12/31' 특정 범위의 값을 조회하기 위해서는 비교 연산자와 논리 연산자 AND를 사용할 수도 있지만, BETWEEN AND 연산자를 사용하면 보다 편리하게 자료를 검색할 수 있음
24
IN 연산자 IN 연산자를 활용한 예제 4. IN 연산자 예 select * from employee
where commission=80 or commission=200 or commission=300 IN 연산자 동일한 필드가 여러 개의 값 중에서 하나라도 같을 경우를 검색하고자 할 때 비교 연산자와 논리 연산자 OR를 사용하지 않고 간단하게 표현하는 연산자 형식 column_name IN (A, B, C) IN 연산자를 활용한 예제 예 select * from employee where commission in(80, 100, 200)
25
NOT IN 연산자 NOT IN 연산자를 활용한 예제 4. IN 연산자 예select * from employee 예
where commission<>80 and commission<>100 and commission<>200 NOT IN 연산자 동일한 필드가 여러 개의 값과 모두 다를 경우를 검색하고자 할 때 비교 연산자와 논리 연산자 OR를 사용하지 않고 간단하게 표현하는 연산자 NOT IN 연산자를 활용한 예제 예 select * from employee where commission not in(80, 100, 200)
26
연습하기 내용 급여가 250이거나 300이거나 500인 사원들의 사원 번호와 사원명과 급여를 출력하는 쿼리문을 IN 연산자를 사용하여 작성해 봅시다. 쿼리창에 다음과 같이 입력한 후 <실행>을 클릭합니다. <실행>을 클릭하세요. select eno, ename, salary from employee where salary IN (250, 300, 500)을 입력하세요. 26
27
연습하기 내용 급여가 250이거나 300이거나 500도 아닌 사원들을 검색하는 쿼리문을 이번에는 NOT IN 연산자를 사용하여 작성해 봅시다. 쿼리창에 다음과 같이 입력한 후 <실행>을 클릭합니다. <실행>을 클릭하세요. select eno, ename, salary from employee where salary not IN (250, 300, 500)을 입력하세요.
28
검색하고자 하는 값을 정확히 모를 경우에도 검색 가능하도록 하기 위해서 와일드카드와 함께 사용
1. LIKE 연산자와 와일드 카드 이씨 성을 갖는 사람을 찾거나 거주지가 서울인 사람을 찾는 것과 같이 컬럼에 저장된 데이터의 일부만 일치하더라도 조회가 가능할까요? Q LIKE 연산자 컬럼에 저장된 데이터의 일부만 일치하더라도 조회가 가능하도록 하는 연산자 검색하고자 하는 값을 정확히 모를 경우에도 검색 가능하도록 하기 위해서 와일드카드와 함께 사용 와일드카드 의미 % 문자가 없거나, 하나 이상의 문자가 어떤 값이 와도 상관없다. _ 하나의 문자가 어떤 값이 와도 상관없다. 와일드카드 형식 column_name LIKE pattern
29
O X Q Q 와일드카드(%)를 사용하는 예제 1. LIKE 연산자와 와일드 카드
1) 와일드카드(%) 사용하기 이름이 F로 시작 하지만 그 뒤의 문자는 모르는 사람은 어떻게 찾을까요? 이름이 "이문세“인 사람은 어떻게 찾을까요? Q Q O X 예 select * from employee where ename = '이문세' 예 select * from employee where ename = ‘F' 와일드카드(%)를 사용하는 예제 예 select * from employee where ename like '이%' employee 테이블에서 사원 이름이 '이'로 시작하는 사원을 출력
30
실무 Tip! Q 와일드카드(%)를 사용하는 예제 1. LIKE 연산자와 와일드 카드
1) 와일드카드(%) 사용하기 이름에 “성”이란 글자가 포함되어 있는 사원을 검색할 경우 like '%성%'‘ 형태로 검색합니다. Q 이름에 “성”이란 글자가 포함되어 있는 사원은 어떻게 검색해야 할까요? 와일드카드(%)를 사용하는 예제 예 select * from employee where ename like '%성%'' employee 테이블에서 사원의 이름에 성이 포함되어 있는 사원을 출력 앞에 % 를 사용하는 것은 인덱스를 사용하지 못하게 하여 성능에 나쁜 영향을 줌
31
employee 테이블에서 사원 이름이 '성'으로 끝나는 사원을 출력
1. LIKE 연산자와 와일드 카드 실무 Tip! 1) 와일드카드(%) 사용하기 확인 확인 Q 문자열의 앞에 어떤 문자열이 몇 개가 오든 상관없이 “성”으로 끝나는 데이터는 어떻게 검색해야 할까요? 이름에 “성”이란 글자가 포함되어 있는 사원을 검색할 경우 like '%성' 형태로 검색합니다. 와일드카드(%)를 사용하는 예제 예 select * from employee where ename like '%성' employee 테이블에서 사원 이름이 '성'으로 끝나는 사원을 출력
32
employee 테이블에서 사원명(ENAME)의 두 번째 글자 '성'이고 그 뒤는 무엇이든 관계없는 사원 출력
1. LIKE 연산자와 와일드 카드 2) 와일드카드(_) 사용하기 와일드카드(%) 와일드카드(_) 어떤 문자가 오든 상관없다는 의미로 사용되는 와일드카드 %는 몇 개의 문자가 오든 상관없음 어떤 문자가 오든 상관없다는 의미로 사용되는 와일드카드 _ 는 한 문자에 대해서만 와일드카드 역할 VS #3 와일드카드(_)를 사용하는 예제 예 select * from employee where ename like '_성%' employee 테이블에서 사원명(ENAME)의 두 번째 글자 '성'이고 그 뒤는 무엇이든 관계없는 사원 출력
33
와일드카드(_)를 사용하는 예제 1. LIKE 연산자와 와일드 카드 2) 와일드카드(_) 사용하기
_를 사용하게 되면 조건의 문자 위치와 순서에 유의 이름 중 두 번째 문자가 “성”인 사람을 검색: _성% 두 번째로 오는 문자가 '성', 그리고 그 뒤는 무엇이든 상관없음 이름 중 세 번째 글자가 성인 자료를 검색: __성% 와일드카드(_)를 사용하는 예제 예 select * from employee where ename like '__성%' employee 테이블에서 사원명(ENAME)의 세 번째 글자 '성'이고 그 뒤는 무엇이든 관계없는 사원 출력 앞에 _ 를 사용하는 것은 인덱스를 사용하지 못하게 하여 성능에 나쁜 영향을 줌
34
NOT LIKE 연산자 NOT LIKE 연산자를 사용하는 예제 1. LIKE 연산자와 와일드 카드 3) NOT LIKE 연산자
검색하고자 하는 데이터에서 특별한 문자를 포함하지 않는 것만 검색할 경우 사용하는 연산자 NOT LIKE 연산자를 사용하는 예제 예 select * from employee where ename not like '%성%'
35
NULL 커미션 컬럼의 성격을 파악할 수 있는 예제 2. NULL을 위한 연산자
SQL Server에서는 칼럼에 NULL 값이 저장되는 것을 허용하지만, NULL 값을 제대로 이해하지 못하면 원하는 결과를 얻지 못할 수 있음 NULL ∞나 블랙 홀로 표현 미확정, 알 수 없는(unknown) 값을 의미 연산, 할당, 비교가 불가능 커미션 컬럼의 성격을 파악할 수 있는 예제 예 select ename, dno, commission from employee
36
NULL NULL을 위한 연산자를 사용하는 예제 2. NULL을 위한 연산자
SQL Server에서는 칼럼에 NULL 값이 저장되는 것을 허용하지만, NULL 값을 제대로 이해하지 못하면 원하는 결과를 얻지 못할 수 있음 NULL ∞나 블랙 홀로 표현 미확정, 알 수 없는(unknown) 값을 의미 연산, 할당, 비교가 불가능 NULL을 위한 연산자를 사용하는 예제 예 select * from employee where commission=null NULL 값을 = 연산자로 판단할 수 없기 때문에 employee 테이블에서 커미션(commission) 칼럼이 NULL인 사원을 찾는데 실패 특정 칼럼에 NOT NULL이라는 조건을 주어서 NULL 값을 저장할 수 없도록 제한을 두기도 하고 NULL 값에 대한 연산을 위해서 특별한 연산자를 제공
37
임의의 컬럼이 NULL인지 여부 확인 방법 IS NULL 연산자를 사용한 예제 2. NULL을 위한 연산자
1) NULL을 위한 IS NULL과 IS NOT NULL 연산자 임의의 컬럼이 NULL인지 여부 확인 방법 SQL Server에서는 IS NULL 과 IS NOT NULL 연산자 사용 비교 연산자(=)를 사용하지 않고 IS 연산자 사용 어떤 컬럼을 NULL 즉, 모르는 값과 같다(=)라는 것은 의미상으로 말이 되지 않기 때문에 = 대신 IS NULL 연산자로 대체 하는 것 형식 대상컬럼 IS (연산자) NULL(비교값) IS NULL 연산자를 사용한 예제 예 select * from employee where commission is null employee 테이블에서 커미션(commission) 칼럼이 NULL인 사원 출력
38
임의의 컬럼이 NULL인지 여부 확인 방법 IS NOT NULL 연산자를 사용한 예제 2. NULL을 위한 연산자
1) NULL을 위한 IS NULL과 IS NOT NULL 연산자 임의의 컬럼이 NULL인지 여부 확인 방법 SQL Server에서는 IS NULL 과 IS NOT NULL 연산자 사용 비교 연산자(=)를 사용하지 않고 IS 연산자 사용 어떤 컬럼을 NULL 즉, 모르는 값과 같다(=)라는 것은 의미상으로 말이 되지 않기 때문에 = 대신 IS NULL 연산자로 대체 하는 것 형식 대상컬럼 IS (연산자) NULL(비교값) IS NOT NULL 연산자를 사용한 예제 예 select * from employee where commission is not null employee 테이블에서 커미션(commission) 칼럼이NULL 아닌 사원 출력
39
정렬 3. 정렬을 위한 ORDER BY 절 순서대로 나열하는 것
오름차순(ascending) 정렬 방식: 위에서 아래로 갈수록 큰 값이 출력되도록 함 내름차순(descending) 정렬 방식: 위에서 아래로 갈수록 작은 값이 출력되도록 함 형식 SELECT * [column1, column2, .. ,columnn] FROM table_name WHERE 조건절 ORDER BY column_name sorting 칼럼 이름을 기술 정렬 방식 기술 ASC(오름차순) DESC(내림차순) 숫자 작은 값부터 정렬 큰 값부터 정렬 문자 사전 순서로 정렬 사전 반대 순서로 정렬 날짜 빠른 날짜 순서로 정렬 늦은 날짜 순서로 정렬 NULL 가장 마지막에 나온다. 가장 먼저 나온다. ORDER BY 절의 정렬 방식
40
오름차순 정렬 오름차순 정렬을 위한 ASC를 활용하는 예제 3. 정렬을 위한 ORDER BY 절
작은 값부터 큰 값으로 정렬하는 것(예:1~9, ‘A’~‘Z’) 정렬 방식을 생략하게 되면 디폴트로 ASC로 지정되어 있기 때문에 오름차순으로 출력 오름차순 정렬을 위한 ASC를 활용하는 예제 예 select * from employee order by salary asc employee 테이블의 자료를 급여를 기준으로 오름차순으로 정렬하여 출력 RDER BY salary ASC에서 ASC를 생략한 채 ORDER BY salary만 기술해도(정렬방식을 생략해도) 기본적으로 오름차순으로 정렬 예 select * from employee order by salary
41
내림차순 정렬을 위한 DESC를 활용하는 예제
3. 정렬을 위한 ORDER BY 절 2) 내림차순 정렬을 위한 DESC 내림차순 정렬 큰 값부터 작은 값으로 정렬을 하는 것(예:9~1, Z~A) 내림차순 정렬을 위한 DESC를 활용하는 예제 예 select * from employee order by salary desc
42
문자 순으로 출력하는 예제 3. 정렬을 위한 ORDER BY 절 3) 문자 순으로 출력
크기에 대한 비교는 문자 데이터에 대해서도 가능 아스키 코드 값으로 저장되므로 아스키 코드 값을 기준으로 정렬 오름차순인 경우의 출력 A, B, Z 순으로 출력 내름차순인 경우의 출력 Z, Y, A 순으로 출력 문자 문자 순으로 출력하는 예제 예 select * from employee order by ename
43
크기에 대한 비교는 날짜 데이터에 대해서도 가능
3. 정렬을 위한 ORDER BY 절 4) 날짜 순으로 출력 크기에 대한 비교는 날짜 데이터에 대해서도 가능 오름차순으로 지정 가장 오래된 과거의 시점이 가장 위에 출력 내름차순으로 지정 최근 시점부터 가장 위에 출력 날짜 날짜 순으로 출력하는 예제 예 select * from employee order by hiredate desc
44
정렬 방식에 대해 여러 가지 조건을 주어 결과값을 검색할 수 있음
3. 정렬을 위한 ORDER BY 절 5) 정렬 방식에 여러 가지 조건 제시 정렬 방식에 대해 여러 가지 조건을 주어 결과값을 검색할 수 있음 정렬 방식에 여러 가지 조건을 제시하는 예제 예 select * from employee order by salary desc, ename asc;
Similar presentations