home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / sql / intro.shr < prev    next >
Text File  |  1988-03-11  |  22KB  |  573 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.                                      SSQL
  20.                                   VERSION 1.1
  21.  
  22.  
  23.                        COPYRIGHT (C) 1988 BY STEVE SILVA
  24.     
  25.                             SILVAWARE
  26.                             3902 NORTH 87TH STREET
  27.                             SCOTTSDALE, AZ 85251
  28.  
  29.                             Compuserve: 73177,2771
  30.                             and Phx PC User's Group
  31.  
  32.                      Special thanks to the hard-working 
  33.                      students in my class on fourth generation 
  34.                      languages at the DeVry Institute of 
  35.                      Technology, Phoenix, Arizona.
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.                                  TABLE OF CONTENTS
  43.          
  44.          
  45.          INTRODUCTION  . . . . . . . . . . . . . . . . . . . . . . . INTRO-1
  46.            Key Words Needed to Understand the Documentation  . . . . INTRO-1
  47.            What Is SQL And Why Is It So Important To Know? . . . . . INTRO-1
  48.            How Does This Implementation Of SQL Differ From Others? . INTRO-3
  49.            Differences In The Registered Version . . . . . . . . . . INTRO-4
  50.            How To Register . . . . . . . . . . . . . . . . . . . . . INTRO-5
  51.            Tutorial  . . . . . . . . . . . . . . . . . . . . . . . . INTRO-6
  52.            Permission to copy  . . . . . . . . . . . . . . . . . . . INTRO-7
  53.  
  54.          EXTRACTING DATA FROM A SINGLE TABLE . . . . . . . . . . . . SELECT-1
  55.            Distinct  . . . . . . . . . . . . . . . . . . . . . . . . SELECT-2
  56.            Where . . . . . . . . . . . . . . . . . . . . . . . . . . SELECT-4
  57.            search_expression . . . . . . . . . . . . . . . . . . . . SELECT-4
  58.            Special Search Expression - is null, is not null  . . . . SELECT-5
  59.            Special Search Expression - like, not like  . . . . . . . SELECT-7
  60.            And, Or, Not  . . . . . . . . . . . . . . . . . . . . . . SELECT-8
  61.            Any . . . . . . . . . . . . . . . . . . . . . . . . . . . SELECT-12
  62.            In. . . . . . . . . . . . . . . . . . . . . . . . . . . . SELECT-13
  63.            All . . . . . . . . . . . . . . . . . . . . . . . . . . . SELECT-13
  64.            Mathmatical Functions Avg, Min, Max, Sum, Count . . . . . SELECT-14
  65.            Group by, Having  . . . . . . . . . . . . . . . . . . . . SELECT-16
  66.            Order by  . . . . . . . . . . . . . . . . . . . . . . . . SELECT-17
  67.            Into  . . . . . . . . . . . . . . . . . . . . . . . . . . SELECT-18
  68.       
  69.          JOINING TABLES  . . . . . . . . . . . . . . . . . . . . . . JOIN-1
  70.  
  71.          SUBQUERIES  . . . . . . . . . . . . . . . . . . . . . . . . SUBQ-1
  72.  
  73.          CREATE A TABLE  . . . . . . . . . . . . . . . . . . . . . . CREATE-1
  74.          CREATE A VIEW . . . . . . . . . . . . . . . . . . . . . . . VIEW-1
  75.  
  76.          INSERT DATA INTO A TABLE  . . . . . . . . . . . . . . . . . INSERT-1
  77.  
  78.          UPDATE DATA IN A TABLE  . . . . . . . . . . . . . . . . . . UPDATE-1
  79.  
  80.          DELETE DATA FROM A TABLE  . . . . . . . . . . . . . . . . . DELETE-1
  81.  
  82.          APPENDIX A - SAMPLE QUERIES . . . . . . . . . . . . . . . . APP-1
  83.  
  84.          APPENDIX B - ANSWERS TO TUTORIAL  . . . . . . . . . . . . . APP-3
  85.  
  86.          APPENDIX C - ORDER FORM . . . . . . . . . . . . . . . . . . LAST PAGE
  87.          
  88.          
  89.          
  90.          
  91.          KEY WORDS NEEDED TO UNDERSTAND THE DOCUMENTATION
  92.  
  93.          SQL - Structured Query Language. A standard method of 
  94.          interacting with a database.  It is pronounced "SEQUEL"!!  NEVER 
  95.          SAY THE LETTERS S-Q-L!!  IT WILL BRING SEVEN YEARS OF BAD LUCK 
  96.          AND SHOW PEOPLE THAT YOU ARE NEW TO SQL!!!
  97.          
  98.          TABLE - A table is typically known as a FILE in other systems.
  99.          You may ask why they don't just call a table a file.  It is 
  100.          because that although normally a table does refer to a specific 
  101.          file, a table can refer to something that spans two or more 
  102.          files.  This can be done by "creating a view" (see 
  103.          documentation). If you read a book on relational databases, they 
  104.          will probably refer to a table as a relation. 
  105.  
  106.          ROW - A row corresponds to a record or a portion of a record in 
  107.          a file.  In relational theory it is called a tuple.
  108.  
  109.          COLUMN - A column is typically known as a field in other 
  110.          systems.  In relational theory it is called an attribute.
  111.  
  112.          The above names were created to give relational databases a 
  113.          consistent and accurate view of data.
  114.  
  115.          EXAMPLE:
  116.  
  117.          You may have a TABLE named sales which contains COLUMNs called 
  118.          date, custnum, partnum and quantity.  Every time you made a 
  119.          sale, you would add a ROW of data to the TABLE.
  120.  
  121.                       COLUMNS
  122.            -----------------------------
  123.           |         |        |         |
  124.          date    custnum  partnum  quantity
  125.          ------  -------  -------  --------
  126.          880201  8524     AD873         928       <-- ROW
  127.          880203  7687     VF8709         87       <-- ROW
  128.  
  129.          ----------------------------------
  130.                         ^
  131.                         |
  132.                       TABLE 
  133.  
  134.          WHAT IS SQL AND WHY IS IT SO IMPORTANT TO KNOW?
  135.          
  136.          SQL stands for Structured Query Language.  It was developed as 
  137.          a standard method to query (extract data from) a relational 
  138.          database and do other operations to maintain relational 
  139.          databases.  Relational databases look at files as if they were 
  140.          simply tables.  SQL was developed years ago at a theoretical 
  141.          level but because of its inherent inefficiencies and programming 
  142.          complexity, it has been very difficult to create workable programs.  
  143.          It provides the most flexible approach to extracting data from a 
  144.          database.  It allows us to extract data in seconds that would 
  145.          take a knowledgeable programmer hours, days or weeks to extract, 
  146.          even if the programmer had the most advanced non-SQL languages 
  147.          available.  For a sampling of the types of queries that SQL can 
  148.          handle, refer to Appendix A.
  149.  
  150.                                       INTRO-1
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.          It is also important to know that popular databases such as 
  158.          Rbase and dBase, are coming out with SQL versions.  The Rbase 
  159.          version will cost from about $900 to $2495 for the network 
  160.          version.  Hopefully, in the years to come, the price will come 
  161.          down.
  162.  
  163.          The new operating system for PCs, OS/2, will have an extended 
  164.          version (at a cost of about $800) which will include SQL.  IBM 
  165.          has stated that SQL is to become the standard interface for 
  166.          databases.
  167.  
  168.          
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.                                   INTRO-2
  209.          
  210.          HOW DOES THIS IMPLEMENTATION DIFFER FROM THE OTHERS?
  211.          The following is a table from the January, 1988 issue of BYTE.  
  212.          I have added SSQL to the end of the table for comparison: 
  213.  
  214.          SQL Command  Informix  Ingres  Oracle  SQLBase  XDB   XQL    SSQL
  215.                         2.0      5.0     5.1     3.2.2    II   1.0     1.1
  216.                        ($795)   ($950)  ($1295)  ($995) ($395) ($795) ($30)
  217.          DML (Data Manipulation Language)
  218.          SELECT         Yes      Yes      Yes     Yes    Yes    Yes    Yes 
  219.            COLUMNS      Yes      Yes      Yes     Yes    Yes    Yes    Yes 
  220.            EXPRESSIONS  Yes      Yes      Yes     Yes    Yes    No     No  
  221.          DISTINCT       Yes      Yes      Yes     Yes    Yes    No     Yes 
  222.          FROM           Yes      Yes      Yes     Yes    Yes    Yes    Yes 
  223.          WHERE          Yes      Yes      Yes     Yes    Yes    Yes    Yes 
  224.          GROUP BY       Yes      Yes      Yes     Yes    Yes    Yes    Yes 
  225.          HAVING         Yes      Yes      Yes     Yes    Yes    Yes    Yes 
  226.          ORDER BY       Yes      Yes      Yes     Yes    Yes    Yes    Yes 
  227.          SUBQUERIES     Yes      Yes      Yes     Yes    Yes    Yes    Yes 
  228.          UPDATE SET     Yes      Yes      Yes     Yes    Yes    Yes     1 
  229.          WHERE          Yes      Yes      Yes     Yes    Yes    Yes    Yes  
  230.          SUBQUERIES     Yes      Yes      Yes     Yes    Yes    No     Yes 
  231.          INSERT INTO    Yes      Yes      Yes     Yes    Yes    Yes     2  
  232.          SUBQUERY       Yes      Yes      Yes     Yes    Yes    No     No  
  233.          DELETE FROM    Yes      Yes      Yes     Yes    Yes    Yes    Yes 
  234.          SUBQUERIES     Yes      Yes      Yes     Yes    Yes    Yes    Yes 
  235.          UNION          Yes      Yes      Yes     Yes    Yes    No     No  
  236.          CORRELATED -                                                      
  237.          SUBQUERIES     Yes      Yes      Yes     Yes    Yes    No     No  
  238.          DML Predicates 
  239.          BETWEEN        Yes      Yes      Yes     Yes    Yes    Yes    Yes 
  240.          LIKE           Yes      Yes      Yes     Yes    Yes    No     Yes 
  241.          IS NULL        Yes      Yes      Yes     Yes    Yes    Yes    Yes 
  242.          EXISTS         Yes      Yes      Yes     Yes    Yes    No     No  
  243.          ALL            Yes      Yes      Yes     Yes    Yes    No     Yes 
  244.          ANY            Yes      Yes      Yes     Yes    Yes    No     Yes 
  245.          SOME           No       No       No      No     No     No     No  
  246.          [NOT]          Yes      Yes      Yes     Yes    Yes    Yes    Yes 
  247.          DML Functions 
  248.          AVG            Yes      Yes      Yes     Yes    Yes    Yes    Yes 
  249.          COUNT(*)       Yes      Yes      Yes     Yes    Yes    No     No  
  250.          COUNT          Yes      Yes      Yes     Yes    Yes    Yes    Yes 
  251.          MAX            Yes      Yes      Yes     Yes    Yes    Yes    Yes 
  252.          MIN            Yes      Yes      Yes     Yes    Yes    Yes    Yes 
  253.          SUM            Yes      Yes      Yes     Yes    Yes    Yes    Yes 
  254.          DDL (Data Definition Language)
  255.          ALTER TABLE    Yes      Yes      Yes     Yes    Yes    Yes     3  
  256.          CREATE TABLE   Yes      Yes      Yes     Yes    Yes    Yes    Yes 
  257.            NOT NULL     Yes      Yes      Yes     Yes    Yes    No     No  
  258.          CREATE INDEX   Yes      Yes      Yes     Yes    Yes    Yes    No  
  259.          CREATE UNIQUE
  260.          INDEX          Yes      Yes      Yes     Yes    Yes    No     No  
  261.          CREATE VIEW    Yes      Yes      Yes     Yes    Yes    Yes    Yes
  262.          DROP TABLE     Yes      Yes      Yes     Yes    Yes    Yes    Yes
  263.          DROP INDEX     Yes      Yes      Yes     Yes    Yes    Yes    No  
  264.  
  265.          1. Although the syntax is a bit different (better), the insert 
  266.          is available.
  267.          2. The update exists, but you must update one row (record) at a 
  268.          time.  You cannot use a calculation to update a set of rows.
  269.          3. Although the syntax is different, You can delete columns in a 
  270.          table, change the names of the columns, change the size and data 
  271.          type of a column, etc.
  272.                                       INTRO-3
  273.          
  274.          
  275.          
  276.          
  277.          
  278.          STRENGTHS AND WEAKNESSES OF SSQL
  279.  
  280.          My emphasis has been on the data manipulation language since 
  281.          that is the most difficult to master and it is the most useful 
  282.          to the end-user.  Since the current version of SSQL cannot 
  283.          create indexes, querying large tables tends to be slow in 
  284.          comparison.  When joining tables, SSQL on a PC with a RAM disk 
  285.          can evaluate about 750-800 rows/minute.  On a PC AT with a hard 
  286.          disk it is about 3200 rows/minute.  
  287.  
  288.          I don't think SSQL can be touched on a price/performance basis 
  289.          though.  I use Oracle 5.1 - the stack of documentation is over 
  290.          a foot high and it requires a PC AT with one megabyte of 
  291.          extended memory.  It is an excellent package but not everybody 
  292.          needs the power of a $1,295 product. 
  293.  
  294.          SSQL documentation is oriented toward the end-user, not the 
  295.          programmer.
  296.  
  297.          DIFFERENCES IN THE REGISTERED VERSION
  298.          
  299.          PROGRAM
  300.          There is NO difference in the programs except that registered 
  301.          users are assured of getting the most current version.
  302.  
  303.          DISK-BASED DOCUMENTATION (UNREGISTERED USERS)
  304.          The disk-based documentation only shows you enough to get you 
  305.          started.  However, it does show all the options so you 
  306.          can see for yourself that the commands actually work.  
  307.  
  308.          FULL DOCUMENTATION (REGISTERED USERS)
  309.  
  310.          The full documentation includes the disk-based documentation but 
  311.          it is printed with a laser printer.
  312.          It also has:
  313.  
  314.          1) A full explanation on how to simultaneously extract data out 
  315.             of more than one table. This is called joining tables.
  316.  
  317.          2) In-depth information on how to create subqueries.  This 
  318.             technique allows you to put select statements within select 
  319.             statements.  This is where the word Structured comes from in 
  320.             the word Structured Query Language. 
  321.             
  322.          3) Answers and detailed explanations to the queries in the 
  323.             appendix.  This shows the amazing flexibility of SQL and why 
  324.             it is becoming so popular. 
  325.  
  326.          4) The power of SQL can be TOTALLY lost if the user does not 
  327.             understand the basics of data normalization.  Data 
  328.             normalization involves the rules for creating tables.  If the 
  329.             tables are not organized correctly, SQL cannot be used to its 
  330.  
  331.                                       INTRO-4
  332.          
  333.  
  334.  
  335.  
  336.  
  337.             full potential.  It is important to note that the topic is 
  338.             discussed with the non-technical end-user in mind.  Since 
  339.             there have not been any widely available SQL program, all the 
  340.             books on normalization tend to be very theoretical and 
  341.             academically oriented.  
  342.             
  343.             Even if our objective is to just create tables in the third 
  344.             normal form (there are more), going to the standard text 
  345.             books is frustrating.  For example, one of the best books on 
  346.             databases is AN INTRODUCTION TO DATABASE SYSTEMS by C. J. 
  347.             Date.  His definitions for first, second and third normal 
  348.             forms are:
  349.  
  350.             First normal form -
  351.             A relation R is in first normal form (1NF) if and only if all 
  352.             underlying domains contain atomic values only. 
  353.  
  354.             Second normal form - 
  355.             A relation R is in second normal form if and only if it is in 
  356.             1NF and every nonkey attribute is fully dependent on the 
  357.             primary key.
  358.  
  359.             Third normal form - 
  360.             A relation R is in third normal form (3NF) if and only if it 
  361.             is in 2NF and every nonkey attribute is nontransitively 
  362.             dependent on the primary key.
  363.  
  364.             Unfortunately, the above definitions are designed for 
  365.             students of database theory, not the typical end-user who 
  366.             wants to create some simple tables.  I give plenty of examples 
  367.             and try to avoid the jargon as much as possible.
  368.  
  369.          5) Full information on utilities to delete columns from 
  370.          tables, modify column names, change the width of columns, create 
  371.          tables which are subsets of a current table, etc. 
  372.  
  373.  
  374.          HOW TO REGISTER
  375.  
  376.          Send $30 plus $2.50 shipping and handling to:
  377.  
  378.          Silvaware
  379.          3902 North 87th St.
  380.          Scottsdale, AZ 85251
  381.  
  382.          Make checks payable to STEVE SILVA.  Sorry, no VISA or 
  383.          MasterCharge. There is an Order Form on the last page.
  384.  
  385.          You will receive full documentation and the latest version of 
  386.          SSQL.
  387.          
  388.  
  389.                                       INTRO-5
  390.          
  391.          
  392.          
  393.          
  394.          TUTORIAL
  395.  
  396.          Read the section on Getting Data From a Single Table.  As you 
  397.          read the documentation, it is better to have SSQL running. Type 
  398.          the following at the prompt where the program and associated 
  399.          files reside:
  400.  
  401.          SSQL    (press <ENTER>)
  402.  
  403.          After a brief message, the cursor will stop at the following 
  404.          prompt: 
  405.  
  406.          SSQL>
  407.  
  408.          At this point, you can enter any SQL command.  I suggest that 
  409.          you type the select statements as you read about them.  As you 
  410.          understand the command, try your own variations.  WHEN YOU WANT
  411.          TO EXIT SSQL AND RETURN TO THE DOS PROMPT TYPE "EXIT".
  412.  
  413.          The table we want to create involves customer information.  We 
  414.          want to store the customer's code, name, state, and rating.
  415.          The following is the table we want to create:
  416.          
  417.          code name            st rating
  418.          ---- --------------- -- ------
  419.          c1   Compugorp       WA     20
  420.          c2   Techoharps      OR     
  421.          c3   Organomice      AZ     34
  422.  
  423.          
  424.          Our first step is to create the table.  Please refer to the 
  425.          section on creating a table, then type:
  426.  
  427.          SSQL> create table cust ( 
  428.              > code char 2   
  429.              > name char 15  
  430.              > st char 2     
  431.              > rating num 2  
  432.              > ) 20;         
  433.          
  434.  
  435.          The above will create a table called "cust" with a column called 
  436.          code which is two characters wide, a column called name which is 
  437.          fifteen characters wide, a column called st which is two 
  438.          characters wide and a column called rating which is a 
  439.          number that can be two digits.  The last line tells you how many 
  440.          customers it can hold which is 20.  It is important to note the 
  441.          details - the "(" after cust, the ")" on the last line, and the 
  442.          ";" which ends the command.
  443.  
  444.          Now we need to put some data into the table.  Read the section 
  445.          on Insert Data Into the Table.  Type "insert cust", press 
  446.          <ENTER>, and type data for each prompt.  After you type all the 
  447.          data and are prompted to enter a new code, press the ESC key to 
  448.          exit the insert mode.  It will respond with the number of rows 
  449.  
  450.                                       INTRO-6
  451.          
  452.          
  453.          
  454.          
  455.          
  456.          inserted. 
  457.  
  458.          The screen should look like:
  459.  
  460.          SSQL> insert cust;
  461.          ESC = EXIT, <ENTER> = NULL VALUE  
  462.          code            : c1             
  463.          name            : Compugorp______
  464.          st              : WA             
  465.          rating          : 20             
  466.          ----                             
  467.          code            : c2             
  468.          name            : Techoharps_____
  469.          st              : OR             
  470.          rating          : __             
  471.          ----                             
  472.          code            : c3             
  473.          name            : Organomice_____
  474.          st              : AZ             
  475.          rating          : 34             
  476.          ----                             
  477.          code            : <ESC>    <-- Press ESC to exit
  478.          3 rows inserted 
  479.          
  480.          There is a special case for customer c2.  Note that the rating 
  481.          column is blank.  This means that a rating is not appropriate 
  482.          for this customer.  This is not to say that the rating is zero.  
  483.          This is explained further in the section on the "select" 
  484.          statement.  Just press <ENTER> when you come to the rating
  485.          prompt for c2. 
  486.  
  487.          Now refer to the section called EXTRACTING DATA FROM A SINGLE 
  488.          TABLE in order to understand how to use the "select" statement 
  489.          and the logic of the "where" clause which are helpful in 
  490.          completing the tutorial.
  491.  
  492.          Let's assume that you made a mistake entering the name for 
  493.          customer c2.  The name should be Technoharps instead of 
  494.          Techoharps.
  495.  
  496.          Refer to the section called UPDATE DATA IN A TABLE for the 
  497.          solution and some other ways to update tables.
  498.  
  499.  
  500.          QUIZ TIME!!!  (THE ANSWERS ARE IN APPENDIX C)
  501.  
  502.          1. List all the data in the table.
  503.          2. List the customer name and rating for all customers in AZ.
  504.          3. List all the data for ratings from 10 to 35.
  505.          4. List the average rating.
  506.          5. How many customers have a rating of less than 25.
  507.  
  508.          The above will give you a start.  The real power of SQL would be 
  509.          realized if you had other related tables as explained in 
  510.  
  511.                                     INTRO-7
  512.          
  513.          
  514.          
  515.          
  516.          
  517.          Appendix A. 
  518.  
  519.          For deleting data, refer to the section called DELETING DATA 
  520.          FROM A TABLE.
  521.  
  522.  
  523.          PERMISSION TO COPY
  524.  
  525.          Please copy this disk and give it to a friend (or anybody else).
  526.          However, the following restrictions apply:
  527.          1.  No changes can be made to the distribution disk, including the 
  528.          documentation.
  529.          2. You cannot copy or reproduce the printed manual.  
  530.  
  531.          Any commercial, educational, governmental and other such 
  532.          organizations are required to purchase a copy of SSQL for 
  533.          every building/department it is used in.
  534.  
  535.          Quantity discounts available.
  536.  
  537.  
  538.  
  539.  
  540.  
  541.  
  542.  
  543.  
  544.  
  545.  
  546.  
  547.  
  548.  
  549.  
  550.  
  551.  
  552.  
  553.  
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.                                     INTRO-7
  571.          
  572.  
  573.