반응형
1. DBMS 다운로드 및 설치
🔥주의) 사용자계정, 파일명 .. 등 모든 것들을 영어로 설정해두기 / 한글NO!
[step1] Oracle 서버 프로그램 설치
- 오라클 회사 이용함 ( oracle DBMS)
- 오라클회사 접속 >> Oracle Database 클릭 >> Download Oracle Database 19c 클릭 >> setup.exe 클릭
- Oracle의 다양한 버전
- Oracle Enterprise Edition EE
- 가장좋음, 비쌈, 대용량데이타베이스 효율적 관리에 용이
- 전문가용, 실제 서버 구현해 관리하는 사람들
- 문제가 발생하면 우리가 해결하기 어려움, 문제있어서 삭제 시 어려움, 소프트웨어 설치 삭제 어려움
- Oracle Standard Edition SE
- 하위버전
- Oracle Express Edition XE
- 우리가 다운받을 것, 프로그램개발자용버전
- 소프트웨어 설치 삭제가 용이
- 데이타베이스 1개만 만들 수 있지만 개발자들이 일반적으로 많이 사용함
- Oracle Enterprise Edition EE
- Oracle Database 21c Express Edition (최신버전) 설치 : 21C(cloud)
- window버전설치하기
- mac은 oracle DBMS 설치 불가능...
- 현업에서는 11g(global) 사용함 , 21c는 거의 사용 안해!
- 왜? 최신버전은 어떤 버그가 있을지 모르잖아ㅠ
- 오라클 서버의 보안
- 데이타베이스를 효율적으로 관리하기 위해 가장 중요한 것은 보안
- 권한있는 사용자만 사용할 수 있도록 하기 (account / 계정)
- 처음 오라클 설치하면 자동으로 관리자가 만들어짐
- 관리자이름 : sys
- 관리자의 비밀번호를 설정해 비번 입력이 맞아야 권한 획득이 가능함
- sys의 비번 설정하기! 0403
[step2] SQL Developer 클라이언트 프로그램 설치
- 오라클 DBMS 서버에 접속할 수 있는 클라이언트 프로그램 (GUI프로그램)
- 오라클회사 접속
- application development 클릭
- oracle sql developer 클릭
- Windows 64-bit with JDK 11 included 설치 ( https://www.oracle.com/database/sqldeveloper/ )
- SQL plus 프로그램으로 세팅먼저 하고 사용가능 (콘솔프로그램)
[step3] 서버 → 클라
- 서버( oracle DBMS )가 먼저 실행되어야지 클라이언트가 접속할 수 있다!!!
- 서버( oracle DBMS )부터 실행시키자!
- 워크 서비스를 제공해주면, 클라는 접속프로그램들을 통해 ORACLE DBMS에 속해 SQL문을 통해 데이터베이스를 효율적으로 관리 가능
2. 오라클 DBMS의 특징
1) 일반적인 DBMS 프로그램
- ex) my sql
- 여러개의 데이타 베이스 내 >> 여러개의 테이블
- (my sql) : 데이타베이스의 용량의 제한이 없음
- (트래픽) : 데이타를 주고받을 때 사용하는 용량을 제한하는 경우가 있음
- 트래픽이란? : 데이타를 주고받을 때 사용하는 용량
2) vs 오라클 DBMS 프로그램
- 전역 데이타 베이스 한개만듦
- EE : 원하는 전역 데이타 베이스 여러개 만들 수 있음
- SE : 원하는 전역 데이타 베이스 1개 만들 수 있음
- XE : 이미 전역(XE) 데이타 베이스 1개 만들어짐 : SID (데이타베이스를 구분하는 식별자)
- 내부적으로 스키마를 통해 사용자의 접근 허용, 접근 차단 가능함!
- 물리적 스키마에 의해 용량 제한 가능 (이 스키마는 10Giga만 써!!)
3) 스키마
- XE 데이타 베이스 내에 여러개의 테이블 만들기 가능
- 모든 사용자가 사용하면 보안 상 위험하므로 오라클에서는 여러가지 스키마를 제공해 접근할 수 있는 권한을 제공함
ex)
- 테이블 1,2 - A사용자만 접근 가능한 스키마
- 테이블 3,4 - B사용자만 접근 가능한 스키마
- 만약, B가 A가 가진 사용자스키마에 접근하면 error
[step4] 일반사용자 만들기
- 현재 만들어진 사용자명 : sys
- 오라클 전체 프로그램을 관리하기 위한 계정이므로, 실제 테이블을 만들어서 CRUD 기능을 가질 수 있는 일반 사용자부터 만들기
- 일반 사용자를 이용해 사용자 스키마 내에 테이블 생성 -> CRUD 기능 구현
- test테이블도 존재
3. DBMS VS 클라이언트 프로그램
1) (DBMS) 클라이언트가 접속할 수 있는 환경 마련
- 오라클 설치를 통해(네트워크 서비스) 클라이언트가 접속되길 계속 기다릴 수 있는 환경 마련해줌
- 데이터베이스 서버의 역할을 하려면 네트워크 서비스가 잘 동작해야함~
- 네트워크 서비스 동작 확인필수
- 내pc >> 관리 >> 서비스 및 응용프로그램 (서비스 프로그램) >> 서비스
- 우리 눈에 보이지 않게 실행되는 프로그램 목록들..
- OracleOraEB21Home1TNSlistener , XE가 실행중이어야 클라가 접속 가능함
- 내pc >> 관리 >> 서비스 및 응용프로그램 (서비스 프로그램) >> 서비스
2) (클라이언트) 클라이언트프로그램 이용해 서버에 접속
예시1 - SQL plus 프로그램 (CUI 프로그램)
- step1. sys 계정(sysdba: 관리자)으로 오라클 접속
C:\Users\itwill> sqlplus sys as sysdba
SQL*Plus: Release 21.0.0.0.0 - Production on 수 10월 19 15:45:19 2022
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle. All rights reserved.
비밀번호 입력:
다음에 접속됨:
Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
SQL>
- step2. sys계정에게 완전한 관리자 권한 부여
- 11g : 완전한 관리자 권한 부여 필요없음 (https://www.oracle.com/database/technologies/xe-prior-release-downloads.html)
- 21c : 완전한 관리자 권한 부여 필요함
SQL> alter session set "_ORACLE_SCRIPT"=true;
세션이 변경되었습니다.
- step3. sql 파일에 저장된 명령 실행
- @ , 파일이 위치하는 곳 ,\ , 파일명
- 파일의 명령이 실행되면서, SCOTT 사용자 만들어짐
- TABLE의 명령이 실행되어 TABLE 삽입됨
SQL> @C:\Users\itwill\Desktop\scott_create.sql
- step4. 현재 사용자 확인
- 사용자명 : SCOTT
- 비밀번호 : tiger
SQL> show user
USER is "SCOTT"
- step5. EMP 테이블에 저장된 모든행 검색
SQL> select * from emp;
- step6. sql plus 종료
SQL> exit
Disconnected from Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
C:\Users\itwill>
예시2 - SQL Developer 프로그램 (GUI 프로그램)
- 오라클 DBMS 프로그램의 네트워크에 접속할 수 있는 클라이언트 프로그램 (무료)
- 오라클이 제공해주는 서비스 포트 : 1521
- 사용자명 : sys
- 비밀번호 : 0403
- 오라클을 사용할 때 쓰는 테스트 사용자명: scott
- 오라클을 사용할 때 쓰는 테스트 비밀번호: tiger
- 기본값 = 일반사용자
- 도구 >> 환경설정 >> 코드편집기 이용 >> 글자크기 변경
4. 워크시트 이용방법
1) 워크시트 설명문 처리
-- 워크시트 설명문 처리
2) 워크시트에서 작성된 SQL 명령을 오라클 서버에 전달하여 실행하는 방법
- [CTRL]+[ENTER] 또는 [F5]
- [CTRL]+[ENTER] : 커서 위치의 SQL 명령을 전달하여 실행
- [F5]: 워크시트에 작성된 모든 SQL 명령을 전달하여 실행
- 범위를 지정하여 [CTRL]+[ENTER] 또는 [F5]를 사용하여 범위 안에 작성된 SQL 명령을 전달하여 실행
- 워크시트에 작성되어 실행된 SQL 명령은 결과를 [스크립트 출력] 또는 [질의결과] 탭에 출력
- SQL 명령은 대소문자를 구분하지 않음
- 하나의 명령으로 처리되도록 ;기호 사용
SHOW USER;
//USER이(가) "SCOTT"입니다.
3) 워크시트 명령실행 단축키
- [ctrl]+[Enter] : 커서위치의 SQL명령을 전달하여 실행 (약간의가공)
- [F5] : 워크시트의 모든 명령 전달하여 실행 (스크립트)
- SQL명령구분 : ;사용
- 대소문자 구분없음
5. TEST 테이블 생성 및 권한 부여
scott_create.sql
Rem Copyright (c) 1990 by Oracle Corporation
Rem NAME
REM UTLSAMPL.SQL
Rem FUNCTION
Rem NOTES
Rem MODIFIED
Rem gdudey 06/28/95 - Modified for desktop seed database
Rem glumpkin 10/21/92 - Renamed from SQLBLD.SQL
Rem blinden 07/27/92 - Added primary and foreign keys to EMP and DEPT
Rem rlim 04/29/91 - change char to varchar2
Rem mmoore 04/08/91 - use unlimited tablespace priv
Rem pritto 04/04/91 - change SYSDATE to 13-JUL-87
Rem Mendels 12/07/90 - bug 30123;add to_date calls so language independent
Rem
rem
rem $Header: utlsampl.sql 7020100.1 94/09/23 22:14:24 cli Generic<base> $ sqlbld.sql
rem
SET TERMOUT OFF
SET ECHO OFF
rem CONGDON Invoked in RDBMS at build time. 29-DEC-1988
rem OATES: Created: 16-Feb-83
-- scott 사용자 만들어지면, 비밀번호는 tiger임
-- 롤 부여받음
GRANT CONNECT,RESOURCE,UNLIMITED TABLESPACE TO scott IDENTIFIED BY tiger;
ALTER USER scott DEFAULT TABLESPACE USERS;
ALTER USER scott TEMPORARY TABLESPACE TEMP;
-- 사용자 변경 : scott사용자로 접속해서,
CONNECT scott/tiger;
select * from nls_database_parameters where parameter = 'NLS_DATE_LANGUAGE'
--테이블 있으면 지워라
DROP TABLE DEPT;
--테이블 4개와 행 삽입 함
CREATE TABLE DEPT (DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY, DNAME VARCHAR2(14) , LOC VARCHAR2(13) ) ;
--테이블 있으면 지워라
DROP TABLE EMP;
CREATE TABLE EMP
(EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT);
INSERT INTO DEPT VALUES
(10,'ACCOUNTING','NEW YORK');
INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS');
INSERT INTO DEPT VALUES
(30,'SALES','CHICAGO');
INSERT INTO DEPT VALUES
(40,'OPERATIONS','BOSTON');
INSERT INTO EMP VALUES
(7369,'SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);
INSERT INTO EMP VALUES
(7499,'ALLEN','SALESMAN',7698,to_date('20-2-1981','dd-mm-yyyy'),1600,300,30);
INSERT INTO EMP VALUES
(7521,'WARD','SALESMAN',7698,to_date('22-2-1981','dd-mm-yyyy'),1250,500,30);
INSERT INTO EMP VALUES
(7566,'JONES','MANAGER',7839,to_date('2-4-1981','dd-mm-yyyy'),2975,NULL,20);
INSERT INTO EMP VALUES
(7654,'MARTIN','SALESMAN',7698,to_date('28-9-1981','dd-mm-yyyy'),1250,1400,30);
INSERT INTO EMP VALUES
(7698,'BLAKE','MANAGER',7839,to_date('1-5-1981','dd-mm-yyyy'),2850,NULL,30);
INSERT INTO EMP VALUES
(7782,'CLARK','MANAGER',7839,to_date('9-6-1981','dd-mm-yyyy'),2450,NULL,10);
alter session set nls_date_format='DD-MON-RR';
alter session set nls_language='american';
INSERT INTO EMP VALUES
(7788,'SCOTT','ANALYST',7566,to_date('13-JUL-87','DD-MON-RR')-85,3000,NULL,20);
INSERT INTO EMP VALUES
(7839,'KING','PRESIDENT',NULL,to_date('17-11-1981','dd-mm-yyyy'),5000,NULL,10);
INSERT INTO EMP VALUES
(7844,'TURNER','SALESMAN',7698,to_date('8-9-1981','dd-mm-yyyy'),1500,0,30);
INSERT INTO EMP VALUES
(7876,'ADAMS','CLERK',7788,to_date('13-JUL-87')-51,1100,NULL,20);
INSERT INTO EMP VALUES
(7900,'JAMES','CLERK',7698,to_date('3-12-1981','dd-mm-yyyy'),950,NULL,30);
INSERT INTO EMP VALUES
(7902,'FORD','ANALYST',7566,to_date('3-12-1981','dd-mm-yyyy'),3000,NULL,20);
INSERT INTO EMP VALUES
(7934,'MILLER','CLERK',7782,to_date('23-1-1982','dd-mm-yyyy'),1300,NULL,10);
DROP TABLE BONUS;
CREATE TABLE BONUS
(
ENAME VARCHAR2(10) ,
JOB VARCHAR2(9) ,
SAL NUMBER,
COMM NUMBER
) ;
DROP TABLE SALGRADE;
CREATE TABLE SALGRADE
( GRADE NUMBER,
LOSAL NUMBER,
HISAL NUMBER );
INSERT INTO SALGRADE VALUES (1,700,1200);
INSERT INTO SALGRADE VALUES (2,1201,1400);
INSERT INTO SALGRADE VALUES (3,1401,2000);
INSERT INTO SALGRADE VALUES (4,2001,3000);
INSERT INTO SALGRADE VALUES (5,3001,9999);
COMMIT;
SET TERMOUT ON
SET ECHO ON
select * from emp;
6. TEST 테이블(TABLE) 목록 확인
1) 테이블(TABLE)이란?
- 데이터베이스에서 데이타(행)을 저장하기 위한 기본 객체
2) 테이블 목록 확인 : 현재 접속 사용자(scott)의 스키마
- 주의) sys계정 : 관리자는 값을 저장하는 테이블을 만들지 않으므로 사용자 누구인지 꼭 확인하고 갈 것!
SHOW USER;
//USER이(가) "SCOTT"입니다.
- TAB => 전체 스키마에서의 테이블명들
SELECT TABLE_NAME FROM TABS; --테이블명들만확인
SELECT * FROM TAB; --테이블명 외 정보포함
3) 테이블구조확인 : 테이블 속성정보 확인 (COLUMN명 + 자료형)
- COLUMN : 값을 표현하기 위한 자료형 (vs 자바 : 필드)
- 자료형 : NUMBER , VARCHAR2 , DATE ... 등등
DESC 테이블명
//EMP테이블 : 사원정보를 저장하기 위한 테이블
DESC EMP;
이름 널? 유형
-------- -------- ------------
EMPNO NOT NULL NUMBER(4) //숫자형 ,4Byte
ENAME VARCHAR2(10) //문자형 ,10Byte
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE //Date객체
SAL NUMBER(7,2) //숫자형 ,7.2Byte
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
//DEPT테이블 : 부서정보를 저장하기 위한 테이블
DESC DEPT;
이름 널? 유형
------ -------- ------------
DEPTNO NOT NULL NUMBER(2)
DNAME VARCHAR2(14)
LOC VARCHAR2(13)
//BONUS테이블
DESC BONUS;
이름 널? 유형
----- -- ------------
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
SAL NUMBER
COMM NUMBER
//SALGRADE테이블
DESC SALGRADE;
이름 널? 유형
----- -- ------
GRADE NUMBER
LOSAL NUMBER
HISAL NUMBER
반응형
'sql' 카테고리의 다른 글
[sql] 6. JOIN문 (0) | 2024.05.07 |
---|---|
[sql] 5. 그룹함수 | GROUP BY절 | HAVING절 (0) | 2024.05.07 |
[sql] 4. 함수(FUNCTION)의 개념 및 단일함수 (0) | 2024.05.06 |
[sql] 3. DQL (SELECT) (1) | 2024.05.06 |
[sql] 1. 관계형 DATABASE와 SQL의 개념 (0) | 2024.05.05 |