반응형

 

1. oracle 설치

 

데이터베이스 사용자 관리에서 사용자의 계정 상태를 DBA(Data Base Admin) 관리자가 잠금을 해제 시킬 수 있다.

DBO(Data Base Owner)

- 계정생성하기(create user test9 identified by test9;)

 

- 권한 부여

 

 

- 웹에서 SQL 접속하기 (http://localhost:8080/apex)

- 툴로 SQL 확인하기

 

 

- cmd로 sqlplus.exe를 실행시켜서 SQL문 확인하기

cmd를 통해서 sqlplus.exe로 계정에 접속할 수 있다.

- 내가 현재 사용하고 있는 user 확인하기

select * from regions;

regions 테이블로 부터 모든 열을 선택해라

- 테이블에 있는 모든 내용 조회가능하다.

 

 

[ scott계정의 Sample Data생성하기 ]
0. cmd창 =>cd C:\oraclexe\app\oracle\product\10.2.0\server\RDBMS\ADMIN
1.Oracle 10g =>C:\oraclexe\app\oracle\product\10.2.0\server\RDBMS\ADMIN
  => scott.sql
2.sqlplus system/oracle 연결
3.SQL> @scott <= 데이터 생성된다

 

-> 아무 메세지 없으면 생성 완료된다.

scott의 기본 비밀번호는 tiger

 

[계정생성하기]
1.관리자계정(system)만 다른계정을 생성/권한부여
2.접속 : cmd창=> sqlplus system/oracle

3.계정생성명령(DDL: Data Define Language)
              (계정)              (암호)  
  create user test identified by test

4.유저에게 권한부여(DCL: Data Control Language)
  grant connect,resource to test

  cf)현재계정 확인하기
     show user
5.다른계정으로 접속하기
  connect test/test
  conn     test/test

 

http://gurubee.net/

 

꿈꾸는 개발자, DBA 커뮤니티 구루비

꿈꾸는 개발자, DBA 커뮤니티 구루비

www.gurubee.net

 

 

 

- Oracle SQL Developer는 가독성이 뭔가 좋지 않고 메모리 소모가 큰 특징이 있다.

 

- 이제 이 SQL은 이클립스에서 사용할 것이다.

ojdbc14.jar의 경로 : C:\oraclexe\app\oracle\product\10.2.0\server\jdbc\lib

(오라클의 언어와 다른 언어 ex. java 와 연결시켜주는 역할)

 

- Java EE 환경으로 설정해서 실행해야 한다.

 

- 이 목록에 있는 리스트는 모두 데이터베이스이다. 우리는 Oracle을 사용하니 Oracle로 접속

 

 

- 짜잔, 작업공간이 완성되었다.

 

 

 

 

SQL

DDL(Data Definition Language) : 데이터베이스 객체(테이블, 뷰, 인덱스)의 구조를 정의한다.

CREATE 데이터베이스 객체를 생성 합니다.
DROP 데이터베이스 객체를 삭제 합니다.
ALTER 기존에 존재하는 데이터베이스 객체를 다시 정의하는역할을 합니다.

 

DML (Data Manipulation Language) : 데이터의 삽입,삭제,갱신등을 처리

 

INSERT 데이터베이스 객체에 데이터를 입력 한다.
DELETE 데이터베이스 객체의 데이터를 삭제 한다.
UPDATE 데이터베이스 객체안의 데이터 수정 한다.

 

DCL (Data Control Language) : 데이터베이스 사용자의 권한을 제어

 

GRANT 데이터베이스 객체에 권한을 부여 한다.
REVOKE 이미 부여된 데이터베이스 객체 권한을 취소한다.

 

※ Alt+X가 안먹히는 경우가 있는데 그것은 connect가 안된 경우 이므로, connect를 반드시 실행해야한다.

- 이는 이클립스 프로그램이 종료될시에, connect가 초기화 되기에, 다시 connecting 해야한다.

 -- 1. 유저생성(DDL)
                          (계정)       (비번)
  create user  test      identified by  test

 

drop user test1

 

- test에 접속한 뒤에 scott에 있는 dept에 접속하려고 해도 접속할 수 없다.

- 개체에 대한 권한은 소유주만 줄 수 있다.

 -- 1. 유저생성(DDL:Data Definition Language)
                          (계정)      (비번)
  create user  test      identified by test
  
	-- 2. 권한부여(DCL:Data Control Language)
	grant connect to test
	grant resource to test -- 자원사용권한(테이블/뷰 생성)
	grant connect,resource,create  view to test;
	
	-- 2-2. 권한회수
	revoke connect from test
	revoke connect,resource from test
	-- 2-3. 개체(테이블/뷰)의 사용권한
	              DBO(Database Ower)만 권한설정 가능
	              작업자변경 : Oracle_scott
                                 on 개체   to 유저
		grant select  on dept to test
		grant select  on emp to test
		(테스트)
		sqlplus test/test 접속
		select *from scott.dept 조회
		
		(권한회수)
		revoke select on dept from test
		revoke select on emp from test

 

정형화 데이터베이스

 

- 몇건, 몇건의 단위는 record열 기준 1건으로 말한다.

- 데이터베이스는 정형화가 되어있어서, 한 열에 들어올 수 있는 문자형은 통일되어야 한다. (int, String) : 정형화 데이터베이스

- 데이터베이스에 저장이 되긴 되는데, 타입이 통일되어있지 않은 것(뉴스, 빅데이터) : 비정형화 데이터베이스

- 제이슨형 데이터 = key 값과 value가 같이 저장되어 있는 데이터 : 반정형화 데이터베이스

 

- 내가 얼마 정도 값의 데이터를 저장할 것인지 (얼마의 크기로, 어떠한 성질을 가지고 있는 타입을 저장할 것인지) oracle 내에서도 자료형 타입을 정할 수 있다. (숫자형 - 정수형, 실수형의 개념은 없다 | 문자형 | 날짜형 자료형 | 대용량 자료형)

 

 

- 테이블 생성

create table ttt(no int);

insert into ttt values(1);

insert into ttt values(2);

commit;

drop table ttt;

 

- 테이블 목록 조회

select * from all_tables

 

select * from all_tab_comments

where table_type = 'table' : 권한을 가진 모든 테이블 목록과 테이블 설명(comment)을 조회활 때 사용한다.

 

select * from all_objects where object_type = 'table' : 권한을 가진 모든 테이블의 최초 생성 일시와 마지막 변경일시를 확인할 수 있다.

연습db.zip
0.00MB

 

1. 연습 db 압축풀기

2. 압축푼 위치로 이동 : C:\Users\14A\Desktop\연습db

3. 데이터를 관리할 유저로 연결한다.

    sqlplus test/test

4. script 파일 실행(xxx.sql)

SQL>@dept                   -- dept.sql 파일내의 모든명령 실행

SQL>@dept_data          --

SQL>@gogek

SQL>@gogek_data

SQL>@sawon

SQL>@sawon_data

SQL>commit;                  -- 추가하고, commit 해줘야 테이블 데이터를 넘겨준다.

 

 

 

- 데이터베이스의 자료형

/*

	자료형(저장크기) (** 표시를 주로 사용)

	1. 문자형 : n byte (최대 4000byte) - oracle 한글 한글자 3byte
		char(n) : 고정길이 => memo char(1000) (A)저장 (A라는 데이터 하나만 생겨도 1000데이터의 공간이 할당된다)
      **varchar2(n) : 가변길이 => memo varchar2(1000) (A)저장 -> 1byte 할당
		
	2. 숫자형 : p 자릿수
		number(p,s) : p(전체자릿수) s(소숫점이하 자릿수)
		number(p) : kor number(3) <- 숫자 3자리(최대 999)
      **int -> number(38,0)
		
	3. 날짜형
		date : 년월일시분초
		현재시스템날짜 구하는 함수 : sysdate
					
		select to_char(sysdate, 'YYYY-MM-dd HH24:mi:ss') from dual; -- dual (임시테이블)
		
	4. 대용량
		LONG : 문자형 대용량 데이터 (2GB) <- 한레코드에서 1개만 사용할 수 있다.
		LOB(Large Object)
      **1)CLOB(Character Large Object) : 문자형 대용량 데이터(4GB) <- 한레코드에서 여러개 사용가능
		2)BLOB(Binary Large Object)
		
	
	-- 성적데이터 관리
	create table sungtb
	(
	-- 컬럼명  자료형
		no     int,
		name   varchar2(100),
		kor    number(3),
		eng    number(3),
		math   number(3)
	)
	
	-- data 넣기
	insert into sungtb values(1, '차선일', 99, 100, 100);
	insert into sungtb values(2, '차선이', 50, 80, 80);
	insert into sungtb values(3, '차선삼', 70, 63, 70);
	insert into sungtb values(4, '차선사', 35, 80, 80);
	
	select 
	  no,name,kor,eng,math, -- 기본 (컬럼) 필드
	  (kor+eng+math) as tot,  -- 계산필드
	  (kor+eng+math)/3 as avg,
	  rank() over(order by (kor+eng+math) desc) as rank
	from sungtb
	order by no
		
*/

 

-- 성적데이터 관리
create table sungtb
(
-- 컬럼명    자료형
    no          int,
    name    varchar2(100),
    kor        number(3),
    eng        number(3),
    math    number(3)
)

-- data 넣기
insert into sungtb values(1, '차선일', 99, 100, 100);
insert into sungtb values(2, '차선이', 50, 80, 80);
insert into sungtb values(3, '차선삼', 70, 63, 70);
insert into sungtb values(4, '차선사', 35, 80, 80);

select 
  no,name,kor,eng,math, -- 기본 (컬럼) 필드
  (kor+eng+math) as tot,  -- 계산필드
  (kor+eng+math)/3 as avg,
  rank() over(order by (kor+eng+math) desc) as rank
from sungtb
order by no

 

반응형