{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false, "slideshow": { "slide_type": "skip" } }, "outputs": [ { "data": { "text/plain": [ "'Connected: @None'" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%load_ext sql\n", "%sql sqlite://" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "# 테이블을 생성하고 임의의 값을 삽입\n", "# Note: Postgresql에서는 generate_series 함수를 사용하자. ...\n", "%sql DROP TABLE IF EXISTS R; \n", "%sql DROP TABLE IF EXISTS S; \n", "%sql DROP TABLE IF EXISTS T;\n", "\n", "%sql CREATE TABLE R (A int); \n", "%sql CREATE TABLE S (A int); \n", "%sql CREATE TABLE T (A int);\n", "\n", "for i in range(1,6):\n", " %sql INSERT INTO R VALUES (:i)\n", "for i in range(1,10,2):\n", " %sql INSERT INTO S VALUES (:i)\n", "for i in range(1,11,3):\n", " %sql INSERT INTO T VALUES (:i)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%%sql\n", "drop table if exists product; -- 테이블이 존재하면 삭제, 왜 그래야하는지는 확인\n", "drop table if exists company;\n", "pragma foreign_keys = ON; -- WARNING sqlite에서는 기본이 off\n", "create table company (\n", " cname varchar primary key, -- 회사 명은 유일함\n", " stockprice money, -- stock price의 타입은 money \n", " country varchar); -- country는 문자열\n", "insert into company values ('ToyWorks', 25.0, 'USA');\n", "insert into company values ('ToyFriends', 65.0, 'China');\n", "insert into company values ('ToyCo', 15.0, 'China');\n", "\n", "create table product(\n", " pname varchar, -- product 의 이름\n", " price money, -- product의 가격\n", " category varchar, -- category\n", " manufacturer varchar, -- manufacturer\n", " primary key (pname, manufacturer),\n", " foreign key (manufacturer) references company(cname));\n", "insert into product values('Pikachu', 19.99, 'Toy', 'ToyWorks');\n", "insert into product values('Pikachu', 19.99, 'Toy', 'ToyFriends');\n", "insert into product values('Pokeball', 29.99, 'Electronic', 'ToyCo');\n", "insert into product values('Bulbasaur', 149.99, 'Toy', 'ToyFriends');\n", "insert into product values('Charizard', 203.99, 'Toy', 'ToyCo');\n", "insert into product values('PokeCamera', 19.99, 'Electronic', 'ToyWorks');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "활동 2c:\n", "-------------\n", "\n", "다중 테이블 질의문" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "문제 #1:\n", "-----------\n", "테이블 $R,S,T$은 속성 $A$만 있다:\n", "* R = {1,2,3,4,5}\n", "* S = {1,3,5,7,9}\n", "* T = {1,4,7,10}\n", " \n", "$R \\cap (S \\cup T)$을 선택하는 질의문을 작성해보자. $R$ 과 $S$ 또는 $T$에만 존재하는 요소를 찾아보자.\n", "\n", "아래에 질의문을 작성해보자:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "%%sql\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "$S = \\emptyset$인 경우에는 작성한 질의문이 어떻게 동작하는 지 확인해보자. 그리고 왜 그런 결과가 나오는지 확인해보자?\n", "\n", "아래의 명령을 실행한 후 작성한 질의문을 다시 실행해보자." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "%%sql\n", "delete from S;" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "문제 #2\n", "-----------\n", "\n", "* 스키마는 변동이 없다.\n", "\n", "> Product (__pname__, price, category, manufacturer)
\n", "> Company (__cname__, stockPrice, country)\n", "\n", "* 다음의 질문에 답을 구하는 것이 목적이다.:\n", "\n", "> 중국 회사가 제조한 제품들의 품종(category)을 찾기\n", "\n", "아래에 질의문을 작성해보자:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%%sql\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }