오라클로 하는 대부분의 일은 질의 하는 작업
<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로 끝나는
<예제>
and : 둘 다의 조건 모두 만족해야 조회됨
- 위 입사일보다 이후이고, 연봉이 2000보다 큰 경우
<예제>
or : 둘 중 하나의 조건만 있으면 조회
- 뒤 입사일보다 이후이거나, 연봉이 2000보다 큰 경우
'학원 > 오라클-학원' 카테고리의 다른 글
정규식(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 |