250x250
Notice
Recent Posts
Recent Comments
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags more
Archives
Today
Total
관리 메뉴

개린이 개발노트

오라클 설치 및 데이터베이스 기초 본문

데이터베이스

오라클 설치 및 데이터베이스 기초

개린이9999 2023. 9. 4. 09:13
728x90

데이터베이스  (오라클)

 

jsp/ sevelet

 

오라클 설치하는 법 

오라클 11g Express Edition 사용 

 

오라클 11g xe 를 구글에 검색 

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

위에서 각자 버전에 맞는 ( 윈도우, 리눅스) 다운로드 버튼 클릭 한 뒤 오라클 계정 로그인 하면됩니다. 

 

https://www.oracle.com/tools/downloads/sqldev-downloads-2143.html

 

Oracle SQL Developer Downloads 21.4.3

This archive. will work on a 32 or 64 bit Windows OS. The bit level of the JDK you install will determine if it runs as a 32 or 64 bit application. This download does not include the required Oracle Java JDK. You will need to install it if it's not already

www.oracle.com

위 사이트에 들어가서 다운로드 

 

orcalexe112_win64 압축풀고

disk1 폴더에서 setup 실행시키고

다음다음다음-> 비번은 1234로 하고 설치하면됨 


 

데이터베이스 

 

관계형데이터베이스 

 

데이터를 통합해서 관리

일관된 방법 

데이터의 누락 ,중복을  최소화 

여러 사용자가 동시에 관리

방대한 양의 데이터를 효율적으로 관리하기 위해서  데이터베이스 사용

 

데이터베이스의 구성

테이블(표) 

 

기본키: 각 레코들르 구별하는 유일한 필드 

기본키는 중복 불가능, Null 불가능 

ex)주민등록번호, 아이디 (중복데이터불가능한 것들)

 

오라클(SQL 문법 사용함)

사용이 쉬움, 비절차적인 언어(작성한 순서는 상관이X), 표준문법으로 작성 

 

SQL 데이터 정의어 -  테이블을 생성, 삭제, 수정  ( CREATE, DROP , ALTER  )  

SQ;L 데이터 조작어 - 레코드를 추가, 삭제 , 수정, 검색 ( INSERT , DELETE, UPDATE, SELECT) 

SQL 데이터 제어어 - 권환 관련 ( COMMIT, ROLLBACK, REVOKE(권한뻇기),GRANT*(권한부여) )

 

 


DDL(데이터 정의어)

▪SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의하거나 변경 또는 삭제할 때 사용하는 언어

▪데이터베이스 관리자나 데이터베이스 설계자가 사용함

▪데이터 정의어(DDL)의 3가지 유형

명령어 기 능
CREATE Schema, Domain, Table, View, Index를 정의함
ALTER Table에 대한 정의를 변경하는 데 사용함
DROP Schema, Domain,Table, View, Index를 삭제함

data definition languate.



DML(데이터 조작어)

▪데이터베이스 사용자가 응용 프로그램이나 질의어를 통하여 저장된 데이터를 실질적으로 처리하는데 사용하는 언어

▪데이터베이스 사용자와 데이터베이스 관리 시스템 간의 인터페이스 제공

데이터 조작어(DML)의 4가지 유형

명령어 기능
SELECT 테이블에서 조건에 맞는 튜플을 검색함
INSERT 테이블에 새로운 튜플을 삽입함
DELETE 테이블에서 조건에 맞는 튜플을 삭제함
UPDATE 테이블의 조건에 맞는 튜플의 내용을 변경함

data Manipulation language



DCL(데이터 제어어)

▪데이터의 보안, 무결성, 데이터 회복, 병행 수행 제어 등을 정의하는 데 사용하는 언어

▪데이터베이스 관리자가 데이터 관리를 목적으로 사용함

▪데이터 제어어(DCL)의 종류

명령어 기능
COMMIT 데이터베이스 조작 작업이 정상적으로 완료되었음을 관리자에게 알려줌
ROLLBACK 데이터베이스 조작 작업이 비정상적으로 종료되었을 때 원래의 상태로 복구함
GRANT 데이터베이스 사용자에게 사용권한을 부여함
REVOKE 데이터베이스 사용자의 사용권한을 취소함

data Control language


 

자료형 

NUMBER : 숫자 

VARCHAR: 문자

DATE: 날짜

 


alter user hr account unlock identified by 1234;

create  user  scott  identified  by  tiger;
grant  connect,  resource  to  scott;
grant create view to scott;
EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);

 

전체 누르고 컨트롤 엔트

 


PL/SQL 프로시저가 성공적으로 완료되었습니다.


User SCOTT이(가) 생성되었습니다.


Grant을(를) 성공했습니다.


PL/SQL 프로시저가 성공적으로 완료되었습니다.


Grant을(를) 성공했습니다.


alter user hr account unlock identified by 1234;
create  user  scott  identified  by  tiger;
grant  connect,  resource  to  scott;
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;


NUMBER(4,0)  숫자 4자리 소수점0 번쨰까지 소수점포함해서 4개 

NUMBER(7,2) 숫자 7자리 소수점 2번째까지 소수점 포험해서 7개

 

VAR(길이가 가변으로)  CHAR  예를 들어 10바이트 공간이 있는데 a,b라는 2바이트 내용을 입력하면 자동으로 2바이트로 바뀜

 

VAR가 없이 CHAR  를 쓰면 예를들어 10바이트 공간이 있는데 a,b라는 2바이트 내용을 입력하면 a,b 2바이트+공백8바이이트로 10바이트가 됨

 

char 2 2가 붙으면 2천바이트 4가 붙으면 4천바이트  2,4 밖에 없어 

더 길어질 경우에는 LONG LONG은 2기가까지 

 

N VAR CHAR 2 (크기)

N:유니코드 (모든문자가 2바이트)  -> 크기(괄호안에) 를 글자수 단위로 처리함 

 

N이 없는경우가 대다수 

한글은 3바이트 , 영어 ,숫자는 1byte / 크기는 바이트로 처리 

 

데이터베이스 종류 

-관계형데이터베이스

테이블로 구성되어있고 그 테이블은 컬럼과 레코드로 구성되어있음 

sql문법 사용 

중복최소화 때문에 정규화를 해야함! 

속도 느림 , 정확도가 필요할 경우-> 관계형 데이터베이스 

 

key-value 데이터베이스

키:밸류 데이터베이스 (서브용 DB) 

 

그래프 데이터베이스 

도큐먼트 데이터베이스

키-벨류 - 폴더 안에 파일 안에 키 밸류 다 떄려넣음 정규화 필요X 정확도는 떨어지지만 속도는 빠름 

 

EMP (사원테이블) 

EMPNO: 사원번호 

ENAME: 사원이름

JOB: 사원직책

MGR: 직속 상관의 사원번호 

HIREDATE: 입사일

SAL : 급여

COMM :추가수당

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

 

DEPT(부서테이블)

DEPTNO: 부서번호

DNAME:부서명

LOC: 부서 위치(지역)

 

SALGRADE(급여 정보 테이블)

GRADE: 급여등급

LOSAL: 급여 등급의 최소 급여

HISAL: 급여 등급의 최대 급여

 

검색문(SELECT)  조회할 떄 사용

기본형식 

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

 

IN(OR 랑 같은거)

컬럼명 IN (값, 값, 값)

 

BETWEEN (AND 같은거)

컬럼명 BETWEEN 최소값 AND 최대값

 

~포함하는 LIKE 

LIKE '%K%'; K를 포함하는 모든 문자

LIKE 'K%'; K로 시작하는  모든문자

LIKE '%K'; K롷 끝나는 모든문자 

LIKE '_I%';  두번째 글자가 I기만하면됨 

 

M_ _ _ _ _  M으로 시작하는 총 6글자를 알려줌

 

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

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

 

AB% 

 

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

 

SELECT * FROM EMP;

SELECT empno, job, sal from emp;

SELECT ename as 이름, sal as 급여 from emp;

select ename "이 름" , sal as 급여 from emp;

--테이블 정보 조회
desc emp;

select deptno from emp;

select job, deptno from emp;


--중복제거 할때는 distinct 사용

select distinct deptno from emp;

select distinct job, deptno from emp;

select sal, sal*12 from emp;

select ename, sal+comm from emp;

select ename, sal+comm as 실수령액 from emp;

select*from emp where deptno= 10;

select ename,job, sal where deptno>=7500;

select empno, ename,job, sal from emp where empno>=7500;

SELECT * FROM EMP WHERE HIREDATE <'81/05/01';

SELECT * FROM EMP WHERE NOT DEPTNO = 30;

SELECT * FROM EMP WHERE SAL>=3000 AND DEPTNO=20;

SELECT*FROM EMP WHERE SAL>=3000 AND DEPTNO=20 AND HIREDATE<'82/01/01';

SELECT*
FROM EMP
WHERE SAL>=3000 AND (DEPTNO=20 OR HIREDATE< '82/01/01');

SELECT ENAME,JOB,SAL,DEPTNO FROM EMP WHERE SAL>=2500 AND JOB='MANAGER';

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 DEPTNO IN (10,20);

SELECT*FROM EMP
WHERE SAL >=2000 AND SAL <=3000;

SELECT* FROM EMP WHERE SAL BETWEEN 2000 AND 3000;

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

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

SELECT * FROM EMP WHERE ENAME NOT LIKE '%AM%';

NULL 조회하고싶을 때( 아닌것만 조회하고싶을때는 IS NOT NULL) 

SELECT *FROM EMP WHERE COMM IS NULL;

 

오름차순, 내림차순 정리 

SELECT * FROM EMP ORDER BY SAL ASC; 오름차순(생략가능)

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

연결 연산자

 

--연결 연산자 || 변수1+"연결"+변수2

SELECT ENAME ||' '|| JOB FROM EMP;
SMITH CLERK
ALLEN SALESMAN
WARD SALESMAN
JONES MANAGER
MARTIN SALESMAN
BLAKE MANAGER
CLARK MANAGER
KING PRESIDENT
TURNER SALESMAN
JAMES CLERK
FORD ANALYST
MILLER CLERK

--EMP테이블에서 부서번호가 20과 30인 사원 중 급여가 2000 이상인 데이터를 추출 정렬 1차적으로는 부서번호 내림차순, 2차는 급여 순으로 내림차순 

SELECT * FROM EMP WHERE DEPTNO IN (20,30) AND SAL>= 2000 ORDER BY DEPTNO DESC, SAL DESC;

OR 할때 WHERE DEPTNO (20,30_) 쓴거 잘 기억하자! 

 

 

급여가 2000이상 3000이하가 아닌 데이터를 출력하시오.

 

SELECT * FROM EMP SAL WHERE SAL NOT BETWEEN  2000 AND 3000;

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

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

 

--추가수당이 없고 직속상관이 있으면서 직책이 MANAGER,CLERK인 사람중
--두번쨰 글자가 L이 아닌 데이터를 출력

 

SELECT * 
FROM EMP 
WHERE COMM IS NULL 
AND MGR IS NOT NULL
AND JOB IN('MANAGER','CLERK')
AND ENAME NOT LIKE '_L%'
ORDER BY HIREDATE;

 

728x90