- 로그인
c:\>mysql -u root -p

- sql 파일 실행
mysql> source c:/sql.sql

- 사용자 확인
mysql> show databases;

- 사용자 전환
mysql> use 사용자네임;

- 테이블 확인
mysql> show tables;

- 테이블 구조 확인
mysql> explain 테이블명;

eclipse : Galileo
DB : Oracle Database 10g Express Edition

1. Open Perspective를 연다. 오른족 위에 아이콘을 클릭하거나, 메뉴에서 Window - Open Perspective - Other 클릭한다.


2. Database Development을 선택하고 OK 클릭하면 아래와 같이 Data Source Explorer 나온다.


3. Database Connections을 오른족 마우스로 클릭하고 New 선택하면, New Connection Profile 창이 뜬다.


Oracle을 선택하고 Name에서 이름을 정하고 Next 클릭.

4. 아래와 같은 창이 뜨면 New Driver Definition을 클릭한다.



클릭하면 아래와 같은 창이 나타나고, 맞는 오라클을 클릭하면 에러표시가 난다. Jar List 탭으로 이동하여 ojdbc14.jar 파일을 위치를 지정해줘야 한다.



기존의 ojdbc14.jar를 클릭하고 Edit JAR/Zip... 을 클릭한다. 데이터베이스를 설치한 폴더 안에 있는 ojdbc14.jar 파일을 찾아서 선택한다.(ojdbc14_g는 디버깅용)


화면이 아래와 같이 바뀌고 오류가 사라진다. OK 클릭.



5. 화면이 아래와 같이 바뀌고, SID는 XE(XE버전 이므로)로 Host는 127.0.0.1(오라클이 설치된 아이피 주소)로 바꾼다. Oracle에서 사용한 계정의 아이디와 비번을 입력하고 Test Connection을 클릭하여 제대로 연결이 되는지 확인한다.

아래와 같이 변경


연결 확인!


6. Ping succeeded! 창이 뜨면 Finish! 설정 끝! Database Connections 아래 추가한 내용이 나오는지 확인한다.



잠깐! 여기서 설정해줘야 할 것이 있다. 기본적으로 Auto Commit으로 설정되어 있기 때문에 설정을 바꿔야 한다. Preferences - Data Management - SQL Development - SQL Editor - SQL Files/Scrapbooks에서 설정을 변경해야한다.

Type에서 Oracle_10 선택하고 나머지는 설정한 내용대로 선택한다. 그리고 Connection Commit Mode에서 Auto를 Manual로 바꿔줘야 Auto Commit이 안된다.


7. 그림과 같이 오른쪽 마우스를 클릭하여 Open SQL Scrapbook을 선택하고 오르쪽 창에서 Query를 실행하면 결과를 볼 수 있다.(실행 방법은 마우스로 드래그하고 오른쪽 마우스를 누르면 실행 단축 키가 나타난다.)




'DataBase' 카테고리의 다른 글

Oracle Databae 10g Express Edition 에서 HR 계정 사용하기.  (1) 2009.08.13
Oracle DataBase 설치하기.  (0) 2009.08.13
system, sys 비밀번호 변경 시...

콘솔 창에서

sqlplus "/as sysdba" 입력

SQL> alter user system identified by 새로변경할 패스워드;
SQL> alter user sys identified by 새로변경할 패스워드;

이렇게 해주면 패스워드가 변경되고

바뀐 비밀번호로 접속을 하면 된다.
■ EQUI JOIN

가장 많이 사용하는 조인 방법으로서 조인 대상이 되는 두 테이블에서 공통적으로 존재하는 컬럼의 값이 일치되는 행을 연결하여 결과를 생성하는 조인 방법이다.

FROM 절에 조인할 두 테이블 명을 제시하고, WHERE 조건에 두 테이블에 공통된 컬럼을 조인 조건으로 제시한다.

조인 조건은 테이블 N개를 조인시 N - 1개의 조인 조건을 주어야 한다. 2개 테이블 조인시 조건 1개, 3개시 2개....

SELECT e.ENAME, d.DNAME
FROM EMP e, DEPT d
WHERE E.DEPTNO = D.DEPTNO;

- EQUI JOIN에다가 AND 연산을 추가 할 수 있다.

SELECT E.ENAME, D.DNAME
FROM EMP e, DEPT d
WHERE E.DEPTNO = D.DEPTNO;
AND e.ename='SCOTT';

■ NON-EQUI JOIN

NON-EQUI JOIN은 조인 조건에 특정 범위 내에 있는지를 조사하기ㅐ 위해서 WHERE 절에 조인 조건을 = 연산자 이외의 비교 연산자를 사욯한다.

SELECT e.ename, e.sal, s.grade
FROM EMP e, SALGRADE s
WHERE e.sal >= S.LOSAL AND e.sal <=S.HISAL;

- BETWEEN AND 사용시

SELECT e.ename, e.sal, s.grade
FROM EMP e, SALGRADE s
WHERE e.sal BETWEEN S.LOSAL AND s.hisal;

SELECT e.ename, D.DNAME, E.SAL, s.grade
FROM EMP e, SALGRADE s, DEPT d
WHERE e.deptno = D.DEPTNO 
AND e.sal BETWEEN S.LOSAL AND s.hisal;

■ SELF JOIN 

자신의 테이블만으로는 원하는 결과를 알아 낼 수 없으나 만일 자신과 같은 테이블이 두개 존재한다면 질의가 가능한 경우 마치 같은 테이블이 두개 인 것처럼 자기 자신 테이블과 조인하는 것을 SELF JOIN 이라고 한다. 이 경우 FROM 절에 같은 테이블 이름을 두 번 반복하게 되므로 반드시 테이블 별칭을 사용해야 한다.

SELECT e.ename || '의 매니저는 ' ||  m.ename || ' 입니다'
FROM EMP e, EMP m
WHERE e.mgr = m.empno;

■ OUTER JOIN

외부 조인은 조인 조건에 만족하지 못하였더라도 해당 행을 나타내고 싶을 때 사용한다. 컬럼 값이 NULL일 경우...
외부 조인은 "(+)" 연산자를 사용하여 NULL 값이기에 배제된 행을 결과에 포함시킬 수 있다.

SELECT e.ename || '의 매니저는 ' ||  m.ename || ' 입니다'
FROM EMP e, EMP m
WHERE e.mgr = m.empno(+);

KING의 매니저는 입니다. 라고 나타난다. NULL 값도 표시를 한다.





검색을 아래와 같은 쿼리로 실행할 경우,

SELECT *

FROM
(
SELECT rownum rn, bbsno, writer, content, title
FROM TBL_BBS
WHERE rownum <=20
ORDER BY bbsno DESC
)
WHERE rn > 10

낮은 코스트가 나온다

하지만 이 쿼리의 문제점은 데이터 양이 적을 때 풀 스캔을 먹는다는것이다.

- 힌트를 이용하여 강제로 풀스캔을 먹인 경우

SELECT /*+FULL(tbl_bbs)*/ rownum rn, bbsno, writer, content, title
FROM TBL_BBS
WHERE rownum <= 20
ORDER BY bbsno DESC

전체 디비를 검색하고 로우넘을 붙이고 마지막에 소팅을 한다. 코스트가 엄청 커진다.

검색 결과를 보면 처음부터 검색하는지 않고 중간에서 부터 결과가 나온다.

- 인덱스의 단점은 : 인덱스를 이용하여 insert나 delete 작업을 하면 떨어진다.

- 인덱스를 타고 싶은데 오라클 옵티마이저가 스스로 판단해서 full scan을 할때도 있기 때문에 로우넘이 꼬이는 경우가 있다. 그래서 hint를 사용하여 무조건 인덱스를 타게 해준다.

※ order by를 사용하지 않는다! 인덱스를 이용하여 아래에서 부터 검색
SELECT
/*+INDEX_DESC(tbl_bbs pk_bbs)*/ //->order by를 사용하지 않고 DESC를 사용해서
 rownum rn, bbsno, writer, content, title
FROM TBL_BBS
WHERE bbsno > 0 
AND rownum <= 20

SELECT
/*+INDEX(tbl_bbs pk_bbs)*/
 rownum rn, bbsno, writer, content, title
FROM TBL_BBS
WHERE bbsno > 0
AND rownum <= 20

1. 테이블 만들면서 복사해오기

CREATE table emp as
SELECT employee_id empid, first_name ||' ' ||  last_name name
FROM hr.employees

2. 원래 테이블에다가 select 해서 복사하는 방법

INSERT into emp (empid, name)
SELECT employee_id empid, first_name ||' ' ||  last_name name
FROM hr.employees

3. 자가 복사

INSERT into emp (empid, name)
SELECT empid, name FROM EMP

4. DB백업 방식!

SELECT 'insert into emp2 (empid, name) values (' || employee_id || ',''' ||  first_name || ''');' FROM hr.employees

- SQLGate에서 실행

셀 전체 복사
insert into emp2 (empid, name) values (100,'Steven');
....
insert into emp2 (empid, name) values (107, 'Gietz');

메모장에 붙여 넣기 하고 맨 마지막에 commit; 추가 한다.

aaa.sql 파일로 만든다. C 드라이브에 저장.

- slq 접속.
sql>@C:\\aaa.sql 을 실행한다.

※ 만약에 셀 전체를 해서 SQLGate에서 sql 창을 새로 열어서 복사하고 실행하면 실행 속도가 오래 걸린다!

■ system 계정으로 로그인 해서 user01 만든다.

(SQLGate 사용 또는 오라클 데이타베이스 홈페이지 접속 해서 실행)

CREATE USER USER01 IDENTIFIED BY USER01;

//DBA 권한 부여

GRANT CONNECT, DBA TO USER01;


■ 로그아웃 후 USER01 계정으로 접속한다.

- hr 계정의 employees에서 불러온다.
SELECT employee_id, first_name, last_name
FROM hr.employees;

- first_name과 last_name을 합쳐서 불러온다.
SELECT employee_id, first_name || last_name
FROM hr.employees

- first_name과 last_name 사이에 공백을 넣어서 불러온다.
SELECT employee_id, first_name || '' ||last_name
FROM hr.employees

- first_name과 last_name을 합친 컬럼 명을 name으로 ALIAS(별칭) 한다. name 앞에 AS가 생략됨.(AS name)
SELECT employee_id, first_name ||' ' ||  last_name
name
FROM hr.employees

- emp라는 테이블을 만들면서 hr 계정의 employees 테이블의 데이터들도 불러온다.
CREATE table emp as
SELECT employee_id empid, first_name ||' ' ||  last_name name
FROM hr.employees

- emp 테이블의 데이터 양을 두배로 늘린다. 실행후 107개가 214개가 되어 있음을 확인 할 수 있다.
INSERT INTO emp (empid, name)
SELECT employee_id empid, first_name ||' ' ||  last_name name
FROM hr.employees


Oracle Databae 10g Express Edition 에서 HR 계정을 사용하기 위해서는 잠금을 해제해야 된다.

브라우저 창에서
http://127.0.0.1:8080/apex 나 시작 메뉴의 오라클 메뉴에서 Database 홈페이지로 이동 을 선택해서 관리 창으로 들어간다.

system 계정으로 로그인 한다.(비밀 번호는 오라클 설치시 설정한 번호)

로그인이 성공하면

관리 클릭 -> 데이타베이스 사용자 클릭 해서 들어가면 HR 계정에 자물쇠로 잠겨 있는 모습을 볼 수 있다.



HR 계정을 클릭해서 들어가 보면


계정 상태 에서 잠금 해제됨을 선택하고(암호 입력) 사용자 변경을 누르면 잠금이 해제 된다.

로그아웃을 하고 다시 HR 계정으로 로그인 하면 인사관리와 관련된 테이블들을 볼 수 있다.

※ emp 테이블은 scott 계정에 있다.

접속 : sqlplus sys as sysdba 암호 : MANAGER

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

CONNECT SCOTT/TIGER

들어가서 보면 emp 테이블이 만들어져 있다.



■ DB 설치
 
Oracle 사이트에서 Oracle Database 10g Express Edition (Universal) 다운로드. 다운로드를 하기 위해서 회원가입해야 됨.

 Oracle XE(10g) 개발자용은 스키마를 만들 수 없음.

 약관 및 설치 위치를 설정하고, 암호를 설정한 다음 다음버튼 클릭!.


 요약 정보가 나옴. HTTP리스너용 포트 번호를 보면 8080으로 되어있음 아파치 WAS포트 번호도 8080이므로 둘중에 하나 변경해야됨. 설치 클릭!.
 

 설치 후 오라클 홈페이지를 실행하면(시작 메뉴에서 오라클 메뉴 - Database 홈페이지로 이동 클릭!) 로그인 창이 나타난다.


 아이디는 system 암호는 설치하면서 정한 비밀번호를 입력한다.

 로그인 후 관리에서 데이타베이스 사용자 - 사용자 관리(페이지에서 생성 클릭!) 또는 생성으로 이동.


 사용자 이름 및 암호를 입력하고 생성 클릭. 사용자 이름 : user01, 암호 : user01

■ 오라클 수동 시작으로 변경

오라클을 설치 해놓으면 윈도우가 시작 될때 느리고, 많은 메모리를 차지 하기 때문에 수동으로 설정해준다.

제어판 -> 관리도구 -> 구성 요소 서비스 -> 서비스(로컬) 에서


빨간 색 부분을 선택하여 수동으로 바꿔준다.



데이타베이스를 시작하기 위해서는 시작 - 모든프로그램 - 오라클 메뉴로 가서 데이타베이스 시작을 클릭한다.
검색을 테스트 하기 위해 기본적으로 100만건 이상의 자료가 있어야 공부하는데 도움이 된다.

그래서 쉽게 DB에 자료를 증가시키는 방법을 사용한다.

INSERT와 SELECT의 조인문을 이용해서 자가복사를 통해 데이터를 증가 시킨다.

SQL>INSERT INTO 테이블명 SELECT (NUMSEQ.NEXTVAL : 넘버 시퀀스가 있을 경우), 필드명, 필드명 .... FROM 테이블명;

이렇게 쿼리문을 입력하고 계속 실행해주면 10개가 20개, 20개가 40 개씩 배로 늘어나게 된다.

몇번만 해주면 쉽게 백만건을 넣을 수 있다.

이제 쿼리문 연습을 해보자.


 SQL(Structured Query Language)은 관계형데이터베이스(RDB:Relational Database)의 관계형 데이터베이스 관리 시스템에서 자료의 검색과, 관리, 질의, 수정, 삭제 등의 작업을 하는 컴퓨터 언어이다. 대부분의 데이터베이스 관리 프로그램들이 SQL을 표준으로 채택하고 있기 때문에, 문법의 큰 차이는 없다.

■ SQL문의 종류

- 데이터 정의(DDL:Data Definition Language)
: 데이터 정의어. 데이터베이스의 논리적 구조를 정의하는 언어로, 객체 생성 및 변경시 사용하고, 데이터 딕셔너리(Data Diactionary)에 저장된다.

* 명령문
CREATE(데이터베이스 객체 생성)
ALTER(데이터베이스 객체 변경)
DROP(데이터베이스 객체 삭제)
RENAME(데이터베이스 객체이름 변경)
TRUNCATE(데이터베이스 객체의 저장 공간 삭제)


- 데이터 조작어(DML:Data Manipulation Language)
:  데이터 조작어로 데이터 변경시 사용하는 언어이다. 데이터 검색(Retrieval), 추가(Insert), 삭제(Delete), 갱신(Update) 작업을 한다.

* 명령문
INSERT(데이터 입력)
UPDATE(데이터 수정)
DELETE(데이터 삭제)

- 데이터 제어어(DCL:Data Control Language)
: 데이터 제어어로 데이터에 대한 접근 권한 부여등의 데이터베이스 시스템의 트랜잭션을 관리하기 위해 사용.

* 명령문
GRANT(데이터베이스에 대한 일련의 권한 부여)
REVOKE(이미 부여된 데이터베이스 객체의 권한을 취소)

- 기타

질의어(DQL:Data Query Language)
: SELECT(데이터 검색시 사용)

트랜잭션 처리어(TCL:Transaction Control Language)
: COMMIT(트랜잭션의 정상적인 종료처리), ROLLBACK(트랜잭션 취소), SAVEPOINT(트랜잭션내에 임시 저장점 설정) 


+ Recent posts