2008년 12월 16일 화요일

sqlPlus명령 정리 기초 버전

sqlPlus명령 정리 기초 버전
show user : 접속된 현재 사용자 보기* conn id/pw : 접속하기* ed 파일명 : sql명령 편집하기(파일명 생략하면 마지막 실행된 명령)* r : 버퍼 내용 실행* save 파일명 : 저장* @파일명 : 저장된것 실행* l : 버퍼 내용 보기* spool d:\(파일명) : 실행 결과 저장 시작 * spool off : 실행 결과 저장 완료

ed : 명령문 수정 하는 법.
ed ->명령문 수정 ->Alt f4 ->엔터~!!!!

sav 파일명 <--저장
sav c:\디렉토리지정 파일명 <-위치선택후 저장
@c:\파일명 저장 파일 불러오기



종이문서ㅡ------ㅡㅡㅡ>엑셀-------------------->데이타베이스(RDB)
검색,정확 대용량 지원 ,무결성
복제,저장 동시사용자 지원

FK --->제약조건 ex:table안에 들어오는 값을 조건을 붙히는것
PK --->검색할 수 있는 고유한키 ex:ID
tip:강의는 scott 책의 예제는 hr
TABLE 용어 정리
로우: 행
컬럼: 열
필드:하나의셀
공백의 필드 : null (널)

주로 사용 TABLE : emp , dept

tab : 테이블 리스트보기
desc : 컬럼 리스트보기


SQL> select * from emp where 1500<= sal and sal<=3000; <------연봉이1500이상이면서 3000이하인 사람만 검색!111
SQL> select * from emp where sal between 1500 and 3000; <--같은거!!

select * from emp where ename='BLAKE'; <---사원목록에서 이름이 BLAKE 이사람 찻기.
select * from emp where sal = 1500 or sal = 1600 or sal = 3000; <-------------연봉이 155,1600,3000 인사람 찻기
SQL> select * from emp where sal in (1500,1600,3000); <---------------같은거!!
SQL> select * from emp where comm is null; <---널값 있는 거 찻기 널값을 찻을때는 is
SQL> select * from emp where ename like '%A%'; <---%의 의미는 앞뒤상관없이 A 가 들어있는것을 검색
SQL> select * from emp where ename like '%S%' AND ename like '%O%'; <--- S 나 O 가 들어간 것을 검색
SQL> select * from emp where ename like '%T_%'; <--이름의 마지막 2번째가 T인사람 찻기 _ <--문자한개표현

ㅁ7/7일 월요일
select e.first_name,d.department_namefrom employees e , departments dwhere e.department_id = d.department_id(+); <-outer 플러스는 범위가 아니것 까지 출력


SQL> select ename,sal from emp where sal>(select sal from emp where ename='BLAKE');
ENAME SAL---------- ----------JONES 2975 <-------SINGLE ROW SUBQUERY 질의의 결과가 하나밖에없는경우 ()에 넣어사용 SCOTT 3000 서브쿼리의 가장 기본적인 예KING 5000FORD 3000


multi 서브 쿼리는 3가지 사용 in ,any,all 사용한다. <-외우기~!~!!~!~~!~!~!~!
SQL> select ename,sal 2 from emp <--------멀티 서브쿼리 all이나 사용 해서 서브쿼리 사용 3 where sal



서브 쿼리 예

SQL> select * from emp where deptno in (select deptno from dept where deptno<30);




ex>부서에 사람이나 부서명에 a들어가는 로우를 출력하시오
select ename from emp where ename like '%A%' union all <----질의의 결과를 합치는것 select dname from dept where dname like'%A%';

*주의 *컬럼명은 ㅡ>가장앞질의
*정렬(order by) ㅡ>맨뒷질의
*각 컬럼 자료형이 일치할것

union 합집합
union all +
minus - (순서주의)
intersect 교집합



SQL> create table t1(id number(4),dat varchar2(20));
테이블이 생성되었습니다.
SQL> insert into t1 values(1,'aaaa 2 ');
1 개의 행이 만들어졌습니다.
SQL> insert into t1 (id,dat) values(2,'aaaa');
1 개의 행이 만들어졌습니다.
SQL> update t1 set dat='bbbb' where id=2;
1 행이 갱신되었습니다.



insert into emp(empno,ENAME,HIREDATE)values(1435,'최보위',to_date('2007-04-02','yyyy-mm-dd')); <-원하는 날짜 입력 하기
sysdate <--현재 날짜 입력





SQL> create table t2 as select deptno,dname from dept; <-테이블을 생성하면서 컬럼 추가하는 법.

insert into t1 select deptno,dname from dept; <-다른곳에 있는 컬럼을 t1이라는 컬럼에 통채로 추가시키는것

update emp set sal=sal*2 where empno=1235; <-기존 연봉에 2배의 월급


delete from t1;
create table t3(x date); <---크레딧 문 안에 있는 따옴표는 ddl문이라 자동 저장이됨 그래서 윗줄의 실수로 지운
델릿트 문의 문장을 roolback을 하지 못한
자주 일어나는 실수 임 유의 할 것


isqlplus : 별다른 셋팅없이 연결하여 사용하고 싶을때
sqlplus의 웹 버젼
간단히 select 결과를 excel로 옮길때
sql를 모르는 직원에게 data입력/검색/수정/삭제 등을 시킬때
접속안될때 처리법
접속방법: http://주소:포트번호/isqlplus 주소는 ipconfig으로 아이피확인 포트번호는 오라클 /db1/install 폴더에 portlist.ini 파일에 있음
http://localhost:5560/isqlplus



SQL> select rowid, rownum,deptno,dname from dept;
ROWID ROWNUM DEPTNO DNAME------------------ ---------- ---------- --------------AAAMfNAAEAAAAANAAA 1 18 여가부AAAMfNAAEAAAAAQAAA 2 10 ACCOUNTING <-로우아이디는 물리적인 데이터 저장 장소.AAAMfNAAEAAAAAQAAB 3 20 RESEARCHAAAMfNAAEAAAAAQAAC 4 30 SALESAAAMfNAAEAAAAAQAAD 5 40 OPERATIONS

SQL> create table x6(su number(2,-2)); <--소수점 2자리까지 표시




varchar2 <---가변길이
char < ---

SQL> create table a2(dat number(4)not null); <--not null 조건을 걸면 insert 시 null이 있으면 안됨..



create table emp2 (empno number(4),ename varchar2(20),deptno number(2), constraint pk_emp_empno primaryu key(empno), constraint fk_emp_deptno foreign key(deptno) references dept(deptno) )


SQL> create view v1 as select ename,dname from emp natural join dept; <--view의 기능중 하나인 긴 질의어를 뷰로 묶어 놓은후
뷰가 생성되었습니다. viwe사용
SQL> select * from v1;
ENAME DNAME---------- --------------최보위 OPERATIONSSMITH RESEARCHALLEN SALESWARD SALESJONES RESEARCHMARTIN SALESBLAKE SALESCLARK ACCOUNTINGSCOTT RESEARCHKING ACCOUNTINGTURNER SALES
ENAME DNAME---------- --------------ADAMS RESEARCHJAMES SALESFORD RESEARCHMILLER ACCOUNTING







SQL> create table t1(id number(4),dat varchar2(20), <--시퀀스 사용법 2 constraint t1_id_pk primary key(id)); 자동 번호 매김
테이블이 생성되었습니다.
SQL> create sequence t1_seq;
시퀀스가 생성되었습니다.
SQL> insert into t1 values(t1_seq.nextval,'aa');
1 개의 행이 만들어졌습니다.
SQL> insert into t1 values(t1_seq.nextval,'bb');
1 개의 행이 만들어졌습니다.SQL> select * from t1;
ID DAT---------- -------------------- 1 aa 2 bb




SQL> create index emp_sal_ix on emp(sal); <---인덱스 생성법 tip:프라이머리키는 인덱스자동생성
인덱스가 생성되었습니다.
SQL> select * from emp where sal=3000;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- ---------- --------- ---------- -------- ---------- ---------- ---------- 7788 SCOTT ANALYST 7566 87/04/19 3000 20 7902 FORD ANALYST 7566 81/12/03 3000 20





create synonym emp for employees <----시노미 만든는것...(동의어만들기)
select * from emp;




SQL> create or replace view v2 as select ename,sal*12 "ann"from emp; <--뷰생성 결론 ann은 컬럼명 지어줌
뷰가 생성되었습니다.
SQL> select * from v2;
ENAME ann---------- ----------최보위 72000SMITH 9600ALLEN 19200WARD 15000JONES 35700MARTIN 15000BLAKE 34200CLARK 29400SCOTT 36000KING 60000TURNER 18000
ENAME ann---------- ----------ADAMS 13200JAMES 11400FORD 36000MILLER 15600aa
16 개의 행이 선택되었습니다.



시퀀스 예제 5 7 나오고 2468 이 반복되는 예제

1 create sequence s1 2 increment by 2 3 start with 5 4 maxvalue 8 5 minvalue 2 6 cycle 7* nocache



1 select OBJECT_NAME,OBJECT_TYPE from user_objects <--객체찻는거
2* where OBJECT_NAME like '%SEQ%'



select index_name from user_indexes;
객체명_name 유저_객체명 <--객체 확인
> select table_name from user_tables; <-객체확인



7월10일

sql fundamentals 2
DCL =>제어문
grant 줄권한 to 유져
revoke 줄권한 from 유저
줄수 있는 권한 - 객체권한
-시스템권한
-role 권한

SQL> grant select on dept to hr; <-권한 수여
권한이 부여되었습니다.

SQL> revoke select on dept from hr; <=--권한 회수



insert into tz values(current_date,current_timestamp,to_timestamp_tz('2001-09-11 10:00:11.120930 -4:00', 'yyyy-mm-dd hh24:mi:ss.ff6 tzh:tzm'),o_timestamp_tz('2001-09-11 10:00:11.120930 -4:00', 'yyyy-mm-dd hh24:mi:ss.ff6 tzh:tzm')/



QL> SELECT SYSDATE+to_yminterval('1-2') from dual; <==시간더하는것

출처> http://choibowee.springnote.com/pages/1441804?print=1

댓글 없음:

댓글 쓰기