/ Hex Artifact Content
Login

Artifact d694c3f3614aa6a6903923437d8f520a2ee97332:


0000: 23 0a 23 20 52 75 6e 20 74 68 69 73 20 54 63 6c  #.# Run this Tcl
0010: 20 73 63 72 69 70 74 20 74 6f 20 67 65 6e 65 72   script to gener
0020: 61 74 65 20 74 68 65 20 73 71 6c 69 74 65 2e 68  ate the sqlite.h
0030: 74 6d 6c 20 66 69 6c 65 2e 0a 23 0a 73 65 74 20  tml file..#.set 
0040: 72 63 73 69 64 20 7b 24 49 64 3a 20 6c 61 6e 67  rcsid {$Id: lang
0050: 2e 74 63 6c 2c 76 20 31 2e 33 20 32 30 30 30 2f  .tcl,v 1.3 2000/
0060: 30 36 2f 30 39 20 30 33 3a 34 37 3a 31 39 20 64  06/09 03:47:19 d
0070: 72 68 20 45 78 70 20 24 7d 0a 0a 70 75 74 73 20  rh Exp $}..puts 
0080: 7b 3c 68 74 6d 6c 3e 0a 3c 68 65 61 64 3e 0a 20  {<html>.<head>. 
0090: 20 3c 74 69 74 6c 65 3e 51 75 65 72 79 20 4c 61   <title>Query La
00a0: 6e 67 75 61 67 65 20 55 6e 64 65 72 73 74 6f 6f  nguage Understoo
00b0: 64 20 42 79 20 53 51 4c 69 74 65 3c 2f 74 69 74  d By SQLite</tit
00c0: 6c 65 3e 0a 3c 2f 68 65 61 64 3e 0a 3c 62 6f 64  le>.</head>.<bod
00d0: 79 20 62 67 63 6f 6c 6f 72 3d 77 68 69 74 65 3e  y bgcolor=white>
00e0: 0a 3c 68 31 20 61 6c 69 67 6e 3d 63 65 6e 74 65  .<h1 align=cente
00f0: 72 3e 0a 53 51 4c 20 41 73 20 55 6e 64 65 72 73  r>.SQL As Unders
0100: 74 6f 6f 64 20 42 79 20 53 51 4c 69 74 65 0a 3c  tood By SQLite.<
0110: 2f 68 31 3e 7d 0a 70 75 74 73 20 22 3c 70 20 61  /h1>}.puts "<p a
0120: 6c 69 67 6e 3d 63 65 6e 74 65 72 3e 0a 28 54 68  lign=center>.(Th
0130: 69 73 20 70 61 67 65 20 77 61 73 20 6c 61 73 74  is page was last
0140: 20 6d 6f 64 69 66 69 65 64 20 6f 6e 20 5b 6c 72   modified on [lr
0150: 61 6e 67 65 20 24 72 63 73 69 64 20 33 20 34 5d  ange $rcsid 3 4]
0160: 20 47 4d 54 29 0a 3c 2f 70 3e 22 0a 0a 70 75 74   GMT).</p>"..put
0170: 73 20 7b 0a 3c 70 3e 54 68 65 20 53 51 4c 69 74  s {.<p>The SQLit
0180: 65 20 6c 69 62 72 61 72 79 20 75 6e 64 65 72 73  e library unders
0190: 74 61 6e 64 73 20 6d 6f 73 74 20 6f 66 20 74 68  tands most of th
01a0: 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c 0a 6c  e standard SQL.l
01b0: 61 6e 67 75 61 67 65 2e 20 20 42 75 74 20 69 74  anguage.  But it
01c0: 20 64 6f 65 73 20 6f 6d 69 74 20 73 6f 6d 65 20   does omit some 
01d0: 66 65 61 74 75 72 65 73 20 77 68 69 6c 65 20 61  features while a
01e0: 74 20 74 68 65 20 73 61 6d 65 20 74 69 6d 65 0a  t the same time.
01f0: 61 64 64 69 6e 67 20 61 20 66 65 77 20 66 65 61  adding a few fea
0200: 74 75 72 65 73 20 6f 66 20 69 74 73 20 6f 77 6e  tures of its own
0210: 2e 20 20 54 68 69 73 20 64 6f 63 75 6d 65 6e 74  .  This document
0220: 20 61 74 74 65 6d 70 74 73 20 74 6f 0a 64 65 73   attempts to.des
0230: 63 72 69 62 65 20 70 65 72 63 69 73 65 6c 79 20  cribe percisely 
0240: 77 68 61 74 20 70 61 72 74 73 20 6f 66 20 74 68  what parts of th
0250: 65 20 53 51 4c 20 6c 61 6e 67 75 61 67 65 20 53  e SQL language S
0260: 51 4c 69 74 65 20 64 6f 65 73 0a 61 6e 64 20 64  QLite does.and d
0270: 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 2e  oes not support.
0280: 3c 2f 70 3e 0a 0a 3c 70 3e 49 6e 20 61 6c 6c 20  </p>..<p>In all 
0290: 6f 66 20 74 68 65 20 73 79 6e 74 61 78 20 64 69  of the syntax di
02a0: 61 67 72 61 6d 73 20 74 68 61 74 20 66 6f 6c 6c  agrams that foll
02b0: 6f 77 2c 20 6c 69 74 65 72 61 6c 20 74 65 78 74  ow, literal text
02c0: 20 69 73 20 73 68 6f 77 6e 20 69 6e 0a 62 6f 6c   is shown in.bol
02d0: 64 20 62 6c 75 65 2e 20 20 4e 6f 6e 2d 74 65 72  d blue.  Non-ter
02e0: 6d 69 6e 61 6c 20 73 79 6d 62 6f 6c 73 20 61 72  minal symbols ar
02f0: 65 20 73 68 6f 77 6e 20 69 6e 20 69 74 61 6c 69  e shown in itali
0300: 63 20 72 65 64 2e 20 20 4f 70 65 72 61 74 6f 72  c red.  Operator
0310: 73 0a 74 68 61 74 20 61 72 65 20 70 61 72 74 20  s.that are part 
0320: 6f 66 20 74 68 65 20 73 79 6e 74 61 63 74 69 63  of the syntactic
0330: 20 6d 61 72 6b 75 70 20 69 74 73 65 6c 66 20 61   markup itself a
0340: 72 65 20 73 68 6f 77 6e 20 69 6e 20 62 6c 61 63  re shown in blac
0350: 6b 20 72 6f 6d 61 6e 2e 3c 2f 70 3e 0a 0a 3c 70  k roman.</p>..<p
0360: 3e 54 68 69 73 20 64 6f 63 75 6d 65 6e 74 20 69  >This document i
0370: 73 20 6a 75 73 74 20 61 6e 20 6f 76 65 72 76 69  s just an overvi
0380: 65 77 20 6f 66 20 74 68 65 20 53 51 4c 20 73 79  ew of the SQL sy
0390: 6e 74 61 78 20 69 6d 70 6c 65 6d 65 6e 74 65 64  ntax implemented
03a0: 0a 62 79 20 53 51 4c 69 74 65 2e 20 20 4d 61 6e  .by SQLite.  Man
03b0: 79 20 6c 6f 77 2d 6c 65 76 65 6c 20 70 72 6f 64  y low-level prod
03c0: 75 63 74 69 6f 6e 73 20 61 72 65 20 6f 6d 69 74  uctions are omit
03d0: 74 65 64 2e 20 20 46 6f 72 20 64 65 74 61 69 6c  ted.  For detail
03e0: 65 64 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 6f  ed information.o
03f0: 6e 20 74 68 65 20 6c 61 6e 67 75 61 67 65 20 74  n the language t
0400: 68 61 74 20 53 51 4c 69 74 65 20 75 6e 64 65 72  hat SQLite under
0410: 73 74 61 6e 64 73 2c 20 72 65 66 65 72 20 74 6f  stands, refer to
0420: 20 74 68 65 20 73 6f 75 72 63 65 20 63 6f 64 65   the source code
0430: 2e 3c 2f 70 3e 0a 0a 0a 3c 70 3e 53 51 4c 69 74  .</p>...<p>SQLit
0440: 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68 65  e implements the
0450: 20 66 6f 6c 6c 6f 77 20 53 51 4c 20 63 6f 6d 6d   follow SQL comm
0460: 61 6e 64 73 3a 3c 2f 70 3e 0a 3c 70 3e 3c 75 6c  ands:</p>.<p><ul
0470: 3e 0a 7d 0a 0a 66 6f 72 65 61 63 68 20 7b 73 65  >.}..foreach {se
0480: 63 74 69 6f 6e 7d 20 5b 6c 73 6f 72 74 20 2d 69  ction} [lsort -i
0490: 6e 64 65 78 20 30 20 2d 64 69 63 74 69 6f 6e 61  ndex 0 -dictiona
04a0: 72 79 20 7b 0a 20 20 7b 7b 43 52 45 41 54 45 20  ry {.  {{CREATE 
04b0: 54 41 42 4c 45 7d 20 63 72 65 61 74 65 74 61 62  TABLE} createtab
04c0: 6c 65 7d 0a 20 20 7b 7b 43 52 45 41 54 45 20 49  le}.  {{CREATE I
04d0: 4e 44 45 58 7d 20 63 72 65 61 74 65 69 6e 64 65  NDEX} createinde
04e0: 78 7d 0a 20 20 7b 56 41 43 55 55 4d 20 76 61 63  x}.  {VACUUM vac
04f0: 75 75 6d 7d 0a 20 20 7b 7b 44 52 4f 50 20 54 41  uum}.  {{DROP TA
0500: 42 4c 45 7d 20 64 72 6f 70 74 61 62 6c 65 7d 0a  BLE} droptable}.
0510: 20 20 7b 7b 44 52 4f 50 20 49 4e 44 45 58 7d 20    {{DROP INDEX} 
0520: 64 72 6f 70 69 6e 64 65 78 7d 0a 20 20 7b 49 4e  dropindex}.  {IN
0530: 53 45 52 54 20 69 6e 73 65 72 74 7d 0a 20 20 7b  SERT insert}.  {
0540: 44 45 4c 45 54 45 20 64 65 6c 65 74 65 7d 0a 20  DELETE delete}. 
0550: 20 7b 55 50 44 41 54 45 20 75 70 64 61 74 65 7d   {UPDATE update}
0560: 0a 20 20 7b 53 45 4c 45 43 54 20 73 65 6c 65 63  .  {SELECT selec
0570: 74 7d 0a 20 20 7b 43 4f 50 59 20 63 6f 70 79 7d  t}.  {COPY copy}
0580: 0a 20 20 7b 45 58 50 4c 41 49 4e 20 65 78 70 6c  .  {EXPLAIN expl
0590: 61 69 6e 7d 0a 20 20 7b 65 78 70 72 65 73 73 69  ain}.  {expressi
05a0: 6f 6e 73 20 65 78 70 72 7d 0a 7d 5d 20 7b 0a 20  ons expr}.}] {. 
05b0: 20 70 75 74 73 20 22 3c 6c 69 3e 3c 61 20 68 72   puts "<li><a hr
05c0: 65 66 3d 5c 22 23 5b 6c 69 6e 64 65 78 20 24 73  ef=\"#[lindex $s
05d0: 65 63 74 69 6f 6e 20 31 5d 5c 22 3e 5b 6c 69 6e  ection 1]\">[lin
05e0: 64 65 78 20 24 73 65 63 74 69 6f 6e 20 30 5d 3c  dex $section 0]<
05f0: 2f 61 3e 3c 2f 6c 69 3e 22 0a 7d 0a 70 75 74 73  /a></li>".}.puts
0600: 20 7b 3c 2f 75 6c 3e 3c 2f 70 3e 0a 0a 3c 70 3e   {</ul></p>..<p>
0610: 44 65 74 61 69 6c 73 20 6f 6e 20 74 68 65 20 69  Details on the i
0620: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66  mplementation of
0630: 20 65 61 63 68 20 63 6f 6d 6d 61 6e 64 20 61 72   each command ar
0640: 65 20 70 72 6f 76 69 64 65 64 20 69 6e 0a 74 68  e provided in.th
0650: 65 20 73 65 71 75 65 6c 2e 3c 2f 70 3e 0a 7d 0a  e sequel.</p>.}.
0660: 0a 70 72 6f 63 20 53 79 6e 74 61 78 20 7b 61 72  .proc Syntax {ar
0670: 67 73 7d 20 7b 0a 20 20 70 75 74 73 20 7b 3c 74  gs} {.  puts {<t
0680: 61 62 6c 65 20 63 65 6c 6c 70 61 64 64 69 6e 67  able cellpadding
0690: 3d 22 31 35 22 3e 7d 0a 20 20 66 6f 72 65 61 63  ="15">}.  foreac
06a0: 68 20 7b 72 75 6c 65 20 62 6f 64 79 7d 20 24 61  h {rule body} $a
06b0: 72 67 73 20 7b 0a 20 20 20 20 70 75 74 73 20 22  rgs {.    puts "
06c0: 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 5c 22  <tr><td align=\"
06d0: 72 69 67 68 74 5c 22 20 76 61 6c 69 67 6e 3d 5c  right\" valign=\
06e0: 22 74 6f 70 5c 22 3e 22 0a 20 20 20 20 70 75 74  "top\">".    put
06f0: 73 20 22 3c 69 3e 3c 66 6f 6e 74 20 63 6f 6c 6f  s "<i><font colo
0700: 72 3d 5c 22 23 66 66 33 34 33 34 5c 22 3e 24 72  r=\"#ff3434\">$r
0710: 75 6c 65 3c 2f 66 6f 6e 74 3e 3c 2f 69 3e 26 6e  ule</font></i>&n
0720: 62 73 70 3b 3a 3a 3d 3c 2f 74 64 3e 22 0a 20 20  bsp;::=</td>".  
0730: 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 3c 20    regsub -all < 
0740: 24 62 6f 64 79 20 7b 25 4c 54 7d 20 62 6f 64 79  $body {%LT} body
0750: 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c 6c  .    regsub -all
0760: 20 3e 20 24 62 6f 64 79 20 7b 25 47 54 7d 20 62   > $body {%GT} b
0770: 6f 64 79 0a 20 20 20 20 72 65 67 73 75 62 20 2d  ody.    regsub -
0780: 61 6c 6c 20 25 4c 54 20 24 62 6f 64 79 20 7b 3c  all %LT $body {<
0790: 2f 66 6f 6e 74 3e 3c 2f 62 3e 3c 69 3e 3c 66 6f  /font></b><i><fo
07a0: 6e 74 20 63 6f 6c 6f 72 3d 22 23 66 66 33 34 33  nt color="#ff343
07b0: 34 22 3e 7d 20 62 6f 64 79 0a 20 20 20 20 72 65  4">} body.    re
07c0: 67 73 75 62 20 2d 61 6c 6c 20 25 47 54 20 24 62  gsub -all %GT $b
07d0: 6f 64 79 20 7b 3c 2f 66 6f 6e 74 3e 3c 2f 69 3e  ody {</font></i>
07e0: 3c 62 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22  <b><font color="
07f0: 23 32 63 32 63 66 30 22 3e 7d 20 62 6f 64 79 0a  #2c2cf0">} body.
0800: 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20      regsub -all 
0810: 7b 5b 5d 7c 5b 2a 3f 5d 7d 20 24 62 6f 64 79 20  {[]|[*?]} $body 
0820: 7b 3c 2f 66 6f 6e 74 3e 3c 2f 62 3e 26 3c 62 3e  {</font></b>&<b>
0830: 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23 32 63  <font color="#2c
0840: 32 63 66 30 22 3e 7d 20 62 6f 64 79 0a 20 20 20  2cf0">} body.   
0850: 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 22 5c 6e   regsub -all "\n
0860: 22 20 5b 73 74 72 69 6e 67 20 74 72 69 6d 20 24  " [string trim $
0870: 62 6f 64 79 5d 20 22 3c 62 72 3e 5c 6e 22 20 62  body] "<br>\n" b
0880: 6f 64 79 0a 20 20 20 20 72 65 67 73 75 62 20 2d  ody.    regsub -
0890: 61 6c 6c 20 22 5c 6e 20 20 2a 22 20 24 62 6f 64  all "\n  *" $bod
08a0: 79 20 22 5c 6e 5c 5c 26 6e 62 73 70 3b 5c 5c 26  y "\n\\&nbsp;\\&
08b0: 6e 62 73 70 3b 5c 5c 26 6e 62 73 70 3b 5c 5c 26  nbsp;\\&nbsp;\\&
08c0: 6e 62 73 70 3b 22 20 62 6f 64 79 0a 20 20 20 20  nbsp;" body.    
08d0: 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b 5b 7c 2c  regsub -all {[|,
08e0: 2e 2a 28 29 5d 7d 20 24 62 6f 64 79 20 7b 3c 62  .*()]} $body {<b
08f0: 69 67 3e 26 3c 2f 62 69 67 3e 7d 20 62 6f 64 79  ig>&</big>} body
0900: 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c 6c  .    regsub -all
0910: 20 7b 20 3d 20 7d 20 24 62 6f 64 79 20 7b 20 3c   { = } $body { <
0920: 62 69 67 3e 3d 3c 2f 62 69 67 3e 20 7d 20 62 6f  big>=</big> } bo
0930: 64 79 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61  dy.    regsub -a
0940: 6c 6c 20 7b 53 54 41 52 7d 20 24 62 6f 64 79 20  ll {STAR} $body 
0950: 7b 3c 62 69 67 3e 2a 3c 2f 62 69 67 3e 7d 20 62  {<big>*</big>} b
0960: 6f 64 79 0a 20 20 20 20 70 75 74 73 20 22 3c 74  ody.    puts "<t
0970: 64 3e 3c 62 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72  d><b><font color
0980: 3d 5c 22 23 32 63 32 63 66 30 5c 22 3e 24 62 6f  =\"#2c2cf0\">$bo
0990: 64 79 3c 2f 66 6f 6e 74 3e 3c 2f 62 3e 3c 2f 74  dy</font></b></t
09a0: 64 3e 3c 2f 74 72 3e 22 0a 20 20 7d 0a 20 20 70  d></tr>".  }.  p
09b0: 75 74 73 20 7b 3c 2f 74 61 62 6c 65 3e 7d 0a 7d  uts {</table>}.}
09c0: 0a 0a 70 72 6f 63 20 53 65 63 74 69 6f 6e 20 7b  ..proc Section {
09d0: 6e 61 6d 65 20 7b 6c 61 62 65 6c 20 7b 7d 7d 7d  name {label {}}}
09e0: 20 7b 0a 20 20 70 75 74 73 20 22 5c 6e 3c 68 72   {.  puts "\n<hr
09f0: 20 2f 3e 22 0a 20 20 69 66 20 7b 24 6c 61 62 65   />".  if {$labe
0a00: 6c 21 3d 22 22 7d 20 7b 0a 20 20 20 20 70 75 74  l!=""} {.    put
0a10: 73 20 22 3c 61 20 6e 61 6d 65 3d 5c 22 24 6c 61  s "<a name=\"$la
0a20: 62 65 6c 5c 22 3e 22 0a 20 20 7d 0a 20 20 70 75  bel\">".  }.  pu
0a30: 74 73 20 22 3c 68 31 3e 24 6e 61 6d 65 3c 2f 68  ts "<h1>$name</h
0a40: 31 3e 5c 6e 22 0a 7d 0a 0a 70 72 6f 63 20 45 78  1>\n".}..proc Ex
0a50: 61 6d 70 6c 65 20 7b 74 65 78 74 7d 20 7b 0a 20  ample {text} {. 
0a60: 20 70 75 74 73 20 22 3c 62 6c 6f 63 6b 71 75 6f   puts "<blockquo
0a70: 74 65 3e 3c 70 72 65 3e 24 74 65 78 74 3c 2f 70  te><pre>$text</p
0a80: 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  re></blockquote>
0a90: 22 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 43 4f 50  ".}..Section COP
0aa0: 59 20 63 6f 70 79 0a 0a 53 79 6e 74 61 78 20 7b  Y copy..Syntax {
0ab0: 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b  sql-statement} {
0ac0: 0a 43 4f 50 59 20 3c 74 61 62 6c 65 2d 6e 61 6d  .COPY <table-nam
0ad0: 65 3e 20 46 52 4f 4d 20 3c 73 74 72 69 6e 67 3e  e> FROM <string>
0ae0: 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45  .}..Section {CRE
0af0: 41 54 45 20 49 4e 44 45 58 7d 20 63 72 65 61 74  ATE INDEX} creat
0b00: 65 69 6e 64 65 78 0a 0a 53 79 6e 74 61 78 20 7b  eindex..Syntax {
0b10: 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b  sql-statement} {
0b20: 0a 43 52 45 41 54 45 20 49 4e 44 45 58 20 3c 69  .CREATE INDEX <i
0b30: 6e 64 65 78 2d 6e 61 6d 65 3e 20 0a 4f 4e 20 3c  ndex-name> .ON <
0b40: 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 28 20 3c 63  table-name> ( <c
0b50: 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 5b 2c 20 3c  olumn-name> [, <
0b60: 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 5d 2a 20 29  column-name>]* )
0b70: 0a 7d 20 7b 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 7d  .} {column-name}
0b80: 20 7b 0a 3c 6e 61 6d 65 3e 20 5b 20 41 53 43 20   {.<name> [ ASC 
0b90: 7c 20 44 45 53 43 20 5d 0a 7d 0a 0a 70 75 74 73  | DESC ].}..puts
0ba0: 20 7b 0a 3c 70 3e 54 68 65 20 43 52 45 41 54 45   {.<p>The CREATE
0bb0: 20 49 4e 44 45 58 20 63 6f 6d 6d 61 6e 64 20 63   INDEX command c
0bc0: 6f 6e 73 69 73 74 73 20 6f 66 20 74 68 65 20 6b  onsists of the k
0bd0: 65 79 77 6f 72 64 73 20 22 43 52 45 41 54 45 20  eywords "CREATE 
0be0: 49 4e 44 45 58 22 20 66 6f 6c 6c 6f 77 65 64 0a  INDEX" followed.
0bf0: 62 79 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  by the name of t
0c00: 68 65 20 6e 65 77 20 69 6e 64 65 78 2c 20 74 68  he new index, th
0c10: 65 20 6b 65 79 77 6f 72 64 20 22 4f 4e 22 20 74  e keyword "ON" t
0c20: 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 70 72 65  he name of a pre
0c30: 76 69 6f 75 73 6c 79 0a 63 72 65 61 74 65 64 20  viously.created 
0c40: 74 61 62 6c 65 20 74 68 61 74 20 69 73 20 74 6f  table that is to
0c50: 20 62 65 20 69 6e 64 65 78 65 64 2c 20 61 6e 64   be indexed, and
0c60: 20 61 20 70 61 72 65 6e 74 68 65 73 69 7a 65 64   a parenthesized
0c70: 20 6c 69 73 74 20 6f 66 20 6e 61 6d 65 73 20 6f   list of names o
0c80: 66 0a 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65  f.columns in the
0c90: 20 74 61 62 6c 65 20 74 68 61 74 20 61 72 65 20   table that are 
0ca0: 75 73 65 64 20 66 6f 72 20 74 68 65 20 69 6e 64  used for the ind
0cb0: 65 78 20 6b 65 79 2e 0a 45 61 63 68 20 63 6f 6c  ex key..Each col
0cc0: 75 6d 6e 20 6e 61 6d 65 20 63 61 6e 20 62 65 20  umn name can be 
0cd0: 66 6f 6c 6c 6f 77 65 64 20 62 79 20 6f 6e 65 20  followed by one 
0ce0: 6f 66 20 74 68 65 20 22 41 53 43 22 20 6f 72 20  of the "ASC" or 
0cf0: 22 44 45 53 43 22 20 6b 65 79 77 6f 72 64 73 0a  "DESC" keywords.
0d00: 74 6f 20 69 6e 64 69 63 61 74 65 20 73 6f 72 74  to indicate sort
0d10: 20 6f 72 64 65 72 2c 20 62 75 74 20 73 69 6e 63   order, but sinc
0d20: 65 20 47 44 42 4d 20 64 6f 65 73 20 6e 6f 74 20  e GDBM does not 
0d30: 69 6d 70 6c 65 6d 65 6e 74 20 6f 72 64 65 72 65  implement ordere
0d40: 64 20 6b 65 79 73 2c 0a 74 68 65 73 65 20 6b 65  d keys,.these ke
0d50: 79 77 6f 72 64 73 20 61 72 65 20 69 67 6e 6f 72  ywords are ignor
0d60: 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72  ed.</p>..<p>Ther
0d70: 65 20 61 72 65 20 6e 6f 20 61 72 62 69 74 72 61  e are no arbitra
0d80: 72 79 20 6c 69 6d 69 74 73 20 6f 6e 20 74 68 65  ry limits on the
0d90: 20 6e 75 6d 62 65 72 20 6f 66 20 69 6e 64 69 63   number of indic
0da0: 65 73 20 74 68 61 74 20 63 61 6e 20 62 65 0a 61  es that can be.a
0db0: 74 74 61 63 68 65 64 20 74 6f 20 61 20 73 69 6e  ttached to a sin
0dc0: 67 6c 65 20 74 61 62 6c 65 2c 20 6e 6f 72 20 6f  gle table, nor o
0dd0: 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  n the number of 
0de0: 63 6f 6c 75 6d 6e 73 20 69 6e 20 61 6e 20 69 6e  columns in an in
0df0: 64 65 78 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  dex.</p>..<p>The
0e00: 20 65 78 61 63 74 20 74 65 78 74 0a 6f 66 20 65   exact text.of e
0e10: 61 63 68 20 43 52 45 41 54 45 20 49 4e 44 45 58  ach CREATE INDEX
0e20: 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 73 74   statement is st
0e30: 6f 72 65 64 20 69 6e 20 74 68 65 20 3c 62 3e 73  ored in the <b>s
0e40: 71 6c 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e  qlite_master</b>
0e50: 0a 74 61 62 6c 65 2e 20 20 45 76 65 72 79 74 69  .table.  Everyti
0e60: 6d 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20  me the database 
0e70: 69 73 20 6f 70 65 6e 65 64 2c 20 61 6c 6c 20 43  is opened, all C
0e80: 52 45 41 54 45 20 49 4e 44 45 58 20 73 74 61 74  REATE INDEX stat
0e90: 65 6d 65 6e 74 73 0a 61 72 65 20 72 65 61 64 20  ements.are read 
0ea0: 66 72 6f 6d 20 74 68 65 20 3c 62 3e 73 71 6c 69  from the <b>sqli
0eb0: 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 20 74 61  te_master</b> ta
0ec0: 62 6c 65 20 61 6e 64 20 75 73 65 64 20 74 6f 20  ble and used to 
0ed0: 72 65 67 65 6e 65 72 61 74 65 0a 53 51 4c 69 74  regenerate.SQLit
0ee0: 65 27 73 20 69 6e 74 65 72 6e 61 6c 20 72 65 70  e's internal rep
0ef0: 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74  resentation of t
0f00: 68 65 20 69 6e 64 65 78 20 6c 61 79 6f 75 74 2e  he index layout.
0f10: 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e  </p>.}...Section
0f20: 20 7b 43 52 45 41 54 45 20 54 41 42 4c 45 7d 20   {CREATE TABLE} 
0f30: 7b 63 72 65 61 74 65 74 61 62 6c 65 7d 0a 0a 53  {createtable}..S
0f40: 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61  yntax {sql-comma
0f50: 6e 64 7d 20 7b 0a 43 52 45 41 54 45 20 54 41 42  nd} {.CREATE TAB
0f60: 4c 45 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20  LE <table-name> 
0f70: 28 0a 20 20 3c 63 6f 6c 75 6d 6e 2d 64 65 66 3e  (.  <column-def>
0f80: 20 5b 2c 20 3c 63 6f 6c 75 6d 6e 2d 64 65 66 3e   [, <column-def>
0f90: 5d 2a 0a 20 20 5b 2c 20 3c 63 6f 6e 73 74 72 61  ]*.  [, <constra
0fa0: 69 6e 74 3e 5d 2a 0a 29 0a 7d 20 7b 63 6f 6c 75  int>]*.).} {colu
0fb0: 6d 6e 2d 64 65 66 7d 20 7b 0a 3c 6e 61 6d 65 3e  mn-def} {.<name>
0fc0: 20 3c 74 79 70 65 3e 20 5b 3c 63 6f 6c 75 6d 6e   <type> [<column
0fd0: 2d 63 6f 6e 73 74 72 61 69 6e 74 3e 5d 2a 0a 7d  -constraint>]*.}
0fe0: 20 7b 74 79 70 65 7d 20 7b 0a 3c 74 79 70 65 6e   {type} {.<typen
0ff0: 61 6d 65 3e 20 7c 0a 3c 74 79 70 65 6e 61 6d 65  ame> |.<typename
1000: 3e 20 28 20 3c 6e 75 6d 62 65 72 3e 20 29 20 7c  > ( <number> ) |
1010: 0a 3c 74 79 70 65 6e 61 6d 65 3e 20 28 20 3c 6e  .<typename> ( <n
1020: 75 6d 62 65 72 3e 20 2c 20 3c 6e 75 6d 62 65 72  umber> , <number
1030: 3e 20 29 0a 7d 20 7b 63 6f 6c 75 6d 6e 2d 63 6f  > ).} {column-co
1040: 6e 73 74 72 61 69 6e 74 7d 20 7b 0a 4e 4f 54 20  nstraint} {.NOT 
1050: 4e 55 4c 4c 20 7c 0a 50 52 49 4d 41 52 59 20 4b  NULL |.PRIMARY K
1060: 45 59 20 5b 3c 73 6f 72 74 2d 6f 72 64 65 72 3e  EY [<sort-order>
1070: 5d 20 7c 0a 55 4e 49 51 55 45 20 7c 0a 43 48 45  ] |.UNIQUE |.CHE
1080: 43 4b 20 28 20 3c 65 78 70 72 3e 20 29 20 7c 0a  CK ( <expr> ) |.
1090: 44 45 46 41 55 4c 54 20 3c 76 61 6c 75 65 3e 0a  DEFAULT <value>.
10a0: 7d 20 7b 63 6f 6e 73 74 72 61 69 6e 74 7d 20 7b  } {constraint} {
10b0: 0a 50 52 49 4d 41 52 59 20 4b 45 59 20 28 20 3c  .PRIMARY KEY ( <
10c0: 6e 61 6d 65 3e 20 5b 2c 20 3c 6e 61 6d 65 3e 5d  name> [, <name>]
10d0: 2a 20 29 20 7c 0a 55 4e 49 51 55 45 20 28 20 3c  * ) |.UNIQUE ( <
10e0: 6e 61 6d 65 3e 20 5b 2c 20 3c 6e 61 6d 65 3e 5d  name> [, <name>]
10f0: 2a 20 29 20 7c 0a 43 48 45 43 4b 20 28 20 3c 65  * ) |.CHECK ( <e
1100: 78 70 72 3e 20 29 0a 7d 0a 0a 70 75 74 73 20 7b  xpr> ).}..puts {
1110: 0a 3c 70 3e 41 20 43 52 45 41 54 45 20 54 41 42  .<p>A CREATE TAB
1120: 4c 45 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  LE statement is 
1130: 62 61 73 69 63 61 6c 6c 79 20 74 68 65 20 6b 65  basically the ke
1140: 79 77 6f 72 64 73 20 22 43 52 45 41 54 45 20 54  ywords "CREATE T
1150: 41 42 4c 45 22 0a 66 6f 6c 6c 6f 77 65 64 20 62  ABLE".followed b
1160: 79 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20  y the name of a 
1170: 6e 65 77 20 74 61 62 6c 65 20 61 6e 64 20 61 20  new table and a 
1180: 70 61 72 65 6e 74 68 65 73 69 7a 65 64 20 6c 69  parenthesized li
1190: 73 74 20 6f 66 20 63 6f 6c 75 6d 6e 0a 64 65 66  st of column.def
11a0: 69 6e 69 74 69 6f 6e 73 20 61 6e 64 20 63 6f 6e  initions and con
11b0: 73 74 72 61 69 6e 74 73 2e 20 20 54 68 65 20 74  straints.  The t
11c0: 61 62 6c 65 20 6e 61 6d 65 20 63 61 6e 20 62 65  able name can be
11d0: 20 65 69 74 68 65 72 20 61 6e 20 69 64 65 6e 74   either an ident
11e0: 69 66 69 65 72 0a 6f 72 20 61 20 73 74 72 69 6e  ifier.or a strin
11f0: 67 2e 20 20 54 68 65 20 6f 6e 6c 79 20 72 65 73  g.  The only res
1200: 65 72 76 65 64 20 74 61 62 6c 65 20 6e 61 6d 65  erved table name
1210: 20 69 73 20 22 3c 62 3e 73 71 6c 69 74 65 5f 6d   is "<b>sqlite_m
1220: 61 73 74 65 72 3c 2f 62 3e 22 20 77 68 69 63 68  aster</b>" which
1230: 0a 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  .is the name of 
1240: 74 68 65 20 74 61 62 6c 65 20 74 68 61 74 20 72  the table that r
1250: 65 63 6f 72 64 73 20 74 68 65 20 64 61 74 61 62  ecords the datab
1260: 61 73 65 20 73 63 68 65 6d 61 2e 3c 2f 70 3e 0a  ase schema.</p>.
1270: 0a 3c 70 3e 45 61 63 68 20 63 6f 6c 75 6d 6e 20  .<p>Each column 
1280: 64 65 66 69 6e 69 74 69 6f 6e 20 69 73 20 74 68  definition is th
1290: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 63 6f  e name of the co
12a0: 6c 75 6d 6e 20 66 6f 6c 6c 6f 77 65 64 20 62 79  lumn followed by
12b0: 20 74 68 65 0a 64 61 74 61 74 79 70 65 20 66 6f   the.datatype fo
12c0: 72 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2c 20 74  r that column, t
12d0: 68 65 6e 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20  hen one or more 
12e0: 6f 70 74 69 6f 6e 61 6c 20 63 6f 6c 75 6d 6e 20  optional column 
12f0: 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 54 68 65  constraints..The
1300: 20 64 61 74 61 74 79 70 65 20 66 6f 72 20 74 68   datatype for th
1310: 65 20 63 6f 6c 75 6d 6e 20 69 73 20 69 67 6e 6f  e column is igno
1320: 72 65 64 2e 20 20 41 6c 6c 20 69 6e 66 6f 72 6d  red.  All inform
1330: 61 74 69 6f 6e 0a 69 73 20 73 74 6f 72 65 64 20  ation.is stored 
1340: 61 73 20 6e 75 6c 6c 2d 74 65 72 6d 69 6e 61 74  as null-terminat
1350: 65 64 20 73 74 72 69 6e 67 73 2e 20 20 54 68 65  ed strings.  The
1360: 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 61 72 65   constraints are
1370: 20 61 6c 73 6f 20 69 67 6e 6f 72 65 64 2c 0a 65   also ignored,.e
1380: 78 63 65 70 74 20 74 68 61 74 20 74 68 65 20 50  xcept that the P
1390: 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6e 73 74  RIMARY KEY const
13a0: 72 61 69 6e 74 20 77 69 6c 6c 20 63 61 75 73 65  raint will cause
13b0: 20 61 6e 20 69 6e 64 65 78 20 74 6f 20 62 65 20   an index to be 
13c0: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 0a 63 72  automatically.cr
13d0: 65 61 74 65 64 20 74 68 61 74 20 69 6d 70 6c 65  eated that imple
13e0: 6d 65 6e 74 73 20 74 68 65 20 70 72 69 6d 61 72  ments the primar
13f0: 79 20 6b 65 79 20 61 6e 64 20 74 68 65 20 44 45  y key and the DE
1400: 46 41 55 4c 54 20 63 6f 6e 73 74 72 61 69 6e 74  FAULT constraint
1410: 0a 77 68 69 63 68 20 73 70 65 63 69 66 69 65 73  .which specifies
1420: 20 61 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65   a default value
1430: 20 74 6f 20 75 73 65 20 77 68 65 6e 20 64 6f 69   to use when doi
1440: 6e 67 20 61 6e 20 49 4e 53 45 52 54 2e 0a 54 68  ng an INSERT..Th
1450: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 70 72  e name of the pr
1460: 69 6d 61 72 79 0a 6b 65 79 20 69 6e 64 65 78 20  imary.key index 
1470: 77 69 6c 6c 20 62 65 20 74 68 65 20 74 61 62 6c  will be the tabl
1480: 65 20 6e 61 6d 65 0a 77 69 74 68 20 22 3c 62 3e  e name.with "<b>
1490: 5f 5f 70 72 69 6d 61 72 79 5f 6b 65 79 3c 2f 62  __primary_key</b
14a0: 3e 22 20 61 70 70 65 6e 64 65 64 2e 20 20 54 68  >" appended.  Th
14b0: 65 20 69 6e 64 65 78 20 75 73 65 64 20 66 6f 72  e index used for
14c0: 20 61 20 70 72 69 6d 61 72 79 20 6b 65 79 0a 64   a primary key.d
14d0: 6f 65 73 20 6e 6f 74 20 73 68 6f 77 20 75 70 20  oes not show up 
14e0: 69 6e 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65  in the <b>sqlite
14f0: 5f 6d 61 73 74 65 72 3c 2f 62 3e 20 74 61 62 6c  _master</b> tabl
1500: 65 2c 20 62 75 74 20 61 20 47 44 42 4d 20 66 69  e, but a GDBM fi
1510: 6c 65 20 69 73 0a 63 72 65 61 74 65 64 20 66 6f  le is.created fo
1520: 72 20 74 68 61 74 20 69 6e 64 65 78 2e 3c 2f 70  r that index.</p
1530: 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 61 72 65 20  >..<p>There are 
1540: 6e 6f 20 61 72 62 69 74 72 61 72 79 20 6c 69 6d  no arbitrary lim
1550: 69 74 73 20 6f 6e 20 74 68 65 20 73 69 7a 65 20  its on the size 
1560: 6f 66 20 63 6f 6c 75 6d 6e 73 2c 20 6f 6e 20 74  of columns, on t
1570: 68 65 20 6e 75 6d 62 65 72 0a 6f 66 20 63 6f 6c  he number.of col
1580: 75 6d 6e 73 2c 20 6f 72 20 6f 6e 20 74 68 65 20  umns, or on the 
1590: 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6e 73 74 72  number of constr
15a0: 61 69 6e 74 73 20 69 6e 20 61 20 74 61 62 6c 65  aints in a table
15b0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 65 78  .</p>..<p>The ex
15c0: 61 63 74 20 74 65 78 74 0a 6f 66 20 65 61 63 68  act text.of each
15d0: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 74   CREATE TABLE st
15e0: 61 74 65 6d 65 6e 74 20 69 73 20 73 74 6f 72 65  atement is store
15f0: 64 20 69 6e 20 74 68 65 20 3c 62 3e 73 71 6c 69  d in the <b>sqli
1600: 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 0a 74 61  te_master</b>.ta
1610: 62 6c 65 2e 20 20 45 76 65 72 79 74 69 6d 65 20  ble.  Everytime 
1620: 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20  the database is 
1630: 6f 70 65 6e 65 64 2c 20 61 6c 6c 20 43 52 45 41  opened, all CREA
1640: 54 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  TE TABLE stateme
1650: 6e 74 73 0a 61 72 65 20 72 65 61 64 20 66 72 6f  nts.are read fro
1660: 6d 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f  m the <b>sqlite_
1670: 6d 61 73 74 65 72 3c 2f 62 3e 20 74 61 62 6c 65  master</b> table
1680: 20 61 6e 64 20 75 73 65 64 20 74 6f 20 72 65 67   and used to reg
1690: 65 6e 65 72 61 74 65 0a 53 51 4c 69 74 65 27 73  enerate.SQLite's
16a0: 20 69 6e 74 65 72 6e 61 6c 20 72 65 70 72 65 73   internal repres
16b0: 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20  entation of the 
16c0: 74 61 62 6c 65 20 6c 61 79 6f 75 74 2e 3c 2f 70  table layout.</p
16d0: 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 44 45 4c  >.}..Section DEL
16e0: 45 54 45 20 64 65 6c 65 74 65 0a 0a 53 79 6e 74  ETE delete..Synt
16f0: 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e  ax {sql-statemen
1700: 74 7d 20 7b 0a 44 45 4c 45 54 45 20 46 52 4f 4d  t} {.DELETE FROM
1710: 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 57   <table-name> [W
1720: 48 45 52 45 20 3c 65 78 70 72 65 73 73 69 6f 6e  HERE <expression
1730: 3e 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e  >].}..puts {.<p>
1740: 3c 2f 70 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20  </p>.}..Section 
1750: 7b 44 52 4f 50 20 49 4e 44 45 58 7d 20 64 72 6f  {DROP INDEX} dro
1760: 70 69 6e 64 65 78 0a 0a 53 79 6e 74 61 78 20 7b  pindex..Syntax {
1770: 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 44  sql-command} {.D
1780: 52 4f 50 20 49 4e 44 45 58 20 3c 69 6e 64 65 78  ROP INDEX <index
1790: 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70 75 74 73 20 7b  -name>.}..puts {
17a0: 0a 3c 70 3e 54 68 65 20 44 52 4f 50 20 49 4e 44  .<p>The DROP IND
17b0: 45 58 20 73 74 61 74 65 6d 65 6e 74 20 63 6f 6e  EX statement con
17c0: 73 69 73 74 73 20 6f 66 20 74 68 65 20 6b 65 79  sists of the key
17d0: 77 6f 72 64 73 20 22 44 52 4f 50 20 49 4e 44 45  words "DROP INDE
17e0: 58 22 20 66 6f 6c 6c 6f 77 65 64 0a 62 79 20 74  X" followed.by t
17f0: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 69  he name of the i
1800: 6e 64 65 78 2e 20 20 54 68 65 20 69 6e 64 65 78  ndex.  The index
1810: 20 6e 61 6d 65 64 20 69 73 20 63 6f 6d 70 6c 65   named is comple
1820: 74 65 6c 79 20 72 65 6d 6f 76 65 64 20 66 72 6f  tely removed fro
1830: 6d 0a 74 68 65 20 64 69 73 6b 2e 20 20 54 68 65  m.the disk.  The
1840: 20 6f 6e 6c 79 20 77 61 79 20 74 6f 20 72 65 63   only way to rec
1850: 6f 76 65 72 20 74 68 65 20 69 6e 64 65 78 20 69  over the index i
1860: 73 20 74 6f 20 72 65 65 6e 74 65 72 20 74 68 65  s to reenter the
1870: 0a 61 70 70 72 6f 70 72 69 61 74 65 20 43 52 45  .appropriate CRE
1880: 41 54 45 20 49 4e 44 45 58 20 63 6f 6d 6d 61 6e  ATE INDEX comman
1890: 64 2e 3c 2f 70 3e 0a 7d 0a 0a 53 65 63 74 69 6f  d.</p>.}..Sectio
18a0: 6e 20 7b 44 52 4f 50 20 54 41 42 4c 45 7d 20 64  n {DROP TABLE} d
18b0: 72 6f 70 74 61 62 6c 65 0a 0a 53 79 6e 74 61 78  roptable..Syntax
18c0: 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b   {sql-command} {
18d0: 0a 44 52 4f 50 20 54 41 42 4c 45 20 3c 74 61 62  .DROP TABLE <tab
18e0: 6c 65 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70 75 74 73  le-name>.}..puts
18f0: 20 7b 0a 3c 70 3e 54 68 65 20 44 52 4f 50 20 54   {.<p>The DROP T
1900: 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20 63  ABLE statement c
1910: 6f 6e 73 69 73 74 73 20 6f 66 20 74 68 65 20 6b  onsists of the k
1920: 65 79 77 6f 72 64 73 20 22 44 52 4f 50 20 54 41  eywords "DROP TA
1930: 42 4c 45 22 20 66 6f 6c 6c 6f 77 65 64 0a 62 79  BLE" followed.by
1940: 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
1950: 20 74 61 62 6c 65 2e 20 20 54 68 65 20 74 61 62   table.  The tab
1960: 6c 65 20 6e 61 6d 65 64 20 69 73 20 63 6f 6d 70  le named is comp
1970: 6c 65 74 65 6c 79 20 72 65 6d 6f 76 65 64 20 66  letely removed f
1980: 72 6f 6d 0a 74 68 65 20 64 69 73 6b 2e 20 20 54  rom.the disk.  T
1990: 68 65 20 74 61 62 6c 65 20 63 61 6e 20 6e 6f 74  he table can not
19a0: 20 62 65 20 72 65 63 6f 76 65 72 65 64 2e 20 20   be recovered.  
19b0: 41 6c 6c 20 69 6e 64 69 63 65 73 20 61 73 73 6f  All indices asso
19c0: 63 69 61 74 65 64 20 77 69 74 68 0a 74 68 65 20  ciated with.the 
19d0: 74 61 62 6c 65 20 61 72 65 20 61 6c 73 6f 20 72  table are also r
19e0: 65 76 65 72 73 69 62 6c 79 20 64 65 6c 65 74 65  eversibly delete
19f0: 64 2e 3c 2f 70 3e 7d 0a 0a 53 65 63 74 69 6f 6e  d.</p>}..Section
1a00: 20 45 58 50 4c 41 49 4e 20 65 78 70 6c 61 69 6e   EXPLAIN explain
1a10: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74  ..Syntax {sql-st
1a20: 61 74 65 6d 65 6e 74 7d 20 7b 0a 45 58 50 4c 41  atement} {.EXPLA
1a30: 49 4e 20 3c 73 71 6c 2d 73 74 61 74 65 6d 65 6e  IN <sql-statemen
1a40: 74 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 65 78  t>.}..Section ex
1a50: 70 72 65 73 73 69 6f 6e 20 65 78 70 72 0a 0a 53  pression expr..S
1a60: 79 6e 74 61 78 20 7b 65 78 70 72 65 73 73 69 6f  yntax {expressio
1a70: 6e 7d 20 7b 0a 3c 65 78 70 72 65 73 73 69 6f 6e  n} {.<expression
1a80: 3e 20 3c 62 69 6e 61 72 79 2d 6f 70 3e 20 3c 65  > <binary-op> <e
1a90: 78 70 72 65 73 73 69 6f 6e 3e 20 7c 0a 3c 65 78  xpression> |.<ex
1aa0: 70 72 65 73 73 69 6f 6e 3e 20 3c 6c 69 6b 65 2d  pression> <like-
1ab0: 6f 70 3e 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e  op> <expression>
1ac0: 20 7c 0a 3c 75 6e 61 72 79 2d 6f 70 3e 20 3c 65   |.<unary-op> <e
1ad0: 78 70 72 65 73 73 69 6f 6e 3e 20 7c 0a 28 20 3c  xpression> |.( <
1ae0: 65 78 70 72 65 73 73 69 6f 6e 3e 20 29 20 7c 0a  expression> ) |.
1af0: 3c 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 7c 0a  <column-name> |.
1b00: 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 2e 20 3c  <table-name> . <
1b10: 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 7c 0a 3c  column-name> |.<
1b20: 6c 69 74 65 72 61 6c 2d 76 61 6c 75 65 3e 20 7c  literal-value> |
1b30: 0a 3c 66 75 6e 63 74 69 6f 6e 2d 6e 61 6d 65 3e  .<function-name>
1b40: 20 28 20 3c 65 78 70 72 2d 6c 69 73 74 3e 20 7c   ( <expr-list> |
1b50: 20 53 54 41 52 20 29 20 7c 0a 3c 65 78 70 72 65   STAR ) |.<expre
1b60: 73 73 69 6f 6e 3e 20 49 53 4e 55 4c 4c 20 7c 0a  ssion> ISNULL |.
1b70: 3c 65 78 70 72 65 73 73 69 6f 6e 3e 20 4e 4f 54  <expression> NOT
1b80: 4e 55 4c 4c 20 7c 0a 3c 65 78 70 72 65 73 73 69  NULL |.<expressi
1b90: 6f 6e 3e 20 42 45 54 57 45 45 4e 20 3c 65 78 70  on> BETWEEN <exp
1ba0: 72 65 73 73 69 6f 6e 3e 20 41 4e 44 20 3c 65 78  ression> AND <ex
1bb0: 70 72 65 73 73 69 6f 6e 3e 20 7c 0a 3c 65 78 70  pression> |.<exp
1bc0: 72 65 73 73 69 6f 6e 3e 20 49 4e 20 28 20 3c 76  ression> IN ( <v
1bd0: 61 6c 75 65 2d 6c 69 73 74 3e 20 29 20 7c 0a 3c  alue-list> ) |.<
1be0: 65 78 70 72 65 73 73 69 6f 6e 3e 20 49 4e 20 28  expression> IN (
1bf0: 20 3c 73 65 6c 65 63 74 3e 20 29 20 7c 0a 28 20   <select> ) |.( 
1c00: 3c 73 65 6c 65 63 74 3e 20 29 0a 7d 20 7b 6c 69  <select> ).} {li
1c10: 6b 65 2d 6f 70 7d 20 7b 0a 4c 49 4b 45 20 7c 20  ke-op} {.LIKE | 
1c20: 47 4c 4f 42 20 7c 20 4e 4f 54 20 4c 49 4b 45 20  GLOB | NOT LIKE 
1c30: 7c 20 4e 4f 54 20 47 4c 4f 42 0a 7d 0a 0a 53 65  | NOT GLOB.}..Se
1c40: 63 74 69 6f 6e 20 49 4e 53 45 52 54 20 69 6e 73  ction INSERT ins
1c50: 65 72 74 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c  ert..Syntax {sql
1c60: 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 49 4e  -statement} {.IN
1c70: 53 45 52 54 20 49 4e 54 4f 20 3c 74 61 62 6c 65  SERT INTO <table
1c80: 2d 6e 61 6d 65 3e 20 5b 28 20 3c 63 6f 6c 75 6d  -name> [( <colum
1c90: 6e 2d 6c 69 73 74 3e 20 29 5d 20 56 41 4c 55 45  n-list> )] VALUE
1ca0: 53 20 28 20 3c 76 61 6c 75 65 2d 6c 69 73 74 3e  S ( <value-list>
1cb0: 20 29 20 7c 0a 49 4e 53 45 52 54 20 49 4e 54 4f   ) |.INSERT INTO
1cc0: 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 28   <table-name> [(
1cd0: 20 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 20 29   <column-list> )
1ce0: 5d 20 3c 73 65 6c 65 63 74 2d 73 74 61 74 65 6d  ] <select-statem
1cf0: 65 6e 74 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c  ent>.}..puts {.<
1d00: 70 3e 54 68 65 20 49 4e 53 45 52 54 20 73 74 61  p>The INSERT sta
1d10: 74 65 6d 65 6e 74 20 63 6f 6d 65 73 20 69 6e 20  tement comes in 
1d20: 74 77 6f 20 62 61 73 69 63 20 66 6f 72 6d 73 2e  two basic forms.
1d30: 20 20 54 68 65 20 66 69 72 73 74 20 66 6f 72 6d    The first form
1d40: 0a 28 77 69 74 68 20 74 68 65 20 22 56 41 4c 55  .(with the "VALU
1d50: 45 53 22 20 6b 65 79 77 6f 72 64 29 20 63 72 65  ES" keyword) cre
1d60: 61 74 65 73 20 61 20 73 69 6e 67 6c 65 20 6e 65  ates a single ne
1d70: 77 20 72 6f 77 20 69 6e 20 61 6e 20 65 78 69 73  w row in an exis
1d80: 74 69 6e 67 20 74 61 62 6c 65 2e 0a 49 66 20 6e  ting table..If n
1d90: 6f 20 63 6f 6c 75 6d 6e 2d 6c 69 73 74 20 69 73  o column-list is
1da0: 20 73 70 65 63 69 66 69 65 64 20 74 68 65 6e 20   specified then 
1db0: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 76 61  the number of va
1dc0: 6c 75 65 73 20 6d 75 73 74 0a 62 65 20 74 68 65  lues must.be the
1dd0: 20 73 61 6d 65 20 61 73 20 74 68 65 20 6e 75 6d   same as the num
1de0: 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69  ber of columns i
1df0: 6e 20 74 68 65 20 74 61 62 6c 65 2e 20 20 49 66  n the table.  If
1e00: 20 61 20 63 6f 6c 75 6d 6e 2d 6c 69 73 74 0a 69   a column-list.i
1e10: 73 20 73 70 65 63 69 66 69 65 64 2c 20 74 68 65  s specified, the
1e20: 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  n the number of 
1e30: 76 61 6c 75 65 73 20 6d 75 73 74 20 6d 61 74 63  values must matc
1e40: 68 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a  h the number of.
1e50: 73 70 65 63 69 66 69 65 64 20 63 6f 6c 75 6d 6e  specified column
1e60: 73 2e 20 20 43 6f 6c 75 6d 6e 73 20 6f 66 20 74  s.  Columns of t
1e70: 68 65 20 74 61 62 6c 65 20 74 68 61 74 20 64 6f  he table that do
1e80: 20 6e 6f 74 20 61 70 70 65 61 72 20 69 6e 20 74   not appear in t
1e90: 68 65 0a 63 6f 6c 75 6d 6e 20 6c 69 73 74 20 61  he.column list a
1ea0: 72 65 20 66 69 6c 6c 20 77 69 74 68 20 74 68 65  re fill with the
1eb0: 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 2c 20   default value, 
1ec0: 6f 72 20 77 69 74 68 20 4e 55 4c 4c 20 69 66 20  or with NULL if 
1ed0: 6e 6f 74 0a 64 65 66 61 75 6c 74 20 76 61 6c 75  not.default valu
1ee0: 65 20 69 73 20 73 70 65 63 69 66 69 65 64 2e 0a  e is specified..
1ef0: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 73 65 63  </p>..<p>The sec
1f00: 6f 6e 64 20 66 6f 72 6d 20 6f 66 20 74 68 65 20  ond form of the 
1f10: 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74  INSERT statement
1f20: 20 74 61 6b 65 73 20 69 74 20 64 61 74 61 20 66   takes it data f
1f30: 72 6f 6d 20 61 0a 53 45 4c 45 43 54 20 73 74 61  rom a.SELECT sta
1f40: 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 6e 75 6d  tement.  The num
1f50: 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69  ber of columns i
1f60: 6e 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20  n the result of 
1f70: 74 68 65 0a 53 45 4c 45 43 54 20 6d 75 73 74 20  the.SELECT must 
1f80: 65 78 61 63 74 6c 79 20 6d 61 74 63 68 20 74 68  exactly match th
1f90: 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75  e number of colu
1fa0: 6d 6e 73 20 69 6e 20 74 68 65 20 74 61 62 6c 65  mns in the table
1fb0: 20 69 66 0a 6e 6f 20 63 6f 6c 75 6d 6e 20 6c 69   if.no column li
1fc0: 73 74 20 69 73 20 73 70 65 63 69 66 69 65 64 2c  st is specified,
1fd0: 20 6f 72 20 69 74 20 6d 75 73 74 20 6d 61 74 63   or it must matc
1fe0: 68 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  h the number of 
1ff0: 63 6f 6c 75 6d 6e 73 0a 6e 61 6d 65 20 69 6e 20  columns.name in 
2000: 74 68 65 20 63 6f 6c 75 6d 6e 20 6c 69 73 74 2e  the column list.
2010: 20 20 41 20 6e 65 77 20 65 6e 74 72 79 20 69 73    A new entry is
2020: 20 6d 61 64 65 20 69 6e 20 74 68 65 20 74 61 62   made in the tab
2030: 6c 65 0a 66 6f 72 20 65 76 65 72 79 20 72 6f 77  le.for every row
2040: 20 6f 66 20 74 68 65 20 53 45 4c 45 43 54 20 72   of the SELECT r
2050: 65 73 75 6c 74 2e 20 20 54 68 65 20 53 45 4c 45  esult.  The SELE
2060: 43 54 20 6d 61 79 20 62 65 20 73 69 6d 70 6c 65  CT may be simple
2070: 0a 6f 72 20 63 6f 6d 70 6f 75 6e 64 2e 20 20 49  .or compound.  I
2080: 66 20 74 68 65 20 53 45 4c 45 43 54 20 73 74 61  f the SELECT sta
2090: 74 65 6d 65 6e 74 20 68 61 73 20 61 6e 20 4f 52  tement has an OR
20a0: 44 45 52 20 42 59 20 63 6c 61 75 73 65 2c 0a 74  DER BY clause,.t
20b0: 68 65 20 4f 52 44 45 52 20 42 59 20 69 73 20 69  he ORDER BY is i
20c0: 67 6e 6f 72 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 53  gnored.</p>.}..S
20d0: 65 63 74 69 6f 6e 20 53 45 4c 45 43 54 20 73 65  ection SELECT se
20e0: 6c 65 63 74 0a 0a 53 79 6e 74 61 78 20 7b 73 71  lect..Syntax {sq
20f0: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 53  l-statement} {.S
2100: 45 4c 45 43 54 20 3c 72 65 73 75 6c 74 3e 20 46  ELECT <result> F
2110: 52 4f 4d 20 3c 74 61 62 6c 65 2d 6c 69 73 74 3e  ROM <table-list>
2120: 20 0a 5b 57 48 45 52 45 20 3c 65 78 70 72 65 73   .[WHERE <expres
2130: 73 69 6f 6e 3e 5d 0a 5b 47 52 4f 55 50 20 42 59  sion>].[GROUP BY
2140: 20 3c 65 78 70 72 2d 6c 69 73 74 3e 5d 0a 5b 48   <expr-list>].[H
2150: 41 56 49 4e 47 20 3c 65 78 70 72 65 73 73 69 6f  AVING <expressio
2160: 6e 3e 5d 0a 5b 3c 63 6f 6d 70 6f 75 6e 64 2d 6f  n>].[<compound-o
2170: 70 3e 20 3c 73 65 6c 65 63 74 3e 5d 2a 0a 5b 4f  p> <select>]*.[O
2180: 52 44 45 52 20 42 59 20 3c 73 6f 72 74 2d 65 78  RDER BY <sort-ex
2190: 70 72 2d 6c 69 73 74 3e 5d 0a 7d 20 7b 72 65 73  pr-list>].} {res
21a0: 75 6c 74 7d 20 7b 0a 53 54 41 52 20 7c 20 3c 65  ult} {.STAR | <e
21b0: 78 70 72 65 73 73 73 69 6f 6e 3e 20 5b 2c 20 3c  xpresssion> [, <
21c0: 65 78 70 72 65 73 73 69 6f 6e 3e 5d 2a 0a 7d 20  expression>]*.} 
21d0: 7b 74 61 62 6c 65 2d 6c 69 73 74 7d 20 7b 0a 3c  {table-list} {.<
21e0: 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 2c 20 3c  table-name> [, <
21f0: 74 61 62 6c 65 2d 6e 61 6d 65 3e 5d 2a 0a 7d 20  table-name>]*.} 
2200: 7b 73 6f 72 74 2d 65 78 70 72 2d 6c 69 73 74 7d  {sort-expr-list}
2210: 20 7b 0a 3c 65 78 70 72 3e 20 5b 3c 73 6f 72 74   {.<expr> [<sort
2220: 2d 6f 72 64 65 72 3e 5d 20 5b 2c 20 3c 65 78 70  -order>] [, <exp
2230: 72 3e 20 5b 3c 73 6f 72 74 2d 6f 72 64 65 72 3e  r> [<sort-order>
2240: 5d 5d 2a 0a 7d 20 7b 73 6f 72 74 2d 6f 72 64 65  ]]*.} {sort-orde
2250: 72 7d 20 7b 0a 41 53 43 20 7c 20 44 45 53 43 0a  r} {.ASC | DESC.
2260: 7d 20 7b 63 6f 6d 70 6f 75 6e 64 5f 6f 70 7d 20  } {compound_op} 
2270: 7b 0a 55 4e 49 4f 4e 20 7c 20 55 4e 49 4f 4e 20  {.UNION | UNION 
2280: 41 4c 4c 20 7c 20 49 4e 54 45 52 53 45 43 54 20  ALL | INTERSECT 
2290: 7c 20 45 58 43 45 50 54 0a 7d 0a 0a 53 65 63 74  | EXCEPT.}..Sect
22a0: 69 6f 6e 20 55 50 44 41 54 45 20 75 70 64 61 74  ion UPDATE updat
22b0: 65 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73  e..Syntax {sql-s
22c0: 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 55 50 44 41  tatement} {.UPDA
22d0: 54 45 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20  TE <table-name> 
22e0: 53 45 54 20 3c 61 73 73 69 67 6e 6d 65 6e 74 3e  SET <assignment>
22f0: 20 5b 2c 20 3c 61 73 73 69 67 6e 6d 65 6e 74 3e   [, <assignment>
2300: 5d 20 5b 57 48 45 52 45 20 3c 65 78 70 72 65 73  ] [WHERE <expres
2310: 73 69 6f 6e 3e 5d 0a 7d 20 7b 61 73 73 69 67 6e  sion>].} {assign
2320: 6d 65 6e 74 7d 20 7b 0a 3c 63 6f 6c 75 6d 6e 2d  ment} {.<column-
2330: 6e 61 6d 65 3e 20 3d 20 3c 65 78 70 72 65 73 73  name> = <express
2340: 69 6f 6e 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c  ion>.}..puts {.<
2350: 70 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 56 41  p>.}..Section VA
2360: 43 55 55 4d 20 76 61 63 75 75 6d 0a 0a 53 79 6e  CUUM vacuum..Syn
2370: 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65  tax {sql-stateme
2380: 6e 74 7d 20 7b 0a 56 41 43 55 55 4d 20 5b 3c 69  nt} {.VACUUM [<i
2390: 6e 64 65 78 2d 6f 72 2d 74 61 62 6c 65 2d 6e 61  ndex-or-table-na
23a0: 6d 65 3e 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c  me>].}..puts {.<
23b0: 70 3e 54 68 65 20 56 41 43 55 55 4d 20 63 6f 6d  p>The VACUUM com
23c0: 6d 61 6e 64 20 69 73 20 61 6e 20 53 51 4c 69 74  mand is an SQLit
23d0: 65 20 65 78 74 65 6e 73 69 6f 6e 20 6d 6f 64 65  e extension mode
23e0: 6c 6c 65 64 20 61 66 74 65 72 20 61 20 73 69 6d  lled after a sim
23f0: 69 6c 61 72 0a 63 6f 6d 6d 61 6e 64 20 66 6f 75  ilar.command fou
2400: 6e 64 20 69 6e 20 50 6f 73 74 67 72 65 53 51 4c  nd in PostgreSQL
2410: 2e 20 20 49 66 20 56 41 43 55 55 4d 20 69 73 20  .  If VACUUM is 
2420: 69 6e 76 6f 6b 65 64 20 77 69 74 68 20 74 68 65  invoked with the
2430: 20 6e 61 6d 65 20 6f 66 20 61 0a 74 61 62 6c 65   name of a.table
2440: 20 6f 72 20 69 6e 64 65 78 2c 20 74 68 65 6e 20   or index, then 
2450: 74 68 65 20 3c 62 3e 67 64 62 6d 5f 72 65 6f 72  the <b>gdbm_reor
2460: 67 61 6e 69 7a 65 28 29 3c 2f 62 3e 20 66 75 6e  ganize()</b> fun
2470: 63 74 69 6f 6e 20 69 73 20 63 61 6c 6c 65 64 0a  ction is called.
2480: 6f 6e 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e  on the correspon
2490: 64 69 6e 67 20 47 44 42 4d 20 66 69 6c 65 2e 20  ding GDBM file. 
24a0: 20 49 66 20 56 41 43 55 55 4d 20 69 73 20 69 6e   If VACUUM is in
24b0: 76 6f 6b 65 64 20 77 69 74 68 20 6e 6f 20 61 72  voked with no ar
24c0: 67 75 6d 65 6e 74 73 2c 0a 74 68 65 6e 20 3c 62  guments,.then <b
24d0: 3e 67 64 62 6d 5f 72 65 6f 72 67 61 6e 69 7a 65  >gdbm_reorganize
24e0: 28 29 3c 2f 62 3e 20 69 73 20 63 61 6c 6c 20 6f  ()</b> is call o
24f0: 6e 20 65 76 65 72 79 20 47 44 42 4d 20 66 69 6c  n every GDBM fil
2500: 65 20 69 6e 20 74 68 65 20 64 61 74 61 62 61 73  e in the databas
2510: 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 74 20 69 73  e.</p>..<p>It is
2520: 20 61 20 67 6f 6f 64 20 69 64 65 61 20 74 6f 20   a good idea to 
2530: 72 75 6e 20 56 41 43 55 55 4d 20 61 66 74 65 72  run VACUUM after
2540: 20 63 72 65 61 74 69 6e 67 20 6c 61 72 67 65 20   creating large 
2550: 69 6e 64 69 63 65 73 2c 0a 65 73 70 65 63 69 61  indices,.especia
2560: 6c 6c 79 20 69 6e 64 69 63 65 73 20 77 68 65 72  lly indices wher
2570: 65 20 61 20 73 69 6e 67 6c 65 20 69 6e 64 65 78  e a single index
2580: 20 76 61 6c 75 65 20 72 65 66 65 72 73 20 74 6f   value refers to
2590: 20 6d 61 6e 79 0a 65 6e 74 72 69 65 73 20 69 6e   many.entries in
25a0: 20 74 68 65 20 64 61 74 61 20 74 61 62 6c 65 2e   the data table.
25b0: 20 20 52 65 6f 72 67 61 6e 69 7a 69 6e 67 20 74    Reorganizing t
25c0: 68 65 73 65 20 69 6e 64 69 63 65 73 20 77 69 6c  hese indices wil
25d0: 6c 20 6d 61 6b 65 0a 74 68 65 20 75 6e 64 65 72  l make.the under
25e0: 6c 79 69 6e 67 20 47 44 42 4d 20 66 69 6c 65 20  lying GDBM file 
25f0: 6d 75 63 68 20 73 6d 61 6c 6c 65 72 20 61 6e 64  much smaller and
2600: 20 77 69 6c 6c 20 68 65 6c 70 20 71 75 65 72 69   will help queri
2610: 65 73 20 74 6f 0a 72 75 6e 20 6d 75 63 68 20 66  es to.run much f
2620: 61 73 74 65 72 2e 3c 2f 70 3e 0a 7d 0a 0a 70 75  aster.</p>.}..pu
2630: 74 73 20 7b 0a 3c 70 3e 3c 2f 70 3e 0a 7d 0a 0a  ts {.<p></p>.}..
2640: 70 75 74 73 20 7b 0a 3c 70 3e 3c 68 72 20 2f 3e  puts {.<p><hr />
2650: 3c 2f 70 3e 0a 3c 70 3e 3c 61 20 68 72 65 66 3d  </p>.<p><a href=
2660: 22 69 6e 64 65 78 2e 68 74 6d 6c 22 3e 3c 69 6d  "index.html"><im
2670: 67 20 73 72 63 3d 22 2f 67 6f 62 61 63 6b 2e 6a  g src="/goback.j
2680: 70 67 22 20 62 6f 72 64 65 72 3d 30 20 2f 3e 0a  pg" border=0 />.
2690: 42 61 63 6b 20 74 6f 20 74 68 65 20 53 51 4c 69  Back to the SQLi
26a0: 74 65 20 48 6f 6d 65 20 50 61 67 65 3c 2f 61 3e  te Home Page</a>
26b0: 0a 3c 2f 70 3e 0a 0a 3c 2f 62 6f 64 79 3e 3c 2f  .</p>..</body></
26c0: 68 74 6d 6c 3e 7d 0a                             html>}.