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 |