mssql 테이블 변수 사용해서 커서 대체


테이블 변수는 쿼리가 실행되는 세션안에서만 유효하며 일반 변수와 같다.

커서(CURSOR)보다는 임시 테이블(#TEMPTABLE) 이 

임시테이블 보다는 테이블 변수(@TEMPTABLE)를 사용하는 것이 성능에 좋다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
DECLARE @TAMP_T TABLE      
(    
 TMPID INT IDENTITY(1,1) NOT NULL,
 ID INT,
 NAME VARCHAR(20)
)  
 
 
INSERT INTO @TAMP_T(ID,NAME)
SELECT ID,NAME FROM DATATABLE
   
DECLARE @TMPID AS INT, @MAXID AS INT
DECLARE @ID INT
DECLARE @NAME VARCHAR(20)
SELECT @TMPID = MIN(TMPID), @MAXID = MAX(TMPID) FROM @TAMP_T  
 
WHILE @TMPID <= @MAXID      
BEGIN      
  --ROW  
  SELECT  
    @ID = ID,  
    @NAME = NAME
  FROM @TAMP_T      
  WHERE TMPID = @TMPID    
   --INSERT
   --UPDATE
   --DELETE
   --SELECT
  --WHERE ID = @ID AND NAME = @NAME
 SET @TMPID = @TMPID + 1      
END
cs


mssql 페이징 프로시저(PROCEDURE)

EXEC UP_TEST_PAGING '10','1',''


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
CREATE PROCEDURE [dbo].[UP_TEST_PAGING]
  (
    @PAGESIZE        VARCHAR(10)    = '',        -- 페이지 사이즈
    @IPAGE            VARCHAR(10)    = '',        -- 현재페이지
    @TYPE                  CHAR(4) = ''
)
AS
    SET NOCOUNT ON
    DECLARE @SQL    VARCHAR(8000)
    DECLARE @WHERE    VARCHAR(4000)
    SET @SQL = ''
    
    SET @WHERE = ' WHERE 1=1 '
    
    IF (ISNULL(@TYPE, '') <> ''  )
    BEGIN
        SET @WHERE =  @WHERE + ' AND A.COLUMN2 = ''' + @TYPE + ''' '    
    END    
 
 
    SET @SQL = ' SELECT    AAA.* '
    SET @SQL = @SQL + CHAR(10) + ' FROM    ( '
    SET @SQL = @SQL + CHAR(10) + '            SELECT  '
    SET @SQL = @SQL + CHAR(10) + '                    ROW_NUMBER() OVER(ORDER BY INSERTDATE DESC) AS RNUM,  '           -- ROWNUM
    SET @SQL = @SQL + CHAR(10) + '                    AA.* '
    SET @SQL = @SQL + CHAR(10) + '            FROM  ( '
    SET @SQL = @SQL + CHAR(10) + '                    SELECT  TOP (' + @IPAGE + '*' + @PAGESIZE + ') '
    SET @SQL = @SQL + CHAR(10) + '                             A.COLUMN1 '
    SET @SQL = @SQL + CHAR(10) + '                            ,A.COLUMN2 '
    SET @SQL = @SQL + CHAR(10) + '                            ,A.INSERTDATE '
    SET @SQL = @SQL + CHAR(10) + '                        FROM TEMPTABLE A '
    SET @SQL = @SQL + CHAR(10) + @WHERE
    SET @SQL = @SQL + CHAR(10) + '                    ORDER BY INSERTDATE DESC '    
    SET @SQL = @SQL + CHAR(10) + '                ) AS AA '
    SET @SQL = @SQL + CHAR(10) + '            ) AS AAA '
    SET @SQL = @SQL + CHAR(10) + ' WHERE AAA.RNUM BETWEEN (('+ @IPAGE +'-1)*'+@PAGESIZE+'+1) AND ((('+@IPAGE+'-1)+1)*'+@PAGESIZE+')'
    --TOTALCOUNT
    SET @SQL = @SQL + CHAR(10) + ' SELECT COUNT(1) AS TOTALCOUNT '
    SET @SQL = @SQL + CHAR(10) + ' FROM TEMPTABLE AS A '
    SET @SQL = @SQL + CHAR(10) + @WHERE
    
        
 
EXEC(@SQL)
    
RETURN
cs


mssql 컬럼명으로 테이블 찾기

 

SELECT  TABLE_NAME,
  COLUMN_NAME,
  DATA_TYPE,
  CHARACTER_MAXIMUM_LENGTH
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = '컬럼명'

MSSQL 검색 문자열 SP 찾기

 

SELECT A.TYPE,A.NAME,COUNT(1) AS CNT
FROM SYSOBJECTS A
INNER JOIN SYSCOMMENTS B  ON B.ID = A.ID
WHERE A.TYPE IN ('FN','IF','TF','P')                   
  AND B.TEXT LIKE '%검색문자열%' 
GROUP BY A.TYPE,A.NAME

 

EXEC SP_HELPTEXT 프로시저명

mssql order by 영문,한글 정렬

COLLATE 절사용

SELECT * FROM TABLE ORDER BY COL COLLATE Korean_Wansung_BIN

'정리없는자료 > DB' 카테고리의 다른 글

mssql 컬럼명으로 테이블 찾기  (0) 2013.11.15
MSSQL 검색문자열 SP 찾기  (0) 2013.11.15
mssql order by 영문,한글 정렬  (0) 2011.12.14
MSSQL 자주사용되는 날짜 함수  (0) 2010.11.12
sql2005 error:40 원격 연결 허용  (1) 2008.05.28
MS-SQL 국가 통계 IP  (0) 2007.12.22


GETDATE() : 현재 날짜와 시간 출력

DAY(date) : 날짜(일) 출력

MONTH(date) : 월 출력

YEAR(date) : 년도 출력


날짜 출력형식

mm/dd/yy  : CONVERT(varchar(8), date, 101)

yy.mm.dd  :  CONVERT(varchar(8), date, 102)

dd/mm/yy  :  CONVERT(varchar(8), date, 103)

dd-mm-yy  : CONVERT(varchar(8), date, 105)

yy/mm/dd  : CONVERT(varchar(8), date, 111)

yyyy-mm-dd  : CONVERT(varchar(10), date, 126)


dd는 일, mm는 월, yy는 년

DATEADD("dd", 1, getdate()) : getdate()에 1일을 더합니다.

DATEDIFF("dd", vDate, getdate()) : vDate에서 getdate()을 뺀 날짜(일)수

DATENAME("mm", getdate()) : getdate()의 월을 가져옵니다.(영문)

DATEPART("mm", getdate()) : getdate()의 월을 가져옵니다.(숫자)

'정리없는자료 > DB' 카테고리의 다른 글

MSSQL 검색문자열 SP 찾기  (0) 2013.11.15
mssql order by 영문,한글 정렬  (0) 2011.12.14
MSSQL 자주사용되는 날짜 함수  (0) 2010.11.12
sql2005 error:40 원격 연결 허용  (1) 2008.05.28
MS-SQL 국가 통계 IP  (0) 2007.12.22
MS-SQL Transation, Lock  (0) 2007.10.26

서버에 연결하는 동안 오류가 발생했습니다. SQL Server 2005에 연결하는 경우 SQL Server 기본 설정에서는 원격 연결을 허용하지 않기 때문에 발생한 오류일 수 있습니다. (provider: 명명된 파이프 공급자, error: 40 - SQL Server에 대한 연결을 열 수 없습니다.)

- 인터넷을 통해 해결못하신분들은
C:\WINDOWS\system32\drivers\etc
.hosts 파일에
127.0.0.1       localhost
192.168.0,x    서버이름

인터넷 문서를 통해 설정을 다 해놓으신 상태에서 하시면 됩니다.



 

'정리없는자료 > DB' 카테고리의 다른 글

mssql order by 영문,한글 정렬  (0) 2011.12.14
MSSQL 자주사용되는 날짜 함수  (0) 2010.11.12
sql2005 error:40 원격 연결 허용  (1) 2008.05.28
MS-SQL 국가 통계 IP  (0) 2007.12.22
MS-SQL Transation, Lock  (0) 2007.10.26
MS-SQL 함수만들기  (0) 2007.10.23
  1. 윤민호 2011.03.08 16:57

    아 너무 고맙습니다 ㅠ.ㅠ

    인터넷 뒤져도 절대 안나오내요 ㅎㅎ

ALTER function [dbo].[ufn_IpToInt] (@str_ip varchar(15))
returns bigint
as
--select dbo.ufn_IpToInt('255.255.255.255') --4154
begin
 return(
  cast(
   cast(parsename(@str_ip, 1) as tinyint) +
   (cast(parsename(@str_ip, 2) as tinyint) * 256) +
   (cast(parsename(@str_ip, 3) as tinyint) * 65536) +
   (cast(parsename(@str_ip, 4) as tinyint) * cast(16777216 as bigint))
  as bigint)
 )
end

'정리없는자료 > DB' 카테고리의 다른 글

MSSQL 자주사용되는 날짜 함수  (0) 2010.11.12
sql2005 error:40 원격 연결 허용  (1) 2008.05.28
MS-SQL 국가 통계 IP  (0) 2007.12.22
MS-SQL Transation, Lock  (0) 2007.10.26
MS-SQL 함수만들기  (0) 2007.10.23
MS-SQL 저장 프로시저 + 테이블  (0) 2007.10.23
트랜잭션 개념

use master

create table tblgenre(code tinyint primary key, name nvarchar(30))
insert tblgenre values (1,'액션')
insert tblgenre values (2,'어드벤쳐')
insert tblgenre values (3,'미스테리')
insert tblgenre values (4,'애니메이션')
drop table tblvideo
delete from tblvideo

create table tblvideo(v_num int primary key, v_name nvarchar(50), v_code tinyint references tblgenre(code))
begin tran
insert tblvideo values (1,'슈렉',4)
if @@error <> 0 begin rollback tran return end
insert tblvideo values (2,'무사',1)
if @@error <> 0 begin rollback tran return end
insert tblvideo values (3,'봄날은 간다',5) --제약조건위반
if @@error <> 0 begin rollback tran return end
commit tran
select * from tblvideo
delete from tblvideo

중첩 트랜잭션

begin tran
insert tblgenre values(6,'공포')
select * from tblgenre
begin tran
insert tblgenre values(7,'어린이')
select * from tblgenre
commit tran
select * from tblgenre
rollback tran
select * from tblgenre

@@trancount

begin tran
insert tblgenre values(6,'공포')
select @@trancount
begin tran
insert tblgenre values(7,'어린이')
select @@trancount
commit tran
select @@trancount
rollback tran
select @@trancount

declare @tranname  nvarchar(50)
select @tranname ='이하영'
begin tran @tranname
update tblgenre
set name = '애니메이션' where code = 4
commit tran 이하영

Lock
/*@trancount : 트랜잭션이 실행중인지아닌지를 알아보는 시스템변수
@@sp_id : 현재 세션의 ID를 보여준다.
sp_lock : 모든 잠금 상태를 보여준다.
Db_name() : 사용중인 데이터베이스 이름 확인
object_name() : 사용중인 오브젝트 확인 */

select @@trancount, @@spid -- sp_who
sp_lock
select db_name(), object_name(85575343) --sp_lock check
sp_databases
------------------------------------------------------------------------------------
begin tran
select @@trancount
select * from tblgenre
sp_lock
insert tblgenre values(6,'스릴러')
sp_lock
rollback tran
sp_lock

'정리없는자료 > DB' 카테고리의 다른 글

sql2005 error:40 원격 연결 허용  (1) 2008.05.28
MS-SQL 국가 통계 IP  (0) 2007.12.22
MS-SQL Transation, Lock  (0) 2007.10.26
MS-SQL 함수만들기  (0) 2007.10.23
MS-SQL 저장 프로시저 + 테이블  (0) 2007.10.23
MS-SQL with check option(범위 지정)  (0) 2007.10.23
함수만들기
create function hap(@kor int, @eng int, @mat int) returns int as begin return (@kor+@eng +@mat) end
select dbo.hap(100,100,100)
sp_helptext hap

drop table tblsungjuk
create table tblsungjuk(num int, name varchar(20), kor smallint, eng smallint, mat smallint, tot as (dbo.hap(kor,eng,mat)))
sp_columns tblsungjuk

insert into tblsungjuk values(1, '이하영', 100,100,100)
insert into tblsungjuk values(2, '권예진', 90,100,100)
select * from tblsungjuk

create function sungjuksearch(@jum smallint) returns table as return (select * from tblsungjuk where kor > @jum)
select * from dbo.sungjuksearch(90)

select * into newtblsungjuk from tblsungjuk where 1= 0
select * from newtblsungjuk
insert into newtblsungjuk select *  from tblsungjuk
select * from newtblsungjuk
drop function  largeordershippers

'정리없는자료 > DB' 카테고리의 다른 글

MS-SQL 국가 통계 IP  (0) 2007.12.22
MS-SQL Transation, Lock  (0) 2007.10.26
MS-SQL 함수만들기  (0) 2007.10.23
MS-SQL 저장 프로시저 + 테이블  (0) 2007.10.23
MS-SQL with check option(범위 지정)  (0) 2007.10.23
MS-SQL index,partitioned view  (0) 2007.10.23
use northwind
create function largeordershippers(@freightparm money)
returns @ordershippertab table(
shipperid int
,shippername nvarchar(80)
,orderid int
,shippeddate datetime
,freight money
)
with encryption
as
begin
insert @ordershippertab
select s.shipperid,s.companyname, o.orderid, o.shippeddate,o.freight
from shippers as s inner join orders as o
on s.shipperid = o.shipvia
where o.freight>@freightparm
return
end

select * from largeordershippers($500)
sp_depends largeordershippers

drop function largeordershippers

'정리없는자료 > DB' 카테고리의 다른 글

MS-SQL Transation, Lock  (0) 2007.10.26
MS-SQL 함수만들기  (0) 2007.10.23
MS-SQL 저장 프로시저 + 테이블  (0) 2007.10.23
MS-SQL with check option(범위 지정)  (0) 2007.10.23
MS-SQL index,partitioned view  (0) 2007.10.23
MS-SQL with schemabinding  (0) 2007.10.23
with check option(범위 지정)
create table tblgenre_viewtest(code tinyint primary key, name nvarchar(40))
insert tblgenre_viewtest values(1,'액션')
insert tblgenre_viewtest values(2,'드라마')
insert tblgenre_viewtest values(3,'애니메이션')
insert tblgenre_viewtest values(8,'에로')
select * from tblgenre_viewtest

create view tblgenre_viewtest_checkoption as
select * from tblgenre_viewtest where code between 1 and 6 with check option

insert tblgenre_viewtest values(4,'스리러')

insert tblgenre_viewtest_checkoption values(7,'만화') -- check option
delete tblgenre_viewtest_checkoption where code = 8
update tblgenre_viewtest_checkoption set name = '에로틱' where code = 8

'정리없는자료 > DB' 카테고리의 다른 글

MS-SQL 함수만들기  (0) 2007.10.23
MS-SQL 저장 프로시저 + 테이블  (0) 2007.10.23
MS-SQL with check option(범위 지정)  (0) 2007.10.23
MS-SQL index,partitioned view  (0) 2007.10.23
MS-SQL with schemabinding  (0) 2007.10.23
MS-SQL stored procedure  (0) 2007.10.23
index view
create table iv_test(num int not null primary key, name nvarchar(50) not null, genre nvarchar(10))
sp_columns iv_test
insert into iv_test(num,name,genre) values(1,'친구','액션')
insert into iv_test(num,name,genre) values(2,'봄날은간다.','드라마')
insert into iv_test(num,name,genre) values(3,'슈렉','애니메이션')
select * from iv_test
create table new_iv_test(num int not null, name nvarchar(50) not null, genre nvarchar(10))
insert into new_iv_test select * from iv_test
create view iv_test_v with schemabinding as select num,name,genre from dbo.iv_test
select * from new_iv_test
create unique clustered index cl_v_test on iv_test_v(num)
create index ix_iv_test on iv_test_v(name)
sp_helpindex iv_test_v
select * from iv_test_v

partitioned view
use student
create table tblclass_001(hakbun int primary key check(hakbun between 1 and 40), id varchar(8) unique, pwd varchar(8))
create table tblclass_002(hakbun int primary key check(hakbun between 41 and 80), id varchar(8) unique, pwd varchar(8))
create table tblclass_003(hakbun int primary key check(hakbun between 81 and 120), id varchar(8) unique, pwd varchar(8))
create view viwclass as select * from tblclass_001 union all  select * from tblclass_002 union all  select * from tblclass_003
select * from viwclass
insert into viwclass values(1,'lhykoh','1111')
insert into viwclass values(2,'aaa','1234')
insert into viwclass values(51,'cccc','12345')
insert into viwclass values(89,'bbb','1111')
insert into viwclass values(120,'zzzz','3456')
insert into viwclass values(79,'dddd','2222')

'정리없는자료 > DB' 카테고리의 다른 글

MS-SQL 저장 프로시저 + 테이블  (0) 2007.10.23
MS-SQL with check option(범위 지정)  (0) 2007.10.23
MS-SQL index,partitioned view  (0) 2007.10.23
MS-SQL with schemabinding  (0) 2007.10.23
MS-SQL stored procedure  (0) 2007.10.23
MS-SQL view  (0) 2007.10.23
with schemabinding
create view tblgenre_viewtest_schemabinding with schemabinding, encryption as
select code from dbo.tblgenre_viewtest where code between 1 and 6

sp_helptext tblgenre_viewtest_schemabinding --개체 주석 암호화(encription)
sp_rename 'dbo.tblgenre_viewtest.code', 'id' --개체가 강제적으로 종속 관계에 참여하여 이름을 바꿀 수 없음(schemabinding)
sp_rename 'dbo.tblgenre_viewtest.name''genre_name'

select * from information_schema.views
use master
sp_helptext 'information_schema.views'

'정리없는자료 > DB' 카테고리의 다른 글

MS-SQL with check option(범위 지정)  (0) 2007.10.23
MS-SQL index,partitioned view  (0) 2007.10.23
MS-SQL with schemabinding  (0) 2007.10.23
MS-SQL stored procedure  (0) 2007.10.23
MS-SQL view  (0) 2007.10.23
MS-SQL 함수  (0) 2007.10.19
stored procedure
use student

create table m_genre(code int primary key, name varchar(50))
select * from m_genre
sp_columns m_genre

create proc m_genre_insert @g_code tinyint, @g_name nvarchar(40) as
insert into m_genre values(@g_code, @g_name)

sp_helptext m_genre_insert

exec m_genre_insert 1, '홍길동'
m_genre_insert '2','이산'

select * from m_genre

--varchar, char 비교
use pubs
select * from titles
declare @cname char(5) set @cname = 'T' select * from titles where title like rtrim(@cname) + '%'
declare @cname varchar(5) set @cname = 'T' select * from titles where title like (@cname) + '%'

--파라미터 기본값 명시
create proc spsearch @search nvarchar(80) ='%' as select title,type,price from titles where title like '%' + @search + '%'
spsearch 'you'
sp_helptext spsearch --원문형확인
create proc spsearch @search nvarchar(50) ='%' as select title,type,price from titles where title like '%' + @search + '%'  --수정

select name from sysobjects --sysobjects : 객체의 정보를 담고 있는 테이블
where name = 'spsearch'
sp_depends spsearch

-- 프로시저 삭제
drop proc spsearch

'정리없는자료 > DB' 카테고리의 다른 글

MS-SQL index,partitioned view  (0) 2007.10.23
MS-SQL with schemabinding  (0) 2007.10.23
MS-SQL stored procedure  (0) 2007.10.23
MS-SQL view  (0) 2007.10.23
MS-SQL 함수  (0) 2007.10.19
MS-SQL EM 제약설정  (0) 2007.10.19
--view
use pubs
select title,price,pub_id from titles
select pub_name,pub_id from publishers

select title,price,titles.pub_id,pub_name from titles join publishers on titles.pub_id = publishers.pub_id

create view viwtitle as
select title,price,titles.pub_id,pub_name from titles join publishers on titles.pub_id = publishers.pub_id --생성

select * from viwtitle --확인

sp_columns viwtitle
sp_helptext viwtitle

alter view viwtitle with encryption as --개체암호화(with encription)
select top 3 title,price,titles.pub_id,pub_name from titles join publishers on titles.pub_id = publishers.pub_id --수정

select * from viwtitle --확인

sp_helptext viwtitle
sp_tables

if exists(select name from sysobjects where name = 'viwtitle')
drop view viwtitle

create view viwtitle as
select top 3 title,price,titles.pub_id,pub_name from titles join publishers on titles.pub_id = publishers.pub_id --수정

select * from information_schema.views
select * from information_schema.tables --표준문법

alter view viwtitle as
select top 3 convert(varchar,title + '출판') as [책명],price as [가격],titles.pub_id as [출판사 번호],pub_name as [출판사 이름] from titles join publishers on titles.pub_id = publishers.pub_id
--convert varchar(30)
select * from viwtitle --확인

sp_columns viwtitle
sp_depends viwtitle --view 어떤 테이블이나 또 다른 어떤 뷰에 의존되고 있는지 확인


'정리없는자료 > DB' 카테고리의 다른 글

MS-SQL with schemabinding  (0) 2007.10.23
MS-SQL stored procedure  (0) 2007.10.23
MS-SQL view  (0) 2007.10.23
MS-SQL 함수  (0) 2007.10.19
MS-SQL EM 제약설정  (0) 2007.10.19
MS-SQL Check,Rule 제약(서술적,절차적)  (0) 2007.10.19
use pubs
character
select ascii('a'),char(97),nchar(63953)
-- NCHAR 유니코드로 주어진 문자를 정수로 반환
select 'a' +space(5) + 'b', 'a         b', -- 공백
select fname,charindex('a',fname) from employee
-- 문자열에서 지정한 식의 시작위치 반환
select fname, patindex('a%', fname) from employee -- a로시작되는 위치
--select fname, soundex('aria'), soundex(fname) from employee
select fname,replace(fname, 'a','b') from employee
--첫번째 문자열에서 두 번째 문자열을 찾아 세 번째 문자열로 변경
select fname,stuff(fname,1,3,'yy') from employee
-- 지정한 시작 지점에서 지정한 문자 길이를 삭제한 다음 다른 문자 집합을 삽입
select str(100.12345,5,2) -- 100.1
select fname, left(fname,2),right(fname,2) from employee -- Aria ->  Ar, ia
select fanme, substring(fname, 2,3) from employee
select ltrim('  abc', rtrim('abc   ') --공백없음
select len('korea'),len('대한민국'),len(fname), fname from employee
select lower('GOOD'), upper('good'), lower(fname), upper(fname) from employee
-- 대소문자 바꿈
select reverse('sea'),reverse('aes'),reverse(fname), fname from employee
select fname,datalength(fname) from employee
select fname, replicate(fname, 3) from employee
select convert(int, '`100') + 100, cast ('100' as int ) + 100 , '100'+'100'
select convert(varchar, 100) + '100', cast(100 as varchar) + '100', 100 + '100', '100' + 100
select fname, difference(fname, 'aria') from employee
digit
select -1.2 as 'no', abs(-1.2) as 'num'
select ceiling(10.3), ceiling(-10.3), floor(10.9), floor(-10.9), round(10.59,0),round(10.51,1),round(10.51,2)
select sin(30), cos(30), tan(30)
select degrees(pi()/2), radians(90), pi()
select exp(0), exp(1), log(10), log10(10)
select sqrt(4), power(4,2), square(4)
date
select getdate()
select year(getdate()), month(getdate()),day(getdate())
select datename(year,getdate()), datename(month, getdate()), datename(day,getdate())
select dateadd(day,1,getdate()),dateadd(day,-1,getdate())
select datediff(year,getdate(),'2007/01/01'),datediff(month,getdate(),'2007/01/01'), datediff(day,getdate(),'2007/01/01')
system
select current_user, user_name()
execute sp_who
select fullname from master..userinfo
select @@error
select @@rowcount
select host_id(), host_name() --hostprocess
select isnull(null, 0), isdate('2007-10-19'), isdate('100')
select isnumeric(10), isnumeric(getdate())
select newid(),newid(),newid()
select nullif(100,100), nullif(100,0)
select isnull(nullif(100,100),0), isnull(nullif(100,0),0)
identity
create table tbcltest( no int identity(1,1) primary key, name nvarchar(100))
sp_rename tbcltest, 'tbltest'
insert into tbltest(name) values('이산')
select @@identity+1/*현재*/, ident_current('tbltest') /*특정테이블*/
select coalesce(null,null,10,10),coalesce(10,null,20)
select getdate()
select dateadd(day,1,getdate())
select convert(char(20), dateadd(day,1,getdate()), 102)
select '내일은' + space(1)+rtrim(convert(char(20), dateadd(day,1,getdate()), 102)) + space(1) +'입니다'

'정리없는자료 > DB' 카테고리의 다른 글

MS-SQL stored procedure  (0) 2007.10.23
MS-SQL view  (0) 2007.10.23
MS-SQL 함수  (0) 2007.10.19
MS-SQL EM 제약설정  (0) 2007.10.19
MS-SQL Check,Rule 제약(서술적,절차적)  (0) 2007.10.19
MS-SQL 프로그래밍 요소  (0) 2007.10.17
사용자 삽입 이미지















사용자 삽입 이미지





















사용자 삽입 이미지

'정리없는자료 > DB' 카테고리의 다른 글

MS-SQL view  (0) 2007.10.23
MS-SQL 함수  (0) 2007.10.19
MS-SQL EM 제약설정  (0) 2007.10.19
MS-SQL Check,Rule 제약(서술적,절차적)  (0) 2007.10.19
MS-SQL 프로그래밍 요소  (0) 2007.10.17
MS-SQL union  (0) 2007.10.17
-- 서술적 방법의 Check 제약
use student
create table tblcheck(
jumin1 char(6) check (jumin1 like '[0-9][0-9][01][0-9][0-3][0-9]'),
jumin2 char(7) check (jumin2 like '[1-4][0-9][0-9][0-9][0-9][0-9][0-9]')
)
insert into tblcheck values('700101', '1999999')
insert into tblcheck values('701111', '2999999')
insert into tblcheck values('772111', '3999999')
sp_helpconstraint tblcheck

alter table tblcheck drop constraint CK__tblcheck__jumin1__70DDC3D8
alter table tblcheck drop constraint CK__tblcheck__jumin2__71D1E811

create table tblsungjuk( code varchar(8), jumsu int check (jumsu <=100))
sp_helpconstraint tblsungjuk

create table tblhp( hp char(3) check(hp in('010','011','019','016','018','017')))
sp_helpconstraint tblhp
사용자 삽입 이미지













insert into tblhp(hp) values ('011')
insert into tblhp(hp) values ('012')  --error

-- 절차적 방법으로 Rule제약 설정
create rule rjumin as @jumin like ('[0-9][0-9][01][0-9][0-3][0-9]-[1-4][0-9][0-9][0-9][0-9][0-9][0-9]')
create table tblrule(jumin char(13))
sp_bindrule rjumin,'tblrule.jumin' -- 바인딩
sp_help tblrule
sp_helpconstraint tblrule
sp_unbindrule 'tblrule.jumin' -- 바인딩 해제
drop rule rjumin

'정리없는자료 > DB' 카테고리의 다른 글

MS-SQL 함수  (0) 2007.10.19
MS-SQL EM 제약설정  (0) 2007.10.19
MS-SQL Check,Rule 제약(서술적,절차적)  (0) 2007.10.19
MS-SQL 프로그래밍 요소  (0) 2007.10.17
MS-SQL union  (0) 2007.10.17
MS-SQL like, having, between실습  (0) 2007.10.12
MS-SQL 2000에서 사용되는 규칙에는 어떤 것들이 있는지 알아보자.

/*  */ : 여러 줄 주석 처리를 할 때 사용한다.
-- : 한 줄 주석 처리를 한다.
SET : 변수에 초기값을 설정할 때 사용한다.
DECLARE : 변수를 정의할 때 사용한다.
IF~ELSE : 조건문
CASE : 다중 조건문
WHILE : 반복문
BEGIN~END : 조건문이나 반복문에서 수행할 코드들의 블록을 형성한다.
BREAK/CONTINUE : 반복문 중지/ 다시 시작
RETURN : 프로그램 끝냄
GOTO : 라벨 부분으로 이동
WAITFOR : 지연
EXECUTE : 함수, 프로시저등을 실행
PRINT : 주어진 메세지를 출력
RAISERROR : 오류 번호릐 메세지를 출력
FORMATMESSAGE : 오류 메세지를 만든다.



'정리없는자료 > DB' 카테고리의 다른 글

MS-SQL EM 제약설정  (0) 2007.10.19
MS-SQL Check,Rule 제약(서술적,절차적)  (0) 2007.10.19
MS-SQL 프로그래밍 요소  (0) 2007.10.17
MS-SQL union  (0) 2007.10.17
MS-SQL like, having, between실습  (0) 2007.10.12
MS-SQL join문 실습  (2) 2007.10.08
간단하게 한테이블을 조인하는 연습을 해본 후 union 문을 실습해보자.
use pubs
select distinct type from titles
select distinct pub_id from titles
select distinct t1.type from titles as t1 where t1.type in(select t2.type from titles t2 where t1.pub_id != t2.pub_id)

select distinct t1.title_id from titles t1, titles t2 where t1.pub_id != t2.pub_id

select s1.ord_num,  s1.title_id, s1.qty from sales as s1 where s1.qty < (select avg(s2.qty) from sales as s2 where s2.title_id = s1.title_id)
-----------------------------------------------------------------
insert into newsales
select * from sales
union all
select * from sales

select * into newsales from sales  where 1=0
--확인
select stor_id,ord_num, ord_date into s1 from sales
select stor_id as stor_no, ord_num, ord_date into s2 from sales

select * from s1 union select * from s2
select * from s1 union all select * from s2
--확인
select * from sales union select *,'' as qty, '' as payterms,'' as title_id from s1
-- 컬럼수가 맞지 않을경우 공백을 만들어준다.

'정리없는자료 > DB' 카테고리의 다른 글

MS-SQL Check,Rule 제약(서술적,절차적)  (0) 2007.10.19
MS-SQL 프로그래밍 요소  (0) 2007.10.17
MS-SQL union  (0) 2007.10.17
MS-SQL like, having, between실습  (0) 2007.10.12
MS-SQL join문 실습  (2) 2007.10.08
MS-SQL select, 함수실습  (0) 2007.10.08
쿼리분석기에서 실행해보세요~^^
use pubs
sp_tables
sp_columns titles
select * from titles
select title_id, title ,price from titles
where price < 20 order by price
select title_id,title from titles
where title_id not in('bu1032','bu1111','bu2075')
select title_id, price from titles
--where price >= 20 and price <=22
where price between 20 and 22
select title_id, pub_id, price from titles where price is not null
select title_id from titles
--where title_id like 'p[^c]%'
--where title_id like 'p_____'
--where title_id like 'p_[9][9][9][9]'
where title_id like '___[0-3]%'
-- where title_id not like '___[0-3]%'
select sum(price) as '합계', avg(price) as '평균', count(price) as '건수', count(*) as '총건수', max(price) as '최대값', min(price) as '최소값' ,type from titles
group by type having type = 'business' order by type

'정리없는자료 > DB' 카테고리의 다른 글

MS-SQL 프로그래밍 요소  (0) 2007.10.17
MS-SQL union  (0) 2007.10.17
MS-SQL like, having, between실습  (0) 2007.10.12
MS-SQL join문 실습  (2) 2007.10.08
MS-SQL select, 함수실습  (0) 2007.10.08
MS-SQL 쿼리분석기 연습  (0) 2007.10.06
각 행을 실행시켜 보세요~^^
sp_databases
use pubs

select * from sales --stor_id 공통
select * from discounts
select ord_num, sales.stor_id, discount from sales, discounts
where sales.stor_id = discounts.stor_id

select s.ord_num, s.stor_id, d.discount from sales as s join discounts as d
on s.stor_id =d.stor_id
and s.ord_num !='423LL922'

select  s.stor_id,s.ord_num, d.discount, t.stor_name
from sales as s /*left outer 현재없는것도 출력*/ join discounts as d
on s.stor_id = d.stor_id
/*left outer*/ join stores as t on s.stor_id = t.stor_id
/*and discount is not null*/

'정리없는자료 > DB' 카테고리의 다른 글

MS-SQL union  (0) 2007.10.17
MS-SQL like, having, between실습  (0) 2007.10.12
MS-SQL join문 실습  (2) 2007.10.08
MS-SQL select, 함수실습  (0) 2007.10.08
MS-SQL 쿼리분석기 연습  (0) 2007.10.06
ORACLE 내장함수  (0) 2007.08.03
  1. 2007.10.09 18:09

    비밀댓글입니다

    • rails 2007.10.09 23:04 신고

      먼저 찾아 뵙는다는게 제가 한발 늦었네요.
      이렇게 글남겨주셔서 정말 감사합니다. 타임코드님도 즐거운 10월되세요~^^

다음을 따라 해보면 쉽게 이해하실 수 있습니다.
MSSQL 설치시 기본적으로 생성되는 pubs 데이버베이스 입니다.
sp_databases
use pubs

sp_tables
select * from titles

select top 3 with ties title_id,price from titles order by price desc, title_id asc

select * from sales

select sum(qty) as '합계' , avg(qty) as '평균' , count(*) as '총건수', max(qty) as '최대값', min(qty) as '최소값' from sales

select ord_date,qty, title_id from sales where qty <= (select avg(qty) from sales) order by ord_date asc
select ord_date,qty, title_id from sales where qty+5 <= (select avg(qty) from sales) order by ord_date asc

select * from titles where price is null
select count(price), count(*) from titles

select title_id, isnull(price,0) from titles

select title_id, sum(qty) from sales group by title_id
/*having sum(qty) > avg(qty) */
having sum(qty) > (select avg(qty) from sales) -- 전체

select title_id, sum(qty) from sales where qty > 40 group by /*all*/ title_id

select ord_num, count(qty)  as '판매건'   from sales group by ord_num

select ord_num, qty from sales order by ord_num compute count(qty) by ord_num

select ord_num, qty from sales compute count(qty)

select type, pub_id, avg(price) from titles group by type, pub_id  with /*rollup*/ cube

'정리없는자료 > DB' 카테고리의 다른 글

MS-SQL like, having, between실습  (0) 2007.10.12
MS-SQL join문 실습  (2) 2007.10.08
MS-SQL select, 함수실습  (0) 2007.10.08
MS-SQL 쿼리분석기 연습  (0) 2007.10.06
ORACLE 내장함수  (0) 2007.08.03
Data dictionary view  (0) 2007.07.21
새 데이터베이스를 생성시 C:\Program Files\Microsoft SQL Server\MSSQL\data 다음 경로에 저장된다.
주석은 -- 로 처리되며, 쿼리분석기에서 실행은 단축키 f5, 검사는 ctrl+f5 이다.쿼리분석기가 실행된다면 다음을 순서대로 실행해보면 이해가 빠르겠다.

create database newstudent --newstudent라는 데이터 베이스를 만든다.
go
sp_databases
use newstudent

create table juso(
no int , name nvarchar(10), address nvarchar(10)
) -- 테이블을 만든다(번호, 이름, 주소)
go

alter table juso alter column address nvarchar(100)
sp_tables
sp_columns juso

insert into juso(no, name, address)
values(1,'홍길동', '구로구')
insert into juso(no, name, address)
values(2,'장길산','강남구')
insert into juso(no, name, address)
values(3,'이산', '종로구'); --입력/추가

select * from juso

update juso
set name = 'new홍길동' where no = 1

insert into juso(no, name, address) values(4,'강감찬"이름"','낙성대')
--structure query language 구조 질의어
--sql sequal
delete from juso where no=4

select * from juso order by no -- * all , aster

select *from juso where no = 1
select *from juso where no != 1 -- select *from juso where no <> 1

select *from juso where no < 3 order by no
select *from juso where no < = 3 order by no


select * from juso
--where no = 1 and address ='구로구'
--where no = 1 or address ='종로구'
--where no = 1 or no =2 order by no
--where no between 1 and 2
where no not between 1 and 2
--
select * from juso where address like '%로%' and no > 2
--
insert into juso(no, name, address) values(5,'태왕','')
insert into juso(no, name, address) values(6,'태왕',null)

select  * from juso  where address is not null
--where address is null
and address !=''

select  * from juso
--
delete from juso
where no = 5 and address=''

delete from juso
where no = 6 and address is null

select  * from juso order by no

select no as '번호', name as '이름', address as '주소' from juso

drop table juso
go
sp_tables
use master
drop database newstudent
go
sp_who
kill 53

'정리없는자료 > DB' 카테고리의 다른 글

MS-SQL join문 실습  (2) 2007.10.08
MS-SQL select, 함수실습  (0) 2007.10.08
MS-SQL 쿼리분석기 연습  (0) 2007.10.06
ORACLE 내장함수  (0) 2007.08.03
Data dictionary view  (0) 2007.07.21
ORACLE 날짜 넣기 및 검색방법  (0) 2007.05.22
ORACLE 내장함수
 
* abs() - 절대값구하기
array(배열) - 배열을 반환
asc() - 문자의 ANSI문자값을 반환
atn() - 아크 탄젠트로 반환
cbool() - boolean형식으로 반환
cbyte() - byte형식으로 반환
ccur() - currency형식으로 반환
cdate() - date형식으로 반환
cdbl() - double형식으로 반환
* chr() - asc()함수의 반대, ANSI문자를 일반문자로 변환
* cint() - interger형식으로 반환
clng() - long형식으로 반환
cos(각도) - 주어진 각도의 코사인 값을 반환
** createobject() - 자동화 인터페이스를 통해 다른 응용프로그램이나
프로그래밍 도구에 나타나는 객체에 대한 참조를 만들어 반환
cstr() - string형식으로 반환
** date() - 현재의 날자를 반환
dateserial(년,월,일) - 주어진 년,월,일에 대한 date형식을 반환
exp() - 주어진 수에대한 자연로그(승수로 거듭제곱하는 수) 밑인 e를 반환
filter(inputstring,값[,include[,비교]])) - inputstring는 검색할 문자열의 1차원 배열
include는 true나 false값을 가지는데, true로 설정되면 값발견시 그값을 가진
배열을 반환하고,flase로 설정되면 검색에 맞지않는 부분의 배열을 반환
비교는 비교형식을 나타내는 숫자값입니다
fix() - 주어진 수의 정수를 반환
* formatcurrency() - 원화 형식으로 반환 예) \1,000
formatdatetime() - 날자와 시간으로 형식화하여 반환
* formatnumber(숫자,소수자릿수) - 숫자로 형식화된 식을 반환 소숫점 몇째자리...
* formatpercent(수,소수자리수) - 퍼센트형식으로 반환 기본 소수2째자리까지.
hex() - 주어진 수를 16진수로 변환
hour() - 0과23 사이의 시간을 나타낸다
inputbox(프롬프트[,제목][,기본값][,xpos][,ypos][,helpfile,context]) - 대화상자
* instr([시작,]문자열1,문자열2[,비교]) - 시작은 문자열 검색 시작위치, 문자열1은 검색할
문자이며, 문자열2는 찾아야할 문자, 비교는 비교상수를 나타냄
* instrrev() - instr()과 반대로 문자 끝에서부터 검색
* int() - 주어진 수의 정수부분을 반환
isarray() - 주어진 변수가 배열인지 판단하는 boolean값을 반환
isdate() - 주어진 식이 날짜로 전환 될수 있는지 나타내는 boolean값을 반환
isempty() - 주어진 변수가 초기화 되었는지 나타내는 boolean값을 반환
isnull() - 주어진 식이 유효한 데이터가 있는지 없는지 boolean값을 반환
isnumberic() - 주어진 식이 숫자로 값이 정해질 수 있는지 나타내는 boolean값 반환
* isobject() - 자동화 객체를 참조하는지 여부를 나타내는 boolean값을 반환
join(목록[,구분기호]) - 배열에 포함되어 있는 여러 문자열을 결합하여 만든 문자열을 반환
모록은 1차원 배열이름, 구분기호는 문자열을 구분하기위해 사용하고 기본값은 "" 공백
lbound(배열이름[,차원]) - 주어진 배열에서 사용할 수 있는 가장 작은 첨자를 반환
배열이름은 배열 변수의 이름, 차원은 배열의 차원중 가장 작은 값을 나타냄
* lcase() - 주어진 문자를 소문자로 반환
** left(문자열,수) - 주어진 문자를 왼쪽으로부터 주어진 수만큼의 문자열을 반환
* len() - 주어진 문자열의 문자 개수를 세는 함수
loadpicture(그림파일의이름) - 그림객체를 반환
log() - 주어진수의 자연 로그를 반환
ltime() - 앞에 공백이 없는 문자열을 반환
** mid(문자열,시작[,길이]) - 주어진 문자열에서 주어진 위치에서부터의 길이만큼의 문자를 반환
minute(시간) - 시간에서 분값(0~59)을 반환
month(날짜) - 달의 값(1~12)을 반환
* monthname(달) - 주어진달의 숫자표현을 문자표현으로 바꾸어준다
msgbox(프롬프트[,단추][,제목][,helpfile,context]) - 프롬프트는 대화상자 안의 내용
단추는 단추모양,제목은 제목표시줄이름, helpfile은 도움말위치,context는 도움말 문맥번호
* now() - 현재 날자와 시간을 반환
oct() - 주어진 숫자의 8진수 값을 나타내는 문자를 반환
** replace(문자열,찾을문자열,바꿀문자열[,시작[,횟수[,비교]]]) - 문자열은 바꿀 대상, 찾을문자열은
문자열에서 바꾸어야 할 문자, 바꿀문자열은 찾은 문자열을 대치할 문자열, 시작은 검색시작위치
횟수는 바꾸는 횟수, 비교는 바꿀 때의 비교형식
** right(문자열,수) - 주어진 문자의 오른쪽으로 부터 주어진 수만큼의 문자를 반환
rnd(수) - 난수를 반환 수는 생략가능
round(수) - 반올림한 수를 반환, 소수 첫째자리 반올림
rtrim(문자열) - 뒤에 공백이 없는 문자열을 반환
scriptengine() - 사용중인 스크립트 언어를 나타낼때 사용
scriptenginebuildversion() - 사용중인 스크립트 엔진의 버전 수를 반환
scriptenginemajorversion() - 사용중인 스크립트 엔진의 주 버전 수를 반환
scriptengineminorversion() - 사용중인 스크립트 언어의 보조 버전 수를 반환
* second(시간) - 시스템 시간중 초값(0~59)을 반환
sgn(수) - 주어진 숫자의 부호를 나타내는 정수를 반환 0보다크면 1, 같으면 0, 작으면 -1을 반환
sin() - 주어진 라디안 값의 사인값을 반환
space(수) - 주어진 수만큼의 공백이 포함된 문자열을 반환
* split(문자열[,구분기호[,수[,비교]]]) - 문자열은 배열에 포함될 문자열, 구분기호는 문자열 구분하기
위한기호를 표시. 생략시 "" 공백, 수는 반환될 문자열의 수를 나타냄, 비교는 바꿀때의 비교형식
sqr(수) - 주어진 수의 제곱근을 반환
strcomp(문자열1,문자열2[,비교]) - 두개의 문자열을 비교하여 결과값을 반환
strreverse(문자열) - 주어진 문자열을 뒤에서부터 읽은 문자열을 반환
* string(수,문자) - 주어진 문자가 주어진 수만큼의 반복된 문자열을 반환
tan(수) - 주어진 라디안 값의 수 만큼의 탄젠트 값을 반환
* time() - 현재 시간을 반환
timeserial(시, 분, 초) - 주어진 시간,분,초에 대한 시간 값을 반환
timevalue(시간) - 시간이 포함된 date형식을 반환해주는 함수
trim(문자열) - 앞뒤 공백이 없는 문자열을 반환해 줄 때 사용
typename(변수이름) - 주어진 변수의 정보를 나타내는 문자열 반환
ubound(배열이름[,차원]) - 배열의 차원으로 가장 큰 첨자를 반환
* ucase(문자열) - 주어진 문자를 대문자로 바꾸어 줍니다
vartype(변수) - 변수의 형식을 나타내는 값을 반환
weekday(날짜[,firstday of week]) - 요일을 나타내는 정수를 반환, firstday for week는 첫재요일을 숫자로
weekdayname(요일,약어, firsrday of week) - 요일은 숫자, 약어는 약어의 유무의 부울값
* year() - 현재의 년도를 나타낼때 쓰임

'정리없는자료 > DB' 카테고리의 다른 글

MS-SQL select, 함수실습  (0) 2007.10.08
MS-SQL 쿼리분석기 연습  (0) 2007.10.06
ORACLE 내장함수  (0) 2007.08.03
Data dictionary view  (0) 2007.07.21
ORACLE 날짜 넣기 및 검색방법  (0) 2007.05.22
ORACLE 트리거,트리거백업,트리거업뎃,after,before  (0) 2007.05.10

Data_Dictionary_View  

`All_tables   : user access할수있는 모든 Table
`All_catalog
       : user access할수있는 모든 Table, Views, synonyms, sequence
`All_clusters
      : user access할수있는 모든 clusters
`All_col_comments : user
access할수있는 모든 Table,Views에 대한 칼럼comments
`All_col_privs
    : user에게 또는 Public에게 허용된 모든 칼럼에 대한 권한.
`All_col_privs_made : user
가 부여한 칼럼에 대한 권한.
`All_col_privs_recd : user
에게 또는 Public에게 허용된 모든 칼럼에 대한 권한.
`All_coll_types
    : user access 할수 있는 모든 collection type
`All_cons_columns :
제약조건에 관련된 칼럼, access할수 있는 대한 정보
`All_constraints
    : access할수 있는 테이블에 대한 제약조건.
`All_db_links
      : user access 할수 있는 데이터베이스 link
`All_def_audit_opts :
오브젝트가 생성될때 적용될수있는 default오브젝트감사내용.
`All_dependencies
  : user access할수있는 오브젝트간의 dependencies(참조,link)
`All_directories
    : user access할 수 있는 모든 directories (owner 는 항상 sys)
`All_errors
        : user access할수있는 모든 objects(view,procedure,package, function,packagebody) 에 대한 에러.
`All_ind_columns
  : user access할수있는 테이블에 대한 인덱스의 칼럼.
`All_ind_partitions : user
access할수있는 인덱스partition, partition에 대한 storage매개변수, Analyze명령에 의해 결정된 partition통계.
`All_indexes
      : user access할수있는 테이블의 인덱스. view의 통계를 수집하기위해, Analyze명령을 사용한다.병렬partition인텍스탐색을 지원한다.
`All_labels
        : system labels 에 대한 Oracle server view.
`All_libraries
      : user access할 수 있는 모든 libraries.
`All_lobs
          : user access할 수 있는 모든테이블에 포함된 LOBs.
`All_method_params : user
access할 수 있는 method와 그method parameter.
`All_method_results :
`All_nested_tables
  : user access할수있는테이블내의 Nested Table
`All_object_tables
  : user access할수있는테이블의모든정보.
`All_objects : user
access할수있는objects(index partition,table partition,package, package body, trigger)
`All_part_col_statistics : user
access할 수 있는 테이블partition에 대한 칼럼통계와 막대그래프화된 정보.
`All_part_histograms
  : user access할수있는 테이블partition histograms에 대한 histogram정보.
`All_part_indexes
      : user access할수있는 모든partition index partition정보.
`All_part_key_columns :user
access할수있는 partition objects partition key 칼럼에 대한정
`All_part_tables
        : user access할수있는partition Table에 대한 partition정보.
`All_refresh
            : user access할수있는모든 refresh groups.
`All_refresh_children
  : user access할 수 있는 refresh groups 안의 모든objects
`All_refs
                : user access할 수 있는 칼럼중 REF칼럼과, REF속성.
`All_registered_snapshots :
모든 등록된 snapshots.
`All_sequences
          : user access할수있는 sequences.
`All_snapshot_logs
      : 모든 snapshot logs.
`All_snapshot_refresh_times :
모든 snapshot refresh times.
`All_snapshots
          : user acces할수있는 모든 snapshots.
`All_source
              : user access할수있는 모든 stored objects text source.                 
`All_synonyms
          : user access할수있는 모든 synonyms.
`All_tab_col_statistics
  : 'User_tab_columns' view안의 정보에대한 칼럼통계와 그래프정보
`All_tab_columns
        : user access할수있는모든 table, views, clusters에 대한 칼럼. view를 활용하기위해서는 Analyze명령어를 사용한다.
`All_tab_comments
      : user access할 수 있는 모든 table, views에 대한 comments.
`All_tab_histograms
    : user access할수있는table, views에 대한 histograms.
`All_tab_partitions : user
access할수 있는 각각의 테이블partition에 대한 partition정보, storage parameter, Analyze명령에 의한 통계정보등을 서술한다.
`All_tab_privs
          : user혹은 PUBLIC가 부여받은 오브젝트권한.
`All_tab_privs_made
    : user가 부여한 user권한과 오브젝트권한.
`All_tab_privs_recd
    : user 또는 PUBLIC이 부여받은 오브젝트권한.
`All_tables
            : user access할 수 있는 모든 테이블. Analyze명령으로 이 view의 통계를 얻을 수 있다.
`All_triggers : user
소유의 trigger, user소유테이블의 trigger, 또는 user CREATE ANY TRIGGER 권한을 갖고있다면, 모든 트리거에 대한 정보.
`All_trigger_cols : user
소유의 trigger, user소유테이블의 trigger, 또는 user CREATE ANY TRIGGER 권한을 갖고있다면, 모든 트리거에 대한 칼럼정보.
`All_type_attrs : user
access할 수 있는 type attributes.
`All_type_methods : user
access할수있는type methods.
`All_types
      : user access할 수 있는 type.
`All_updatable_columns : join view
에서 update가능한 칼럼에 대한 정보.
`All_users
      : 데이터베이스의 모든 user에 대한 정보.
`All_views
      : user access할수있는view의 텍스트.
`Audit_actions
  : 감사추적type코드 정보.
`catalog
        : Oracle 5.0 version과의 호환정보를 포함한다. view의 사용은 추천할만하지 못하다.
`cat
            : user_catalog 에 대한 synonym.
`chained_rows
  : ANALYZE LIST CHAINED ROWS 명령에 대한 default table.
`clu
            : user_clusters 테이블의 synonym.
`code_pieces
    : dba_object_size user_object_size view create 시에 사용됨.
`code_size
      : dba_object_size user_object_size view create 시에 사용됨.
`col
            : Oracle 5.0version 호환정보를 포함하고 있다.
`cols
            : user_tab_columns view synonym.
`column_privileges : user
가 부여한권한,부여받은권한, owner인권한, 또는 PUBLIC에게 부여받은 권한에 대한 칼럼정보.
`Dba_2pc_neighbors :
진행중인 트랜잭션에 대한 연결 및 종료에 대한 정보.
`Dba_2pc_pending
  : recovery를 기다리는 분산된트랜잭션에 대한 정보.
`Dba_all_tables
      : 데이터베이스내의 모든테이블(object table, relational table).
`Dba_audit_exists
  : "AUDIT NOT EXISTS" and "AUDIT EXISTS"에 의해 생성된 감사추적요소.
`Dba_audit_object
  : 시스템내의 모든 object에 대한 감사추적기록.
`Dba_audit_session
  : 세션연결과 종료에 관련된 모든 감사 추적기록.
`Dba_audit_statement : GRANT, REVOKE, AUDIT, NOAUDIT, ALTER SYSTEM
관련된 감사추적기록.
`Dba_audit_trail
  : 모든 감사추적요소.
`Dba_blockers
  : 누군가가 스스로 걸지않은 lock이 해제되기를 기다리는 session정보.
`Dba_catalog
    : 모든 데이터베이스 table, views, synonyms sequence에 대한 정보.
`Dba_clu_columns : cluster
칼럼과 table칼럼의 mapping정보.
`Dba_clusters
  : 데이터베이스내에 있는 모든 cluster.
`Dba_col_comments :
데이터베이스내의 모든 table, views의 칼럼에대한 comments.
`Dba_col_privs :
데이터베이스내의 칼럼에 대한 모든권한.
`Dba_coll_types :
데이터베이스내의 모든 collection type, VARRAYs, nested tables,object tables 등에 대한 정보.
`Dba_constraints
    : 모든테이블에 대한 constraint(primary, check, unique, referential integrity, with check option on a view, with read only on a view) 정보.
`Dba_cons_columns : constraint
정의안에 있는 access가능한 칼럼에 대한 정보.
`Dba_data_files
      : 데이터베이스파일에 관한 정보.
`Dba_db_links
      : 데이터베이스내의 모든 Link.
`Dba_Ddl_locks
    : 데이터베이스내의 모든 DDL lock DDL lock이 현저하게 요구되는 사항에 관한정보.
`Dba_dependencies
  : object 에 대한 Dependence.(REF, HARD)
`Dba_directories
    : 데이터베이스내의 모든 directory objects.
`Dba_Dml_locks
    : 데이터베이스내에 구성된모든 DML lock DML lock 현저하게 요구되는사항에 관한정보.
`Dba_errors
      : 데이터베이스내의 저장된 object에 대해 가장최근에 발생된 error.
`Dba_exp_files
  : export파일에 대한 정보.
`Dba_exp_objects :
점진적으로 export 되고있는 object에 대한 정보.
`Dba_exp_version :
가장최근에 export session에 대한 version 정보.
`Dba_extents
      : 데이터베이스내의 모든 세그먼트를 이루는 extents`대한 정보.
`Dba_free_space
  : 모든 테이블스페이스내의 free extents의 정보.
`Dba_free_space_coalesced :
테이블스페이스내의 합쳐진 공간에 대한 통계정보.
`Dba_indexes
  : 데이터베이스내의 모든 index. 통계정보를 얻기위해 Analyze를 사용.
`Dba_ind_columns :
모든테이블과 클러스터에서 인덱스를 구성하는 칼럼에 대한정보.
`Dba_ind_partitions :
각각의 index파티션에 대해서, 파티션정보, 파티션에대한 storage 매개변수, Analyze에 결정된 파티션통계자료.
`Dba_jobs
  :  데이터베이스에 있는 모든 Jobs.
`Dba_jobs_running
  : 데이터베이스내에 현재 실행중인 모든 Jobs.
`Dba_libraries
      : 데이터베이스내의 모든 libraries.
`Dba_lobs
          : 모든 테이블에 포함된 LOBs.
`Dba_locks
          : 데이터베이스내에 생성된 모든 lock, latch lock,latch 현저하게 요구되는 사항에 대한 정보.
`Dba_method_params
  : 데이터베이스내에 type에 대한 method 매개변수.
`Dba_method_results
  : 데이터베이스내에 type에 대한 method results.
`Dba_nested_tables
    : 모든테이블내에 포함된 nested table에 대한 정보.
`Dba_object_size
      : PL/SQL object에 대한 size, bytes.
`Dba_object_tables :
데이터베이스내에 모든 object tables.
`Dba_objects
      : 데이터베이스내에 모든 objects.(index partition, table partition,package,package_body,trigger)
`Dba_obj_audit_opts
    : 모든 table, view에 대한 감사 option.
`Dba_part_col_statistics
  : 모든 table 파티션에 대한 칼럼통계와 그래프정보.
`Dba_part_histograms
    : 모든 table 파티션의 histogram에 대한 데이터(endpoint).
`Dba_part_indexes
      : 모든 partition index에 대한 정보.
`Dba_part_key_columns :
모든 partition object에 대한 분할키칼럼정보.
`Dba_part_tables
        : 모든 partition table에 대한 정보.
`Dba_priv_audit_opts
  : 시스템과 user에 의해 감사를 받고있는 시스템 privileges.
`Dba_profiles
          : 모든 profiles과 해당 profile limit을 나타냄.
`Dba_queue_schedules
  : 메시지를 전달하는 schedule.
`Dba_queue_tables
      : 데이터베이스내에 생성된 모든 queue테이블의 queue type name type. 
`Dba_Queus
            : 데이터베이스내의 모든 queue에 대한 동작특성.
`Dba_rchild
              : refresh group 안의 모든 children object.
`Dba_refresh
            : 모든 refresh  group 에 대한 정보.
`Dba_refresh_children
    : refresh group 안의 모든 object에 대한 정보.
`Dba_refs
  :  데이터베이스내의 모든 테이블의 REF칼럼과, REF 속성을 가진 칼럼.
`Dba_refistered_snapshot_groups :
모든 snapshot 사본 그룹.
`Dba_registered_snapshots
  : 지역테이블의 원격snapshot 에 대한 정보.
`Dba_rgroup
                : 모든 refresh group.
`Dba_roles
                  : 모든 데이터베이스내에 존재하는 roles.
`Dba_role_privs
              : user role에 부여된 role에 대한 정보.
`Dba_rollback_segs
          : rollback segments 에 대한 정보.
`Dba_segments
  : 모든 데이터베이스 segment에 대한 할당된 storage에 대한 정보.
`Dba_sequences
  : 모든 데이터베이스내의 sequences 에 대한 정보.
`Dba_snapshot_logs
          : 모든 데이터베이스내의 snapshot_logs.
`Dba_snapshot_refresh_times : snapshot refresh
한 시간.
`Dba_snapshots
              : 모든 데이터베이스내의 snapshots.
`Dba_source
                  : 모든 데이터베이스내의 저장object source를포함.
`Dba_stmt_audit_opts
        : system, user에 의한 현재의 감사option에 대한 정보.
`Dba_synonyms
              : 데이터베이스내의 모든 synonyms
`Dba_sys_privs
        : user에게 부여된 system privilege role.
`Dba_tab_col_statistics : Dba_tab_columns view
에 있는정보에 대한 칼럼통계와 그래프정보
`Dba_tab_columns
    : 모든 table, view, cluster에 대한 칼럼정보. Analyze명령어사용.
`Dba_tab_comments
  : 데이터베이스내의 모든 table, view에 대한 주석.
`Dba_tab_histograms
  : 모든 table의 칼럼에 대한 histogram.
`Dba_tab_partitions
    : 각각의 table partition에 대해서, partition level partition정보와,
          partition storage매개변수 ,Analyze 에의해 결정된 여러 partition통계정보.
`Dba_tab_privs
  : 모든 데이터베이스내의 object에 부여된 권한.
`Dba_tables
      : 모든 데이터베이스내의 관계형테이블에 관한정보.Analyze 통계정보를  얻을수 있다.
`Dba_tablespaces :
모든 테이블스페이스에 관한정보.
`Dba_triggers
    : 모든 데이터베이스내의 trigger 정보.
`Dba_trigger_cols :
모든 trigger에서 사용된 칼럼정보.
`Dba_ts_quotas
  : 모든 user에게 할당된 tablespace.
`Dba_type_attrs
  : 데이터베이스내의 type에 대한 속성.
`Dba_type_methods :
데이터베이스내의 모든 type에 대한 methods.
`Dba_types
          : 데이터베이스내의 모든 추상적데이터type.
`Dba_updatable_columns : join view
에서 데이터베이스관리자가 update할수있는칼럼정보.
`Dba_users
  : 데이터베이스내의 모든 user정보.
`Dba_views
  : 모든 데이터베이스내의 view text.
`Dbms_alert_info
      : 등록된 alert정보.
`Dbms_lock_allocated :
사용자에게 할당된 lock정보.
`Deptree
    :  utldtree.sql 에의해 생성되며, object dependency tree정보를 포함함.
          'Sys' user인 경우. object에 관련된 공유커서를 나타내고,
          다른 user인 경우공유커서이외의 object를 나타낸다.
          다른 user는 공유커서정보를 얻기위해, Sys.deptree access할수있다.

`Dictionary
      :  data dictionary table, view에 대한 정보.
`Dict_columns
    :  data dictionary table, view에 대한 칼럼.
`Error_size
      :    Dba_obejct_size user_obejct_size view create 할때 사용된다.
`Exceptions
      :    무결성제약조건에 위배되는 정보를 포함. utlexcpt.sql 로 생성.
`File_lock
        :  병렬서버view. 초기화파라미터 GC_FILE_TO_LOCKS 에 명시된,
          데이터파일에 PCM lock mapping정보.
`File_ping :
병렬서버view.각데이타파일에 할당된 block의 수. 
          GC_FILES_TO_LOCKS 최적값을 구하기 위해 현존하는 데이터파일의
          access방법을 결정하는데 이 정보를사용할 수 있다.
`FILEXT$
  :  DBA_DATA_FILES 와 동일. (DBA_DATA_FILES의 사용을 추천)
`GLOBAL_NAME :
현제 데이터베이스의 유일한 이름.
`HS_ALL_CAPS
  : 모든 비 Oracle Data store (FDS) 와 관련된 특성에 관한정보.
`HS_ALL_DD
    : 모든 비 Oracle Data store(FDS)에 대한 Data dictionary.
`HS_ALL_INITS
  : Oracle Data store(FDS)에 대한 초기화 매개변수.
`HS_BASE_CAPS
  : Oracle Data store(FDS)에 대한 기본특성에 관한정보.
`HS_BASE_DD
    : Oracle Data store(FDS)에 대한 Data dictionary.
`HS_CLASS_CAPS :
Oracle Data store(FDS)에 포함된 class-specific 특성정보.
`HS_CLASS_DD
  : Oracle Data store(FDS) class_specific data dictionary.
`HS_CLASS_INIT
  :  Oracle Data store(FDS) class-specific 초기화 매개변수.
`HS_EXTERNAL_OBJECT_PRIVILEGES : user
에게 부여된 object권한.
`HS_EXTERNAL_OBJECTS : oracle server
에서 access가능한 external obejct.
`HS_EXTERNAL_USER_PRIVILEGES :
어느 특정object에 국한되지않은 모든
                                          부여된권한
`HS_FDS_CLASS
  : oracle (FDS) class 에 관한 정보.
`HS_FDS_INST
    : oracle (FDS) instance에 관한정보.
`HS_INST_CAPS
  : instance-specific 특성정보.
`HS_INST_DD
    : oracle (FDS) instance-specific data dictionary 변경정보.
`HS_INST_INIT
    : oracle (FDS) instance-specific 초기화 매개변수정보.
`IDEPTREE
  : UTLDTREE.sql 로 생성하고, 관련tree를 나타냄.
              Deptree의 자동정렬버젼.
`INDEX_HISTOGRAM
  :  Analyze index...validate structure 명령에 대한정보.
`INDEX_STATS
          : 마지막 Analyze index..validate structure 명령에 대한정보.
`NLS_DATABASE_PARAMETERS :
데이터베이스의 NLS 매개변수.
`NLS_INSTANCE_PARAMETERS
  : instance NLS 매개변수.
`NLS_SESSION_PARAMETERS
    : user session NLS 매개변수.
`OBJ
  :  user_objects synonym.
`PARSED_PIECES
  :  Dba_object_size, User_object_size view를 생성시에 필요.
`PARSED_SIZE
    :  Dba_obejct_size, User_object_size view를 생성시에 필요.
`Plan_table
  :  explain plan의 결과에 대한 table. utlxplan.sql로 생성.
`Product_component_version
  :  Oracle 제품군의 버전과 상태설명.
`Pstubtbl
  :  Pstub utility에 의해 생성된 stub에 관한정보.
`Publicsyn
  :  public synonym 에 관한 정보.
`Public_dependency
  :  object와 관련된 dependencies.(parent object)
`Resource_cost
  :  각각의 resource에 대한 cost.
`Resource_map
  :  각각의 resource에 대한 정보.(resource name, resource number)
`Role_role_privs
  :  다른 role에 부여된 role정보.(user access가능한 role에 한해)
`Role_sys_privs
  : 다른 role에 부여된 system role정보(user access가능한role에 한해)
`Role_tab_privs
  : 다른 role에 부여된 table privileges정보.
                    (user access가능한role에 한해)
`SEQ
            :  user_sequences synonym.
`Session_privs
    : 현재 user에게 사용가능한 권한.
`Session_roles
    : 현재 user에게 사용가능한 roles.
`Source_size
    :  Dba_object_size, User_object_size view를 생성시 필요.
`Stmt_audit_option_map
  : 감사 option type code정보.
`Syn
            : user_synonyms 에 대한 synonym.
`Synonyms
      : Oracle ver 5.와 호환성을 포함. not recommend
`Syscatalog
      : Oracle ver 5.와 호환성을 포함. not recommend
`Sysfiles
        :  Oracle ver 5.와 호환성을 포함. not recommend
`Syssegobj
      : Oracle ver 5.와 호환성을 포함. not recommend
`System_privilege_map
  :  system privilege code에 대한 정보.
`Sys_objects
  : object ID object type 그리고 segment data block주소를 매핑하는정보.
`Tab
            : Oracle ver 5.와 호환성을 포함. not recommend
`Table_privileges : user
가 부여한, 부여받은, 소유한, 그리고 PUBLIC으로
        부여된 object 권한정보. Oracle ver 6.과 호환성을 포함.    not recommend.
`Table_privilege_map
  :  access 가능한 권한code/권한명칭 정보.
`Tabs
                  :  User_tables synonym.
`Tabquotas
              : Oracle ver 5.와 호환성을 포함. not recommend
`Trusted_servers
      : 분산환경에서 서버가 신뢰할만한지를 나타냄.
`Tp_pitr_check
        : catpitr.sql 에 의해 생성. 테이블스페이스의 point-in-time복구를
          방해할지도 모르는 dependencies혹은 restriction에 관한 정보제공.
`Ts_pitr_objects_to_be_dropped
  : 테이블스페이스의 point-in-time복구수행의 결과
          손실된 object에 대한 정보. (point-in-time recovery의 경우만 해당).
`User_all_tables
        : user가 사용가능한 테이블(object table, relational table)정보.
`User_arguments
      : user access가능한 object의 매개변수정보.
`User_Audit_object
    : cataudit.sql로 생성. object에 관련된 감사추적기록.
`User_Audit_session
  : cataudit.sql로 생성. user의 연결/종료에 관련된 감사추적기록.
`User_Audit_statement : cataudit.sql
로 생성. user에 의해 실행된 GRANT,REVOKE,
              AUDIT, NOAUDIT, ALTER SYSTEM 명령에 대한 감사추적기록.
`User_Audit_trail
      : user와 관련된 전반적인 사항의 감사추적기록.
`User_catalog
          : user 소유의 table, views, synonyms, sequences 의 이름과 type.
`User_clusters
          : user소유의 cluster.
`User_clu_columns
    : user table 의 칼럼과 cluster칼럼과의 매핑테이블.
`User_col_comments
  : user table, view의 칼럼에 대한 주석.
`User_col_privs
        : user 가 소유한, 부여한, 부여받은 칼럼에 대한 권한.
`User_col_privs_made : user
소유 object의 칼럼에 대한 권한.
`User_col_privs_recd
  : user가 부여받은 칼럼에 대한 권한.
`User_coll_types
      : user가 명명한 collection type정보.
`User_constraints
      : user소유 테이블의 제약조건정의.
`User_cons_columns
  : user소유 제약조건에 정의된 칼럼에 대한정보.
`User_db_links
        : user소유 데이터베이스링크에 대한정보.
`User_dependencies
  : user소유 object에 대한 dependencies.
`User_errors
          : user소유 저장 object에 대한 현재의 에러.
`User_extents
          : user소유 object에 속하는 세그먼트의 extent 정보.
`User_free_space
      : user access가능한 테이블스페이스내의 free extent 정보.
`User_indexes
    : user 소유의 indexes. Analyze명령을 사용해야함. 병렬서버를 지원.
`User_ind_columns
  : user소유 index 또는 user소유 table 의 칼럼정보.
`User_ind_partitions
  : user소유의 index partition각각에 대한설명과, partition정보,
        partition storage 매개변수, Analyze명령으로 결정된 여러partition통계
`User_jobs
          : user소유의 모든 job.(export/import, execution)
`User_libraries
      : user소유의 모든 libraries .
`User_lobs
          : user소유의 table에포함된 LOBs정보.
        internal LOBs( BLOBs, NCLOBs) 만해당, external LOBs(i.e, BFILES)은 아님.
`User_method_params
  : user type method 매개변수.
`User_method_results
  : user type method results.
`User_nested_tables
    : user소유 테이블에 포함된 nested tables.
`User_object_tables
      : user가 사용가능한 object table.
`User_objects
            : user소유의 object.(index partition, table partition, package,
                          packagebody, trigger)
`User_object_size
        : user소유의 PL/SQL object.
`User_obj_audit_opts
      : cataudit.sql로 생성. user소유의 table,view에 대한 감사option
`User_part_col_statistics : user
소유의 tablepartition정보에 대한 칼럼통계와 그래프정보.
`User_part_histograms
  : user access할수있는 table partition histogram에 대한
                        그래프데이터(end-pointer).
`User_part_key_columns : user
소유의 partition object partition key칼럼에 대한정보.
`User_part_indexes
      : 모든 user소유의 partition index partition정보.
`User_part_tables
        : user소유의 partition table에 대한 object 레벨의 partition정보.
`User_password_limits
  : user에게 적용된 password profile parameter.
`User_queue_tables
      : user소유 스키마에 생성된 queue table내부의 queues정보.
`User_Queues
            : user스키마의 모든 queue에 대한 동작 특성을 나타냄.
`User_refresh
            : 모든 refresh group.
`User_refresh_children
    : user가 소유한 refresh group 내부의 object에 관한정보.
`User_refs
                : user소유테이블의 object type칼럼중 REF칼럼, REF속성.
`User_resource_limits
    : 현재 user resource 한계.
`User_role_privs
          : user에게 부여된 roles.
`User_segments
  : user오브젝트에 포함된 데이터베이스 segments storage할당정보.
`User_sequences
  : user 소유의 sequences.
`User_snapshots
  : user 가 볼수있는 snapshots.
`User_snapshot_logs : user
소유의 모든 snapshot logs.
`User_source
        : user소유 저장 objects 의 모든 text source.
`User_snapshot_refresh_times
    : snapshot refresh time.
`User_synonyms
                : user소유의 synonym.
`User_sys_privs
                  : user에게 부여된 system 권한.
`User_tab_col_statistics
        : user_tab_columns view에 대한 칼럼통계와
                              그래프정보를  나타냄.
`User_tab_columns
  : user소유의 table, view, cluster의 칼럼정보.(Analyze명령사용)
`User_tab_comments
  : user소유의 table, view에 대한 주석.
`User_tab_histograms
  : user소유 table의 칼럼에 대한 histogram.
`User_tab_partitions
  : user소유 table partition에 대한, partition 레벨의 분할정보와,
          partition storage매개변수, Analyze에 의해 집계된 여러통계정보.
`User_tab_privs
      : user가 소유한, 부여한, 부여받은 object에 대한 권한 정보.
`User_tab_privs_made : user
가 소유한 object에 관한 모든 권한.
`User_tab_privs_recd
  : user가 부여받은 object 권한정보.
`User_tables
          : user소유의 relational table에 대한 정보. (Analyze명령사용)
`User_tablespaces
    : user access 가능한 tablespaces에 대한 설명.
`User_triggers
        : user가 소유한 triggers 정보.
`User_trigger_cols
    : user가 소유한 또는 user테이블에 있는 trigger안의 column 정보.
`User_ts_quotas
      : user에게 할당된 tablespace quotas 정보.
`User_types
          : 테이블안의 user소유의 type.
`User_type_attrs
      : user type의 속성을 나타냄.
`User_type_methods
  : user type methods를 나타냄.
`User_updatable_columns : join view
에서 사용자에게 update가 허용된 칼럼정보.
`User_users
          : 현재 user에 관한 정보.
`User_views
          : user 소유의 view에 대한 text.
`FILEXT$
    : 데이터파일의 AUTOEXTEND ON으로 변경했을 때 처음 생성.
`V$ACCESS
  : 현재 데이터베이스내의 lock이걸린 object  object
                access 하려는 session id.
`V$ACTIVE_INSTANCES :
현재 데이터베이스내의 Mount
                모든 인스턴스에대하여 인스턴스 이름과, 번호를 매치.
`V$AQ
        : 데이터베이스내의 모든 Queue에 대한 통계.
`V$ARCHIVE : Archive
에 필요한 redo log file에 대한 정보.
      각각의 행은 하나의 thread에 대한 정보이다. V$LOG도 동일한정보.
`V$ARCHIVE_DEST :
현재의 instance에서, 모든 archive log destination, 
                현재값, mode, status.
`V$ARCHIVED_LOG : archive log
이름을 포함하는 controlfile에 대한 archive log 정보,
      archive log 기록은 online redo log가 성공적으로 저장되었거나,
      clear(log clear되면, name칼럼은 null이 된다)된후 insert된다.
`V$BACKUP
  : 모든 online 데이터파일의 backup 상태를 나타낸다.
`V$BACKUP_CORRUPTION :
데이터파일의 backup 중 에러정보를 나타낸다.
      에러들은 control 파일과 achived log backup 에 포함되지 않는다.
`V$BACK_DATAFILE : control
파일에서 datafile controlfile backup정보를 보여줌.
`V$BACK_DEVICE
  : 지원되는 backup 디바이스정보.
`V$BACK_PIECE
    : controlfile에서 backup piece에 대한 정보를 포함.
      각각의 backup set 은 하나 또는 그이상의 backup piece로 구성된다.
`V$BACKUP_REDOLOG : controlfile
에서 backup set의 저장된 log에 대한 정보.
        Online redo logs는 곧바로 backup 되지 않는다: 먼저 disk에 저장된후 backup
        된다. 저장된 log backup set 은 하나 또는 그이상의 logs들로 구성된다.
`V$BACKUP_SET
    : controlfile에서 backupset 정보를 보여줌.
      backup set 행은 backup set이 성공적으로 완료되었을 때 insert된다.
`V$BGPROCESS
      : 백그라운드 프로세스 정보.
`V$BH
                  : 병렬서버 view이다.
                          SGA내의 모든 버퍼에 대한 ping의 상태와 수를 나타낸다.
`V$BUFFER_POOL
    : 인스턴스내에서 사용가능한 모든 버퍼풀에 대한정보.
`V$CACHE
  : 병렬서버 view이다.
              특정데이타베이스object에 관련된 현재의 인스턴스의
              SGA내부의 각각의 block에 대한 block header에 대한 정보.
`V$CACHE_LOCK :
병렬서버view. platform-specific lock manager 식별자를 제외하면,
              V$CACHE와 유사하다.
`V$CIRCUIT
  : 가상 circuit에 관한 정보이며, 가상circuit dispatcher server
              통한 데이터베이스와의 user 연결을 말한다.
`V$CLASS_PING :
각각blockclass마다 ping된 블록의 수를나타낸다.
              다른class블록의 충돌을 비교하기위해 사용.
`V$COMPATIBILITY :
이전버전으로 downgrade를 방지하기위해
        데이터베이스인스턴스에 의해 사용된특성들을 설명.
        다른 인스턴스가 갖고있는 특성에 영향을 미치지 않으며,
        데이터베이스가 완전히 정지한이후에도 존재하지 않는 일시적인
        비호환성들을 포함할수도 있다.
`V$COMPATSEG
  : 이전버전으로 되돌아가는 것을 막기위한 데이터베이스에서
                      사용되는 영구적인 특성들.
`V$CONTROLFILE
  : 컨트롤파일의 이름과 상태.
`V$CONTROLFILE_RECORD_SECTION
  : 컨트롤파일의 record에 대한 정보.
`V$COPY_CORRUPTION
  : 컨트롤파일로부터 데이터파일의 복사불량에 대한 정보.
`V$CURRENT_BUCKET
  : 캐쉬내의 버퍼의 수가 감소할때 발생할 수 있는
                        캐쉬손실의 경우수를 예상하는데 유용.
`V$DATABASE
        :    control file 로부터 데이터베이스정보를 포함.
`V$DATAFILE
    : 컨트롤파일로부터데이타파일에대한 정보를 포함.
`V$DATAFILE_COPY
    :컨트롤파일로부터 데이터파일의 복사에 대한 정보를포함.
`V$DATAFILE_HEADER :
데이터파일헤더에 대한 정보.
`V$DBFILE :
데이터베이스를 구성하는 모든 데이터파일.
              대신에 V$DATAFILE 추천한다.
`V$DBLINK :
세션에 의해 open된 데이터베이스링크에 대한 설명.
        이 데이터베이스링크들은 닫히기전에 commit되거나 rollback되어야만 한다.
`V$DB_OBJECT_CACHE : library cache
cach된 데이터베이스오브젝트를 나타냄.
`V$DB_PIPES
            : 데이터베이스내에 현재 운영중인 pipe에 대한 설명.
`V$DELETED_OBJECT
  : 삭제된 archived 로그, 데이터파일 copy,
        컨트롤파일에서 백업piece 에 대한 정보. 이뷰의 목적은 복구목록의
        재동조작업을 최적화하는 것이다. archived 로그나, 데이터파일 copy,
        백업piece 등이 삭제될때는 해당하는 행이삭제되었음이 표시된다.
`V$DISPATCHER
        : dispatcher 프로세스에 관한 정보.
`V$DISPATCHER_RATE
  : dispatcher 프로세서에 관련된 확률통계.
`V$DLM_CONVERT_LOCAL
  : lock 변환작업에 대한 경과시간.
`V$DLM_CONVERT_REMOTE
  : 원격 lock변환작업에 대한 경과시간.
`V$DLM_LATCH
              : DLM 잠금에 대한 통계.
          각각의 잠금에 대한 통계보다는, 각 타입에 대한 총계를 포함.
          개념적으로 IMM_GETS/TTL_GETS 값은 1에 가깝게 된다.
`V$DLM_LOCKS :
병렬서버 view이다. 블록화되었거나, 다른 것을
            블록화하고있는 lock manager에 알려진 모든  lock에 대한 정보.
`V$DML_MISC
        : 잡다한 DLM 통계에 대한 정보.
`V$ENABLEDPRIVS:
사용가능한 권한에 대한정보, 이들권한은
            SYS.SYSTEM_PRIVILEGES_MAP테이블에 존재해야만 한다.
`V$ENQUEUE_LOCK :
큐에 대기상태인 오브젝트에의해 소유된 모든 lock
          view의 칼럼은 V$LOCK의 칼럼과 동일하다.
          자세한 것은 V$LOCK을 참고.
`V$EVENT_NAME :
  wait event 에 대한 정보.
`V$EXECUTION
  :  병렬 질의 실행에 대한 정보.
`V$EXECUTION_LOCATION :
병렬 질의 실행 트리의 위치에 대한 자세한 정보.
`V$FALSE_PING
  : 병렬서버view. ping에 실패지도 모르는 버퍼에 대한 정보.
                    , 10회이상ping된 다른 버퍼와
      동일한 lock으로 잠겨있는 버퍼를 말한다.
      ping이 실패로 판명된 버퍼는 lock충돌을 감소시키기위해
      1-44페이지의 "GC_FILES_TO_LOCK"에 다시 매핑된다.
`V$FILE_PING
  : 데이터파일마다 ping된 블록수를 보여줌. 정보는 현존하는
        데이터파일에 대한 access패턴을 결정하는데 and,
        데이터파일블록을 PCM lock에 새로 매핑하는것을 결정하는데 사용된다.
`V$FILESTAT
    : 파일 read/write 통계.
`V$FIXED_TABLE :
데이터베이스내의 모든 동적실행테이블, views, 유도테이블.
      실제테이블을 참조하는 약간의 V$테이블은 리스트에 없다.
`V$FIXED_VIEW_DEFINITION : (V$
로 시작하는)고정view에 대한 설명.
      유의해서 사용해야한다.
`V$GLOBAL_TRANSACTION
    : 현재 활동중인 트랜잭션에 대한 설명.
`V$INDEXED_FIXED_COLUMN : index
된 동적실행테이블(X$ table)의 칼럼에
      대한 설명.  X$ table은 경고없이 변경할수있다.
      view는 보다 효과적으로 고정뷰(V$view)에 대한
`V$INSTANCE :
현재의 인스턴스의 상태를 나타냄.
        V$INSTANCE의 버전은 V$INSTANCE의 초기버전과 호환성이 없다.
`V$LATCH
    : 하위 잠금에 대한 통계와 상위 잠금에 대한 요약통계.
      , 상위잠금에 대한 통계는 그 하위잠금에 대한 각각의 통계를 포함한다.
`V$LATCHHOLDER :
현재잠금에 대한 정보.
`V$LATCHNAME
  :  V$LATCH 에 있는 잠금에 대한 디코드된 잠금이름에 대한
      정보. V$LATCHNAME의 행들은 V$LATCH의 행들과 1:1로 대응된다.
`V$LATCH_CHILDREN :
하위잠금에 대한 통계를 포함. 
      V$LATCH의 칼럼에 child#  칼럼이추가되었다.  LATCH#칼럼이 서로
      동일하다면, 하위잠금이 동일한 상위잠금을 갖는 것이다.
`V$LATCH_MISSES
  : 잠금을 획득하는데 실패한 시도에 대한 통계.
`V$LATCH_PARENT :
상위잠금에 대한 통계.
                        V$LATCH_PARENT 칼럼은 V$LATCH칼럼과 동일하다.
`V$LIBRARYCACHE : library cache
의 실행과 활동통계.       
`V$LICENSE
          : license 한계에 대한 정보.
`V$LOADCSTAT
      : 직접적재하는동안 컴파일된 SQL*loader 통계정보.
      이테이블에대한 어떤 Select 문도 "no rows returned" 결과가 나오는데,
      왜냐면, 동일한 시간에 데이터를 적재하면서, 쿼리를 날릴수 없기 때문이다.

`V$LOCK
      : 현재 Oracle 서버에 의해 확립된 잠금에 대한 정보나 lock또는
                  latch에 대한 두드러진요청
`V$LOCK_ACTIVITY :
병렬서버view이다. V$LOCK_ACTIVITY는 현재의
            인스턴스의 DLM잠금동작을 나타낸다.
            각각의 행은 잠금동작의 타입과 일치된다.
`V$LOCK_ELEMENT :
병렬서버view이다. 버퍼캐쉬에 의해사용된 각각의
      PCM잠금에 대해 v$LOCK_ELEMENT 에 한행이다.
      잠금요소에 대응되는 PCM잠금의 이름은 'BL',indx,class등이다.
`V$LOCKED_OBJECT :
시스템안의 모든 트랜잭션에 걸린 잠금을 나타낸다.
`V$LOCKED_WITH_COLLISIONS :
병렬서버view이다.
      여러버퍼를 보호하는 lock을 찾는데 사용되며, 그 버퍼들은 최소한
      10회이상 각각 강제로 쓰여지거나, 강제로 읽혀진 버퍼들이다.
`V$LOG
      : 컨트롤파일로부터 log 파일정보를 포함한다.
`V$LOGFILE
  :  redo log 파일정보. redo log 그룹과 멤버 파일명.
`V$LOGHIST
  : 컨트롤파일로부터 log history정보를 포함. 지속적인 호환성을
                포함하고 있다. 대신에 V$LOG_HISTORY의 사용을 권장한다.
`V$LOG_HISTORY
      : 컨트롤파일로부터 log history 정보를 포함한다.
`V$MLS_PARAMETERS : Oracle Server
의 확정된 초기화파라미터를 나타냄.
`V$MTS
                  : multi-threaded server의 성능향상을위한 정보를 포함.
`V$MYSTAT
            : 현재 세션에 대한 통계값포함.
`V$NLS_PARAMETERS
  : 현재의 NLS 매개변수의 값들을 포함.
`V$NLS_VALID_VALUES
  : 유효한 NLS 매개변수값.
`V$OBJECT_DEPENDENCY :
현재 공유풀에 적재되어있는 package, procedure,
      cursor등에 관련되어있는 object를 결정하는데 사용된다.
      예를들면, V$SESSION, V$SQL등과 조인하면, 현재 어떤 user
      실행중인 SQL문에서 어떤 테이블이 사용되었는지를 알아낼수가 있다.
`V$OFFLINE_RANGE :
컨트롤파일로부터 offline datafile을 보여준다.
      DATAFILE행에 저장되어있는 각각의 데이터파일의 최종offline 간격을
      보여줌. offline 간격은 테이블스페이스가 처음 offline normal,
      또는 Read Only로 변경되고난이후 다시 online 또는 read-write
      변경된다음에 확정된다.
      데이터파일이 스스로 Offline로 변경되거나 테이블스페이스가
        OFFLINE IMMEDIATE로 변경되면, offline간격은 확정되지 않는다.

`V$OPEN_CURSOR :
각각 user 세션이 열렸있거나, 정지되어있는 cursor를 보여준다.
`V$OPTION
        : Oracle Server와 같이 설치된 선택사항들.
`V$PARAMETER
  : 초기화 파라미터에 대한 설명이다.
`V$PING
    : 병렬서버view이다.
      최소한 1번이상 ping된 블록만을 보여준다는 것을 제외하고 V$CACHE view
      동일하다.특정 데이터베이스 object와 관련된 현재의 인스턴스내의 SGA
      있는 각각의 블록에대한 block header정보를 포함하고 있다.
`V$PQ_SESSTAT
  : 병렬쿼리에 대한 session 통계를 포함.
`V$PQ_SLAVE
    : 인스턴스내에 실행중인 parallel 쿼리서버에 대한 통계.
`V$PQ_SYSSTAT
  : 병렬쿼리에 대한 시스템통계.
`V$PQ_TQSTAT
  : 병렬쿼리 동작의 통계를 포함. 통계는 질의가 완료된후에
          컴파일되며 세션이 살아있는동안  계속 남아있는다.
`V$PROCESS
    : 현재 작업중인 프로세스에 대한 정보.
      LATCHWAIT 칼럼은 프로세스잠금이 무엇을 기다려야하는가를 나타내며,
      LATCHSPIN 칼럼은 프로세스잠금이 동작되는 것을 나타낸다.
      멀티프로세서의 경우 Oracle 프로세스는 잠금을 기다리기전에 실시한다.
`V$PWFILE_USERS
  :  password 파일로부터 유도해낸
                  SYSDBA, SYSOPER 권한을 부여받은 user.
`V$QUEUE
  :  멀티쓰레드 메시지큐에 대한 정보.
`V$RECENT_BUCKET
  :  대용량 캐쉬실행을 평가하기에 유용한 정보.
`V$RECOVER_FILE
    :  media 복구에필요한 파일의 상태를 나타냄.
`V$RECOVERY_FILE_STATUS :
각각의 RECOVER명령에 대한 각 데이터파일에
    대한 정보를 한행씩 포함.
      Oracle프로세스가 복구를 수행하는데 유용한 정보임.
      recover manager는 서버프로세스에 직접 복구를수행하도록 했을 때,
      recovery manager가 이 view에서 관련된정보를 참고할 수 있다.
      다른user들에게는 유용하지 않다.
`V$RECOVERY_LOG :
완벽한 media복구에 필요한 archived logs에 관한 정보.
      이정보 log history view V$LOG_HISTORY에서 유도된 것이다.
`V$RECOVERY_PROGRESS :
데이터베이스복구작업이 중간에 멈추지않도록하는데
    사용되며, 복구작업을 완료하는데 요구되는 시간을 측정하는데 사용된다.
`V$RECOVERY_STATUS :
현재의 복구진행상태를 나타낸다. 단지 복구를 수행하는
      Process 에대한 정보만이유용하다. 복구관리자가 서버프로세스에게 복구를
      수행하라고 지시할때에, 복구관리자는 이view에서
      관련정보를 참조할 수 있다. 다른 user에게는 불필요하다.
`V$REQDIST
  :  MTS dispatcher의 응답시간에 대한 그래프통계를 나타내며,
            time range는 버킷 number의 지수함수로 증가한다.
V$RESOURCE
  : 자원(resource)의 이름과 주소정보를 포함.
`V$RESOURCE_LIMIT : System
자원의 부분적인 사용에 대한 정보. 자원의
        소비를 모니터링함으로서 낭비를 방지하는데 사용된다.
`V$ROLLNAME :
모든 online중인 rollback segments의 이름.
                  데이터베이스가 open시에만 조회가능.
`V$ROLLSTAT
  : 롤백세그먼트통계정보.
`V$ROWCACHE :
자료사전활동에 대한 통계.
                  각각의 행은 하나의 자료사전cache 통계를 포함.
`V$SESSION
    : 현재 open된 세션에 대한 정보.
`V$SESSION_CONNECT_INFO
  : 현재의 세션에 대한 network 연결에 대한 정보.
`V$SESSION_CURSOR_CACHE
  : 현재의 세션에 대한 cursor 사용에 대한 정보.
      SESSION_CACHED_CURSORS 초기화파라미터에 대한 효율을 측정하지는
      않는다.
`V$SESSION_EVENT
    : 세션의 event 대기에 관한정보.
`V$SESSION_LONGOPS :
장시간실행되는 작업에 대한 상태. SOFAR,
      TOTALWORK칼럼은 진행상태를 제공한다. 예를들어 
      다음요소(hach cluster creations, backup, recovery) 에 대한
      작동상태를 모니터링할 수 있다.
`V$SESSION_OBJECT_CACHE :
로칼서버의 현재사용중인
                                    user세션의 object, cache통계정보.
`V$SESSION_WAIT
  : 활동중인 세션이 대기하고있는 자원또는 이벤트이다.
`V$SESSTAT
        : user세션 통계이다. 통계number(statistic#)에 해당하는
      통계name을 찾으려면, V$STATNAME를 참고하면 된다.
`V$SESS_IO
        : 각각의 user세션에 대한 I/O 통계이다.
`V$SGA
            : System Global Area 에대한 간략한 정보.(name, size)
`V$SGASTAT
      : System Global Area에 대한 자세한 정보.(name, bytes, pool)
`V$SHARED_POOL_RESERVED : Shared Pool
내에 예약풀과 공간을
                      바꾸고자할 때 도움이 되는통계.
`V$SHARED_SERVER
  :  Shared Server processes 에 대한 정보를 포함.
`V$SORT_SEGMENT
  : 주어진 인스턴스내의 각 sort세그먼트에 대한 정보.
      테이블스페이스가 Temporary 타입일때만 update된다.
`V$SORT_USAGE
  :  sort 사용에 대해 기술한다.
`V$SQL
  :  Group by절이없는 공유sql영역에대한 통계이며 입력된
            원래 sql문장의 각 child row를 포함.
`V$SQL_BIND_DATA :
데이터가 이 서버에서 추출가능하다면 이 view
        조회하는 세션에 소유된 각 커서안에 있는 각각의 원격bind변수에 대한
        클라이언트에 의해 보내진 데이터.
`V$SQL_BIND_METADATA :
view를 조회하는 세션에 소유된 각커서안에 있는
      각각의 원격bind변수에 대해 클라이언트에의해 제공되는 bind metadata.
`V$SQL_CURSOR :
view를 조회하는 세션과 관련된 각 cursor에 대한 디버깅정보.
`V$SQL_SHARED_MEMORY :
메모리 스냅샷에 공유된 커서에 대한 정보.
      공유풀에 저장된 각SQL문은 관련된 하나또는 그이상의 하위object
      가지고 있다.
`V$SQLAREA :
공유SQL영역에 대한 통계를 가지고있으며, Sql 문자열마다
      한행을 포함한다. 메모리내에 존재하는, parse, 실행을 대기하고있는
      SQL문장에 대한 통계를 제공한다.
`V$SQLTEXT : SGA
내부의 공유SQL 커서에 속해있는 SQL문장을 포함.
`V$SQLTEXT_WITH_NEWLINES :
가독성이 증가되고, 공백을 포함한 SQL문장안에
      newline tabs을 대체하지 않는다는 것을 제외하고는 V$SQLTEXT view
      동일하다.
`V$STATNAME : V$SESSTAT
V$SYSSTAT테이블에서 나타난 statistics에 대한 이름.
`V$SUBCACHE :
현재 라이브러리 캐쉬메모리에 적재된 하위 캐쉬에 대한 정보.
      모든 라이브러리캐쉬에 대해 언급하고있으며, 각 라이브러리 캐쉬object마다
      각 적재된 하위 캐쉬에 대해 한행을 나타낸다.
`V$SYSSTAT :
시스템 통계이다. statistic number(statistic#)와 관련된 statistic
      이름을 찾기위해서는,  "V$STATNAME"를 보시오.
`V$SYSTEM_CURSOR_CACHE :
시스템  전반적인정보라는 것을 제외하고,
            V$SESSION_CURSOR_CACHE와 유사한 정보를 나타낸다.
`V$SYSTEM_EVENT :
이벤트에 대한 총 wait정보. TIME_WAITED,
      AVERAGE_WAIT칼럼은 급속메커니즘을 지원하지 않는 플랫폼에서
      0값을 포함할 것이다. 이런 플랫폼에서 DB를 운영중이고,
      이칼럼이 wait time을 줄여주기를 원한다면, 파라미터파일의
      TIMED_STATISTICS TRUE로 세팅하면된다.
      단지 이렇게 하면, 시스템 성능에 약간의 마이너스효과를 가져올 것이다.
`V$SYSTEM_PARAMETER
  :  System parameter에 대한 정보.
`V$TABLESPACE
            : 컨트롤파일로부터 테이블스페이스 정보를 나타내준다.
`V$THREAD
                : 컨트롤파일로부터 thread 정보를 가져온다.
`V$TIMER
    :    1/100 초로 나타낸 경과시간. 시간은 epoch가 시작된이후부터
      측정되며, epoch OS의 특성이며, 값이 4bytes( 497)를 넘을때마다
      0근처의 값이 된다.
`V$TRANSACTION
  :  시스템내의 활동중인 트랜잭션.
`V$TRANSACTION_ENQUEUE :
트랜잭션 오브젝트에 의해 소유된 lock를 나타냄.
`V$TYPE_SIZE :
데이터블록용량을 측정하는데 사용되는 여러
                  데이터베이스컴포넌트들의 SiZe.
`V$VERSION
  :  Oracle Server core 라이브러리 컴포넌트의 Version수이다.
                  각 컴포넌트에 한 row가 있다.
`V$WAITSTAT :
블록점유에 대한 통계. 통계가 사용가능한 시간에만 갱신된다.

 

'정리없는자료 > DB' 카테고리의 다른 글

MS-SQL 쿼리분석기 연습  (0) 2007.10.06
ORACLE 내장함수  (0) 2007.08.03
Data dictionary view  (0) 2007.07.21
ORACLE 날짜 넣기 및 검색방법  (0) 2007.05.22
ORACLE 트리거,트리거백업,트리거업뎃,after,before  (0) 2007.05.10
ORACLE 파라미터커서,트리거  (0) 2007.05.08
C:\>sqlplus scott/tiger

SQL*Plus: Release 8.1.7.0.0 - Production on 월 Apr 18 10:52:50 2005

(c) Copyright 2000 Oracle Corporation.  All rights reserved.


Connected to:
Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production

SQL> col parameter format a30;
SQL> col value format a40;
SQL> select * from nls_session_parameters where parameter = 'NLS_DATE_FORMAT';

PARAMETER                      VALUE
------------------------------ ----------------------------------------
NLS_DATE_FORMAT                RR/MM/DD

SQL> select sysdate from dual;

SYSDATE
--------
05/04/18

SQL> create table temp_date
  2  (id number, cur_date date);

테이블이 생성되었습니다.

SQL> insert into temp_date values (1, '05/03/23');
       -> 위에서 확인 NLS_DATE_FORMAT과 동일하게 맞추면 날짜 입력됨.
          명시되지 않은 시간 분/초는 default값이 12:00:00으로 입력됨.

1 개의 행이 만들어졌습니다.

SQL> alter session set nls_date_format = 'DD/MM/RR HH:MI:SS';

세션이 변경되었습니다.

SQL> insert into temp_date values (2, '28/03/05 12:10:17');
       -> NLS_DATE_FORMAT을 변경시켜 날짜 format을 바꾼후 입력.

1 개의 행이 만들어졌습니다.

SQL> insert into temp_date values (3, to_date('15/07/05 12','DD/MM/RR HH'));
       -> to_date라는 함수를 통해 원하는 format으로 변경 가능.
          to_date('시간‘,'FORMAT요소’) 시간에 맞춰서 FORMAT요소를 설정
          

1 개의 행이 만들어졌습니다.

SQL> select * from temp_date;

        ID CUR_DATE
---------- -----------------
         1 23/03/05 12:00:00
         2 28/03/05 12:10:17
         3 15/07/05 12:00:00

SQL> select id, to_char(cur_date, 'DD/MM/RR HH:MI:SS') from temp_date;

        ID TO_CHAR(CUR_DATE,
---------- -----------------
         1 23/03/05 12:00:00
         2 28/03/05 12:10:17
         3 15/07/05 12:00:00


부적절한 경우 오류 나옴
SQL> insert into temp_date values (2, '03/28/05 12:10:17');
insert into temp_date values (2, '03/28/05 12:10:17')
                                 *
1행에 오류:
ORA-01843: 지정한 월이 부적합합니다

'정리없는자료 > DB' 카테고리의 다른 글

ORACLE 내장함수  (0) 2007.08.03
Data dictionary view  (0) 2007.07.21
ORACLE 날짜 넣기 및 검색방법  (0) 2007.05.22
ORACLE 트리거,트리거백업,트리거업뎃,after,before  (0) 2007.05.10
ORACLE 파라미터커서,트리거  (0) 2007.05.08
ORACLE 명시적 커서  (0) 2007.05.08
트리거,트리거백업,트리거업뎃,after,before

create table tr1(name varchar2(10), age number(3));
create table test1(name varchar2(10), age number(3));
create table test(name varchar2(10), age number(3), tel varchar2(16));
==============================================
트리거 연습
create trigger t1_trigger
after insert on test
begin
insert into tr1 values('park',25);
end;
/

insert into test values('hong',25,'1234-44');
select * from tr1;
insert into test values('nam',25,'1334-44');
select * from tr1;

drop trigger t1_trigger;
===================================================
지우면 아래 값넣기
create trigger tr2_trigger
after delete on test1
for each row
begin
insert into tr1 values('행트리거',10);
end;
/

insert into test1 values('11',22);

delete test1;
하면
insert into tr1 values('행트리거',10);가 실행된다
====================================
지우기전에 빽업
create trigger tr3_trigger
after delete on test1
for each row
begin
insert into tr1 values(:old.name,:old.age);
end;
/

insert into test1 values('qqqq',31);

delete test1;

select * from tr1;
=====================================

사원 테이블에서 2000보다 많은 봉급을 받는 여사원들의 봉급이
update 되면 update_tab3 table 에('sawon',1,'female') data 를 insert (행 trigger)

create table update_tab3(name varchar2(10), su number(3), tel varchar(10));

create trigger ex_tri5
after update of sapay on sawon for each row
when(old.sapay>2000 and old.sasex='여자')
begin
insert into update_tab3 values('sawon',1,'femail');
end;
/

select * from sawon;
update sawon set sapay=sapay*0.9 where sasex='여자';
select * from update_tab3;
select * from sawon;
===========================================================
사원 테이블의 data 가 update 될때 이전에 있던 데이터를 savesawon 테이블에 insert
create table savesawon(name, job,pay,bouns)
as select saname, sajob, sapay,sapay*0.7 from sawon;

create trigger up_tri
before update on sawon for each row
begin
insert into savesawon values
(:old.saname,:old.sajob,:old.sapay,:old.sapay*0.7);
end;

select * from sawon;
update sawon set sapay=sapay*1.1;
select * from savesawon;
select * from sawon;
===========================================
sawon table data 가 update 될때 새로운 data 를 newsawon table 에 insert

create table newsawon(name,job,pay,bouns)
as select saname,sajob,sapay,sapay*0.7
from sawon;

create or replace trigger up_tri2
after update on sawon for each row
begin
insert into newsawon values
(:new.saname,:new.sajob,:new.sapay,:new.sapay*0.7);
end;
/

select * from sawon;

update sawon set sapay=sapay*0.9;
select * from newsawon;
===================================================================
if book_loan(책대출 테이블)에 data insert 시 같은 책의 id를 가진책을
book_loan tale(책정보)에서 loan column을 Y 대출중 표시 로 update

create table book_info
(id number primary key, bookname varchar2(10),loan char(2));

create table book_loan
(id number, anem varchar2(10),
constraints book_fk foreign key(id)
references book_info(id));

insert into book_info values(1,'computer','n');
insert into book_info values(2,'economy','n');
insert into book_info values(3,'science','n');

create trigger book_tri
after insert on book_loan for each row
begin
update book_info set loan='y'
where book_info.id = :new.id;
end;
/

insert into book_loan values(1,'kim');
select * from book_info;

파라미터커서,트리거

- 파라미터가 있는 커서
커서가 열리고 질의가 실행되면 매개 변수 값을 커서에 전달 한다
============================================================
입력한 부서에 해당하는 사람들(파라미터가 있는 예제)
create or replace procedure ParaCursorExm1(para_deptno emp.deptno%TYPE)
is
v_ename emp.ename%type;
cursor emplist(v_deptno emp.deptno%type) is
select empno, ename, job, sal, deptno
from emp
where deptno = v_deptno ;
begin
dbms_output.enable;
dbms_output.put_line('********* 입력부서에 해당하는 사람들 *********');
for emplst in emplist(para_deptno) loop
dbms_output.put_line('사번 : '|| emplst.empno);
dbms_output.put_line('이름 : '|| emplst.ename);
dbms_output.put_line('직업 : '|| emplst.job);
dbms_output.put_line('급여 : '|| emplst.sal);
dbms_output.put_line('부서 : '|| emplst.deptno);
dbms_output.put_line('==================================');
end loop;
end;
/

exec paracursorexm1(20);
사번 : 7902
이름 : FORD
직업 : ANALYST
급여 : 3000
부서 : 20
==================================
====================================================

사원 테이블에서 3000만원보다 봉급을 많이 받는 사원의
이름 직책 입사일 급여 상여금(봉급 * 0.7) 를 구하시오
declare
cursor mycur is
select saname, sajob, sahire ,sapay
from sawon
where sapay>3000;
a sawon.saname%type;
b sawon.sajob%type;
c sawon.sahire%type;
d sawon.sapay%type;
e number(10);
begin
if mycur%isopen then
close mycur;
end if;
open mycur;
loop
fetch mycur into a,b,c,d;
if mycur%notfound then
exit;
end if;
e := d*0.7;
dbms_output.put_line('이름은 : '||a);
dbms_output.put_line('직책은 : '||b);
dbms_output.put_line('입사일은 : '||c);
dbms_output.put_line('봉급은 : '||d);
dbms_output.put_line('상여금은 : '||e);
dbms_output.put_line('=======================');
end loop;
dbms_output.put_line('해당사원수 : ' ||mycur%rowcount||'명');
dbms_output.put_line('========================');
end;
/

이름은 : 공부만
직책은 : 과장
입사일은 : 95/05/01
봉급은 : 4003
상여금은 : 2802
=======================
해당사원수 : 5명
========================
===========================================================
사원 태이블에서 급여에 등수 주기(방법1)

declare
cursor cur is
select saname, sapay from sawon;
c number(10);
begin
c:=0;
for rec in cur loop
select count(*) into c
from sawon
where rec.sapay<sapay;
dbms_output.put_line('이름은:'||rec.saname);
dbms_output.put_line('봉급은:'||rec.sapay);
dbms_output.put_line('급여순위:'||c);
dbms_output.put_line('============================');
end loop;
end;
/

이름은:김유신
봉급은:403
급여순위:18
============================
이름은:강감찬
봉급은:1003
급여순위:17
============================
==================================================
순위 매기기

declare
cursor cur is select saname,sapay from sawon;
cursor cur1 is select sapay from sawon;
a varchar2(10);
b number(10);
c number(10);
begin
for rec in cur loop
c:=1;
for rec1 in cur1 loop
if rec.sapay < rec1.sapay then
c:=c+1;
end if;
end loop;
dbms_output.put_line('이름은 : '|| rec.saname);
dbms_output.put_line('봉급은 : ' || rec.sapay);
dbms_output.put_line('급여순위 : ' || c);
end loop;
end;
========================================================

트리거란
insert,update delete table 에 대해 행해질때
묵시적으로 수행되는 procedure
trigger 는 태이블과 별도로 database에 저장된다
트리거는 뷰 에 대해서가 아니라 태이블에 관해서만 정의될 수 있다.

create trigger 트리거이름
before | after
트리거 이밴드 on 테이블 이름
for each row
where (condition)

pl/sql블럭
- before : 인서트 업뎃 딜리트문이 실행되기전에 트리거가 실행
- after:인서트 업뎃 딜리트 문이 실행후 트리거가 실행
- trigger_event : 인서트 업뎃 딜리트 중에서 한개 이상 올 수 있다
- for each row : 이 옵션이 있으면 행 트리거가 됩니다
- 행트리거 : 컬럼의 각각의 행의 데이터 행 변화가 생길때마다 실행되며
  그 데이터 행의 실제값을 제어할 수 있습니다
- 문장 트리거: 트리거 사건에 의해 단 한번 실행되며 칼럼의 각 데이터 행을 제어할 수 없습니다.

==========================================================
트리거 예제1

create trigger sumtrexm
before
insert on emp
for each row
declare
avg_sal number;
begin
select round(avg(sal),3) into avg_sal
from emp;
dbms_output.put_line('급여 평균 : ' || avg_sal);
end;

insert into emp(empno,ename,job,hiredate,sal) values(240,'1ON','SA1ES',SYSDATE,5000);

select round(avg(sal),3)from emp;
======================================
create trigger triger_test
before
update on dept
for each row
begin
dbms_output.put_line('변경 전 컬럼 값 : ' || :old.dname);
dbms_output.put_line('변경 후 컬럼 값 : ' || :new.dname);
end;

update dept set dname = '기획부' where deptno =30;
변경 전 컬럼 값 : SALES
변경 후 컬럼 값 : 기획부
============================================

+ Recent posts