역사 데이터베이스

pattern
이동: 둘러보기, 검색

데이터베이스

정의

  • 컴퓨터 시스템에 전자적으로 저장되는 구조화된 정보 또는 데이터의 조직화된 모음.
  • 데이터베이스 관리 시스템(DBMS)에 의해 제어됨.
  • 데이터와 DBMS를 하나로 묶어 데이터베이스 시스템이라고 하며 간략하게 데이터베이스라고도 함.
  • 대부분의 데이터베이스에서 데이터는 처리 및 데이터 쿼리를 효율적으로 수행하기 위하여 테이블에서 행과 열로 모델됨.
  • 데이터를 액세스, 관리, 수정, 업데이트, 제어, 구성하기 위해서 데이터베이스 작성 및 쿼리에 SQL(Structured Query Language)을 사용함.

역사

  • 1980년대가 되면서 관계형 데이터베이스가 등장, 인기를 얻음.
  • 1990년대에 객체 지향 데이터베이스가 등장.
  • 최근 NoSQL 데이터베이스가 등장.

엑셀

  • 엑셀(Excel)은 스프레드시트(Spread Sheet)임.
  • 사용자 한 명을 위해 설계되었음.
  • 복잡하고 많은 데이터 조작을 수행할 필요가 없는 사용자에게 적합함.
  • 데이터베이스를 사용하면 여러 사용자가 동시에 로직과 언어를 사용하여 데이터를 쿼리할 수 있음.

용어

  • Tuple(튜플) : 테이블(Relation)의 행.
  • Attribute(어트리뷰트) : 테이블(Relation)의 열.
  • Cardinality(카디널리티) : 행의 수.
  • Degree(디그리) : 차수. 열의 수.

관계형 데이터베이스

  • 관계형 DBMS(Relational DBMS)는 줄여서 RDBMS.
  • 대부분의 DBMS가 RDBMS 형태임.
  • RDBMS의 데이터베이스는 테이블(table)이 최소 단위임.
  • 이 테이블은 하나 이상의 열(column)과 행(row)으로 이루어져 있음.
  • 테이블의 행은 레코드(record)라고 부르기도 함.
  • 레코드 하나 = 데이터 한 건.
  • 하나의 테이블은 적게는 수백개, 많게는 수백만 개의 레코드를 갖게 됨.

RDBMS종류

  • Oracle DB - 뛰어난 기술력과 안정성. 주로 은행 업계에서 사용. 유료.
  • MySQL - 오픈 소스. 웹 개발, 특히 PHP를 이용한 개발에 흔히 쓰인다.
  • Maria DB - 오라클이 MySQL을 인수하면서 라이선스 문제가 불확실해지자, 이에 반발하여 만들어짐.
  • PostgreSQL - 버클리 대학의 프로젝트 오픈 소스 ORDBMS. (ORDBMS: 객체-관계형 데이터베이스 관리 시스템)
  • SQL Server - 마이크로소프트가 개발한 RDBMS. 윈도우 시스템 환경 지원.
  • SQLite - DB를 서버가 아닌 파일로 저장하는 DBMS이다. 가벼운 DB를 저장하는 목적으로 설계됨. 안드로이드, iOS, mac OS에서 사용됨.

SQL

  • SQL은 데이터를 쿼리, 조작 및 정의하고 액세스 제어를 제공하기 위해 거의 모든 관계형 데이터베이스에서 사용되는 프로그래밍 언어.
  • SQL은 1970년대에 IBM에서 처음 개발.
  • IBM, Oracle, Microsoft에서 확장 프로젝트를 진행하였음.

마루테크놀로지

OOP

  • Object Oriented Programming
  • 절차 지향 프로그래밍

let baseSalary = 30_000; let overtime = 10; let rate = 20; function getWage(baseSalary, overtime, rate){ return baseSalary + (overtime * rate); }

  • 객체 지향 프로그래밍

let employee = { baseSalary :30_000, overtime: 10, rate: 20, getWage: function(){ return this.baseSalary + (this.overtime * this.rate); } }; employee.getWage();

Schema

  • 데이터베이스 스키마(database schema)는 데이터베이스에서 자료의 구조, 자료의 표현 방법, 자료 간의 관계를 형식 언어로 정의한 구조.
  • 데이터베이스 DBMS이 주어진 설정에 따라 데이터베이스 스키마를 생성함.
  • 데이터베이스 사용자가 자료를 저장, 조회, 삭제, 변경할 때 DBMS는 자신이 생성한 데이터베이스 스키마를 참조하여 명령을 수행함.
  • 스키마는 데이터베이스를 구성하는 데이터 개체의 전반적인 명세(Specification)를 기술(Description)하는 메타데이터(MetaData)의 집합.
  • 데이터 개체를 구성하고 있는 속성들에 데이터 타입이 정의되어 구체적인 데이터 값을 갖고 있는 것.
  • 스키마는 3층 구조임.
스키마의 3 계층 외부 스키마 = 서브 스키마 = 사용자 뷰
  • 스키마, 개념 스키마, 내부 스키마 스키마는 데이터 사전에 저장되며 메타 데이터MetaData라고도 한다.
  • 데이타베이스를 설계, 생성하는 과정에서 각각의 테이블에 필요한 컬럼의 타입과 네이밍을 결정하는 것을 데이터베이스 스키마라고 함.
  • 데이터베이스의 구조를 전반적으로 기술한 것.
  • 구체적으로 데이터베이스를 구성하는 데이터 레코드의 크기, 키의 정의, 레코드 간의 관계 등을 정의한 것.
  • 사용자의 관점에 따라 외부 스키마, 개념 스키마, 내부 스키마로 구분함.
  • DBMS는 외부 스키마에 명세된 사용자의 요구를 개념 스키마 형태로 변환하고, 이를 다시 내부 스키마 형태로 변환함.

외부스키마 : 개인의 입장, '서브스키마'라고도 한다, 사용자 뷰를 가리킨다. 사용자의 입장에서 정의한 데이터베이스의 논리적 구조. 데이터들을 어떤 형식, 구조, 화면을 통해 사용자에게 보여줄 것인가에 대한 명세를 말하며 하나의 데이터베이스에는 여러개의 외부 스키마가 있을 수 있다. 일반 사용자에게는 질의어를 이용해 DB를 쉽게 사용할 수 있도록 하고 응용 프로그래머는 언어를 사용해서 DB에 접근하도록 한다.

하나의 외부스키마는 여럿이 공유 가능하며, 하나의 DB시스템에 여러 개의 외부스키마가 존재 가능

내부스키마 : 시스템 프로그래머나 설계자의 관점에서 바라보는 스키마. 데이터베이스가 어떻게 저장장치에 저장될 지에 대한 명세. 물리적인 저장장치와 데이터베이스 간의 관계를 정의하므로 시스템 프로그래머나 시스템 설계자가 보는 관점의 스키마이다.

데이터베이스의 물리적 구조를 가리킴(= 실제 저장방법을 기술하는 물리적인 저장장치와 관련됨) 

개념스키마 : 조직 전체의 입장, 전체적인 뷰를 가리킨다. 조직체 전체를 관장하는 입장에서 DB를 정의한 스키마. DB에 대한 모든 논리적 구조를 기술하기 때문에 데이터베이스에 하나만 존재하며, 통상 스키마 라고 하면 개념 스키마를 일컫는다.

개체간의 관계와 제약조건을 나타내고, 데이터베이스의 접근권한/보안/무결성 규칙에 대한 명세를 정의함, 
  • 일반적으로 '스키마'라는 내부스키마를 가리킴.
  • 내부스키마는 DBA가 만듦, 데이터베이스의 전체적인 구조로써 하나만 존재해야 함


View

  • 데이터베이스 시스템의 뷰(view)는 다른 릴레이션으로부터 유도된 릴레이션(derived relation)으로서 ANSI/SPARC 3단계 아키텍처의 외부 뷰와 다름.
  • 뷰는 관계 데이터베이스 시스템에서 데이터베이스의 보안 메카니즘
  • 복잡한 질의를 간단하게 표현하는 수단으로서, 데이터독립성을 높이기 위해서 사용됨.
  • 시스템 카탈로그는 시스템내의 객체(기본 릴레이션, 뷰, 인덱스, 사용자, 접근 권한 등)에 관한 정보를 포함.
  • 시스템 카탈로그를 적절히 활용하면 원하는 릴레이션을 데이터베이스에서 찾고, 그 릴레이션에 어떤 애트리뷰트들이 들어 있으며, 각 애트리뷰트의 데이터 타입은 무엇인가 등을 쉽게 파악할 수 있음.
  • 시스템 카탈로그는 데이터베이스를 효율적으로 활용하는데 크게 도움이 됨.


System catalogue

  • 시스템 그 자체에 관련이 있는 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스.
  • 시스템 카탈로그 내의 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블임.
  • 데이터 정의어의 결과로 구성되는 기본 테이블, 뷰, 인덱스, 패키지, 접근 권한 등의 데이터베이스 구조 및 통계 정보를 저장함.
  • 카탈로그들이 생성되면 자료사전에 저장됨.
  • 좁은 의미로는 카탈로그 = 자료 사전.
  • 카탈로그에 저장된 정보를 메타 데이터라고 함.

카탈로그의 특징

1. 카탈로그 자체도 시스템 테이블로 구성되어 있어 일반 이용자도 SQL을 이용하여 내용을 검색해볼 수 있다. 2. INSERT, DELETE, UPDATE문으로 카탈로그를 갱신하는 것은 허용되지 않는다. 3. 데이터베이스 시스템에 따라 상이한 구조를 갖는다. 4. 카탈로그는 DBMS가 스스로 생성하고 유지한다. 5. 카탈로그의 갱신 : 사용자가 SQL문을 실행시켜 기본 테이블, 뷰, 인덱스 등에 변화를 주면 시스템이 자동으로 갱신한다. 6. 분산 시스템에서의 카탈로그 : 보통의 릴레이션, 인덱스, 사용자 등에 정보를 포함할 뿐 아니라 위치 투명성 및 중복 투명성을 제공하기 위해 필요한 모든 제어 정보를 가져야 한다.

시스템 카탈로그의 종류

SYSTABLES : 기본 테이블 및 뷰 테이블의 정보를 저장하는 테이블 SYSCOLUMNS : 모든 테이블에 대한 정보를 열(속성) 중심으로 저장하는 테이블 SYSVIEW : 뷰에 대한 정보를 저장하는 테이블 SYSTABAUTH : 테이블에 설정된 권한 사항들을 저장하는 테이블 SYSCOLAUTH : 각 속성에 설정된 권한 사항들을 저장하는 테이블

Normalization

  • 반복되는 속성이나 그룹의 속성을 제거하고, 새로운 테이블을 추가한 후에 기존 테이블과 일대다 관계를 형성하는 것을 의미함.
  • 데이터를 보다 효율적으로 저장, 데이터 중복 방지, 저장 공간이 낭비되는 테이블 설계를 제거함.

Graph Modeling

  • 칠판에 그려둔 엔티티(entity) 간의 관계를 데이터베이스상으로 가지고 옴.

Neo4j

그래프 데이터베이스 스타트업인 Neo4j가 20억달러 이상의 가치로 3억2500 만 달러의 자금을 모금했다고 발표했습니다. 이에 따라 Neo4j가 지금까지 투자받은 자금은 5억달러를 넘어섰습니다.

회사 측에 따르면 이는 신생 데이터베이스 관련 업체들 사이에서는 가장 큰 투자금액입니다. 예를 들어 몽고DB는 IPO 전에 총 총 3억1100만달러를 투자받았고, 코크로치랩스도 비슷한 규모인 3억5500만달러의 투자를 유치했습니다. Neo4j가 이처럼 순조롭게 투자 라운딩을 진행하는 것은 그래프DB에 대한 투자자들의 기대가 크기 때문일 것입니다.

그래프DB는 최근에 전세계적으로 뜨고 있는 DB 기술입니다. 테이블과 테이블을 조인(JOIN)하는 관계형DB의 대안으로 등장한 것으로 네트워크를 점과 선으로 연결한 그래프 모습으로 저장하는 것이 특징입니다. 한 마디로 관계를 저장해두는 DB라고 볼 수 있습니다. 이 때문에 SNS에서 많이 사용됩니다. A가 B의 콘텐츠에 좋아요를 눌렀다는 사실을 공통의 친구들에게 알려주는 기능을 관계형 DB로 만들려면 복잡한 프로세스를 거쳐야 합니다. 하지만 서로의 관계를 저장해 두는 그래프DB가 있다면 좀더 수월하게 기능을 구현할 수 있습니다. 만약 친구의 친구, 친구의 친구의 친구 등 3~4단계까지 관계를 분석하려 한다면 관계형DB는 사실상 불가능할 수도 있지만, 그래프DB는 가능합니다.

최근 그래프DB가 각광을 받는 이유는 추천시스템 구현에 용이하다는 점입니다. 최근의 추천시스템은 관계를 분석하는 방식을 사용합니다. 넷플릭스의 경우 같은 영화를 본 사람들을 커뮤니티라는 단위의 그룹으로 묶어서 커뮤니티 내의 사람들이 많이 본 영화를 추천합니다. 넷플릭스는 이같은 추천시스템 구축에 그래프DB를 활용했습니다. 그래프DB는 이제 마케팅에서 사기 탐지까지 다양한 애플리케이션에서 활용됩니다.

Neo4j는 지난 2007년 설립된 그래프DB 업체입니다. 500명 이상의 직원이 근무하며 800여 고객사를 보유하고 있습니다. Neo4j의 공동창업자이자 CEO인 에밀 에이프렘은 “우리는 점점 더 연결되는 세상에 살고 있다”면서 “우리 세상을 설명하는 데이터도 점점 더 연결되고 있다”면서 그래프DB의 가치를 설명했습니다.

Neo4j가 큰 투자를 받았지만, 앞날이 순탄치만은 않을 수 있습니다. 스타트업 경쟁사뿐 아니라 오라클, SAP 같은 대형 소프트웨어 기업이 그래프DB의 가치를 인지하기 시작했고, AWS나 마이크로소프트 애저와 같은 클라우드 업체도 그래프DB 서비스를 직접 제공하고 있습니다. 국내에서는 비트나인이라는 스타트업이 그래프DB를 개발해 공급하고 있고, 카카오와 같은 회사에서는 자체적으로 이용하기 위해 직접 그래프DB를 개발해 사용하기도 합니다.
https://byline.network/2021/06/22-129/

Web Generation

최부의 표해록: 시맨틱 데이터 큐레이션

강화잠두교회 항일운동지

  • 철학에서 ‘존재학’이라 불리며 사물의 본질에 관한 연구를 추구한 분야.
  • 이러한 기본 철학을 정보시스템에 적용하여 정보자원의 개념을 명확하게 정의하고 상세하게 기술함.
  • 시맨틱웹 기술에서 사용되었으나 현재는 인공지능과 빅데이터로 확장되었음.
  • 탐그루버는 온톨로지는 “프로그램과 인간이 지식을 공유하는데 도움을 주기 위해 사용된 개념화 명세서”라고 정의함.
  • 온톨로지의 사용 목적은 사람과 컴퓨팅 사이의 정보를 교환함에 있어서 서로 합의된 문법을 통하여 상호운용이 기능하는데 의의를 가진다.
  • 온톨로지는 사람과 기계가 동시에 이해할 수 있는 문법을 적립하는 것.
  • 기계가 사람의 언어를 이해한다는 의미는 기계가 사람처럼 언어를 보고 생각을 할 수 있다는 가능성을 보여준다.
  • 인공지능 분야.
  • 인공지능의 목표가 사람의 뇌가 가지는 지능을 컴퓨터가 가지는 것이기에, 온톨로지가 가지는 지식표현방법은 유용하게 활용가능하다.
  • 시맨틱 웹: 인간만 이해하는 웹이 아니라, 기계도 서로 의사소통을 할 수 있는 웹.
  • 웹 자원을 기계와 기계 사이에서 이해하고 추론하여 정보를 제공하는 지능적인 웹.
  • 시맨틱 웹에서 사용되는 온톨로지는 흔히 거미줄.
  • 이는 온톨로지가 가지는 자원간의 의미적 연관성을 표현한 것이다.
  • 의미들이 서로 거미줄처럼 연결되어 있다면 사용자가 검색 서비스를 지원받을 때, 사용자가 검색하고자 하는 올바른 방향성을 찾아 주게 된다.
  • 이러한 장점은 검색오류를 줄이며 효과적으로 사용자의 의도를 파악하여 서비스를 제공하게 해주는 이점을 가진다.
  • 유비쿼터스 네트워크 환경을 구축하기 위한 방안으로써, 상이한 업체들에 의해 제조된 기기들 사이의 이질적인 데이터들을 동적으로 접근 가능한 모델로써 사용되거나 이를 카테고리화 시켜주는데 활용 가능.
  • 사람과 기계 사이에 커뮤니케이션이 가능.
  • 사람의 지식, 데이터 모델을 명세화된 형태로 표현.
  • 정보 콘텐츠 구조에 대한 정확한 명세서 역할을 함.
  • 이로 인하여 해당 분야에 대한 지식 공유와 재사용, 가정에 대한 명시가 가능.
  • 프로그램 구성 시 지식과 프로세스간의 분리가 가능.
  • 프로그램 구축 시 수작업으로 프로그래밍을 하는데 있어서는 지식 표현의 한계성을 가짐.
  • 온톨로지는 추론기능을 가지고 있기 때문에 개념들 사이의 자동적인 분류가 가능하게 되고 개체들의 자동적인 처리가 가능.
  • 상황인지 분야는 사용자 선호와 의도에 따라 환경을 변화시켜주는 지능적 서비스의 효과적임.
  • 사용 가능한 환경 자원을 재조정하며, 사용자와 환경사이의 결함 없는 고른 상호작용을 제공하는 컴퓨팅 환경 구성을 가능하게 함.
  • 온톨로지는 각 상황을 정의하고 표현할 수 있는 문법을 가짐.
  • 문법에 따라 각 상황을 개념화하고 환경 정보를 표현함.
  • 추론 과정을 통해 상황을 판단.
  • 문법에 따른 상황 모델을 구성.
  • 수집된 정보를 동일한 문법을 적용.
  • 복잡한 프로그램 작성이 생략될 수 있다.
  • 온톨로지 모델을 적용한 상황인지 시스템은 논리적이면서 단순
  • 가시적인 관리 및 운영이 가능.

protege

역사 데이터베이스 제작

울산 항구

1939년 한해(대가뭄)-신문과 소화14년도 15년도 한해대책사업 실시 계획서철을 중심으로-

담양 소쇄원

목적

전통 조경이 잘 복원 되어있고 그에 대한 자료 또한 많은 소쇄원에 대한 탐구를 통해 다른 민간정원, 별서정원뿐만 아닌 다른 원림들을 복원하고 보전할 수 있는 자료가 되길 바란다.

분류기준

과거와 현재의 식재 수목(시간의 흐름에 따라)을 여러 가지 특성을 통해 분류한다. 우선 수목을 분류하는 기본적인 구분인 크기인 교목·관목·초화류·지피류로 구분한다. 차경을 통해 자연과의 조화를 중시하는 전통을 고려했을 때 계절에 따라 풍경의 중심이 되는 식물을 특징짓는다. 

▸하서 김인후의 소쇄원48영 ▸소쇄원에 식재되어 있는 수목을 중심으로 다른 시가와 비교 ▸10군자(매,난,국,죽,연,모란,목련,파초,포도,소나무) ▸식재 되어있는 위치 & 식재의 기능(풍수·녹음·차폐 등) ▸식물의 주요 자생지(군락지) ▸주변 원림의 수목 (풍암정, 명옥헌, 면앙정 등) - 자료 부족하면 대표적인 원림과 비교

의의

이러한 분류를 통해 전통 조경의 역할과 의미를 이해한다. 이를 통해 복원만이 아니라 더 나아가 현대의 시각과 어우러질 수 있는 조경을 구사하기 위한 이해를 쌓는다.

참고문헌 김미정, 『소쇄원을 통해 본 전통원림의 차경 특성에 관한 연구』, 서울시립대학교 도시과학대학원, 2008 나명하, 『園林복원을 위한 전통공간 조성기법연구 명승 제40호 담양 소쇄원』, 국립문화재연구소, 2015 천득염, 『소쇄원 고암정사와 부훤당의 복원적 고찰』, 호남문화재연구원, 2016 이선, 『한국 전통 조경 식재, 수류산방중심』, 2006 김진성, 『소쇄원 : 원형을 찾아서』, 전남대학교출판문화원, 2021 강희안, 『양화소록』, 을유문화사, 2000

조선 후기 여성의 방물과 문화, 경기 십이잡가 중 하나인 「방물가(房物歌)」를 중심으로

한국과 일본의 약재 관계-감초를 중심으로-

일제강점기의 대중가요 : 가사를 중심으로

한국 사회의 HIV/AIDS에 대한 반응과 대응

한국 와인의 전래

일제강점기, 독립운동단체들은 '독립'을 어떻게 바라봤는가 - 독립운동단체의 관련 문서와 실제 활동을 바탕으로 -

<배비장전>을 중심으로

-연구 목적: <배비장전>의 발자취를 따라 한국 문화사의 흐름을 연구하고, 그 속에 녹아있는 시대적 욕망을 연구한다.

-연구 시기: 1966년 뮤지컬 <살짜기 옵서예>부터 현재까지

-연구 해제: <배비장전>은 판소리 작품으로 양반층의 허위의식과 위선을 풍자하였다. 1966년 우리나라 최초의 뮤지컬 극단인 예그린 악단이 1966년 <배비장전>을 바탕으로 창작 뮤지컬 <살짜기 옵서예>의 초연으로 <배비장전>은 대중에게 알려지기 시작하였다. 비슷한 시기 창극 분야에서 <배비장전> 내용 양상이 바뀌는 움직임이 보였다. 이후 현재까지 <배비장전>은 우리의 문화예술 분야 등 다양한 곳에서 심심찮게 볼 수 있다. 문화는 시대의 욕망과 의도를 아름답게 표현하는 수단이다. <배비장전>은 한국의 문화산업이 발전하기 시작할 때부터 현재까지 존재해온 작품으로써 연구를 통해 시대의 욕망을 이해할 수 있는 중요한 매체이다.

-연구 순서: 1) 초연과 재연 뮤지컬의 비교 2) 1966년 이후 창극 <배비장전>의 변화 양상 3) 그 외 가. 1972년 명창 박동진의 <배비장전> 나. 교육적 측면에서의 <배비장전>

한국 사회의 HIV/AIDS에 대한 반응과 대응

일제강점기의 대중가요 : 가사를 중심으로

한국과 일본의 약재 관계: 감초를 중심으로

조선 후기 여성의 방물과 문화: 경기 십이잡가 중 하나인 「방물가(房物歌)」를 중심으로

연구 내용

「방물가(房物歌)」는 조선 후기에 작성된 경기 십이잡가 중 하나이다. 이 작품에서는 작품의 주체인 여성이 물질보다는 임의 사랑을 원하고 있다는 주제를 부각하기 위하여 화려한 방물과 잡화들을 나열하였다. 또한, 방물가에서 주목할만 한 점으로는 방물가 속 인물들의 태도에 있다. 작품 속 여인은 임을 애절하게 붙잡고 있고, 남성은 여성에게 물질을 제시하며 이별을 제안하고 있다. 따라서 「방물가(房物歌)」는 조선후기의 물질주의적인 태도와 애정관에 대해서도 살펴볼 수 있는 작품이다. 

「방물가(房物歌)」에 나열된 방물과 여성의 태도를 중심으로 하여, 조선후기(17~18세기)의 풍속화와 내방가사 몇가지를 선정하여 조선후기 여성의 생활상을 데이터베이스화 해보고자 한다. 

연구 목적 1. 「방물가(房物歌)」에는 조선 후기 여성들의 화장품, 머리 치장, 세간, 의복, 노리개 등이 나열되어 있다. 방물가가 아닌 다른 문학 작품이나, 풍속화 등의 자료에서 방물들의 생김새, 사용법, 사용시기 등을 파악하여 정리할 수 있다. 예) 연지분(臙脂粉), 면경석경(面鏡石鏡), 옥지환(玉指環) 등 2. 방물로 왕족이 아닌 조선 후기 여성의 생활과 문화를 추측할 수 있다. 3. 조선후기의 물질주의적인 생활 행태를 엿볼 수 있다.

연구 방법 1. 논문 「조선후기 풍속화에 나타난 여성의 생활상과 복식문화」 등에 제시된 풍속화를 참고하여 「방물가(房物歌)」에 나열된 방물이 제시된 다른 풍속화를 포함하여 함께 분석해본다. 2. 조선후기 내방가사(內房歌辭) 중 몇 작품을 선정하여 유사한 방물을 탐색하고, 「방물가(房物歌)」에 제시된 여성의 태도와 선정한 내방가사 속 여성의 태도를 비교하여 조선후기 여성의 보편적인 문화에 대해 추측하여본다.

사학과 SQL연습

1. Oracle LIVE SQL



2. 성종(成宗)13년의 문과 목록

3. 조선의 과거 시험 0:58부터

4. 과거 시험 과목

5. 표·잠·제(制)

create table gwageo(
sno     int primary key	--기본키(유일성)
                       	--중복을 허용하지 않음 
                       	--null값을 허용하지 않음
, uname varchar(50) not null   --빈값을 허용하지 않음 / 가변형
, pyo   int         check(pyo between 0 and 100) 
, jam   int         check(jam between 0 and 100)
, je    int         check(je between 0 and 100)
, tot   int         default 0 --입력값이 없으면 0 입력
, aver  int         default 0
, wdate date        default sysdate --현재 날짜 함수
, addr  varchar(20) check(addr in('Kimhae', 'Tamjin', 'Andong', 'Milyang', ‘Kyungju’)) 
);
select * from gwageo;
insert into gwageo(sno, uname, pyo, jam, je, addr, wdate)
values('김준손’, 90, 85, 95, 'Kimhae',sysdate);
insert into gwageo(sno,uname,pyo,jam,je,addr,wdate)
values('김기손',40,50,20,'Kimhae',sysdate);
insert into gwageo(sno,uname,pyo,jam,je,addr,wdate)
values('최부',90,90,90,'Tamjin',sysdate);
insert into gwageo(sno,uname,pyo,jam,je,addr,wdate)
values('박의영',50,50,90,'Milyang',sysdate);
insert into gwageo(sno,uname,pyo,jam,je,addr,wdate)
values('권빈',90,60,90,'Andong',sysdate);
insert into gwageo(sno,uname,pyo,jam,je,addr,wdate)
values('김의동', 80,70,60,'Andong',sysdate);
select count(*) from gwageo;
update gwageo
set tot=pyo+jam+je, aver=(pyo+jam+je)/3;
select * from gwageo;
select distinct(addr) from gwageo;
select distinct(uname) from gwageo;
select addr  
from gwageo
group by addr; --주소별 그룹
select addr, count(*) 
from gwageo
group by addr;

select addr, count(*) as cnt --칼럼명 임시 부여
from gwageo
group by addr;
select addr, count(*) cnt --칼럼명 임시 부여 (as는 생략 가능)
from gwageo
group by addr;

select addr, count(*) cnt
from gwageo
group by addr
order by asc; --오름차순 정렬
select addr, count(*) cnt
from gwageo
group by addr
order by count(*) desc; --내림차순 정렬

select addr
      , sum(pyo)
      , round(avg(pyo),0)
      , max(pyo)
      , min(pyo)
      , count(*)
from gwageo
group by addr
order by round(avg(pyo),0) desc, count(*) desc;
select addr
      , sum(pyo) pyo_sum
      , round(avg(pyo),0) avg_pyo
      , max(pyo) max_pyo
      , min(pyo) min_pyo
      , count(*) cnt_pyo
from gwageo
group by addr
order by avg_pyo desc, cnt_pyo desc;
commit;
select addr, count(*) cnt 
from gwageo              
where aver>=70            
group by addr             
order by cnt;
select addr, count(*)
from gwageo
group by addr
having count(*)=2;
select addr, round(avg(pyo),0) as avg_pyo
from gwageo
group by addr;
select addr, round(avg(pyo),0) as avg_pyo
from gwageo
group by addr
having avg(pyo)>=50;
select addr, round(avg(pyo),0) as avg_pyo
from gwageo
group by addr
having avg(pyo)>=50
order by avg_pyo desc;

select addr, count(*)   --5) 지역과 인원수를 가져와라   
from gwageo             --1) 성적 테이블에서
where aver>=50          --2) aver가 50점 이상
group by addr           --3) 주소별
having count(*)<2       --4) 인원수가 2미만
order by count(*);      --6) 인원수 순으로 정렬하라
① CASE WHEN ~ THEN
select uname, addr, case when addr='Kimhae' then '김해'
                        when addr='Andong' then '안동'
                        when addr='Tamjin'  then '탐진'
                        when addr='Milyang' then '밀양'
                   end as juso
from gwageo;

② ELSE 
select uname, addr, case when addr='Kimhae' then '김해'
                        when addr='Andong' then '안동'
                        when addr='Tamjin'  then '탐진'
                        else '경주'
                   end as juso
from gwageo;
select uname, pyo, case when pyo>=90 then 'A학점'
                       when pyo>=80 then 'B학점'
                       when pyo>=70 then 'C학점'
                       when pyo>=60 then 'D학점'
                       else 'F학점'
                  end as grade
from gwageo;
select uname, pyo, case when pyo>=90 and pyo<=100 then 'A학점'
                       when pyo>=80 and pyo<90   then 'B학점'
                       when pyo>=70 and pyo<80   then 'C학점'
                       when pyo>=60 and pyo<70   then 'D학점'
                       else 'F학점'
                  end as grade
from gwageo;

③ between 

select uname, pyo, case when pyo between 90 and 100 then 'A학점'
                       when pyo between 80 and 89  then 'B학점'
                       when pyo between 70 and 79  then 'C학점'
                       when pyo between 60 and 69  then 'D학점'
                       else 'F학점'
                  end as grade
from gwageo;