OracleDataBase기초

OracleDataBase07 - DML(Select)

본이qq 2022. 6. 12. 12:33

 

 

select 문(검색)

 

[※] select 의 사용 방법

 SELECT : select 와 from 사이에 조회하고자 하는 필드명들을 ,로 구분하여 지목

 select booknum, subject, outprice ... from 테이블명;

- 모든 필드를 한번에 지목하려면   * 을 써줍니다  

- where 절을 붙여서 조건에 맞는 행만 골라내기도 합니다.

 

 

 

- 아래와 같이 연산식을 써서 연산된 결과를 필드로 조회하고자 할땐 as 와 함께 만들어진 필드명을 지어주기도 합니다

select empno || '-' || ename  as empInfo from emp;

- 필드명에 공백이 있거나 기술하기 어려운 필드명일때도 as로 별칭을 붙이기도 합니다. 병칭에도 공백이 있다면 ""로 묶어서 

   써줍니다

select empno as 사원번호 , ename as "사원 성명"   from emp

 

 

 

- 특정 테이블의  모든 필드 표시

select * from rentlist

- 모든 컬럼(필드명)이 아닌 , 필요한 필드만 조회

select subject, makeyear from booklist;

- 각각의 필드명에 별칭을 부여해서 출력

select subject as 도서제목, makeyear as 출판년도 from booklist;

 

 

 

-중복 제거

select distinct bnum from rentlist

-> 보통 필드하나를 대상으로 단독으로 사용합니다.

 

 

 

-검색 조건의 추가

->입고가격이 20000원 이상인 book 목록

select * from booklist where inprice >=20000;

 

-> 이름이 '홍'으로 시작하는  회원의 모든 회원정보 출력

select * from memberlist where name like '홍%';

 

-> 1983년도 이후로 태어난 회원의 모든 회원정보

select * from memberlist where birth >= '1983-01-01';

 

-> 사은포인트(BPOINT)가 250점 이상이고 1982년 이후로 태어난회원의 모든 회원정보(and,or 연산자 사용)

select * from memberlist where bpoint>=250 and birth>='1982-01-01';

 

-> 출판년도가 2016년 이전이거나  입고가격(inprice)이 18000 이하인 book 정보

select * from booklist where makeyear<2016 or inprice<=18000;

 

-> 성명이 '이'로 시작하는 회원의 모든 정보

select * from memberlist where name like '이%';

 

-> 도서 제목에 '이'가 포함되는 도서 정보

select * from booklist where subject like '%이%';

 

->memberlist 에서 성별이 NULL 이 아닌 회원의이름과 전화번호

select name, phone from memberlist where gender is not null;

select name, phone from memberlist where gender <> null;

 

 

-> 성별이 널인것을 모두 M 으로 수정해주세요

update memberlist set gender='M' where gender is null;

update memberlist set gender='M' where gender = null;

 

 

->booklist 에서 도서 제목에 두번째 글자가 '것' 인 도서 정보 

select * from booklist where subject like '_것%';

 

 

 

-조건식(ANY, SOME, ALL , (IN) )

-> emp 테이블에서 deptno  가 10, 20 , 30  중 하나인 데이터 모두

select * from emp where deptno=10 or deptno=20 or deptno=40;

 

1. ANY

select * from emp where deptno = any(10,20,40);

-> ANY() 괄호안에 나열된 내용중 어느하나라도 해당하는 것이 있다면 검색 대상으로 함

 

2. --SOME 조건식 - ANY와 동일 - IN 과도 동일

SELECT *  FROM emp WHERE deptno = some(10,20,40);

SELECT *  FROM emp WHERE deptno in(10,20,40);

 

3  ALL

SELECT * FROM emp WHERE deptno = ALL(10, 20, 40);

-> 괄호안의 모든값이 동시 만족해야하는 조건이므로 해당하는 레코드가 없을때가 대부분입니다. 

SELECT * FROM emp WHERE deptno <> ALL(10, 20, 40);

SELECT * FROM emp WHERE deptno<>10 and deptno<>20 and deptno<>40);

-> 두번째 사용예처럼 모두와 다를때를 위해 사용되곤 합니다 사용빈도수가 낮습니다

 

 

4. 논리조건식 NOT

SELECT *  FROM emp WHERE deptno NOT in(10,20,40);

SELECT *  FROM emp WHERE deptno <> all(10,20,40);

-> in() 안에 있는것과 하나도 매칭되지 않은 값이 검색대상

 

 

 

-정렬(Sort) - where 구문 뒤에, 또는 구문의 맨 끝에 Oder by 필드명 desc 라고 기술합니다

 

-> 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 으로 내림차순 정렬후 같은 job 사이에서는 순서를 hiredate 의 내림차순으로 정렬

select * from emp order by job desc, hiredate desc;

-> 두개 이상의 정렬 기준이 필요하다면 위와 같이 (,)로 구분해서 두가지 기준을 지정해주며,

    위의 예제로 봤을때 job 으로 1차 내림 차순 정렬하고, 같은 job 값들 사이에 hiredate 로 내림차순정렬합니다

 

 

 

 

-> 부서번호가 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 사이에는 문자연산 및 산술연산도 쓸수 있습니다.....사원의 연봉 출력

select deptno, ename,comm, sal, sal*12 as 연봉 from emp;

 

 

 

 

 

'OracleDataBase기초' 카테고리의 다른 글

OracleDataBase09 - GroupFunction  (0) 2022.06.12
OracleDataBase08 - Function  (0) 2022.06.12
OracleDataBase06 - DML  (0) 2022.06.12
OracleDataBase05 - Sequence  (0) 2022.06.12
OracleDataBase04 - Alter  (0) 2022.06.12