gwooden_코린이

데이터 베이스 오라클 11g xe 설치 및 오라클 sql Developer 세팅해보기 본문

데이터베이스

데이터 베이스 오라클 11g xe 설치 및 오라클 sql Developer 세팅해보기

gwooden22 2023. 1. 9. 11:53
728x90

- 데이터 베이스

관계형 데이터 베이스

  • 데이터를 통합해서 관리
  • 일관된 방법
  • 데이터의 누락, 중복을 제거(최소화)
  • 여러 사용자가 동시에 관리

데이터 베이스의 구성

  • 테이블(표)
  • 행과 열로 구성
필드 필드 필드 컬럼(열)
       
       
    • 기본키 : 각 레코드를 구별하는 유일한 필드
      • ex) 주민등록번호, 아이디
      • 기본키로 설정된 건 중복 불가능
      • 빈칸(Null) 불가능
학생 테이블
학번 이름 국어 영어
1001 유재석 100 90
1002 유재석 80 50
    • 외래키
      • 기본키가 아니다 보니 중복이 가능
      • 기본키를 참조
수강과목 테이블
학번 과목
1001 JAVA
1001 C
1002 HTML

 

  • DBA : 데이터베이스 관리자
  • DBMS : 데이터베이스 관리 시스템
    • 오라클, mySQL, splLite
    • 데이터 추출, 조작, 정의, 제어 등
    • 편의성 목적

- 오라클(SQL), SQL 문법을 안쓰는 NOSQL도 존재

  • 사용이 쉬움
  • 비절차적인 언어
  • 표준문
    • SQL
      • 데이터 정의어 -> 테이블을 생성, 삭제, 수정 (create, drop, alter
      • 데이터 조작어 -> 레코드를 추가, 삭제, 수정, 검색(insert into, delete, update, select)
      • 데이터 제어어 -> 권한 관련 (commit, rollback, revoke)
    • 자료형
      • number : 숫자
      • varchar : 문자
      • date : 날짜

 


- 데이터베이스 오라클 설치해보기

 

오라클 11g express edition  <-- 무료

 

 

https://www.oracle.com/database/technologies/xe-prior-release-downloads.html

 

XE Prior Release Archive

Getting Started: Support Oracle Database Express Edition (XE) is a community supported edition of the Oracle Database family. Please go to the Oracle Database XE Community Support Forum for help, feedback, and enhancement requests. Note: Oracle Support Ser

www.oracle.com

무료버전이고 옛버전이다 보니 오라클 홈페이지에서 직접 찾는게 힘들어 위 링크를 이용하거나 또는 구글에 오라클 11g XE 라고 검색해서 다른 유저들이 블로그에 올린 글을 참고해서 각 PC OS환경에 맞게 다운로드하면 된다.

 

오라클 설치 할때 시스템 비밀번호 설정 하는 곳에만 비번을 설정해 주고 나머지는 다 기본값으로 놔두고 다음 눌러서 설치를 완료하면 된다.

 

  1. OracleXE112_Win64 압축 풀기
  2. disk1 풀더에서 setup 실행
  3. Next 버튼 클릭 -> 비번은 1234로 하고 설치 진행~

 


오라클DB와 같이 사용되는 SQL Developer jdk 8도 같이 다운로드 해준다.

 

SQL Developer는 그래픽 유저 인터페이스를 지원해서 dos창에서 작업하는 불편함을 해결해주는 것

 

오라클 sql 디벨로퍼 실행 (중간에 나오는 문구는 '아니오' 클릭' 하고 진행)

 

왼쪽 접속 메뉴에서 '+' 버튼 클릭해서 새로 만들기

 

  • Name :
  • 사용자 이름 : 
  • 비밀번호 : 
    • 비밀번호 저장 체크
  • 테스트 버튼으로 상태 : 성공 으로 나오면 완료
  • 접소 버튼 클릭

 

 

 

 

글씨 크기 키우고 싶을때

 

alter user hr account unlock identified by 1234;

 

컨트롤 + 엔터로 실행

 

Local_HR(이름은 본인이 알아볼 수 있게 마음대로)이라는 것도 새롭게 만들어 줘서 연결 시켜준다.

 

연습용으로 쓸 테이블과 데이터가 제공된다.

 

사용자 : scott, 비밀번호 : tiger
create  user  scott  identified  by  tiger;

기본적인 접속 권한 : connect
to로 grant에게 던져준다
grant  connect,  resource  to  scott;
가상테이블 view
grant create view to scott;

원격 접속 할때 필요한 코드
EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);

여러 코드를 실행 시킬때는 실행하고 싶은 코드를 전부 드래그 한 상태에서 컨트롤 + 엔터로 실행

 

@C:\oraclexe\app\oracle\product\11.2.0\server\RDBMS\ADMIN\scott.sql

 

 

ALTER USER scott IDENTIFIED BY tiger ACCOUNT UNLOCK;

 

 

create  user  practice  identified  by 1234;
grant  connect,  resource  to practice;
grant create view to practice;

 

EMPNO

NUMBER(4,0) : 4자리수, 소수점 단위 / NUMBER(7,2) : 소수점 자리 포함해서 7자리수 

No

1

 

HIREDATE DATE Yes 5

날짜가 들어가는 데이터 타입

 

  • VAR : 가변길이
  • 없으면 : 고정길이
    • var가 있으면 가변 없으면 고정
    • BYTE 단위를 설정했지만 입력한 값에 크기가 설정한 BYTE 단위보다 작을 경우 var가 붙으면 자동으로 byte단위를 줄여주고 var가 없으면 입력한 값에 크기가 작아도 byte 단위는 빈공간이 있어도 단위 고정
  • char : 최대 2000byte
  • char2 : 최대 4000byte
  • long : 최대 2gb

 

  • var char 2 ( 단위 크기 )
  • N VAR CHAR 2 ( 크기 )
    • N : 유니코드 (모든 문자가 2byte) -> 크기를 글자수 단위로 처리
    • N이 없을 경우 : 3byte, 영어,숫자 -> 1byte / 크기는 바이트로 처리

 

  • 열쇠 모양이 있는게 기본키
  • 체크박스가 체크 되어 있을 경우 무조건 값을 넣어줘야 된다.
  • 기본값 : 레코드 내용 추가할 때 필요한 것
  • 설명 : 개발자들끼리 주고받을때

 

각 필드별 설명

EMP - 사원테이블

EMPNO : 사원번호

ENAME : 사원이름

JOB :  사원직책

MGR : 직속 상관의 사원번호

HIREDATE : 입사일

SAL : 급여

COMM : 추가수당

DEPTNO : 부서번호 (해당사원의)

 

DEPT - 부서 테이블

DEPTNO : 부서번호

DNAME : 부서명

LOC : 부서 위치 (지역)

 

SALGRADE - 급여 정보 테이블

GRADE : 급여 등급

LOSAL : 급여 등급의 최소 급여

HISAL : 급여 등급의 최대 급여


1. 검색문 (Select)

  • SELECT : 필드명
  • FROM : 테이블명
  • WHERE : 조건식;

SELECT * FROM EMP;

* < -- 모두 조회

 

SELECT EMPNO, JOB, SAL FROM EMP;

특정 조건으로 원하는 데이터 조회도 가능

필드 여러개 보고 싶으면 ,로 보고 싶은 필드명 입력

위에서 필드명 EMPNO, JOB, SAL

 

SELECT ENAME 이름, SAL 급여 FROM EMP;

SELECT ENAME AS 이름, SAL AS 급여 FROM EMP;

AS 붙이든 안붙이든 상관없음

기존에 있는 필드명으로 조회 말고 별칭을 부여해서 조회할 수 있다. 띄어쓰기, 특수문자 등 할 경우 따옴표로 구분을 해줘야 된다.

 

DESC EMP;

EMP 테이블에 대한 필드정보

 

SELECT DEPTNO FROM EMP;
SELECT DISTINCT DEPTNO FROM EMP;

DISTINCT : 중복제거

 

 

SELECT SAL, SAL*12 FROM EMP;

사칙연산도 가능

 

SELECT * FROM EMP WHERE DEPTNO = 10;

EMP 테이블 안에서는 DEPTNO에서 조건에 만족하는걸 * 전부 보여주는

 

사원번호가 10인 사원만 표시

SQL에서는 = 비교연산자로 사용됨

 

SELECT EMPNO, ENAME, JOB, SAL FROM EMP WHERE EMPNO>=7500;

사원번호가 7500이상인것만 사원번호, 사원이름, 직책, 급여만 출력

 

select * from emp where hiredate <'81/05/01';

입사일이 조건식

 

select * from emp where deptno != 30;

select * from emp where not deptno = 30;

사원번호가 30이 아닌것만

 

select * from emp where sal>=3000 or deptno=20;

select * from emp where sal>=3000 and deptno=20;

급여가 3000이상이거나 부서번호가 20인 데이터만 조회

 

급여가 3000이상이고 부서번호가 20인 데이터만 조회

 

 

select * from emp where sal>=3000 and deptno=20 and hiredate<'82/01/01';

여러 조건을 사용하는것도 가능하다

 

--급여가 3000 이상인 데이터 중에서 부서번호가 20이거나 입사일이 82/01/01이전
select * from emp where sal >=3000 and (deptno=20 or hiredate<'82/01/01');

 

 

--급여가 2500 이상이고 직업이 manager인 사원이름, 직책, 급여, 부서번호만 출력
select ename, job, sal, deptno from emp where sal >=2500 and job='MANAGER';

데이터 조건 비교할때는 작은 따옴표 사용 ' '

 

--직책이 MANAGER, SALESMAN, ANALYST인것만 출력

select * from emp where job='MANAGER' or job='SALESMAN' or job='ANALYST';

select * from emp where job in ('MANAGER', 'SALESMAN', 'ANALYST');

--반대 속성
select * from emp where job not in ('MANAGER', 'SALESMAN', 'ANALYST');

 

 

-- 부서번호가 12, 20인 데이터만 출력

select * from emp where deptno in (12, 20);

 

 

--급여가 2000이상 3000이하

select * from emp where sal>=2000 and sal<=3000;

select * from emp where sal BETWEEN 2000 and 3000;

 

 

  • IN : (OR랑 같은거)  <> NOT IN
    • 컬럼명 IN(값, 값, 값)
  • BETWEEN (AND같은거) <> NOT BETWEEN
    • 컬럼명 BETWEEN 최소값 AND 최대값;

 

-- ~~~포함하는

SELECT * FROM EMP WHERE ename LIKE '%K%';

%k% : k를 포함하는 모든 문자

k% : k로 시작하는 모든 문자

%k : k로 끝나는 모든 문자

SELECT * FROM EMP WHERE ename LIKE '_I%';

두 번째로 시작하는 글자가 i 인것

SELECT * FROM EMP WHERE ename LIKE 'M____';

_ : 한글자만

M______ : M 으로 시작하는 총 6글자

_M : M으로 끝나는 총 2글자

_M% : 두번째가 M인 모든 문자

-- 사원이름이 AM을 포함하는 데이터만 출력

SELECT * FROM EMP WHERE ename LIKE '%AM%';
--AM을 포함하지 않는

SELECT * FROM EMP WHERE ename NOT LIKE '%AM%';
SELECT * FROM EMP WHERE ename LIKE '%\%%' ESCAPE '\';

ESCAPE로 \를 문자로 인식하게 하면 \%로 검색을 할 수 있다.

구분할 기호는 본인이 원하는 걸로 해도 상관없음

 

%와 _ 는 와일드 카드로 쓰이기 때문에 ESCAPE로 구분을 해줘야 인식이 가능하다

 

-- 추가 수당이 없는 사람을 조회
SELECT * FROM EMP WHERE COMM IS NULL;

-- 추가 수당이 있는 사람을 조회
SELECT * FROM EMP WHERE COMM IS NOT NULL;

NULL 값을 조회하고 싶을 때는 IS를 붙여서 사용

 

--정렬
--급여를 오름차순 정렬
SELECT * FROM EMP ORDER BY SAL ASC;

--내림차순 정렬
SELECT * FROM EMP ORDER BY SAL DESC;

ORDER BY 필드명 정렬기준 :

  • ASC는 생략해도 됨 기본값이 오름차순이기 때문에
  • DESC는 내림차순
--급여가 1200이상인 레코드를 조회
--(1차적으로 이름을 기준으로 오름차순, 2차적으로 급여를 기준으로 내림차순 정렬

SELECT * FROM EMP WHERE sal>=1200 ORDER BY job, sal DESC;

정렬은 자원소모가 많이 발생되어서 잘 사용하지 않음

 

SELECT empno 사원번호, ename 이름, sal 급여 FROM EMP ORDER BY 급여 ASC;

별도로 지정해준 명칭으로도 가능

 

 

--연결연산자
select ename || ' ' || job as 이름과직책 from EMP;

select ename || 's job is ' || job as 이름과직책 from EMP;

변수1 + "연결" + 변수2

 

- 문제

1.

--emp테이블에서 이름이 s로 끝나는 데이터를 출력
SELECT * FROM emp WHERE ename LIKE '%S';

2.

--사원번호, 이름, 직책, 급여, 부서번호를 출력
SELECT empno, ename, job, sal, deptno FROM emp where deptno = 30 AND job ='SALESMAN'

3.

--EMP테이블에서 부서번호가 20, 30인 사원중
--급여가 2000 이상인 데이터를 추출
--정렬 : 1차적으로는 부서번호 순으로 내림차순,
--2차적으로는 급여순으로 내림차순
SELECT * FROM emp WHERE deptno in (20, 30) AND sal >= 2000
ORDER BY deptno DESC, sal DESC;

4.

--급여가 2000이상 3000이하가 아닌 데이터를 추출
SELECT * FROM emp
    WHERE sal NOT BETWEEN 2000 AND 3000;

5.

--이름이 E를 포함하고 부서번호가 30번이면서
--급여가 1000 이상 2000 이하가 아닌 데이터 중
--이름, 사원번호, 급여, 부서번호 순으로 출력

SELECT ename, empno, sal, deptno
    FROM emp
WHERE ename LIKE '%E%'
    AND deptno = 30
    AND sal NOT BETWEEN 1000 AND 2000;

6.

--추가수당이 없고, 직속 상관이 있으면서
--직책이 MANAGER, CLERK인 사람 중
--두번째 글자가 L인 데이터를 출력
--(입사일 기준으로 오름차순 정렬)

SELECT *
    FROM emp
WHERE comm IS NULL --추가수당이 없고
    AND mgr IS NOT NULL --직속 상관이 있는
    AND job IN('MANAGER', 'CLERK') --직책이 MANAGER, CLERK인 사람
    AND ename NOT LIKE '_L%' --두번째 글자가 L인 데이터를 출력
ORDER BY hiredate; --입사일 기준으로 오름차순 정렬

 

데이터베이스 종류

  • 관계형 데이터 베이스
    • 테이블로 구성 (컬럼과, 레코드로)
    • sql문법 사용
    • 중복최소화 때문에 정규화가 필요
    • 속도는 느린편
    • 정확도가 필요할 경우 좋음
  • key-value 데이터 베이스
    • key : value
    • 서브용 데이터베이스 용도로 많이 쓰임
    • 중복은 신경안씀
  • 그래프 데이터 베이스
    • gql을 사용
  • 도큐먼트 데이터 베이스
    • key-value
    • 관계형 db보다 가벼운편
    • 풀더형
    • 중복은 신경안씀
    • 속도는 빠름
    • 정확도는 떨어짐
  • 그 외 검색 특화 등등 많이 존재

 

728x90

'데이터베이스' 카테고리의 다른 글

오라클 데이터 베이스 정규화/정규형  (0) 2023.01.11
오라클 데이터베이스 함수다뤄보기  (0) 2023.01.10
데이터 베이스란?  (0) 2022.12.21
java_MariaDB 활용02  (1) 2022.12.13
java_데이터베이스01  (0) 2022.12.12
Comments