home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume34 / shql / part01 / README < prev    next >
Text File  |  1993-01-06  |  4KB  |  94 lines

  1.                               S H Q L  version 1.1
  2.  
  3.     Shql is a program that reads SQL commands interactively and
  4.     executes those commands by creating and manipulating Unix files.
  5.  
  6.     This program requires a bourne shell that understands functions,
  7.     as well as awk, grep, cut, sort, uniq, join, wc, and sed.
  8.  
  9.      This script can be invoked with the command 
  10.  
  11.         shql [-q] {database name}
  12.  
  13.       A directory must be created for the database before you may use it.
  14.     This directory will house all data files for a single database.
  15.     All datafiles are created with mode 666 ('rw-rw-rw-'), so create the
  16.     directory with 777 ('rwxrwxrwx') if you want the database to be 
  17.     sharable, and 700 ('rwx------') to be private.  Of course, multiple
  18.     databases are possible.  A database called 'mydb' may be created
  19.     as a directory $HOME/mydb, $HOME/shql/mydb, ./mydb, or as 
  20.     $SHQL_ROOT/mydb, where $SHQL_ROOT is defined below.  The -q
  21.     option turns off the display of headings so the output of shql
  22.     can be used by other programs by caputuring all lines that begin
  23.     the pipe symbol.
  24.  
  25.       The program is patterned after Ingres' interactive sql terminal
  26.     monitor program.  Terminal monitor commands begin with either a
  27.     forward or back-slash.  Forward slashes may appear at the end of a
  28.     commend line. Back-slashes are accepted for compatability.  The /g
  29.     is the 'go' command, /p is print, and /q is quit.  Try 'help commands' 
  30.     for a full list.  Because of this, if you need to put a slash as
  31.     the second to last caracter on a line, you should add a space
  32.     between the slash and the last character.
  33.     
  34.     To get started, invoke shql with a database name.  Use the directory 
  35.     name you created above. Type
  36.  
  37.         shql mydb
  38.  
  39.     if the directory you created was 'mydb'.  Once shql starts up, you 
  40.     should see the database name displayed, and then a '*'. At this
  41.     point, the most valuable thing is to type help,
  42.  
  43.         * help
  44.         * /g
  45.  
  46.     You may then go on.  The command 'help syntax' displays syntax
  47.     for all SQL operations, and 'help commands' displays all shql
  48.     workspace commands.  Try the demo.
  49.  
  50.     Shql can execute only one operation at a time, but operations can
  51.     be spread over several lines.
  52.  
  53.     Shql operations are allow 'select' operations on multiple tables.
  54.     Table names are read from left to write in select's 'from'
  55.     section, so the tables should be ordered with the most central
  56.     tables first.  In two-table joins, it doesn't matter.  In three
  57.     table joins, if you join table A-to-B and B-to-C, B must not be
  58.     the last table in the from clause, because shql will not be able
  59.     to join tables A-C.  If you get the message 'Join not found, try
  60.     reordering tables', this is probably the problem.  Also
  61.     qualified field names are not understood, like tablename.fieldname,
  62.     so if you are joining my_id in table A with my_id in table B, just
  63.     say 'my_id = my_id'.  Views can also be used to create
  64.     multi-table selects.
  65.  
  66.     Subselects are implemented, but must be the last operand of a
  67.     'where' clause, most useful with 'in'.
  68.  
  69.     In most cases, commas are optional.  NULLs are not implemented.
  70.     Aggregates like AVG() are implemented, but not with GROUP BY.
  71.  
  72.     When INSERTing strings that contain the characters !,=,>,<,(, or ),
  73.     spaces or backslashes may be added during the insert.  This is a
  74.     side-effect of the string manipulation needed to properly
  75.     parse the command parameters.
  76.  
  77.     This SQL is type-less, so specify just the column width when creating
  78.     tables.  This is used only for display purposes.  Shql is
  79.     case-sensitive, and expects SQL key words to be in lower case.
  80.     
  81.     Commands can be piped into shql, and the table data files are
  82.     tab delimited, so awk scripts can be used to generate reports 
  83.     directly from the tables.  To operate on non-shql data files,
  84.     create a dummy table with the proper fields, then copy your file
  85.     into your shql data directory, replacing your delimiters with
  86.     tabs, then run shql on the table, and convert the table back to 
  87.     its original format.  Grave accents (`) may be used to execute 
  88.     unix command from with shql.  Environment variables may also be
  89.     used. See the demo for an example, i.e. "cat demo.shql | shql mydb".
  90.  
  91.     If you have comments, suggestions, or bug reports contact:
  92.  
  93.         Bruce Momjian, root@candle.uucp (root%candle.uucp@bts.com)
  94.