20201126

phj
박현정 (토론 | 기여)님의 2020년 12월 4일 (금) 13:46 판
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
이동: 둘러보기, 검색
use s_phj

/*필요하다면 사전작업하기*/
drop table xmltable3 /*기존것 지워서 깨끗하게 만들어놓기*/
select * into xmltable3 from Class2020.dbo.xmltable3 /*class2020안의 xmltable3를 카피하기*/
/*~여기까지*/

select * from sys.views
select * from xmlmeta
select * from xmltable3
select id, xmltxt.query('//인명') from xmltable3

/* create keyword index view: 인명 */

/*19건중 인명이 103건. 한레코드에 한개의 줄로 보여주는게 아니라 xmltable3에 있는 xmltxt의 컬럼에 있는 인명 노드 하나하나를 레코드로 취급해가지고 적용해서 보여줘라*/
/*노드는? 나뭇가지의 결절 부분, 네트워크에서는 node노드(정보의 단위)와 노드 사이의 link링크로 연결*/
/*링크 대신에 edge를 미국에서 쓰기도 함*/
/*쿼리와 벨류는 사람에게 보여줌, 노드는 컴퓨터에게 줌*/

cross apply를 써서 이름기준으로 분배를 시킴. 
select id, node.value('.', 'nvarchar(80)' ) as 인명 /*'.'.은 자기 자신*/
	from xmltable3 CROSS APPLY xmltxt.nodes('//인명') as R(node) /*R(node)대신에 thisRow(thisColumn) select의 node대신에 thiscolumn을써도 됨*/
	order by 인명

/*인명사전을 view로 만들어줌*/
create view xmltable3_인명 as  
select id, node.value('.', 'nvarchar(80)' ) as 인명 /*'.'.은 자기 자신*/
	from xmltable3 CROSS APPLY xmltxt.nodes('//인명') as R(node) /*R(node)대신에 thisRow(thisColumn) select의 node대신에 thiscolumn을써도 됨*/


select * from xmltable3_인명

select 인명, count(*) from xmltable3_인명
group by 인명
order by 인명

select 인명, id from xmltable3_인명



/*노드를 인명으로 하고, 노드의 값은 id로 뽑아내라*/
select id, node.value('.', 'nvarchar(80)' ) as 인명, node.value('./@id', 'nchar(80)' ) as 인명_id
	from xmltable3 CROSS APPLY xmltxt.nodes('//인명') as R(node) 
	order by 인명_id

/*모든 지식을 data로 만들 수 있다(팀버나즈리 www창시자)*/

create view xmltable3_인명 as
	select id, node.value('.', 'nchar(80)' ) as 인명, node.value('./@id', 'nchar(80)' ) as 인명_id
	from xmltable3 CROSS APPLY xmltxt.nodes('//인명') as R(node) 

select * from xmltable3_인명

select 인명_id, 인명, count(*) as 빈도
	from xmltable3_인명
	group by 인명_id, 인명
	order by 인명_id
  

/*인명, 지명, 기관, 사건, 서명, 개념, 용어*/

/*cross apply 기사갯수만큼 row를 만들어내기 지명*/
select id, node.value('.', 'nvarchar(80)' ) as 지명, node.value('./@id', 'nchar(80)' ) as 지명_id
	from xmltable3 CROSS APPLY xmltxt.nodes('//지명') as R(node) 
		order by 지명_id

create view xmltable3_지명 as
	select id, node.value('.', 'nchar(80)' ) as 지명, node.value('./@id', 'nchar(80)' ) as 지명_id
	from xmltable3 CROSS APPLY xmltxt.nodes('//지명') as R(node) 

		select * from xmltable3_지명

	select 지명_id, 지명, count(*) as 빈도
	from xmltable3_지명
	group by 지명_id, 지명
	order by 지명_id

  • 서울역사편찬원
  • 서울은 우리의 관심대상임은 분명/디지털 서울학 학술대회
  • 포스트 모로나 사회, 디지털 서울학
/*숙제:인명, 지명, 기관, 사건, 서명, 개념, 용어 연습하기!*/

/*cross apply 기사갯수만큼 row를 만들어내기 지명*/
select id, node.value('.', 'nvarchar(80)' ) as 지명, node.value('./@id', 'nchar(80)' ) as 지명_id
	from xmltable3 CROSS APPLY xmltxt.nodes('//지명') as R(node) 
		order by 지명_id

create view xmltable3_지명 as
	select id, node.value('.', 'nchar(80)' ) as 지명, node.value('./@id', 'nchar(80)' ) as 지명_id
	from xmltable3 CROSS APPLY xmltxt.nodes('//지명') as R(node) 

		select * from xmltable3_지명

	select 지명_id, 지명, count(*) as 빈도
	from xmltable3_지명
	group by 지명_id, 지명
	order by 지명_id
  
/*기관*/
  select id, xmltxt.query('//기관') from xmltable3

	create view xmltable3_기관 as
	select id, node.value('.', 'nchar(80)' ) as 기관, node.value('./@id', 'nchar(80)' ) as 기관_id
	from xmltable3 CROSS APPLY xmltxt.nodes('//기관') as R(node) 

	select * from xmltable3_기관

	select 기관_id, 기관, count(*) as 빈도
	from xmltable3_기관
	group by 기관_id, 기관
	order by 기관_id

/*사건*/
select id, xmltxt.query('//사건') from xmltable3

create view xmltable3_사건 as
select id, node.value('.','nchar(80)') as 사건, node.value('./@id','nchar(80)') as 사건_id 
from xmltable3 cross apply xmltxt.nodes('//사건') as R(node)

select * from xmltable3_사건

	select 사건_id, 사건, count(*) as 빈도
	from xmltable3_사건
	group by 사건_id, 사건
	order by 사건_id

/*개념*/
select id , xmltxt.query('//개념') from xmltable3

create view xmltable3_개념 as
select id, node.value('.','nchar(80)') as 개념, node.value('./@id','nchar(80)') as 개념_id
from xmltable3 cross apply xmltxt.nodes('//개념') as R(node)

select * from xmltable3_개념

select 개념, 개념_id,count(*) as 빈도
 from xmltable3_개념
 group by 개념, 개념_id
 order by 빈도,개념, 개념_id

/* 용어*/

select id, xmltxt.query('//용어') from xmltable3
create view xmltable3_용어 as 
select id, node.value('.','nchar(80)') as 용어, node.value('./@id','nchar(80)') as 용어_id
from xmltable3 cross apply xmltxt.nodes('//개념') as R(node)

select * from xmltable3_용어

select 용어, 용어_id, count(*) as 빈도
 from xmltable3_용어
 group by 용어, 용어_id
 order by 용어, 용어_id