본문 바로가기

학원/오라클-학원

select문 사용

728x90

오라클로 하는 대부분의 일은 질의 하는 작업

 

<cmd>

sqlplus - system(계정)/1234(비밀번호) - system 계정

select * from tab; : 테이블 목록 확인(테이블의 모든 데이터 확인 - 학생 확인 : select * from student;)

select * from ~~; : 어떤 정보 불러오는 명령어

show user; : 현재 계정 확인

select oo from student; : 학생 테이블에서 oo에 대한 정보만 가져오는 것

(,를 사용해서 여러개 불러 올 수 있음)

- *은 전체를 불러오는 명령어라서 실제 사용할 때는

  select ename from emp; 처럼 원하는 컬럼만 불러와서 사용(사원명만 출력)

- select ename, sal from emp; 처럼 사원명이랑 연봉을 같이 불러오는거 처럼 하는 것도 가능

desc emp; : 구조

where : 조건 추가하는 명령어, 뒤에 이어서 조건 추가 하려면 and나 or사용해서 새로운 조건 추가

--------

scott계정으로 변경하기

- alter user scott identified by tiger : scott에게 tiger이라는 비밀번호 부여

- 새로운 cmd창에서 sqlplus - scott / tiger 하면 scott계정으로 접속

- @ 다음에 scott.sql파일 끌어오기(사원정보가 적힌 엑셀파일)

select * from emp; : 사원명

 

test_data.sql 가져오기(위와 동일한 과정)

- 목록을 불러오면 정렬이 안돼서 보이는데 set line 200;으로 열을 200까지 적용시켜서 정리 가능(select * from tab;로 확인 가능)

--------

 

desc emp;

- 테이블의 구조를 확인하는 명령어

ex) 학생 테이블 구조 보고싶으면 desc student;

- 사원정보 자리수가 출력()안에있는게 자리수. / (숫자,숫자) 있는거 뒤에는 소수점 자리수로

  (7/2)면 정수 5자리 소수점 2자리로 총 7자리라는 표시

 

없는 데이터를 출력하는 것도 가능

select ename, 'good morning' , "Good Morning" from emp;

- 작은 따옴표는 원래 없는 내용을 만들어내는 용도, 큰따옴표 안에 문구는 컬럼을 생성한다고 생각하는게 편함

select dname, 'its deptno' , deptno from dept;

- dname의 deptno를 itsdeptno로 변경

*실제로 데이터가 변하는 것이 아니라 이런식으로 출력만 하는 것(select문의 기능)

 

중복되는 데이터를 제거하고 출력

select distinct deptno from emp;

- distinct는 무조건 select문 다음에 나와야 함

- emp안에서 중복되는 deptno를 제외하고 출력

- select distinct deptno, ename from emp; 처럼 2개 이상을 집어넣어 중복 제거하는 방식도 가능

데이터 2개 연결해서 보여주기

select ename || jop from emp;

- emp의 ename과 job을 연결시켜서 출력함

- mark의 직업이 seller라면 - markseller라고 출력

- 문자 사이에 '를 찍을 때는 ''''로 총 4개를 써야 연결해서 나타날 때 똑바로 나타남(''=')

 

<연습문제>

- ename 다음 (를 연결하기 위해서 ||를 사용해 연결시키고 '('로 원래 없는 괄호를 만들어준다

- 똑같은 방식으로 계속 연결하고 ') ,'로 다음 내용을 연결

- 이름'직업'의 '는 ''''로 총 4개를 사용해서 표기

- 마지막으로 ""를 사용해 컬럼 이름 설정

- 위 문제랑 같은 방식

- select ename || ''' s'  sal is $' sal "name and sal" from emp;

(이게 더 간단함)

- 각 칼럼 뒤에 ""로 새롭게 칼럼명을 정해서 표기하기

방식이 4가지가 있음

1. 위의 방식

2. select name as "이름", birthday as "생년월일"~~from student; 처럼 as를 넣는 방식

3. ()를 쓰지 않으면 as, ""를 쓰지 않아도 실행이 됨

- select name as 이름, birthday as 생년월일~~ from student;

- select name 이름, birthday 생년월일~~ from student;

 

- 합성 연산자 || 를 사용해서 만드는 것.

- 표준체중은 키-몸무게에 0.9를 곱하는 거였는데 따로 뭐 붙일 필요 없이

- 다른거 연결해서 쓰는 거 처럼 ,로 연결하고 계산식 적은 다음에 ""로 칼럼 별명 적어주면 끝

 

특정 조건을 넣어서 조회하기

- emp테이블에서 사원번호 7900번인 사원만 검색

- where을 넣어서 검색하면 됨

- 연봉이 1000이하인 사원만 where을 통해서 조회

- 사원명이 SMITH인 사원을 검색

- 사원명은 데이터기 때문에 대소문자를 구별해서 잘 적어야 함.

- SMITH는 작은 따옴표를 떼면 오류가 남(위의 사원번호 7900과는 다름)

- 사원번호는 숫자구조(NUMBER)이기 때문에 작은 따옴표를 떼도 됨

- 문자열(VARCHAR2) 형식인 사원명은 작은 따옴표를 떼면 오류가 나는 것.

- 7900을 '7900'으로 표기해도 정상적으로 조회됨.(select * from emp where empno = '7900';)

- 입사 날짜를 통해서 사원 조회하기

- 날짜에 작은 따옴표를 떼면 오류가 나게 됨

- 날짜는 date형식인데 작은 따옴표를 떼면 number형식으로 인식하기 때문

- 단순한 산술연산 가능

 

연산자 종류

!=, <> : 그 값이 아니다(둘 중 아무거나 사용 - 나중에 프로그램에 따라서 사용하는게 달라짐. 보통 != 사용)

 

is null / is not null : 값이 없거나 / 값이 있거나

- 0도 하나의 값으로 인식됨

 

not a : a가 아닌 조건이 조회됨

- >=나 <=가 숫자에만 사용될 수 있는 것이 아니라 문자에도 사용될 수 있음

 

between a and b : a와 b값을 포함하는 범위 내

ex) select empno, ename, sal from emp where between 2000 and 3000; 

                                                 = where >=2000 and <= 3000;

- 2000과 3000도 조회

- between은 문자열 사이에서도 사용할 수 있음

 

in(a,b,c) :  셋 중 하나라도 있으면 조회되는 것

- 부서번호에 10과 20이 들어가는 모든 데이터 조회

 

like : 같은 문자로 시작하거나 끝나는 문자열을 찾을 때 사용

- %와 함께 사용된다

- 예를 들어 1로 시작하는 데이터를 찾을 경우 1%로 적고, 1로 끝나는 

&amp;amp;amp;amp;nbsp;연봉이 1로 시작하는 모든 데이터 조회
문자도 가능
입사일이 17로 끝나는 사원들 조회

<예제>

 

and : 둘 다의 조건 모두 만족해야 조회됨

- 위 입사일보다 이후이고, 연봉이 2000보다 큰 경우

 

<예제>

or :  둘 중 하나의 조건만 있으면 조회

- 뒤 입사일보다 이후이거나, 연봉이 2000보다 큰 경우

728x90

'학원 > 오라클-학원' 카테고리의 다른 글

정규식(Regular Expression - REGEXP)  (0) 2022.02.15
CASE  (0) 2022.02.15
DECODE  (0) 2022.02.15
집합 연산자, SQL 단일행 함수  (0) 2022.01.25
order by,  (0) 2022.01.25