일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 오라클 초기 셋팅
- [Eclipse] 이클립스 마켓플레이스 (Marketplace) 사용방법
- 톰캣 9.0 설치
- 이클립스 서버연동
- php
- 자바
- strtotime()
- js
- github
- PLSQL 설치
- oracle datatype
- Oracle
- id 체크
- 웹에 데이터를 전송하는 방법
- php 날자 함수
- 이클립스 프로젝트 변경
- 자바스크립트
- Nexacro
- scanner 연습문제
- 코드 처리 시간
- DDL
- ER 마스터 사용법
- 코드이그나이터
- 코드 정리
- 실행파일만들기
- CMD
- 개발 일기
- 이클립스
- 자동 배포
- 기초 HTML
- Today
- Total
Chillax in dev
Oracle 공부 기초 06 : DML select(조회, 선택) 본문
Oracle 공부 기초 06 : DML select(조회, 선택)
- 저번에 이어 DML의 핵심 인 select를 공부해보자. 테이블에서 원하는 값만 선택 적으러 추출하고 가져오는 연습을 많이 해서 where 등을 통해 술술 데이터를 불러올 수 있도록 연습에 또 연습을 해야 한다.
- SELECT : select와 from 사이에 조회하고자 하는 필드명들을 , 로 구분하여 지목합니다.
ex) select booknum, subject, outprice from....
- 모든 필드를 한 번에 지목하려면 * 을 써줍니다. ex) select * from booklist; (from 뒤에는 대상 테이블 명을 써줍니다.)
- where 절을 붙여서 조건에 맞는 행만 골라내기도 합니다. ex) select... from... where...
위와 같이 연산식을 써서 연산된 결과를 필드로 조회하고자 할 땐 as와 함께 만들어진 필드명을 지어주기도 합니다.
ex) select empno || '-' || ename as emp_info from
- empno || '-' || ename : empno 값과 ename 값을 '-'와 함께 이어 붙이기 하고 그렇게 만들어진
필드의 이름을 emp_info로 설정합니다. 필드명에 공백이 있거나 기술하기 어려운 필드 명일 때도 as로 별칭을 붙이기도 합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
--오라클 명령어 : select 문(검색,조회)
--[1] scott 사용자가 관리하고 있는 테이블 목록
select * from tab;
--[2] 특정 테이블의 구조 조회(필드 리스트/데이터 형식)
desc dept; -- 커멘드 창(sqlplus)에서 확인 요망
desc PERSON; -- 커멘드 창(sqlplus)에서 확인 요망
--[3] 특정 테이블의 DATA 표시
select * from IN_OUT;
--[4] 모든 컬럼(필드명)이 아닌 , 필요한 필드만 조회
select subject, makeyear from booklist;
--[5] 각각의 필드명에 별칭을 부여해서 출력
select subject as 영화제목, makeyear as 출판년도 from booklist;
--(주의) 별칭에 띠어 쓰기 하지 않습니다. 띠어 쓰기가 들어간 별칭은 큰따옴표로 묶어서 사용합니다
select subject as "영화 제목" , makeyear as "출판 년도" from booklist;
--[6] 중복제거
SELECT distinct booknum FROM IN_OUT;
-- in_out 테이블에서 booknum 값만을 조회하되 중복된값은 한번만 표시하도록 조회합니다
--[7] 검색 조건의 추가 : 입고가격이 20000원 이상인 book 목록
select * from booklist where inprice >=20000;
--[8] 이름이 박지성인 회원의 모든 회원정보 출력
select * from person where personname='박지성';
--[9] 1983년도 이후로 태어난 회원의 모든 회원정보
select * from person where birth >= '1983/01/01';
--[10] 사은포인트(BPOINT)가 250점 이상이고 1982년 이후로 태어난회원의 모든 회원정보
select * from person where bpoint>=250 and birth >= '1982/01/01';
--[11] 제작년도가 2016년 이전이거나 입고가격(inprice)이 18000 이한인 book 정보
select * from dvdlist where makeyear < 2016 or inprice<=18000;
--[12] 성명이 '이'로 시작하는 회원의 모든 정보
select * from person where personname like '이%';
--[13] 이름이 '용'으로 끝나는 회원의 정보
select * from person where personname like '%용';
--[14] 도서 제목에 '이'가 포함되는 영화정보
select * from booklist where subject like '%이%';
--[15] 사은포인트가 NULL 이 아닌 회원의이름과 전화번호
select personname, phone from person where bpoint is not null;
--[16] 도서 제목에 두번째 글자가 '것' 인 도서 정보
select * from booklist where subject like '_것%';
|
cs |
- CMD에서 SQLPLUS로 생성한 테이블 확인하기
- CMD 를열어서 SQLPLUS를 입력하여 실행 후 username : scott, password : tiger (안 보이지만 잘 입력하자)
SQL> desc person; -- 내림차순으로 person 테이블 뿌리기.
- 조건식 조회 (where)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
-- 조건식(ANY, SOME, ALL , (IN) )
-- where 절에서 사용하는 그룹내 해당 요소 찾기 함수들
--1. ANY
select empno, sal, deptno from emp where deptno = any(10,20,30,40)
-- 위와 아래의 조건식 결과 동일함
select empno, sal, deptno from emp
where deptno=10 or deptno=20 or deptno=30 or deptno=40;
-- ANY() 괄호안에 나열된 내용중 어느하나라도 해당하는 것이 있다면 검색 대상으로 함
--2. ALL
SELECT empno, sal FROM emp WHERE sal = ALL (2000, 3000, 4000);
-- 괄호안의 모든값이 동시 만족해야하는 조건이므로 해당하는 레코드가 없을때가 대부분입니다. 사용빈도수가 낮습니다
--3. --SOME 조건식 - ANY와 동일 - IN 과도 동일
SELECT empno, sal, deptno FROM emp WHERE deptno = some(10,20,40);
--4. -- 논리조건식 NOT
SELECT empno, sal FROM emp WHERE deptno NOT in(10,20,30,40);
-- in() 안에 있는것과 하나도 매칭되지 않은 값이 검색대상
--5. -- EXISTS 조건식
-- in 과 비슷하지만 후행 조건절로 값의 리스트가 아닌 서브 쿼리만 올수 있음
-- 또한 서브 쿼리내에 조인 조건이 있어야 정상작동 - JOIN 단원을 학습한 후 다시 자세히 공부합니다.
select deptno, dname from dept a
where exists (select * from emp b where a.deptno = b.deptno and b.sal > 3000);
|
cs |
- 정렬(Sort) - Oder by 필드명 [desc]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
-- 정렬(Sort) - Oder by 필드명 [desc]
-- select 명령의 결과를 특정 필드값의 오름차순 이나 내림 차순으로 정렬하라는 명령
-- asc :오름차순 정렬 , 쓰지 않으면 기본 오름차순 정렬로 실행됩니다
-- desc : 내림차순 정렬, 내림 차순 정렬을 위해서는 반드시 필드명 되에 써야하는 키워드 입니다
-- emp 테이블에서
-- sal이 1000 이상인 데이터를 ename 의 오름차순으로 정렬하여 조회
select * from emp where sal>=1000 order by ename; -- 오름차순 asc 는 생략
-- sal이 1000 이상인 데이터를 ename 의 내림차순으로 정렬하여 조회
select * from emp where sal>=1000 order by ename desc;
-- job으로로 내림차순 정렬
select * from emp order by job desc;
-- job 으로 내림차순 정렬후 같은 job_id 사이에서는 순서를 hiredate 의 내림차순으로 정렬
select * from emp order by job desc, hiredate desc;
-- 두가 이상의 정렬 기준이 필요하다면 위와 같이 (,)로 구분해서 두가지 기준을 지정해주며,
-- 위의 예제로 봤을때 job 으로 1차 내림 차순 정렬하고, 같은 job 값들 사이에 hiredate 로 내림차순정렬합니다
-- countries 테이블에서 country_iso_code 별로 내림차순 정렬
select * from countries order by country_iso_code desc;
-- countries 테이블에서 country_region 별로 오름차순 정렬,
-- 같은 country_region 에서는 country_name 별로 오름 차순 정렬
select * from countries order by country_region , country_name;
-- jobs 테이블에서 job_title 별 내림 차순 정렬, 같은 job_title에서는 max_salary 의 내림 차순 정렬
select * from jobs order by job_title desc , max_salary desc;
-- 그 외 활용하기 좋은 select 에 대한 예제
-- 부서번호가 10이 아닌 사원 (아래 두 문장은 같은 의미의 명령입니다)
select * from emp where not (DEPTNO=10);
select * from emp where DEPTNO<>10;
-- 급여가 1000달러 이상 , 3000달러 이하
select * from emp where SAL>=1000 and SAL<=3000;
select * from emp where SAL between 1000 and 3000;
-- 특정 필드값이 널인 레코드 또는 널이 아닌 레코드
select * from emp where comm is null -- comm 필드가 null 인 레코드
select * from emp where comm is not null -- comm 필드가 null 이 아닌 레코드
--사원의 연봉 출력
select deptno, ename, sal*12 as 연봉 from emp;
--커미션을 포함한 사원의 연봉 출력
select deptno, ename, sal*12+comm as 연봉 from emp;
-- 위 계산식의 경우 comm 값이 널인경우 계산식에 널이 포함되어 계산이 안되는 오류가 발생할 수 있습니다
-- 해결방법
select deptno, ename, comm, sal*12+nvl(comm,0) as 연봉 from emp;
-- nvl 함수는 널값을 다른 값으로 바꿔주는 내장함수로서 다음 단원에서 다른 함수들과 함께 학습합니다
select * from emp;
|
cs |
정리
- 데이터의 select 다양한 사용방법
-CMD로 생성한 테이블 조회 하기
- where 조건에 맞게 조회 하기
- 정렬 (order by)하기
'DataBase 공부 > Oracle' 카테고리의 다른 글
[DataBase] sqlplus를 이용해서 DB작업시 한번에 insert 하는 방법 (0) | 2020.10.05 |
---|---|
Oracle 공부 기초 07 : 다양한 내장 함수 정리 (0) | 2020.07.13 |
Oracle 공부 기초 05 : DML insert(추가),update(수정),delete(삭제) (0) | 2020.07.12 |
Oracle 기초 공부 04 : DDL view(뷰), sequence(시퀀스) (0) | 2020.07.12 |
Oracle 공부 기초 03 : DDL 테이블의 alter 수정, drop 삭제 (0) | 2020.07.12 |