'DB'에 해당되는 글 23건

  1. 2012.09.14 Import
  2. 2012.09.14 Export
  3. 2012.09.11 CentOS6, Oracle 11g
  4. 2012.01.11 SELECT 문법
  5. 2012.01.11 유저 테이블 검색
  6. 2012.01.11 [오라클] 패스워드 잊었을때
  7. 2009.06.02 비교 연산자
  8. 2009.06.02 SQL연산자
  9. 2009.06.02 연산자 우선 순위
  10. 2009.06.02 정렬

Import

DB 2012. 9. 14. 15:04

Oracle Database TIP 강좌목록 

IMPORT
[2002-02-03] - 김정식 (33,995:Lv60)
55261
조회수
4
댓글수

 

IMPORT란?

  - EXPORT 덤프 파일을 읽어서 그 안에 저장되어 있는 명령을 실행시킨다.

  - $ORACLE_HOME/bin 디렉토리 안에 imp 실행파일이 있다. 윈도우의 경우 imp.exe파일

  - 데이터베이스를 복구하거나 재구성 하기위해 사용 한다.

  - IMPORT를 수행하기 위해서는 반드시 EXPORT한 dump file이 존재해야 하며, dump file 받은 EXPORT옵션에 따라서 IMPORT는 제약을 가질 수 있다.

IMPORT 옵션

  - userid : IMPORT를 실생시키는 계정의 username/password 명

  - buffer : 데이터를 행들을 가져오는데 사용되는 buffer의 bytes 수

  - file : IMPORT될 EXPORT 덤프 파일명

  - show : 파일 내용이 화면에 표시되어야 할 것인가를 나타냄(Y/N 플래그)

  - ignore : IMPORT중 CREATE명령을 실행할 때 만나게 되는 에러들을 무시할 것인지 결정(Y/N 플래그)

  - indexes : 테이블 INDEX의 IMPORT여부(Y/N 플래그)

  - rows : 테이블 데이터를 IMPORT할 것인가(Y/N 플래그) 만약 "N"로 설정하면 데이터베이스 객체들에 대한 DDL만이 실행된다.

  - full : FULL엑스포트 덤프 파일이 IMPORT 할때 사용한다.

  - tables : IMPORT될 테이블 리스트

  - commit : 배열(배열의 크기는 BUFFER에 의해 설정됩니다) 단위로 COMMIT을 할것인가 결정 기본적으로는 테이블 단위로 COMMIT을 한다.

  - fromuser : EXPORT덤프 파일로 부터 읽혀져야 하는 객체들을 갖고 있는 테이터베이스 계정

  - touser : EXPORT덤프 안에 있는 객체들이 IMPORT될 데이터베이스 계정

IMPORT 예제

 
-- 전체 데이터베이스가 IMPORT(Full Level Export file을 Import)
C:\>imp userid=system/manager file='C:\full.dmp'  full=y


-- User Level Export file을 Import
C:\>imp userid=scott/tiger file='C:\scott.dmp'


-- User Level Export file을 다른 계정으로 IMPORT
-- scott 유저의 데이터를 EXPORT받아 test 유저에게 IMPORT하는 예제 
C:\>exp userid=system/manager file='C:\scott.dmp' owner=scott
C:\>imp userid=system/manager file='C:\scott.dmp' fromuser=scott touser=test   
    

태그

 

'DB' 카테고리의 다른 글

Export  (0) 2012.09.14
CentOS6, Oracle 11g  (0) 2012.09.11
SELECT 문법  (0) 2012.01.11
유저 테이블 검색  (0) 2012.01.11
[오라클] 패스워드 잊었을때  (0) 2012.01.11
Posted by 으랏차
,

Export

DB 2012. 9. 14. 15:04

Oracle Database TIP 강좌목록 

EXPORT
[2002-02-03] - 김정식 (33,995:Lv60)
57485
조회수
5
댓글수

 

EXPORT란?

  - 오라클에서 제공하는 논리적인 백업에 사용되는 유틸리티로써, binary file 형태로 기록한다.

  - $ORACLE_HOME/bin 디렉토리 안에 exp 실행파일이 있다. 윈도우의 경우 exp.exe파일

  - 데이터베이스가 가동중인 상태에서 실행한다.

  - 전체 데이터베이스, 특정 사용자, 특정 테이블들을 EXPORT 할 수 있다.

  - 권한, 인덱스, 제약조건들과 테이블들과 연관되는 데이터 딕셔너리 정보도 EXPORT 할 것인지를 선택할 수 있다.

  - 마지막 EXPORT 이후로 변경된 테이블들에 대해서만 EXPORT 작업을 실행 할 수도 있다.

EXPORT 옵션

  - userid : EXPORT를 실행시키고 있는 username/password 명.

  - buffer : 데이터 행들을 가져오는데 사용되는 버퍼의 크기.

  - file : 생성되는 EXPORT덤프 파일명

  - filesize : EXPORT덤프 파일의 최대 크기

  - grants : 데이터베이스 객체에 대한 권한 정보의 EXPORT여부 (Y/N 플래그)

  - indexes : 테이블에 대한 INDEXES의 EXPORT여부 (Y/N 플래그)

  - rows : 행들에 대한 EXPORT여부. (Y/N 플래그) 만약 "no"이면 데이터는 EXPORT 되지않고 테이블의 정의만 EXPORT 된다.

  - constraints : 테이블에 대한 제약조건 정보의 EXPORT여부 (Y/N 플래그)

  - compress : IMPORT에 대비하여 테이블의 데이터를 한 extent로 압축 할것인가의 여부 (Y/N 플래그)

  - full : 전체 데이터베이스를 EXPORT할것인가의 여부 (Full Level EXPORT) (Y/N 플래그)

  - owner : EXPORT 될 데이터베이스의 소유자 명 (User Level EXPORT)[owner=user]

  - tables : EXPORT될 테이블의 리스트(Table Level EXPORT) [tables=(table1, table2, ...)]

  - help : EXPORT 실행 시 파라미터에 관한 설명을 보여준다.

  - tablespaces : EXPORT 될 테이블스페이스의 리스트

  - log : EXPORT 실행 과정을 지정된 로그 파일에 저장

Full Level EXPORT

  전체 데이터베이스가 엑스포트 된다. 모든 테이블스페이스, 모든 사용자, 또한 모든 객체, 데이터들이 포함 된다.

 
exp  userid=system/manager file='C:\full.dmp' full=y
    

User Level EXPORT

  - 사용자 객체들이 EXPORT 되고 객체들 안에 있는 데이터도 EXPORT 된다.

  - 사용자 객체에 대한 모든 권한들과 인덱스들도 EXPORT 된다.

 
-- 사용자 자신이 만든 모든 오브젝트를 그 user가 EXPORT하는 방법
C:\>exp userid=scott/tiger  file='C:\scott.dmp'

-- SYSTEM계정으로 특정 user소유의 오브젝트들을 EXPORT 하는 방법
C:\>exp userid=system/manager owner=scott  file='C:\scottuser.dmp' 
    

Table Level EXPORT

  명시된 테이블만 EXPORT 되며, 테이블의 구조, 인덱스, 권한등이 테이블과 함께 EXPORT 된다.

 
-- SYSTEM계정으로 특정 유저의 table을 EXPORT하는 예제 
-- 다른 계정으로 EXPORT시 table의 user명까지 지정해야 EXPORT가 성공한다.
C:\>exp userid=system/manager file='C:exp.dmp' tables=(scott.EMP, scott.DEPT)

-- scott user로 table을 몇 개만EXPORT하는 예제
-- 자신의 table을 EXPORT할 때에는 user명을 지정할 필요가 없다. 
C:\>exp userid=scott/tiger file='C:\exp.dmp' tables=(EMP, DEPT) log=exp.log
    

 

'DB' 카테고리의 다른 글

Import  (0) 2012.09.14
CentOS6, Oracle 11g  (0) 2012.09.11
SELECT 문법  (0) 2012.01.11
유저 테이블 검색  (0) 2012.01.11
[오라클] 패스워드 잊었을때  (0) 2012.01.11
Posted by 으랏차
,

CentOS6, Oracle 11g

DB 2012. 9. 11. 10:57
# OS : CentOS 6.0

# ORACLE Ver : Oracle11g R2 1/2 , 2/2

필수 패키지 설치

http://rpm.pbone.net/index.php3/stat/4/idpl/2398776/com/pdksh-5.2.14-8.i386.rpm.html


[root@localhost ~]# yum install binutils-2* compat-libstdc++-33* elfutils-libelf* gcc-4.* gcc-c++-4.* glibc-2.* glibc-common-2.* glibc-devel-2.* glibc-headers-2.* ksh* libaio-0.* libaio-devel-0.* libgomp-4.* libgcc-4.* libstdc++-4.* libstdc++-devel-4.* make-3.* sysstat-7.* unixODBC-2.* unixODBC-devel-2.* pdksh*

[root@localhost 다운로드]# ls
linux_11gR2_database_1of2.zip pdksh-5.2.14-8.i386.rpm
linux_11gR2_database_2of2.zip
[root@localhost 다운로드]# yum -y install pdksh-5.2.14-8.i386.rpm

 

rpm -Uvh --nodeps pdksh-5.2.14-37.el5_8.1.i386.rpm


Loaded plugins: fastestmirror, refresh-packagekit
Loading mirror speeds from cached hostfile
* base: centos.tt.co.kr
* extras: centos.tt.co.kr
* updates: centos.tt.co.kr
Setting up Install Process
Examining pdksh-5.2.14-8.i386.rpm: pdksh-5.2.14-8.i386
Marking pdksh-5.2.14-8.i386.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package pdksh.i386 0:5.2.14-8 set to be updated
--> Processing Conflict: ksh-20100621-2.el6.i686 conflicts pdksh
--> Finished Dependency Resolution
Error: ksh conflicts with pdksh
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
[root@localhost 다운로드]#

[root@localhost ~]# yum install sysstat sysstat*
[root@localhost ~]# yum install gnome-libs gnome-libs*
[root@localhost ~]# yum install libaio-devel libaio-devel-*
[root@localhost ~]# yum install elfutils-libelf-devel elfutils-libelf-devel-*
[root@localhost ~]# yum install unixODBC unixODBC-*
[root@localhost ~]# yum install compat-libstdc++ compat-libstdc++

[root@localhost ~]# vi /etc/redhat-release

#CentOS Linux release 6.0 (Final)
redhat-4

다음은 오라클 파라미터 설정은 다음 명령으로 한다.

[root@localhost ~]# vi /etc/sysctl.conf 파일을 열어 다음 내용을 추가한다.

kernel.shmmax = 536870912
kernel.shmall = 2097152

fs.aio-max-nr = 1048576
fs.file-max = 6815744

kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048586

그놈(GNOME) 윈도우는 오라클로 로그인 하고 터미널창에 root로 로그인을 하여 작업을 한다.

오라클 파라미터 설정 적용은 다음 명령으로 수행한다.

[oracle@localhost ~]$ sysctl -a 2> eeror.log | grep shmmax

시스템 오류 메세지는 "errorlog"로 저장하고 출력 결과만 취하는 명령이다.

터미널창에서 실행한 화면을 둘 다 보여주지만 이중 한쪽 만 실행 하면된다.

[oracle@localhost ~]$ sysctl -p

다음은 사용자계정 쉘 권한 설정을 "/etc/security/limits.conf"파일의 마지막 줄 다음에 추가한다.

[root@localhost ~]# vi /etc/security/limits.conf 파일을 열어 아래내용 추가

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

[root@localhost ~]# vi /etc/pam.d/login 파일을 열어 아래내용 추가

session required pam_limits.so

[root@localhost ~]# vi /etc/selinux/config 파일을 열어 SELINUX를 disabled 시켜준다.

셋팅값을 적용하기 위해 OS를 리부팅 시킨다.

oinstall과 dba그룹을 만들고 oracle 계정을 만든다.

[root@localhost ~]# groupadd oinstall

[root@localhost ~]# groupadd dba

[root@localhost ~]# useradd -g oinstall -G dba oracle

[root@localhost ~]# passwd oracle

다음은 오라클 설치를 위한 디렉터리를 만들고 접근모드를 변경한다.

/oracle 디렉토리를 만든다.

오라클 설치할 기본 디렉토리는 /oracle/11g

소유자를 oracle로 변경하고 스기가 가능하도록 퍼미션을 변경한다.

[root@localhost ~]# mkdir /oracle

[root@localhost ~]# mkdir /oracle/11g

[root@localhost ~]# chown -R oracle:oinstall /oracle
[root@localhost ~]# chmod -R 775 /oracle

[root@localhost ~]#

[root@localhost ~]#

oracle 계정을 접속하여

[root@localhost ~]# su - oracle

[oracle@localhost ~] vi .bash_profile

#밑에 내용추가

#1) 2) 둘중하나 택

1)

export ORACLE_OWNER=oracle

export ORACLE_BASE=/oracle

export ORACLE_HOME=/oracle/11g

export ORACLE_SID=orcl

export PATH=$PATH:$ORACLE_HOME/bin

2)

ORACLE_HOSTNAME=localhost.localdomain; export ORACLE_HOSTNAME
ORACLE_BASE=/oracle/11g; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOME
ORACLE_SID=orcl; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

오라클 사이트에서 11g R2를 다운받아

[root@localhost ~]# unzip linux.x64_11gR2_database_1of2.zip
[root@localhost ~]# unzip linux.x64_11gR2_database_2of2.zip

database폴더가 생길것이다 이것을 oracle 계정으로 옮겨서 설치한다.

[root@localhost 다운로드]# mv database /home/oracle

[root@localhost ~]# ls -al

[root@localhost ~]# chown -R oracle:oinstall database


[root@localhost 다운로드]# xhost +

[root@localhost 다운로드]# export DISPLAY=:0.0

[root@localhost 다운로드]# su - oracle

글자깨짐을 방지하기 위해서 export LANG=c

[oracle@localhost ~]$ export LANG=c

압축푼 폴더에서 ./runInstaller를 실행

[oracle@localhost ~]$ ./runInstaller

설치 진행 화면이 나오고 이어서 다음과 같은 오류 메시지가 나온다. 이는 파일 시스템의 "/(root)"아래 "oraInventory"라는 디렉터리를 생성할 수 있는 권한이 없다는 것이므로 경로를 "/home/oracle" 아래에 설정하도록 수정하면 된다.

Next 후

화면 처럼 디레토리를 수정해준다.

Specify Operating System group name: dba 로 수정

Next

에러 3개 나도

Next

오라클에 데이터베이스 관리자를 등록하는 화면이다. 활성화 하지 않고 "Next"


Next

지금까지 설정한 값을 확인하는 화면이다.



Install


설치중 에러가 하나 났는데 ignore 하고 Next


ok


Install Product에서

Excute Configuration scripts를

[root@localhost ~]# /oracle/oraInventory/orainstRoot.sh

[root@localhost ~]# /oracle/11g/product/11.2.0/db_1/root.sh

설치 완료 확인 및 데이터베이스 서버 자동 시작

정상적으로 설치되었는 지 확인 하기 위하여 "Firefox 인터넷 브라우저" 를 실행하여 앞에 제시된 URL을 입력한다.

만약에 "FIrefox"가 해당 url을 차단한다는 경고가 나오면 계속하기를 선택하여 이 주소를 저장.

위험 사항 확인 - 예외 추가 - 예외영구저장(체크) - 확인

로그인 페이지가 나오면 "system" 계정과 비밀번호를 입력하고 로그인 버튼을 클릭하거나 엔터를 입력한다.

화면에서 로그인 버큰에 "ㅁㅁㅁ"으로 표시되는 것은 한글 폰트가 맞지 않아서 생기는 문제이다.

"em(Enterprise Manager)"의 첫 실행 화면이다. 데이터베이스 인스턴스 "orcl"이 연결되어 있음을 알 수 있다.

"oracle"이 정상적으로 동작하고 있음을 확인 할 수 있다. "em"는 정상적으로 동작하지만 인스턴스에 대한 에이전트 접속은 실패 하였다.

이 메시지는 아직 인스턴스 에이전트가 완성되지 않았음을 의미한다.

"/etc/oratab"파일을 열어 다음과 같이 수정한다. 만약애 파일이 없다면 스크립트를 실행하지 않았다는 의미이므로 설치과정에 있는

스크립트를 실행하여 준다.

"/etc/init.d/oracle" 을 생성하여 다음과 같이 입력한다.

[root@localhost ~]# vi /etc/init.d/oracle

#!/bin/bash
ORA_HOME="/oracle/11g/"
ORA_OWNER="oracle"

if [ ! -f $ORA_HOME/bin/dbstart -o ! -d $ORA_HOME ]
then
echo "Oracle Startup: failed"
exit 1
fi

case "$1" in
start)
echo -n "Oracle Start: "
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
su - $ORA_OWNER -c $ORA_HOME/bin/dbstart
touch /var/lock/subsys/oracle
echo "OK"
;;
stop)
echo -n "ORACLE Shutdown: "
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
su - $ORA_OWNER -c $ORA_HOME/bin/dbshut
rm -f /var/lock/subsys/oracle
echo "OK"
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 start|stop|restart"
exit 1
esac
exit 0

작성 후 스크립트 파일의 모드를 755로 조정한다.

[root@localhost ~]# chmod 755 /etc/init.d/oracle

다음을 수정한다.

[oracle@localhost ~]$ vi $ORACLE_HOME/bin/dbstart

"ORACLE_HOME_LISTNER=$1"으로 되어 있는 내용을 "ORACLE_HOME_LISTNER=$ORACLE_HOME"으로 수정한다.

오라클를 사용하기

[oracle@localhost ~]$ /oracle/11g/bin/dbstart ORACLE_HOME

오라클 데이터베이스를 시작한다.

"리스너 컨트롤"을 시작하고 "sqlplus"를 실행한다.

[oracle@localhost bin]$ lsnrctl start

[oracle@localhost bin]$ sqlplus /nolog

다음으로 시스템을 재시작한 후에 "Enterprise Manager"를 동작하면 다음과 같은 오류가 나온다.

이 오류는 emctl이 시작되지 않아서 발생하는 문제이다.

항상 시스템을 재시작 하였다면 emctl를 시작하여야 브라우저로 데이터베이스를 관리할 수 있다.

그러나 이는 시스템 속도 저하 부담이 크다. 가능하면 필요할 때만 실행하고 일반적으로 sqlplus를 사용하기 바란다.

[oracle@localhost bin]$ emctl start dbconsole

시간이 조금 걸린다. 쉘 프롬프트가 나온 이후에 Firefox를 실행하여 em접속을 하면 다음과 같이 나온다.

로그인을 하면 em을 정상적으로 조작 할 수 있다.

오라클 설치

Prerequisite Checks에

pdksh-5.2.14 에러가 나도 ignored 체크하시고 설치

다 처리하고 나면

Global Database Name : orcl.localdomain

System Identifier(SID) : orcl

https://localhost.localdomain:1158/em

root계정에서 실행한다.

 

'DB' 카테고리의 다른 글

Import  (0) 2012.09.14
Export  (0) 2012.09.14
SELECT 문법  (0) 2012.01.11
유저 테이블 검색  (0) 2012.01.11
[오라클] 패스워드 잊었을때  (0) 2012.01.11
Posted by 으랏차
,

SELECT 문법

DB 2012. 1. 11. 16:36

SELECT 문법

INSERT

  • - DISTINCT : 중복되는 행을 제거하는 옵션.
  • - * : 테이블의 모든 column을 출력.
  • - alias : 해당 column에 대해서 다른 이름을 부여할 때 사용.
  • - table_name : 질의 대상 테이블 명
  • - WHERE : 조건을 만족하는 행들 만 검색
  • - condition : column, 표현식, 상수 및 비교 연산자
  • - ORDER BY : 질의 결과 정렬을 위한 옵션(ASC:오름차순(Default),DESC내림차순)

SQL문의 작성 방법
  • - SQL 문장은 대소문자를 구별하지 않는다.
  • - SQL 문장은 한 줄 또는 여러 줄에 입력될 수 있다.
  • - 일반적으로 키워드는 대문자로 입력한다. 다른 모든 단어, 즉 테이블 이름, 열 이름은 소문자로 입력한다.(권장)
  • - 가장 최근의 명령어 한 개가 SQL buffer에 저장 된다.
  • - SQL문 마지막 절의 끝에 ";"를 기술하여 명령의 끝을 표시 한다.
 
-- empno와 ename 은 각각 사번과 성명이라는 컬럼 별칭(alias)으로 만들어 출력
-- alias를 사용할 때 as라는 키워드를 사용해도 되고, 생략 할 수도 있다.
SQL> SELECT empno 사번, ename 성명
      FROM   emp
     WHERE  deptno = 10

      사번      성명
---------- ---------------
 7782      CLARK
 7839      KING
 7934      MILLER
    

WHERE절에 사용될 수 있는 SELECT 연산자
연산자 설 명
BETWEEN a AND b a와 b사이의 데이터를 출력.(a, b값 포함)
IN (list) list의 값 중 어느 하나와 일치하는 데이터를 출력
LIKE 문자 형태로 일치하는 데이터를 출력(%, _사용)
IS NULL NULL값을 가진 데이터를 출력 합니다.
NOT BETWEEN a AND b a와 b사이에 있지않은 데이터를 출력(a, b값 포함하지 않음)
NOT IN (list) list의 값과 일치하지 않는 데이터를 출력
NOT LIKE 문자 형태와 일치하지 않는 데이터를 출력
IS NOT NULL NULL값을 갖지 않는 데이터를 출력

IN, NOT IN 연산자

IN 연산자
  
-- 사번이 7900, 7934번인 사원의 사번과 성명 출력
SQL> SELECT empno, ename
     FROM  emp
     WHERE empno IN (7900, 7934) ;

    EMPNO    ENAME
 --------- -------------
    7934      MILLER
    7900      JAMES
    

NOT IN 연산자
  
-- 사번이 7900, 7934번이 아닌 사원의 사번과 성명 출력
SQL> SELECT empno, ename
     FROM  emp
     WHERE  empno NOT IN (7900, 7934);

  EMPNO   ENAME
-------- --------------
  7369    SMITH
  7499    ALLEN
  7698    BLAKE
  .... 
    

BETWEEN 연산자

AND를 이용해 두 조건을 결합한 검색과 같은 결과값을 보여 준다.

-- 급여가 3000에서 5000사이인 사원만 조회      
SQL> SELECT empno, ename
     FROM  emp
     WHERE  sal BETWEEN  3000 AND 5000;

  EMPNO ENAME
------- ------
   7788 SCOTT
   7839 KING
   7902 FORD  
    

LIKE 연산자

  • - 검색 STRING 값에 대한 와일드 카드 검색을 위해서 LIKE 연산자를 사용.
  • - % : 여러 개의 문자열을 나타내는 와일드 카드
  • - _ : 단 하나의 문자를 나타내는 와일드 카드
  • - ESCAPE : 와일드 카드 문자를 일반문자 처럼 사용하고 싶은 경우에 사용.
  • ex) WHERE name LIKE '%a\_y%' ESCAPE '\'
  • - LIKE 연산자는 대소문자를 구분 한다.
  • - UPPER() 함수를 이용해 대소문자 구분없이 출력 할 수 있다.(인덱스 성능문제 발생, 함수기반 인덱스 사용..)
구 분 설 명
LIKE 'A%' 'A'로 시작하는 데이터만 검색
LIKE '%A' 'A'로 끝나는 테이터들만 검색
LIKE '%KIM%' 'KIM' 문자가 있는 데이터 들만 검색
LIKE '%K%I%' 'K' 문자와 'I'문자가 있는 데이터 들만 검색
LIKE '_A%' 'A'문자가 두 번째 위치한 데이터 들만 검색

LIKE 연산자 예제
-- 'K' 문자가 들어있는 사원 정보 조회
-- UPPER() 함수는 k를 대문자로 변환하여 'K'로 인식    
SQL> SELECT empno, ename
     FROM  emp
     WHERE  UPPER(ename) LIKE '%K%';

EMPNO   ENAME
------- -----------
 7698   BLAKE
 7782   CLARK
 7839   KING

-- '_'를 이용한 LIKE검색
SQL> SELECT empno, ename
     FROM  emp
     WHERE UPPER(ename) LIKE '_I%'

  EMPNO ENAME
------- ----------
   7839 KING
   7934 MILLER
    

ORDER BY

ORDER BY 절은 데이터의 정렬을 위해 사용합니다.(ASC[오름차순], DESC[내림차순])

-- 아래 두 개의 쿼리는 동일한 결과를 반환 한다.
-- 이름을 ASC로 정렬     
SQL> SELECT empno, ename
     ROM  emp
     WHERE  deptno = 30
     ORDER BY ename ASC;

-- 두 번째 컬럼을 디폴트(ASC) 순으로 정렬
SQL> SELECT empno, ename
     FROM  emp
     WHERE  deptno = 30
     ORDER BY 2
         
   EMPNO ENAME
-------- ---------
    7499 ALLEN
    7698 BLAKE
    7900 JAMES
... 
    

'DB' 카테고리의 다른 글

Export  (0) 2012.09.14
CentOS6, Oracle 11g  (0) 2012.09.11
유저 테이블 검색  (0) 2012.01.11
[오라클] 패스워드 잊었을때  (0) 2012.01.11
비교 연산자  (0) 2009.06.02
Posted by 으랏차
,

유저 테이블 검색

DB 2012. 1. 11. 16:20

SQL>SELECT table_name FROM  USER_TABLES;

'DB' 카테고리의 다른 글

CentOS6, Oracle 11g  (0) 2012.09.11
SELECT 문법  (0) 2012.01.11
[오라클] 패스워드 잊었을때  (0) 2012.01.11
비교 연산자  (0) 2009.06.02
SQL연산자  (0) 2009.06.02
Posted by 으랏차
,
sqlplus "/as sysdba"

alter user 사용자 identified by 변경할 비밀번호;

'DB' 카테고리의 다른 글

SELECT 문법  (0) 2012.01.11
유저 테이블 검색  (0) 2012.01.11
비교 연산자  (0) 2009.06.02
SQL연산자  (0) 2009.06.02
연산자 우선 순위  (0) 2009.06.02
Posted by 으랏차
,

비교 연산자

DB 2009. 6. 2. 13:56

 연산자

의미

 =  같다
 >  보다 크다.
 >=  보다 크거나 작다.
 <  작다.
 <=  보다 작거나 같다.
 <>, !=, ^=  같지 않다.
 NOT Column_name =  같지 않다.
 NOT Column_name >  보다 크지 않다.

1. EMP 테이블에서 급여가 3000 이상인 사원의 사원번호, 이름, 담당업무, 급여를 출력하라.

   SELECT empno, ename, job, sal
   FROM emp
   WHERE sal >= 3000;

   결과>

     EMPNO ENAME                JOB                       SAL
     -------- -------------------- ------------------ ----------
      7788 SCOTT                ANALYST                 3000
      7839 KING                 PRESIDENT                5000
      7902 FORD                 ANALYST                  3000


2. EMP 테이블에서 담당업무가 MANAGER 인 사원의 정보를 사원번호, 성명, 담당업무, 급여, 부서번호를 출력하라.

    SELECT empno, ename, job, sal, deptno
    FROM emp
    WHERE job = 'MANAGER';

    결과>

        EMPNO ENAME                JOB                       SAL     DEPTNO
        ------ -------------------- ------------------ ---------- ----------
           7566 JONES                MANAGER                  2975         20
           7698 BLAKE                MANAGER                  2850         30
           7782 CLARK                MANAGER                  2450         10


3. EMP 테이블에서 1982년 1월 1일 이후에 입사한 사원의 사원번호, 성명, 담당업무, 급여, 입사일자, 부서번호를 출력하라.

   SELECT empno, ename, job, sal, hiredate, deptno
   FROM emp
   WHERE hiredate >= '82-01-01';

   결과>
     EMPNO     ENAME                    JOB                           SAL     HIREDATE   DEPTNO
     ---------- -------------------- ------------------ ---------- --------  ----------
      7788          SCOTT                    ANALYST                       3000 87/04/19            20
      7876          ADAMS                   CLERK                           1100 87/05/23            20

      7934          MILLER                   CLERK                           1300 82/01/23            10

     82/01/01은 Oracle 10g 버전의 날짜표시 형식이고 9i는 01-JAN-82와 같은 형식으로 표시 한다.

     ALTER SESSION SET NLS_DATE_FORMAT = 'RR(년)/MM(월)/DD(일)'을 이용해서 날짜 표시 형식을 바꿀 수 있다.

[출처] 비교 연산자|작성자 이경모


'DB' 카테고리의 다른 글

유저 테이블 검색  (0) 2012.01.11
[오라클] 패스워드 잊었을때  (0) 2012.01.11
SQL연산자  (0) 2009.06.02
연산자 우선 순위  (0) 2009.06.02
정렬  (0) 2009.06.02
Posted by 으랏차
,

SQL연산자

DB 2009. 6. 2. 13:55
연산자 설명
 BETWEEN a AND b  a와 b 사이에 있다. (a, b값 포함)
 IN (list)  list의 값 중 어느 하나와 일치 한다.
 LIKE  문자 형태와 일치한다. (%, _ 사용)
 IS NULL  NULL 값을 갖는다.
 NOT BETWEEN a AND b  a와 b 사이에 있지 않다. (a, b값 포함하지 않음)
 NOT IN (list)  list의 값과 일치 하지 않는다.
 NOT LIKE  문자 형태와 일치 하지 않는다.
 NOT IS NULL (10g에서는 IS NOT NULL을 쓴다.)  NULL값을 갖지 않는다.

1. BETWEEN 연산자
   : 두 값의 범위에 해당하는 행을 출력하기 위해 사용한다.
   1) EMP 테이블에서 급여가 1300 에서 1500 사이의 사원의 성명, 담당업무, 급여, 부서 번호를 출력하여라.

      SELECT ename, job, sal, deptno
      FROM emp
      WHERE sal BETWEEN 1300 AND 1500;

     결과>
      ENAME                    JOB                       SAL          DEPTNO
      -------------------- ------------------ ---------- ----------
      TURNER                   SALESMAN                     1500             30
      MILLER                   CLERK                            1300             10
      BETWEEN AND 구문을 사용할 때는 작은 값이 앞에 와야 한다.

      위의 예제에서 1500을 먼저 쓰고 1300을 뒤에 쓰면 선택된 레코드가 없다는 결과가 나온다.

      BETWEEN AND 구문을 사용하지 않고 AND구문을 사용해서 sal >= 1300 AND sal <=1500 이라고 해도 같은 결과가 출력된다.


2. IN 연산자

   : 목록에 있는 값에 대해서 출력하기 위해 사용한다.

   1) EMP 테이블에서 사원번호가 7902, 7788, 7566인 사원의 사원번호, 성명, 담당업무, 급여, 입사일자를 출력하여라.

       SELECT empno, ename, job, sal, hiredate
       FROM emp
       WHERE empno IN (7902, 7788, 7566);

      결과>

       EMPNO ENAME                JOB                       SAL          HIREDATE
       ----- -------------------- ------------------ ---------- --------
         7566 JONES                    MANAGER                       2975 81/04/02
         7788 SCOTT                    ANALYST                        3000 87/04/19
         7902 FORD                     ANALYST                         3000 81/12/03

       IN 구문을 OR절을 사용해서 empno = 7902 OR empno = 7788 OR empno = 7902 와 같이 사용해도 같은 결과가 출력된다.


3. LIKE 연산자

   1) 검색 STRING 값에 대한 와일드 카드 검색을 위해서 LIKE연산자를 사용한다.

   2) 검색 조건은 LITERAL 문자나 숫자를 포함할 수 있다.

   3) %는 문자가 없거나 하나 이상의 문자를, 즉 *와 같이 모든 것을 의미하고, _는 하나의 문자, 즉 ?와 같은 와일드카드로 사용된다.

   4) 패턴 일치 문자를 조합할 수 있다.

   5) %나 _에 대해서 검색하기 위해서는 Escape 식별자를 이용할 수 있다.

       예를 들어 X_Y가 포함된 값을 찾고 싶은데 _는 와일드카드 문자이므로 이 기능을 없애야 한다.

       그럴 때는 뒤에 ESCAPE문자를 지정해서 사용하면 된다.

       예) WHERE name LIKE '%X\_Y%' ESCAPE '\';

            ESCAPE문자를 \로 지정했다. \말고 다른 것으로 지정해도 된다.

   6) EMP 테이블에서 입사일자가 82년도에 입사한 사원의 사번, 성명, 담당업무, 급여, 입사일자, 부서번호를 출력하여라.

       SELECT empno, ename, job, sal, hiredate, deptno
        FROM emp
        WHERE hiredate LIKE '82%';

        위와 같이 명령을 내리면 hiredate 칼럼에 속한 투플 중에서 82로 시작하는 값은 모두 출력된다.


4. IS NULL 연산자

   NULL값을 조회할 때 사용한다.

   SELECT empno, ename, job, sal, hiredate, deptno
   FROM emp
   WHERE comm IS NULL;

   위와 같이 명령을 내리면 comm(보너스)이 NULL값인 레코드는 모두 출력된다.


5. NOT BETWEEN a AND b, NOT IN, NOT LIKE, NOT IS NULL은 앞서 설명한 연산자들의 반대의 명령을 실행하는 구문이라고 이해하자.

[출처] SQL연산자|작성자 이경모


'DB' 카테고리의 다른 글

[오라클] 패스워드 잊었을때  (0) 2012.01.11
비교 연산자  (0) 2009.06.02
연산자 우선 순위  (0) 2009.06.02
정렬  (0) 2009.06.02
자형 함수  (0) 2009.06.02
Posted by 으랏차
,

연산자 우선 순위

DB 2009. 6. 2. 13:55

1. 괄호

2. 숫자 연산자

3. 연결 연산자

4. 모든 비교 연산자

5. IS [NOT] NULL, LIKE, [NOT] IN

6. [NOT] BETWEEN

7. NOT 논리 연산자

8. AND 논리 연산자

9. OR 논리 연산자


여러 개의 연산자가 중복될 경우 위와 같은 우선 순위로 동작한다고 한다. 참고하자

'DB' 카테고리의 다른 글

비교 연산자  (0) 2009.06.02
SQL연산자  (0) 2009.06.02
정렬  (0) 2009.06.02
자형 함수  (0) 2009.06.02
숫자형 함수  (0) 2009.06.02
Posted by 으랏차
,

정렬

DB 2009. 6. 2. 13:54

ORDER BY절을 이용해서 데이터를 정렬할 수 있다.

`ORDER BY [컬럼] ASC(오름차순) 나 DESC(내림차순)` 와 같은 형식으로 사용한다.

ORDER BY [컬럼] 뒤에 아무 구문도 없으면 디폴트는 오름차순이다.

Null값의 경우에는 오름차순에서는 가장 뒤에, 내림차순에서는 가장 앞에 오게 된다.


SELECT empno, ename, job, sal, hiredate, deptno
FROM emp
ORDER BY hiredate;


위와 같이 SQL문을 작성하면 hiredate의 오름 차순으로 정렬되고, hiredate 뒤에 DESC를 넣어주면 내림차순으로 정렬된다.


SELECT empno, ename, job, sal, sal*12 annsal
FROM emp
ORDER BY annsal;

결과>

 EMPNO ENAME                JOB                       SAL     ANNSAL
 ----- -------------------- ------------------ ---------- ----------
 7369 SMITH                CLERK                     800       9600
 7900 JAMES                CLERK                     950      11400
 7876 ADAMS                CLERK                    1100      13200
 7521 WARD                 SALESMAN                 1250      15000
 7654 MARTIN               SALESMAN                 1250      15000
 7934 MILLER               CLERK                    1300      15600
 7844 TURNER               SALESMAN                 1500      18000
 7499 ALLEN                SALESMAN                 1600      19200
 7782 CLARK                MANAGER                  2450      29400
 7698 BLAKE                MANAGER                  2850      34200
 7566 JONES                MANAGER                  2975      35700

 EMPNO ENAME                JOB                       SAL     ANNSAL
 ----- -------------------- ------------------ ---------- ----------
 7788 SCOTT                ANALYST                  3000      36000
 7902 FORD                 ANALYST                  3000      36000
 7839 KING                 PRESIDENT                5000      60000


위 구문은 sal*12를 annsal로 alias시킨 명령문이다. alias시킨 칼럼도 오름차순 정렬이 되는 것을 확인할 수 있다.


 SELECT empno, ename, job, sal, sal*12 annsal
 FROM emp
 ORDER BY sal*12;

 결과>

  EMPNO ENAME                JOB                       SAL     ANNSAL
------ -------------------- ------------------ ---------- ----------
  7369 SMITH                CLERK                     800       9600
  7900 JAMES                CLERK                     950      11400
  7876 ADAMS                CLERK                    1100      13200
  7521 WARD                 SALESMAN                 1250      15000
  7654 MARTIN               SALESMAN                 1250      15000
  7934 MILLER               CLERK                    1300      15600
  7844 TURNER               SALESMAN                 1500      18000
  7499 ALLEN                SALESMAN                 1600      19200
  7782 CLARK                MANAGER                  2450      29400
  7698 BLAKE                MANAGER                  2850      34200
  7566 JONES                MANAGER                  2975      35700

 EMPNO ENAME                JOB                       SAL     ANNSAL
------ -------------------- ------------------ ---------- ----------
  7788 SCOTT                ANALYST                  3000      36000
  7902 FORD                 ANALYST                  3000      36000
  7839 KING                 PRESIDENT                5000      60000


 위 구문처럼 annsal로 alias시킨 것과 별개로 sal*12로 정렬시킨 것을 볼 수 있다.

 이처럼 계산식도 정렬에 활용할 수 있다.


 SELECT empno, ename, job, sal, sal*12 annsal
 FROM emp
 ORDER BY 5

 결과>

EMPNO ENAME                JOB                       SAL     ANNSAL
----- -------------------- ------------------ ---------- ----------
 7369 SMITH                CLERK                     800       9600
 7900 JAMES                CLERK                     950      11400
 7876 ADAMS                CLERK                    1100      13200
 7521 WARD                 SALESMAN                 1250      15000
 7654 MARTIN               SALESMAN                 1250      15000
 7934 MILLER               CLERK                    1300      15600
 7844 TURNER               SALESMAN                 1500      18000
 7499 ALLEN                SALESMAN                 1600      19200
 7782 CLARK                MANAGER                  2450      29400
 7698 BLAKE                MANAGER                  2850      34200
 7566 JONES                MANAGER                  2975      35700

EMPNO ENAME                JOB                       SAL     ANNSAL
----- -------------------- ------------------ ---------- ----------
 7788 SCOTT                ANALYST                  3000      36000
 7902 FORD                 ANALYST                  3000      36000
 7839 KING                 PRESIDENT                5000      60000


위 구문은 출력 칼럼 중 5번째 칼럼의 오름차순으로 정렬하라는 명령이다.

이처럼 칼럼의 순서로 지정해 줄 수도 있다.


정렬하려는 값이 같은 값이 여러 개라면 그것도 정렬해줄 수 있게하는 방법이 있다.

아래 구문을 참고하자.


SELECT ename, job, deptno, sal
FROM emp
ORDER BY deptno, sal DESC;


위 구문은 deptno의 오름차순으로 정렬하고 같은 값이 있으면 sal의 내림차순으로 정렬하라는 명령이다.

결과는 아래와 같다.

ENAME                JOB                    DEPTNO        SAL
-------------------- ------------------ ---------- ----------
KING                 PRESIDENT                  10       5000
CLARK                MANAGER                    10       2450
MILLER               CLERK                      10       1300
SCOTT                ANALYST                    20       3000
FORD                 ANALYST                    20       3000
JONES                MANAGER                    20       2975
ADAMS                CLERK                      20       1100
SMITH                CLERK                      20        800
BLAKE                MANAGER                    30       2850
ALLEN                SALESMAN                   30       1600
TURNER               SALESMAN                   30       1500

ENAME                JOB                    DEPTNO        SAL
-------------------- ------------------ ---------- ----------
MARTIN               SALESMAN                   30       1250
WARD                 SALESMAN                   30       1250
JAMES                CLERK                      30        950


문제> EMP 테이블에서 첫번째 정렬은 부서번호로, 두번째 정렬은 업무로, 세번째 정렬은 급여가 많은 순으로 정렬하여

         사원번호, 성명, 입사일자, 부서번호, 업무, 급여를 출력하여라.

          SELECT empno, ename, hiredate, deptno, job, sal
        FROM emp
        ORDER BY deptno, job, sal DESC;

[출처] 정렬|작성자 이경모

'DB' 카테고리의 다른 글

SQL연산자  (0) 2009.06.02
연산자 우선 순위  (0) 2009.06.02
자형 함수  (0) 2009.06.02
숫자형 함수  (0) 2009.06.02
DUAL 테이블  (0) 2009.06.02
Posted by 으랏차
,