/ Hex Artifact Content
Login

Artifact e3905bec9f0d0fd47d9838e991cab7d6f7aff47d:


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 36 20 32 30 30 31 2f  .tcl,v 1.6 2001/
0060: 30 32 2f 32 30 20 31 33 3a 30 36 3a 33 31 20 64  02/20 13:06:31 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 20 65 78 70 72 7d 0a 7d 5d 20 7b 0a 20 20  on expr}.}] {.  
05b0: 70 75 74 73 20 22 3c 6c 69 3e 3c 61 20 68 72 65  puts "<li><a hre
05c0: 66 3d 5c 22 23 5b 6c 69 6e 64 65 78 20 24 73 65  f=\"#[lindex $se
05d0: 63 74 69 6f 6e 20 31 5d 5c 22 3e 5b 6c 69 6e 64  ction 1]\">[lind
05e0: 65 78 20 24 73 65 63 74 69 6f 6e 20 30 5d 3c 2f  ex $section 0]</
05f0: 61 3e 3c 2f 6c 69 3e 22 0a 7d 0a 70 75 74 73 20  a></li>".}.puts 
0600: 7b 3c 2f 75 6c 3e 3c 2f 70 3e 0a 0a 3c 70 3e 44  {</ul></p>..<p>D
0610: 65 74 61 69 6c 73 20 6f 6e 20 74 68 65 20 69 6d  etails on the im
0620: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20  plementation of 
0630: 65 61 63 68 20 63 6f 6d 6d 61 6e 64 20 61 72 65  each command are
0640: 20 70 72 6f 76 69 64 65 64 20 69 6e 0a 74 68 65   provided in.the
0650: 20 73 65 71 75 65 6c 2e 3c 2f 70 3e 0a 7d 0a 0a   sequel.</p>.}..
0660: 70 72 6f 63 20 53 79 6e 74 61 78 20 7b 61 72 67  proc Syntax {arg
0670: 73 7d 20 7b 0a 20 20 70 75 74 73 20 7b 3c 74 61  s} {.  puts {<ta
0680: 62 6c 65 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d  ble cellpadding=
0690: 22 31 35 22 3e 7d 0a 20 20 66 6f 72 65 61 63 68  "15">}.  foreach
06a0: 20 7b 72 75 6c 65 20 62 6f 64 79 7d 20 24 61 72   {rule body} $ar
06b0: 67 73 20 7b 0a 20 20 20 20 70 75 74 73 20 22 3c  gs {.    puts "<
06c0: 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 5c 22 72  tr><td align=\"r
06d0: 69 67 68 74 5c 22 20 76 61 6c 69 67 6e 3d 5c 22  ight\" valign=\"
06e0: 74 6f 70 5c 22 3e 22 0a 20 20 20 20 70 75 74 73  top\">".    puts
06f0: 20 22 3c 69 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72   "<i><font color
0700: 3d 5c 22 23 66 66 33 34 33 34 5c 22 3e 24 72 75  =\"#ff3434\">$ru
0710: 6c 65 3c 2f 66 6f 6e 74 3e 3c 2f 69 3e 26 6e 62  le</font></i>&nb
0720: 73 70 3b 3a 3a 3d 3c 2f 74 64 3e 22 0a 20 20 20  sp;::=</td>".   
0730: 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 3c 20 24   regsub -all < $
0740: 62 6f 64 79 20 7b 25 4c 54 7d 20 62 6f 64 79 0a  body {%LT} body.
0750: 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20      regsub -all 
0760: 3e 20 24 62 6f 64 79 20 7b 25 47 54 7d 20 62 6f  > $body {%GT} bo
0770: 64 79 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61  dy.    regsub -a
0780: 6c 6c 20 25 4c 54 20 24 62 6f 64 79 20 7b 3c 2f  ll %LT $body {</
0790: 66 6f 6e 74 3e 3c 2f 62 3e 3c 69 3e 3c 66 6f 6e  font></b><i><fon
07a0: 74 20 63 6f 6c 6f 72 3d 22 23 66 66 33 34 33 34  t color="#ff3434
07b0: 22 3e 7d 20 62 6f 64 79 0a 20 20 20 20 72 65 67  ">} body.    reg
07c0: 73 75 62 20 2d 61 6c 6c 20 25 47 54 20 24 62 6f  sub -all %GT $bo
07d0: 64 79 20 7b 3c 2f 66 6f 6e 74 3e 3c 2f 69 3e 3c  dy {</font></i><
07e0: 62 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23  b><font color="#
07f0: 32 63 32 63 66 30 22 3e 7d 20 62 6f 64 79 0a 20  2c2cf0">} body. 
0800: 20 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b     regsub -all {
0810: 5b 5d 7c 5b 2a 3f 5d 7d 20 24 62 6f 64 79 20 7b  []|[*?]} $body {
0820: 3c 2f 66 6f 6e 74 3e 3c 2f 62 3e 26 3c 62 3e 3c  </font></b>&<b><
0830: 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23 32 63 32  font color="#2c2
0840: 63 66 30 22 3e 7d 20 62 6f 64 79 0a 20 20 20 20  cf0">} body.    
0850: 72 65 67 73 75 62 20 2d 61 6c 6c 20 22 5c 6e 22  regsub -all "\n"
0860: 20 5b 73 74 72 69 6e 67 20 74 72 69 6d 20 24 62   [string trim $b
0870: 6f 64 79 5d 20 22 3c 62 72 3e 5c 6e 22 20 62 6f  ody] "<br>\n" bo
0880: 64 79 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61  dy.    regsub -a
0890: 6c 6c 20 22 5c 6e 20 20 2a 22 20 24 62 6f 64 79  ll "\n  *" $body
08a0: 20 22 5c 6e 5c 5c 26 6e 62 73 70 3b 5c 5c 26 6e   "\n\\&nbsp;\\&n
08b0: 62 73 70 3b 5c 5c 26 6e 62 73 70 3b 5c 5c 26 6e  bsp;\\&nbsp;\\&n
08c0: 62 73 70 3b 22 20 62 6f 64 79 0a 20 20 20 20 72  bsp;" body.    r
08d0: 65 67 73 75 62 20 2d 61 6c 6c 20 7b 5b 7c 2c 2e  egsub -all {[|,.
08e0: 2a 28 29 5d 7d 20 24 62 6f 64 79 20 7b 3c 62 69  *()]} $body {<bi
08f0: 67 3e 26 3c 2f 62 69 67 3e 7d 20 62 6f 64 79 0a  g>&</big>} body.
0900: 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20      regsub -all 
0910: 7b 20 3d 20 7d 20 24 62 6f 64 79 20 7b 20 3c 62  { = } $body { <b
0920: 69 67 3e 3d 3c 2f 62 69 67 3e 20 7d 20 62 6f 64  ig>=</big> } bod
0930: 79 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c  y.    regsub -al
0940: 6c 20 7b 53 54 41 52 7d 20 24 62 6f 64 79 20 7b  l {STAR} $body {
0950: 3c 62 69 67 3e 2a 3c 2f 62 69 67 3e 7d 20 62 6f  <big>*</big>} bo
0960: 64 79 0a 20 20 20 20 70 75 74 73 20 22 3c 74 64  dy.    puts "<td
0970: 3e 3c 62 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d  ><b><font color=
0980: 5c 22 23 32 63 32 63 66 30 5c 22 3e 24 62 6f 64  \"#2c2cf0\">$bod
0990: 79 3c 2f 66 6f 6e 74 3e 3c 2f 62 3e 3c 2f 74 64  y</font></b></td
09a0: 3e 3c 2f 74 72 3e 22 0a 20 20 7d 0a 20 20 70 75  ></tr>".  }.  pu
09b0: 74 73 20 7b 3c 2f 74 61 62 6c 65 3e 7d 0a 7d 0a  ts {</table>}.}.
09c0: 70 72 6f 63 20 4f 70 65 72 61 74 6f 72 20 7b 6e  proc Operator {n
09d0: 61 6d 65 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20  ame} {.  return 
09e0: 22 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23  "<font color=\"#
09f0: 32 63 32 63 66 30 5c 22 3e 3c 62 69 67 3e 24 6e  2c2cf0\"><big>$n
0a00: 61 6d 65 3c 2f 62 69 67 3e 3c 2f 66 6f 6e 74 3e  ame</big></font>
0a10: 22 0a 7d 0a 70 72 6f 63 20 4e 6f 6e 74 65 72 6d  ".}.proc Nonterm
0a20: 69 6e 61 6c 20 7b 6e 61 6d 65 7d 20 7b 0a 20 20  inal {name} {.  
0a30: 72 65 74 75 72 6e 20 22 3c 69 3e 3c 66 6f 6e 74  return "<i><font
0a40: 20 63 6f 6c 6f 72 3d 5c 22 23 66 66 33 34 33 34   color=\"#ff3434
0a50: 5c 22 3e 24 6e 61 6d 65 3c 2f 66 6f 6e 74 3e 3c  \">$name</font><
0a60: 2f 69 3e 22 0a 7d 0a 70 72 6f 63 20 4b 65 79 77  /i>".}.proc Keyw
0a70: 6f 72 64 20 7b 6e 61 6d 65 7d 20 7b 0a 20 20 72  ord {name} {.  r
0a80: 65 74 75 72 6e 20 22 3c 66 6f 6e 74 20 63 6f 6c  eturn "<font col
0a90: 6f 72 3d 5c 22 23 32 63 32 63 66 30 5c 22 3e 24  or=\"#2c2cf0\">$
0aa0: 6e 61 6d 65 3c 2f 66 6f 6e 74 3e 22 0a 7d 0a 20  name</font>".}. 
0ab0: 0a 0a 70 72 6f 63 20 53 65 63 74 69 6f 6e 20 7b  ..proc Section {
0ac0: 6e 61 6d 65 20 7b 6c 61 62 65 6c 20 7b 7d 7d 7d  name {label {}}}
0ad0: 20 7b 0a 20 20 70 75 74 73 20 22 5c 6e 3c 68 72   {.  puts "\n<hr
0ae0: 20 2f 3e 22 0a 20 20 69 66 20 7b 24 6c 61 62 65   />".  if {$labe
0af0: 6c 21 3d 22 22 7d 20 7b 0a 20 20 20 20 70 75 74  l!=""} {.    put
0b00: 73 20 22 3c 61 20 6e 61 6d 65 3d 5c 22 24 6c 61  s "<a name=\"$la
0b10: 62 65 6c 5c 22 3e 22 0a 20 20 7d 0a 20 20 70 75  bel\">".  }.  pu
0b20: 74 73 20 22 3c 68 31 3e 24 6e 61 6d 65 3c 2f 68  ts "<h1>$name</h
0b30: 31 3e 5c 6e 22 0a 7d 0a 0a 70 72 6f 63 20 45 78  1>\n".}..proc Ex
0b40: 61 6d 70 6c 65 20 7b 74 65 78 74 7d 20 7b 0a 20  ample {text} {. 
0b50: 20 70 75 74 73 20 22 3c 62 6c 6f 63 6b 71 75 6f   puts "<blockquo
0b60: 74 65 3e 3c 70 72 65 3e 24 74 65 78 74 3c 2f 70  te><pre>$text</p
0b70: 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  re></blockquote>
0b80: 22 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 43 4f 50  ".}..Section COP
0b90: 59 20 63 6f 70 79 0a 0a 53 79 6e 74 61 78 20 7b  Y copy..Syntax {
0ba0: 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b  sql-statement} {
0bb0: 0a 43 4f 50 59 20 3c 74 61 62 6c 65 2d 6e 61 6d  .COPY <table-nam
0bc0: 65 3e 20 46 52 4f 4d 20 3c 66 69 6c 65 6e 61 6d  e> FROM <filenam
0bd0: 65 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e  e>.}..puts {.<p>
0be0: 54 68 65 20 43 4f 50 59 20 63 6f 6d 6d 61 6e 64  The COPY command
0bf0: 20 69 73 20 61 6e 20 65 78 74 65 6e 73 69 6f 6e   is an extension
0c00: 20 75 73 65 64 20 74 6f 20 6c 6f 61 64 20 6c 61   used to load la
0c10: 72 67 65 20 61 6d 6f 75 6e 74 73 20 6f 66 0a 64  rge amounts of.d
0c20: 61 74 61 20 69 6e 74 6f 20 61 20 74 61 62 6c 65  ata into a table
0c30: 2e 20 20 49 74 20 69 73 20 6d 6f 64 65 6c 65 64  .  It is modeled
0c40: 20 61 66 74 65 72 20 61 20 73 69 6d 69 6c 61 72   after a similar
0c50: 20 63 6f 6d 6d 61 6e 64 20 66 6f 75 6e 64 0a 69   command found.i
0c60: 6e 20 50 6f 73 74 67 72 65 53 51 4c 2e 20 20 49  n PostgreSQL.  I
0c70: 6e 20 66 61 63 74 2c 20 74 68 65 20 53 51 4c 69  n fact, the SQLi
0c80: 74 65 20 43 4f 50 59 20 63 6f 6d 6d 61 6e 64 20  te COPY command 
0c90: 69 73 20 73 70 65 63 69 66 69 63 61 6c 6c 79 0a  is specifically.
0ca0: 64 65 73 69 67 6e 65 64 20 74 6f 20 62 65 20 61  designed to be a
0cb0: 62 6c 65 20 74 6f 20 72 65 61 64 20 74 68 65 20  ble to read the 
0cc0: 6f 75 74 70 75 74 20 6f 66 20 74 68 65 20 50 6f  output of the Po
0cd0: 73 74 67 72 65 53 51 4c 20 64 75 6d 70 0a 75 74  stgreSQL dump.ut
0ce0: 69 6c 69 74 79 20 3c 62 3e 70 67 5f 64 75 6d 70  ility <b>pg_dump
0cf0: 3c 2f 62 3e 20 73 6f 20 74 68 61 74 20 64 61 74  </b> so that dat
0d00: 61 20 63 61 6e 20 62 65 20 65 61 73 69 6c 79 20  a can be easily 
0d10: 74 72 61 6e 73 66 65 72 72 65 64 20 66 72 6f 6d  transferred from
0d20: 0a 50 6f 73 74 67 72 65 53 51 4c 20 69 6e 74 6f  .PostgreSQL into
0d30: 20 53 51 4c 69 74 65 2e 3c 70 3e 0a 0a 3c 70 3e   SQLite.<p>..<p>
0d40: 54 68 65 20 74 61 62 6c 65 2d 6e 61 6d 65 20 69  The table-name i
0d50: 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 6e  s the name of an
0d60: 20 65 78 69 73 74 69 6e 67 20 74 61 62 6c 65 20   existing table 
0d70: 77 68 69 63 68 20 69 73 20 74 6f 0a 62 65 20 66  which is to.be f
0d80: 69 6c 6c 65 64 20 77 69 74 68 20 64 61 74 61 2e  illed with data.
0d90: 20 20 54 68 65 20 66 69 6c 65 6e 61 6d 65 20 69    The filename i
0da0: 73 20 61 20 73 74 72 69 6e 67 20 6f 72 20 69 64  s a string or id
0db0: 65 6e 74 69 66 69 65 72 20 74 68 61 74 0a 6e 61  entifier that.na
0dc0: 6d 65 73 20 61 20 66 69 6c 65 20 66 72 6f 6d 20  mes a file from 
0dd0: 77 68 69 63 68 20 64 61 74 61 20 77 69 6c 6c 20  which data will 
0de0: 62 65 20 72 65 61 64 2e 20 20 54 68 65 20 66 69  be read.  The fi
0df0: 6c 65 6e 61 6d 65 20 63 61 6e 20 62 65 0a 74 68  lename can be.th
0e00: 65 20 3c 62 3e 53 54 44 49 4e 3c 2f 62 3e 20 74  e <b>STDIN</b> t
0e10: 6f 20 72 65 61 64 20 64 61 74 61 20 66 72 6f 6d  o read data from
0e20: 20 73 74 61 6e 64 61 72 64 20 69 6e 70 75 74 2e   standard input.
0e30: 3c 70 3e 0a 0a 3c 70 3e 45 61 63 68 20 6c 69 6e  <p>..<p>Each lin
0e40: 65 20 6f 66 20 74 68 65 20 69 6e 70 75 74 20 66  e of the input f
0e50: 69 6c 65 20 69 73 20 63 6f 6e 76 65 72 74 65 64  ile is converted
0e60: 20 69 6e 74 6f 20 61 20 73 69 6e 67 6c 65 20 72   into a single r
0e70: 65 63 6f 72 64 0a 69 6e 20 74 68 65 20 74 61 62  ecord.in the tab
0e80: 6c 65 2e 20 20 43 6f 6c 75 6d 6e 73 20 61 72 65  le.  Columns are
0e90: 20 73 65 70 61 72 61 74 65 64 20 62 79 20 74 61   separated by ta
0ea0: 62 73 2e 20 20 49 66 20 61 20 74 61 62 20 6f 63  bs.  If a tab oc
0eb0: 63 75 72 73 20 61 73 0a 64 61 74 61 20 77 69 74  curs as.data wit
0ec0: 68 69 6e 20 61 20 63 6f 6c 75 6d 6e 2c 20 74 68  hin a column, th
0ed0: 65 6e 20 74 68 61 74 20 74 61 62 20 69 73 20 70  en that tab is p
0ee0: 72 65 63 65 64 65 64 20 62 79 20 61 20 62 61 73  receded by a bas
0ef0: 6b 73 6c 61 73 68 20 22 5c 22 0a 63 68 61 72 61  kslash "\".chara
0f00: 63 74 65 72 2e 20 20 41 20 62 61 73 6b 73 6c 61  cter.  A basksla
0f10: 73 68 20 69 6e 20 74 68 65 20 64 61 74 61 20 61  sh in the data a
0f20: 70 70 65 61 72 73 20 61 73 20 74 77 6f 20 62 61  ppears as two ba
0f30: 63 6b 73 6c 61 73 68 65 73 20 69 6e 0a 61 20 72  ckslashes in.a r
0f40: 6f 77 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e  ow.</p>..<p>When
0f50: 20 74 68 65 20 69 6e 70 75 74 20 64 61 74 61 20   the input data 
0f60: 73 6f 75 72 63 65 20 69 73 20 53 54 44 49 4e 2c  source is STDIN,
0f70: 20 74 68 65 20 69 6e 70 75 74 20 63 61 6e 20 62   the input can b
0f80: 65 20 74 65 72 6d 69 6e 61 74 65 64 0a 62 79 20  e terminated.by 
0f90: 61 20 6c 69 6e 65 20 74 68 61 74 20 63 6f 6e 74  a line that cont
0fa0: 61 69 6e 73 20 6f 6e 6c 79 20 61 20 62 61 73 6b  ains only a bask
0fb0: 73 6c 61 73 68 20 61 6e 64 20 61 20 64 6f 74 3a  slash and a dot:
0fc0: 7d 0a 70 75 74 73 20 22 5c 22 5b 4f 70 65 72 61  }.puts "\"[Opera
0fd0: 74 6f 72 20 5c 5c 2e 5d 5c 22 2e 3c 2f 70 3e 22  tor \\.]\".</p>"
0fe0: 0a 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54  ..Section {CREAT
0ff0: 45 20 49 4e 44 45 58 7d 20 63 72 65 61 74 65 69  E INDEX} createi
1000: 6e 64 65 78 0a 0a 53 79 6e 74 61 78 20 7b 73 71  ndex..Syntax {sq
1010: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 43  l-statement} {.C
1020: 52 45 41 54 45 20 49 4e 44 45 58 20 3c 69 6e 64  REATE INDEX <ind
1030: 65 78 2d 6e 61 6d 65 3e 20 0a 4f 4e 20 3c 74 61  ex-name> .ON <ta
1040: 62 6c 65 2d 6e 61 6d 65 3e 20 28 20 3c 63 6f 6c  ble-name> ( <col
1050: 75 6d 6e 2d 6e 61 6d 65 3e 20 5b 2c 20 3c 63 6f  umn-name> [, <co
1060: 6c 75 6d 6e 2d 6e 61 6d 65 3e 5d 2a 20 29 0a 7d  lumn-name>]* ).}
1070: 20 7b 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 7d 20 7b   {column-name} {
1080: 0a 3c 6e 61 6d 65 3e 20 5b 20 41 53 43 20 7c 20  .<name> [ ASC | 
1090: 44 45 53 43 20 5d 0a 7d 0a 0a 70 75 74 73 20 7b  DESC ].}..puts {
10a0: 0a 3c 70 3e 54 68 65 20 43 52 45 41 54 45 20 49  .<p>The CREATE I
10b0: 4e 44 45 58 20 63 6f 6d 6d 61 6e 64 20 63 6f 6e  NDEX command con
10c0: 73 69 73 74 73 20 6f 66 20 74 68 65 20 6b 65 79  sists of the key
10d0: 77 6f 72 64 73 20 22 43 52 45 41 54 45 20 49 4e  words "CREATE IN
10e0: 44 45 58 22 20 66 6f 6c 6c 6f 77 65 64 0a 62 79  DEX" followed.by
10f0: 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
1100: 20 6e 65 77 20 69 6e 64 65 78 2c 20 74 68 65 20   new index, the 
1110: 6b 65 79 77 6f 72 64 20 22 4f 4e 22 2c 20 74 68  keyword "ON", th
1120: 65 20 6e 61 6d 65 20 6f 66 20 61 20 70 72 65 76  e name of a prev
1130: 69 6f 75 73 6c 79 0a 63 72 65 61 74 65 64 20 74  iously.created t
1140: 61 62 6c 65 20 74 68 61 74 20 69 73 20 74 6f 20  able that is to 
1150: 62 65 20 69 6e 64 65 78 65 64 2c 20 61 6e 64 20  be indexed, and 
1160: 61 20 70 61 72 65 6e 74 68 65 73 69 7a 65 64 20  a parenthesized 
1170: 6c 69 73 74 20 6f 66 20 6e 61 6d 65 73 20 6f 66  list of names of
1180: 0a 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20  .columns in the 
1190: 74 61 62 6c 65 20 74 68 61 74 20 61 72 65 20 75  table that are u
11a0: 73 65 64 20 66 6f 72 20 74 68 65 20 69 6e 64 65  sed for the inde
11b0: 78 20 6b 65 79 2e 0a 45 61 63 68 20 63 6f 6c 75  x key..Each colu
11c0: 6d 6e 20 6e 61 6d 65 20 63 61 6e 20 62 65 20 66  mn name can be f
11d0: 6f 6c 6c 6f 77 65 64 20 62 79 20 6f 6e 65 20 6f  ollowed by one o
11e0: 66 20 74 68 65 20 22 41 53 43 22 20 6f 72 20 22  f the "ASC" or "
11f0: 44 45 53 43 22 20 6b 65 79 77 6f 72 64 73 0a 74  DESC" keywords.t
1200: 6f 20 69 6e 64 69 63 61 74 65 20 73 6f 72 74 20  o indicate sort 
1210: 6f 72 64 65 72 2c 20 62 75 74 20 73 69 6e 63 65  order, but since
1220: 20 47 44 42 4d 20 64 6f 65 73 20 6e 6f 74 20 69   GDBM does not i
1230: 6d 70 6c 65 6d 65 6e 74 20 6f 72 64 65 72 65 64  mplement ordered
1240: 20 6b 65 79 73 2c 0a 74 68 65 73 65 20 6b 65 79   keys,.these key
1250: 77 6f 72 64 73 20 61 72 65 20 69 67 6e 6f 72 65  words are ignore
1260: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65  d.</p>..<p>There
1270: 20 61 72 65 20 6e 6f 20 61 72 62 69 74 72 61 72   are no arbitrar
1280: 79 20 6c 69 6d 69 74 73 20 6f 6e 20 74 68 65 20  y limits on the 
1290: 6e 75 6d 62 65 72 20 6f 66 20 69 6e 64 69 63 65  number of indice
12a0: 73 20 74 68 61 74 20 63 61 6e 20 62 65 0a 61 74  s that can be.at
12b0: 74 61 63 68 65 64 20 74 6f 20 61 20 73 69 6e 67  tached to a sing
12c0: 6c 65 20 74 61 62 6c 65 2c 20 6e 6f 72 20 6f 6e  le table, nor on
12d0: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63   the number of c
12e0: 6f 6c 75 6d 6e 73 20 69 6e 20 61 6e 20 69 6e 64  olumns in an ind
12f0: 65 78 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  ex.</p>..<p>The 
1300: 65 78 61 63 74 20 74 65 78 74 0a 6f 66 20 65 61  exact text.of ea
1310: 63 68 20 43 52 45 41 54 45 20 49 4e 44 45 58 20  ch CREATE INDEX 
1320: 73 74 61 74 65 6d 65 6e 74 20 69 73 20 73 74 6f  statement is sto
1330: 72 65 64 20 69 6e 20 74 68 65 20 3c 62 3e 73 71  red in the <b>sq
1340: 6c 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 0a  lite_master</b>.
1350: 74 61 62 6c 65 2e 20 20 45 76 65 72 79 74 69 6d  table.  Everytim
1360: 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69  e the database i
1370: 73 20 6f 70 65 6e 65 64 2c 20 61 6c 6c 20 43 52  s opened, all CR
1380: 45 41 54 45 20 49 4e 44 45 58 20 73 74 61 74 65  EATE INDEX state
1390: 6d 65 6e 74 73 0a 61 72 65 20 72 65 61 64 20 66  ments.are read f
13a0: 72 6f 6d 20 74 68 65 20 3c 62 3e 73 71 6c 69 74  rom the <b>sqlit
13b0: 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 20 74 61 62  e_master</b> tab
13c0: 6c 65 20 61 6e 64 20 75 73 65 64 20 74 6f 20 72  le and used to r
13d0: 65 67 65 6e 65 72 61 74 65 0a 53 51 4c 69 74 65  egenerate.SQLite
13e0: 27 73 20 69 6e 74 65 72 6e 61 6c 20 72 65 70 72  's internal repr
13f0: 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68  esentation of th
1400: 65 20 69 6e 64 65 78 20 6c 61 79 6f 75 74 2e 3c  e index layout.<
1410: 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20  /p>.}...Section 
1420: 7b 43 52 45 41 54 45 20 54 41 42 4c 45 7d 20 7b  {CREATE TABLE} {
1430: 63 72 65 61 74 65 74 61 62 6c 65 7d 0a 0a 53 79  createtable}..Sy
1440: 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e  ntax {sql-comman
1450: 64 7d 20 7b 0a 43 52 45 41 54 45 20 54 41 42 4c  d} {.CREATE TABL
1460: 45 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 28  E <table-name> (
1470: 0a 20 20 3c 63 6f 6c 75 6d 6e 2d 64 65 66 3e 20  .  <column-def> 
1480: 5b 2c 20 3c 63 6f 6c 75 6d 6e 2d 64 65 66 3e 5d  [, <column-def>]
1490: 2a 0a 20 20 5b 2c 20 3c 63 6f 6e 73 74 72 61 69  *.  [, <constrai
14a0: 6e 74 3e 5d 2a 0a 29 0a 7d 20 7b 63 6f 6c 75 6d  nt>]*.).} {colum
14b0: 6e 2d 64 65 66 7d 20 7b 0a 3c 6e 61 6d 65 3e 20  n-def} {.<name> 
14c0: 3c 74 79 70 65 3e 20 5b 3c 63 6f 6c 75 6d 6e 2d  <type> [<column-
14d0: 63 6f 6e 73 74 72 61 69 6e 74 3e 5d 2a 0a 7d 20  constraint>]*.} 
14e0: 7b 74 79 70 65 7d 20 7b 0a 3c 74 79 70 65 6e 61  {type} {.<typena
14f0: 6d 65 3e 20 7c 0a 3c 74 79 70 65 6e 61 6d 65 3e  me> |.<typename>
1500: 20 28 20 3c 6e 75 6d 62 65 72 3e 20 29 20 7c 0a   ( <number> ) |.
1510: 3c 74 79 70 65 6e 61 6d 65 3e 20 28 20 3c 6e 75  <typename> ( <nu
1520: 6d 62 65 72 3e 20 2c 20 3c 6e 75 6d 62 65 72 3e  mber> , <number>
1530: 20 29 0a 7d 20 7b 63 6f 6c 75 6d 6e 2d 63 6f 6e   ).} {column-con
1540: 73 74 72 61 69 6e 74 7d 20 7b 0a 4e 4f 54 20 4e  straint} {.NOT N
1550: 55 4c 4c 20 7c 0a 50 52 49 4d 41 52 59 20 4b 45  ULL |.PRIMARY KE
1560: 59 20 5b 3c 73 6f 72 74 2d 6f 72 64 65 72 3e 5d  Y [<sort-order>]
1570: 20 7c 0a 55 4e 49 51 55 45 20 7c 0a 43 48 45 43   |.UNIQUE |.CHEC
1580: 4b 20 28 20 3c 65 78 70 72 3e 20 29 20 7c 0a 44  K ( <expr> ) |.D
1590: 45 46 41 55 4c 54 20 3c 76 61 6c 75 65 3e 0a 7d  EFAULT <value>.}
15a0: 20 7b 63 6f 6e 73 74 72 61 69 6e 74 7d 20 7b 0a   {constraint} {.
15b0: 50 52 49 4d 41 52 59 20 4b 45 59 20 28 20 3c 6e  PRIMARY KEY ( <n
15c0: 61 6d 65 3e 20 5b 2c 20 3c 6e 61 6d 65 3e 5d 2a  ame> [, <name>]*
15d0: 20 29 20 7c 0a 55 4e 49 51 55 45 20 28 20 3c 6e   ) |.UNIQUE ( <n
15e0: 61 6d 65 3e 20 5b 2c 20 3c 6e 61 6d 65 3e 5d 2a  ame> [, <name>]*
15f0: 20 29 20 7c 0a 43 48 45 43 4b 20 28 20 3c 65 78   ) |.CHECK ( <ex
1600: 70 72 3e 20 29 0a 7d 0a 0a 70 75 74 73 20 7b 0a  pr> ).}..puts {.
1610: 3c 70 3e 41 20 43 52 45 41 54 45 20 54 41 42 4c  <p>A CREATE TABL
1620: 45 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 62  E statement is b
1630: 61 73 69 63 61 6c 6c 79 20 74 68 65 20 6b 65 79  asically the key
1640: 77 6f 72 64 73 20 22 43 52 45 41 54 45 20 54 41  words "CREATE TA
1650: 42 4c 45 22 0a 66 6f 6c 6c 6f 77 65 64 20 62 79  BLE".followed by
1660: 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 6e   the name of a n
1670: 65 77 20 74 61 62 6c 65 20 61 6e 64 20 61 20 70  ew table and a p
1680: 61 72 65 6e 74 68 65 73 69 7a 65 64 20 6c 69 73  arenthesized lis
1690: 74 20 6f 66 20 63 6f 6c 75 6d 6e 0a 64 65 66 69  t of column.defi
16a0: 6e 69 74 69 6f 6e 73 20 61 6e 64 20 63 6f 6e 73  nitions and cons
16b0: 74 72 61 69 6e 74 73 2e 20 20 54 68 65 20 74 61  traints.  The ta
16c0: 62 6c 65 20 6e 61 6d 65 20 63 61 6e 20 62 65 20  ble name can be 
16d0: 65 69 74 68 65 72 20 61 6e 20 69 64 65 6e 74 69  either an identi
16e0: 66 69 65 72 0a 6f 72 20 61 20 73 74 72 69 6e 67  fier.or a string
16f0: 2e 20 20 54 68 65 20 6f 6e 6c 79 20 72 65 73 65  .  The only rese
1700: 72 76 65 64 20 74 61 62 6c 65 20 6e 61 6d 65 20  rved table name 
1710: 69 73 20 22 3c 62 3e 73 71 6c 69 74 65 5f 6d 61  is "<b>sqlite_ma
1720: 73 74 65 72 3c 2f 62 3e 22 20 77 68 69 63 68 0a  ster</b>" which.
1730: 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  is the name of t
1740: 68 65 20 74 61 62 6c 65 20 74 68 61 74 20 72 65  he table that re
1750: 63 6f 72 64 73 20 74 68 65 20 64 61 74 61 62 61  cords the databa
1760: 73 65 20 73 63 68 65 6d 61 2e 3c 2f 70 3e 0a 0a  se schema.</p>..
1770: 3c 70 3e 45 61 63 68 20 63 6f 6c 75 6d 6e 20 64  <p>Each column d
1780: 65 66 69 6e 69 74 69 6f 6e 20 69 73 20 74 68 65  efinition is the
1790: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 63 6f 6c   name of the col
17a0: 75 6d 6e 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20  umn followed by 
17b0: 74 68 65 0a 64 61 74 61 74 79 70 65 20 66 6f 72  the.datatype for
17c0: 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2c 20 74 68   that column, th
17d0: 65 6e 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 6f  en one or more o
17e0: 70 74 69 6f 6e 61 6c 20 63 6f 6c 75 6d 6e 20 63  ptional column c
17f0: 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 54 68 65 20  onstraints..The 
1800: 64 61 74 61 74 79 70 65 20 66 6f 72 20 74 68 65  datatype for the
1810: 20 63 6f 6c 75 6d 6e 20 69 73 20 69 67 6e 6f 72   column is ignor
1820: 65 64 2e 20 20 41 6c 6c 20 69 6e 66 6f 72 6d 61  ed.  All informa
1830: 74 69 6f 6e 0a 69 73 20 73 74 6f 72 65 64 20 61  tion.is stored a
1840: 73 20 6e 75 6c 6c 2d 74 65 72 6d 69 6e 61 74 65  s null-terminate
1850: 64 20 73 74 72 69 6e 67 73 2e 20 20 54 68 65 20  d strings.  The 
1860: 63 6f 6e 73 74 72 61 69 6e 74 73 20 61 72 65 20  constraints are 
1870: 61 6c 73 6f 20 69 67 6e 6f 72 65 64 2c 0a 65 78  also ignored,.ex
1880: 63 65 70 74 20 74 68 61 74 20 74 68 65 20 50 52  cept that the PR
1890: 49 4d 41 52 59 20 4b 45 59 20 63 6f 6e 73 74 72  IMARY KEY constr
18a0: 61 69 6e 74 20 77 69 6c 6c 20 63 61 75 73 65 20  aint will cause 
18b0: 61 6e 20 69 6e 64 65 78 20 74 6f 20 62 65 20 61  an index to be a
18c0: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 0a 63 72 65  utomatically.cre
18d0: 61 74 65 64 20 74 68 61 74 20 69 6d 70 6c 65 6d  ated that implem
18e0: 65 6e 74 73 20 74 68 65 20 70 72 69 6d 61 72 79  ents the primary
18f0: 20 6b 65 79 20 61 6e 64 20 74 68 65 20 44 45 46   key and the DEF
1900: 41 55 4c 54 20 63 6f 6e 73 74 72 61 69 6e 74 0a  AULT constraint.
1910: 77 68 69 63 68 20 73 70 65 63 69 66 69 65 73 20  which specifies 
1920: 61 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20  a default value 
1930: 74 6f 20 75 73 65 20 77 68 65 6e 20 64 6f 69 6e  to use when doin
1940: 67 20 61 6e 20 49 4e 53 45 52 54 2e 0a 54 68 65  g an INSERT..The
1950: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 70 72 69   name of the pri
1960: 6d 61 72 79 0a 6b 65 79 20 69 6e 64 65 78 20 77  mary.key index w
1970: 69 6c 6c 20 62 65 20 74 68 65 20 74 61 62 6c 65  ill be the table
1980: 20 6e 61 6d 65 0a 77 69 74 68 20 22 3c 62 3e 5f   name.with "<b>_
1990: 5f 70 72 69 6d 61 72 79 5f 6b 65 79 3c 2f 62 3e  _primary_key</b>
19a0: 22 20 61 70 70 65 6e 64 65 64 2e 20 20 54 68 65  " appended.  The
19b0: 20 69 6e 64 65 78 20 75 73 65 64 20 66 6f 72 20   index used for 
19c0: 61 20 70 72 69 6d 61 72 79 20 6b 65 79 0a 64 6f  a primary key.do
19d0: 65 73 20 6e 6f 74 20 73 68 6f 77 20 75 70 20 69  es not show up i
19e0: 6e 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f  n the <b>sqlite_
19f0: 6d 61 73 74 65 72 3c 2f 62 3e 20 74 61 62 6c 65  master</b> table
1a00: 2c 20 62 75 74 20 61 20 47 44 42 4d 20 66 69 6c  , but a GDBM fil
1a10: 65 20 69 73 0a 63 72 65 61 74 65 64 20 66 6f 72  e is.created for
1a20: 20 74 68 61 74 20 69 6e 64 65 78 2e 3c 2f 70 3e   that index.</p>
1a30: 0a 0a 3c 70 3e 54 68 65 72 65 20 61 72 65 20 6e  ..<p>There are n
1a40: 6f 20 61 72 62 69 74 72 61 72 79 20 6c 69 6d 69  o arbitrary limi
1a50: 74 73 20 6f 6e 20 74 68 65 20 73 69 7a 65 20 6f  ts on the size o
1a60: 66 20 63 6f 6c 75 6d 6e 73 2c 20 6f 6e 20 74 68  f columns, on th
1a70: 65 20 6e 75 6d 62 65 72 0a 6f 66 20 63 6f 6c 75  e number.of colu
1a80: 6d 6e 73 2c 20 6f 72 20 6f 6e 20 74 68 65 20 6e  mns, or on the n
1a90: 75 6d 62 65 72 20 6f 66 20 63 6f 6e 73 74 72 61  umber of constra
1aa0: 69 6e 74 73 20 69 6e 20 61 20 74 61 62 6c 65 2e  ints in a table.
1ab0: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 65 78 61  </p>..<p>The exa
1ac0: 63 74 20 74 65 78 74 0a 6f 66 20 65 61 63 68 20  ct text.of each 
1ad0: 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 74 61  CREATE TABLE sta
1ae0: 74 65 6d 65 6e 74 20 69 73 20 73 74 6f 72 65 64  tement is stored
1af0: 20 69 6e 20 74 68 65 20 3c 62 3e 73 71 6c 69 74   in the <b>sqlit
1b00: 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 0a 74 61 62  e_master</b>.tab
1b10: 6c 65 2e 20 20 45 76 65 72 79 74 69 6d 65 20 74  le.  Everytime t
1b20: 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20 6f  he database is o
1b30: 70 65 6e 65 64 2c 20 61 6c 6c 20 43 52 45 41 54  pened, all CREAT
1b40: 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e  E TABLE statemen
1b50: 74 73 0a 61 72 65 20 72 65 61 64 20 66 72 6f 6d  ts.are read from
1b60: 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6d   the <b>sqlite_m
1b70: 61 73 74 65 72 3c 2f 62 3e 20 74 61 62 6c 65 20  aster</b> table 
1b80: 61 6e 64 20 75 73 65 64 20 74 6f 20 72 65 67 65  and used to rege
1b90: 6e 65 72 61 74 65 0a 53 51 4c 69 74 65 27 73 20  nerate.SQLite's 
1ba0: 69 6e 74 65 72 6e 61 6c 20 72 65 70 72 65 73 65  internal represe
1bb0: 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 74  ntation of the t
1bc0: 61 62 6c 65 20 6c 61 79 6f 75 74 2e 3c 2f 70 3e  able layout.</p>
1bd0: 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 44 45 4c 45  .}..Section DELE
1be0: 54 45 20 64 65 6c 65 74 65 0a 0a 53 79 6e 74 61  TE delete..Synta
1bf0: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
1c00: 7d 20 7b 0a 44 45 4c 45 54 45 20 46 52 4f 4d 20  } {.DELETE FROM 
1c10: 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 57 48  <table-name> [WH
1c20: 45 52 45 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e  ERE <expression>
1c30: 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54  ].}..puts {.<p>T
1c40: 68 65 20 44 45 4c 45 54 45 20 63 6f 6d 6d 61 6e  he DELETE comman
1c50: 64 20 69 73 20 75 73 65 64 20 74 6f 20 72 65 6d  d is used to rem
1c60: 6f 76 65 20 72 65 63 6f 72 64 73 20 66 72 6f 6d  ove records from
1c70: 20 61 20 74 61 62 6c 65 2e 0a 54 68 65 20 63 6f   a table..The co
1c80: 6d 6d 61 6e 64 20 63 6f 6e 73 69 73 74 73 20 6f  mmand consists o
1c90: 66 20 74 68 65 20 22 44 45 4c 45 54 45 20 46 52  f the "DELETE FR
1ca0: 4f 4d 22 20 6b 65 79 77 6f 72 64 73 20 66 6f 6c  OM" keywords fol
1cb0: 6c 6f 77 65 64 20 62 79 0a 74 68 65 20 6e 61 6d  lowed by.the nam
1cc0: 65 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 66  e of the table f
1cd0: 72 6f 6d 20 77 68 69 63 68 20 72 65 63 6f 72 64  rom which record
1ce0: 73 20 61 72 65 20 74 6f 20 62 65 20 72 65 6d 6f  s are to be remo
1cf0: 76 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 57 69  ved..</p>..<p>Wi
1d00: 74 68 6f 75 74 20 61 20 57 48 45 52 45 20 63 6c  thout a WHERE cl
1d10: 61 75 73 65 2c 20 61 6c 6c 20 72 6f 77 73 20 6f  ause, all rows o
1d20: 66 20 74 68 65 20 74 61 62 6c 65 20 61 72 65 20  f the table are 
1d30: 72 65 6d 6f 76 65 64 2e 0a 49 66 20 61 20 57 48  removed..If a WH
1d40: 45 52 45 20 63 6c 61 75 73 65 20 69 73 20 73 75  ERE clause is su
1d50: 70 70 6c 69 65 64 2c 20 74 68 65 6e 20 6f 6e 6c  pplied, then onl
1d60: 79 20 74 68 6f 73 65 20 72 6f 77 73 20 74 68 61  y those rows tha
1d70: 74 20 6d 61 74 63 68 0a 74 68 65 20 65 78 70 72  t match.the expr
1d80: 65 73 73 69 6f 6e 20 61 72 65 20 72 65 6d 6f 76  ession are remov
1d90: 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74  ed.</p>.}...Sect
1da0: 69 6f 6e 20 7b 44 52 4f 50 20 49 4e 44 45 58 7d  ion {DROP INDEX}
1db0: 20 64 72 6f 70 69 6e 64 65 78 0a 0a 53 79 6e 74   dropindex..Synt
1dc0: 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d  ax {sql-command}
1dd0: 20 7b 0a 44 52 4f 50 20 49 4e 44 45 58 20 3c 69   {.DROP INDEX <i
1de0: 6e 64 65 78 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70 75  ndex-name>.}..pu
1df0: 74 73 20 7b 0a 3c 70 3e 54 68 65 20 44 52 4f 50  ts {.<p>The DROP
1e00: 20 49 4e 44 45 58 20 73 74 61 74 65 6d 65 6e 74   INDEX statement
1e10: 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 74 68 65   consists of the
1e20: 20 6b 65 79 77 6f 72 64 73 20 22 44 52 4f 50 20   keywords "DROP 
1e30: 49 4e 44 45 58 22 20 66 6f 6c 6c 6f 77 65 64 0a  INDEX" followed.
1e40: 62 79 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  by the name of t
1e50: 68 65 20 69 6e 64 65 78 2e 20 20 54 68 65 20 69  he index.  The i
1e60: 6e 64 65 78 20 6e 61 6d 65 64 20 69 73 20 63 6f  ndex named is co
1e70: 6d 70 6c 65 74 65 6c 79 20 72 65 6d 6f 76 65 64  mpletely removed
1e80: 20 66 72 6f 6d 0a 74 68 65 20 64 69 73 6b 2e 20   from.the disk. 
1e90: 20 54 68 65 20 6f 6e 6c 79 20 77 61 79 20 74 6f   The only way to
1ea0: 20 72 65 63 6f 76 65 72 20 74 68 65 20 69 6e 64   recover the ind
1eb0: 65 78 20 69 73 20 74 6f 20 72 65 65 6e 74 65 72  ex is to reenter
1ec0: 20 74 68 65 0a 61 70 70 72 6f 70 72 69 61 74 65   the.appropriate
1ed0: 20 43 52 45 41 54 45 20 49 4e 44 45 58 20 63 6f   CREATE INDEX co
1ee0: 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 7d 0a 0a 53 65  mmand.</p>.}..Se
1ef0: 63 74 69 6f 6e 20 7b 44 52 4f 50 20 54 41 42 4c  ction {DROP TABL
1f00: 45 7d 20 64 72 6f 70 74 61 62 6c 65 0a 0a 53 79  E} droptable..Sy
1f10: 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e  ntax {sql-comman
1f20: 64 7d 20 7b 0a 44 52 4f 50 20 54 41 42 4c 45 20  d} {.DROP TABLE 
1f30: 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 0a 7d 0a 0a  <table-name>.}..
1f40: 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 44 52  puts {.<p>The DR
1f50: 4f 50 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  OP TABLE stateme
1f60: 6e 74 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 74  nt consists of t
1f70: 68 65 20 6b 65 79 77 6f 72 64 73 20 22 44 52 4f  he keywords "DRO
1f80: 50 20 54 41 42 4c 45 22 20 66 6f 6c 6c 6f 77 65  P TABLE" followe
1f90: 64 0a 62 79 20 74 68 65 20 6e 61 6d 65 20 6f 66  d.by the name of
1fa0: 20 74 68 65 20 74 61 62 6c 65 2e 20 20 54 68 65   the table.  The
1fb0: 20 74 61 62 6c 65 20 6e 61 6d 65 64 20 69 73 20   table named is 
1fc0: 63 6f 6d 70 6c 65 74 65 6c 79 20 72 65 6d 6f 76  completely remov
1fd0: 65 64 20 66 72 6f 6d 0a 74 68 65 20 64 69 73 6b  ed from.the disk
1fe0: 2e 20 20 54 68 65 20 74 61 62 6c 65 20 63 61 6e  .  The table can
1ff0: 20 6e 6f 74 20 62 65 20 72 65 63 6f 76 65 72 65   not be recovere
2000: 64 2e 20 20 41 6c 6c 20 69 6e 64 69 63 65 73 20  d.  All indices 
2010: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 0a  associated with.
2020: 74 68 65 20 74 61 62 6c 65 20 61 72 65 20 61 6c  the table are al
2030: 73 6f 20 64 65 6c 65 74 65 64 2e 3c 2f 70 3e 7d  so deleted.</p>}
2040: 0a 0a 53 65 63 74 69 6f 6e 20 45 58 50 4c 41 49  ..Section EXPLAI
2050: 4e 20 65 78 70 6c 61 69 6e 0a 0a 53 79 6e 74 61  N explain..Synta
2060: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
2070: 7d 20 7b 0a 45 58 50 4c 41 49 4e 20 3c 73 71 6c  } {.EXPLAIN <sql
2080: 2d 73 74 61 74 65 6d 65 6e 74 3e 0a 7d 0a 0a 70  -statement>.}..p
2090: 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 45 58 50  uts {.<p>The EXP
20a0: 4c 41 49 4e 20 63 6f 6d 6d 61 6e 64 20 6d 6f 64  LAIN command mod
20b0: 69 66 69 65 72 20 69 73 20 61 20 6e 6f 6e 2d 73  ifier is a non-s
20c0: 74 61 6e 64 61 72 64 20 65 78 74 65 6e 73 69 6f  tandard extensio
20d0: 6e 2e 20 20 54 68 65 0a 69 64 65 61 20 63 6f 6d  n.  The.idea com
20e0: 65 73 20 66 72 6f 6d 20 61 20 73 69 6d 69 6c 61  es from a simila
20f0: 72 20 63 6f 6d 6d 61 6e 64 20 66 6f 75 6e 64 20  r command found 
2100: 69 6e 20 50 6f 73 74 67 72 65 53 51 4c 2c 20 62  in PostgreSQL, b
2110: 75 74 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e  ut the operation
2120: 0a 69 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20 64  .is completely d
2130: 69 66 66 65 72 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c  ifferent.</p>..<
2140: 70 3e 49 66 20 74 68 65 20 45 58 50 4c 41 49 4e  p>If the EXPLAIN
2150: 20 6b 65 79 77 6f 72 64 20 61 70 70 65 61 72 73   keyword appears
2160: 20 62 65 66 6f 72 65 20 61 6e 79 20 6f 74 68 65   before any othe
2170: 72 20 53 51 4c 69 74 65 20 53 51 4c 20 63 6f 6d  r SQLite SQL com
2180: 6d 61 6e 64 0a 74 68 65 6e 20 69 6e 73 74 65 61  mand.then instea
2190: 64 20 6f 66 20 61 63 74 75 61 6c 6c 79 20 65 78  d of actually ex
21a0: 65 63 75 74 69 6e 67 20 74 68 65 20 63 6f 6d 6d  ecuting the comm
21b0: 61 6e 64 2c 20 74 68 65 20 53 51 4c 69 74 65 20  and, the SQLite 
21c0: 6c 69 62 72 61 72 79 20 77 69 6c 6c 0a 72 65 70  library will.rep
21d0: 6f 72 74 20 62 61 63 6b 20 74 68 65 20 73 65 71  ort back the seq
21e0: 75 65 6e 63 65 20 6f 66 20 76 69 72 74 75 61 6c  uence of virtual
21f0: 20 6d 61 63 68 69 6e 65 20 69 6e 73 74 72 75 63   machine instruc
2200: 74 69 6f 6e 73 20 69 74 20 77 6f 75 6c 64 20 68  tions it would h
2210: 61 76 65 0a 75 73 65 64 20 74 6f 20 65 78 65 63  ave.used to exec
2220: 75 74 65 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20  ute the command 
2230: 68 61 64 20 74 68 65 20 45 58 50 4c 41 49 4e 20  had the EXPLAIN 
2240: 6b 65 79 77 6f 72 64 20 6e 6f 74 20 62 65 65 6e  keyword not been
2250: 20 70 72 65 73 65 6e 74 2e 0a 46 6f 72 20 61 64   present..For ad
2260: 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61  ditional informa
2270: 74 69 6f 6e 20 61 62 6f 75 74 20 76 69 72 74 75  tion about virtu
2280: 61 6c 20 6d 61 63 68 69 6e 65 20 69 6e 73 74 72  al machine instr
2290: 75 63 74 69 6f 6e 73 20 73 65 65 0a 74 68 65 20  uctions see.the 
22a0: 3c 61 20 68 72 65 66 3d 22 61 72 63 68 2e 68 74  <a href="arch.ht
22b0: 6d 6c 22 3e 61 72 63 68 69 74 65 63 74 75 72 65  ml">architecture
22c0: 20 64 65 73 63 72 69 70 74 69 6f 6e 3c 2f 61 3e   description</a>
22d0: 20 6f 72 20 74 68 65 20 64 6f 63 75 6d 65 6e 74   or the document
22e0: 61 74 69 6f 6e 0a 6f 6e 20 3c 61 20 68 72 65 66  ation.on <a href
22f0: 3d 22 6f 70 63 6f 64 65 2e 68 74 6d 6c 22 3e 61  ="opcode.html">a
2300: 76 61 69 6c 61 62 6c 65 20 6f 70 63 6f 64 65 73  vailable opcodes
2310: 3c 2f 61 3e 20 66 6f 72 20 74 68 65 20 76 69 72  </a> for the vir
2320: 74 75 61 6c 20 6d 61 63 68 69 6e 65 2e 3c 2f 70  tual machine.</p
2330: 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 65 78 70  >.}..Section exp
2340: 72 65 73 73 69 6f 6e 20 65 78 70 72 0a 0a 53 79  ression expr..Sy
2350: 6e 74 61 78 20 7b 65 78 70 72 65 73 73 69 6f 6e  ntax {expression
2360: 7d 20 7b 0a 3c 65 78 70 72 65 73 73 69 6f 6e 3e  } {.<expression>
2370: 20 3c 62 69 6e 61 72 79 2d 6f 70 3e 20 3c 65 78   <binary-op> <ex
2380: 70 72 65 73 73 69 6f 6e 3e 20 7c 0a 3c 65 78 70  pression> |.<exp
2390: 72 65 73 73 69 6f 6e 3e 20 3c 6c 69 6b 65 2d 6f  ression> <like-o
23a0: 70 3e 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e 20  p> <expression> 
23b0: 7c 0a 3c 75 6e 61 72 79 2d 6f 70 3e 20 3c 65 78  |.<unary-op> <ex
23c0: 70 72 65 73 73 69 6f 6e 3e 20 7c 0a 28 20 3c 65  pression> |.( <e
23d0: 78 70 72 65 73 73 69 6f 6e 3e 20 29 20 7c 0a 3c  xpression> ) |.<
23e0: 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 7c 0a 3c  column-name> |.<
23f0: 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 2e 20 3c 63  table-name> . <c
2400: 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 7c 0a 3c 6c  olumn-name> |.<l
2410: 69 74 65 72 61 6c 2d 76 61 6c 75 65 3e 20 7c 0a  iteral-value> |.
2420: 3c 66 75 6e 63 74 69 6f 6e 2d 6e 61 6d 65 3e 20  <function-name> 
2430: 28 20 3c 65 78 70 72 2d 6c 69 73 74 3e 20 7c 20  ( <expr-list> | 
2440: 53 54 41 52 20 29 20 7c 0a 3c 65 78 70 72 65 73  STAR ) |.<expres
2450: 73 69 6f 6e 3e 20 49 53 4e 55 4c 4c 20 7c 0a 3c  sion> ISNULL |.<
2460: 65 78 70 72 65 73 73 69 6f 6e 3e 20 4e 4f 54 4e  expression> NOTN
2470: 55 4c 4c 20 7c 0a 3c 65 78 70 72 65 73 73 69 6f  ULL |.<expressio
2480: 6e 3e 20 5b 4e 4f 54 5d 20 42 45 54 57 45 45 4e  n> [NOT] BETWEEN
2490: 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e 20 41 4e   <expression> AN
24a0: 44 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e 20 7c  D <expression> |
24b0: 0a 3c 65 78 70 72 65 73 73 69 6f 6e 3e 20 5b 4e  .<expression> [N
24c0: 4f 54 5d 20 49 4e 20 28 20 3c 76 61 6c 75 65 2d  OT] IN ( <value-
24d0: 6c 69 73 74 3e 20 29 20 7c 0a 3c 65 78 70 72 65  list> ) |.<expre
24e0: 73 73 69 6f 6e 3e 20 5b 4e 4f 54 5d 20 49 4e 20  ssion> [NOT] IN 
24f0: 28 20 3c 73 65 6c 65 63 74 3e 20 29 20 7c 0a 28  ( <select> ) |.(
2500: 20 3c 73 65 6c 65 63 74 3e 20 29 0a 7d 20 7b 6c   <select> ).} {l
2510: 69 6b 65 2d 6f 70 7d 20 7b 0a 4c 49 4b 45 20 7c  ike-op} {.LIKE |
2520: 20 47 4c 4f 42 20 7c 20 4e 4f 54 20 4c 49 4b 45   GLOB | NOT LIKE
2530: 20 7c 20 4e 4f 54 20 47 4c 4f 42 0a 7d 0a 0a 70   | NOT GLOB.}..p
2540: 75 74 73 20 7b 0a 3c 70 3e 54 68 69 73 20 73 65  uts {.<p>This se
2550: 63 74 69 6f 6e 20 69 73 20 64 69 66 66 65 72 65  ction is differe
2560: 6e 74 20 66 72 6f 6d 20 74 68 65 20 6f 74 68 65  nt from the othe
2570: 72 73 2e 20 20 45 76 65 72 79 20 6f 74 68 65 72  rs.  Every other
2580: 20 73 65 63 74 69 6f 6e 20 6f 66 0a 74 68 69 73   section of.this
2590: 20 64 6f 63 75 6d 65 6e 74 20 74 61 6c 6b 73 20   document talks 
25a0: 61 62 6f 75 74 20 61 20 70 61 72 74 69 63 75 6c  about a particul
25b0: 61 72 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 2e 20  ar SQL command. 
25c0: 20 54 68 69 73 20 73 65 63 74 69 6f 6e 20 64 6f   This section do
25d0: 65 73 0a 6e 6f 74 20 74 61 6c 6b 20 61 62 6f 75  es.not talk abou
25e0: 74 20 61 20 73 74 61 6e 64 61 6c 6f 6e 65 20 63  t a standalone c
25f0: 6f 6d 6d 61 6e 64 20 62 75 74 20 61 62 6f 75 74  ommand but about
2600: 20 22 65 78 70 72 65 73 73 69 6f 6e 73 22 20 77   "expressions" w
2610: 68 69 63 68 20 61 72 65 20 0a 73 75 62 63 6f 6d  hich are .subcom
2620: 70 6f 6e 65 6e 74 20 6f 66 20 6d 6f 73 74 20 6f  ponent of most o
2630: 74 68 65 72 20 63 6f 6d 6d 61 6e 64 73 2e 3c 2f  ther commands.</
2640: 70 3e 0a 0a 3c 70 3e 53 51 4c 69 74 65 20 75 6e  p>..<p>SQLite un
2650: 64 65 72 73 74 61 6e 64 73 20 74 68 65 20 66 6f  derstands the fo
2660: 6c 6c 6f 77 69 6e 67 20 62 69 6e 61 72 79 20 6f  llowing binary o
2670: 70 65 72 61 74 6f 72 73 2c 20 69 6e 20 6f 72 64  perators, in ord
2680: 65 72 20 66 72 6f 6d 0a 68 69 67 68 65 73 74 20  er from.highest 
2690: 74 6f 20 6c 6f 77 65 73 74 20 70 72 65 63 65 64  to lowest preced
26a0: 65 6e 63 65 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63  ence:</p>..<bloc
26b0: 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 3c 66 6f  kquote><pre>.<fo
26c0: 6e 74 20 63 6f 6c 6f 72 3d 22 23 32 63 32 63 66  nt color="#2c2cf
26d0: 30 22 3e 3c 62 69 67 3e 2a 20 20 20 20 2f 0a 2b  0"><big>*    /.+
26e0: 20 20 20 20 2d 0a 26 6c 74 3b 20 20 20 20 26 6c      -.&lt;    &l
26f0: 74 3b 3d 20 20 20 26 67 74 3b 20 20 20 20 26 67  t;=   &gt;    &g
2700: 74 3b 3d 0a 3d 20 20 20 20 3d 3d 20 20 20 21 3d  t;=.=    ==   !=
2710: 20 20 20 26 6c 74 3b 26 67 74 3b 20 20 20 3c 2f     &lt;&gt;   </
2720: 62 69 67 3e 49 4e 0a 41 4e 44 0a 4f 52 3c 2f 66  big>IN.AND.OR</f
2730: 6f 6e 74 3e 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f  ont>.</pre></blo
2740: 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 41 6e 79  ckquote>..<p>Any
2750: 20 53 51 4c 69 74 65 20 76 61 6c 75 65 20 63 61   SQLite value ca
2760: 6e 20 62 65 20 75 73 65 64 20 61 73 20 70 61 72  n be used as par
2770: 74 20 6f 66 20 61 6e 20 65 78 70 72 65 73 73 69  t of an expressi
2780: 6f 6e 2e 20 20 0a 46 6f 72 20 61 72 69 74 68 6d  on.  .For arithm
2790: 65 74 69 63 20 6f 70 65 72 61 74 69 6f 6e 73 2c  etic operations,
27a0: 20 69 6e 74 65 67 65 72 73 20 61 72 65 20 74 72   integers are tr
27b0: 65 61 74 65 64 20 61 73 20 69 6e 74 65 67 65 72  eated as integer
27c0: 73 2e 0a 53 74 72 69 6e 67 73 20 61 72 65 20 66  s..Strings are f
27d0: 69 72 73 74 20 63 6f 6e 76 65 72 74 65 64 20 74  irst converted t
27e0: 6f 20 72 65 61 6c 20 6e 75 6d 62 65 72 73 20 75  o real numbers u
27f0: 73 69 6e 67 20 3c 62 3e 61 74 6f 66 28 29 3c 2f  sing <b>atof()</
2800: 62 3e 2e 0a 46 6f 72 20 63 6f 6d 70 61 72 69 73  b>..For comparis
2810: 6f 6e 20 6f 70 65 72 61 74 6f 72 73 2c 20 6e 75  on operators, nu
2820: 6d 62 65 72 73 20 63 6f 6d 70 61 72 65 20 61 73  mbers compare as
2830: 20 6e 75 6d 62 65 72 73 20 61 6e 64 20 73 74 72   numbers and str
2840: 69 6e 67 73 0a 63 6f 6d 70 61 72 65 20 61 73 20  ings.compare as 
2850: 73 74 72 69 6e 67 73 2e 20 20 46 6f 72 20 73 74  strings.  For st
2860: 72 69 6e 67 20 63 6f 6d 70 61 72 69 73 6f 6e 73  ring comparisons
2870: 2c 20 63 61 73 65 20 69 73 20 73 69 67 6e 69 66  , case is signif
2880: 69 63 61 6e 74 0a 62 75 74 20 69 73 20 6f 6e 6c  icant.but is onl
2890: 79 20 75 73 65 64 20 74 6f 20 62 72 65 61 6b 20  y used to break 
28a0: 61 20 74 69 65 2e 0a 4e 6f 74 65 20 74 68 61 74  a tie..Note that
28b0: 20 74 68 65 72 65 20 61 72 65 20 74 77 6f 20 76   there are two v
28c0: 61 72 69 61 74 69 6f 6e 73 20 6f 66 20 74 68 65  ariations of the
28d0: 20 65 71 75 61 6c 73 20 61 6e 64 20 6e 6f 74 20   equals and not 
28e0: 65 71 75 61 6c 73 0a 6f 70 65 72 61 74 6f 72 73  equals.operators
28f0: 2e 20 20 45 71 75 61 6c 73 20 63 61 6e 20 62 65  .  Equals can be
2900: 20 65 69 74 68 65 72 7d 0a 70 75 74 73 20 22 5b   either}.puts "[
2910: 4f 70 65 72 61 74 6f 72 20 3d 5d 20 6f 72 20 5b  Operator =] or [
2920: 4f 70 65 72 61 74 6f 72 20 3d 3d 5d 2e 0a 54 68  Operator ==]..Th
2930: 65 20 6e 6f 6e 2d 65 71 75 61 6c 73 20 6f 70 65  e non-equals ope
2940: 72 61 74 6f 72 20 63 61 6e 20 62 65 20 65 69 74  rator can be eit
2950: 68 65 72 0a 5b 4f 70 65 72 61 74 6f 72 20 21 3d  her.[Operator !=
2960: 5d 20 6f 72 20 5b 4f 70 65 72 61 74 6f 72 20 7b  ] or [Operator {
2970: 26 6c 74 3b 26 67 74 3b 7d 5d 2e 3c 2f 70 3e 22  &lt;&gt;}].</p>"
2980: 0a 70 75 74 73 20 7b 0a 0a 3c 70 3e 54 68 65 20  .puts {..<p>The 
2990: 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72 20 64 6f  LIKE operator do
29a0: 65 73 20 61 20 77 69 6c 64 63 61 72 64 20 63 6f  es a wildcard co
29b0: 6d 70 61 72 69 73 69 6f 6e 2e 20 20 54 68 65 20  mparision.  The 
29c0: 6f 70 65 72 61 6e 64 0a 74 6f 20 74 68 65 20 72  operand.to the r
29d0: 69 67 68 74 20 63 6f 6e 74 61 69 6e 73 20 74 68  ight contains th
29e0: 65 20 77 69 6c 64 63 61 72 64 73 2e 7d 0a 70 75  e wildcards.}.pu
29f0: 74 73 20 22 41 20 70 65 72 63 65 6e 74 20 73 79  ts "A percent sy
2a00: 6d 62 6f 6c 20 5b 4f 70 65 72 61 74 6f 72 20 25  mbol [Operator %
2a10: 5d 20 69 6e 20 74 68 65 20 72 69 67 68 74 20 6f  ] in the right o
2a20: 70 65 72 61 6e 64 0a 6d 61 74 63 68 65 73 20 61  perand.matches a
2a30: 6e 79 20 73 65 71 75 65 6e 63 65 20 6f 66 20 7a  ny sequence of z
2a40: 65 72 6f 20 6f 72 20 6d 6f 72 65 20 63 68 61 72  ero or more char
2a50: 61 63 74 65 72 73 20 6f 6e 20 74 68 65 20 6c 65  acters on the le
2a60: 66 74 2e 0a 41 6e 20 75 6e 64 65 72 73 63 6f 72  ft..An underscor
2a70: 65 20 5b 4f 70 65 72 61 74 6f 72 20 5f 5d 20 6f  e [Operator _] o
2a80: 6e 20 74 68 65 20 72 69 67 68 74 0a 6d 61 74 63  n the right.matc
2a90: 68 65 73 20 61 6e 79 20 73 69 6e 67 6c 65 20 63  hes any single c
2aa0: 68 61 72 61 63 74 65 72 20 6f 6e 20 74 68 65 20  haracter on the 
2ab0: 6c 65 66 74 2e 20 20 54 68 65 20 4c 49 4b 45 20  left.  The LIKE 
2ac0: 6f 70 65 72 61 74 6f 72 20 69 73 0a 6e 6f 74 20  operator is.not 
2ad0: 63 61 73 65 20 73 65 6e 73 69 74 69 76 65 20 61  case sensitive a
2ae0: 6e 64 20 77 69 6c 6c 20 6d 61 74 63 68 20 75 70  nd will match up
2af0: 70 65 72 20 63 61 73 65 20 63 68 61 72 61 63 74  per case charact
2b00: 65 72 73 20 6f 6e 20 6f 6e 65 0a 73 69 64 65 20  ers on one.side 
2b10: 61 67 61 69 6e 73 74 20 6c 6f 77 65 72 20 63 61  against lower ca
2b20: 73 65 20 63 68 61 72 61 63 74 65 72 73 20 6f 6e  se characters on
2b30: 20 74 68 65 20 6f 74 68 65 72 2e 3c 2f 70 3e 22   the other.</p>"
2b40: 0a 70 75 74 73 20 7b 0a 0a 3c 70 3e 54 68 65 20  .puts {..<p>The 
2b50: 47 4c 4f 42 20 6f 70 65 72 61 74 6f 72 20 69 73  GLOB operator is
2b60: 20 73 69 6d 69 6c 61 72 20 74 6f 20 4c 49 4b 45   similar to LIKE
2b70: 20 62 75 74 20 75 73 65 73 20 74 68 65 20 55 6e   but uses the Un
2b80: 69 78 0a 66 69 6c 65 20 67 6c 6f 62 62 69 6e 67  ix.file globbing
2b90: 20 73 79 6e 74 61 78 20 66 6f 72 20 69 74 73 20   syntax for its 
2ba0: 77 69 6c 64 63 61 72 64 73 2e 20 20 41 6c 73 6f  wildcards.  Also
2bb0: 2c 20 47 4c 4f 42 20 69 73 20 63 61 73 65 0a 73  , GLOB is case.s
2bc0: 65 6e 73 69 74 69 76 65 2c 20 75 6e 6c 69 6b 65  ensitive, unlike
2bd0: 20 4c 49 4b 45 2e 20 20 42 6f 74 68 20 47 4c 4f   LIKE.  Both GLO
2be0: 42 20 61 6e 64 20 4c 49 4b 45 20 6d 61 79 20 62  B and LIKE may b
2bf0: 65 20 70 72 65 63 65 64 65 64 20 62 79 0a 74 68  e preceded by.th
2c00: 65 20 4e 4f 54 20 6b 65 79 77 6f 72 64 20 74 6f  e NOT keyword to
2c10: 20 69 6e 76 65 72 74 20 74 68 65 20 73 65 6e 73   invert the sens
2c20: 65 20 6f 66 20 74 68 65 20 74 65 73 74 2e 3c 2f  e of the test.</
2c30: 70 3e 0a 0a 3c 70 3e 53 45 4c 45 43 54 20 73 74  p>..<p>SELECT st
2c40: 61 74 65 6d 65 6e 74 73 20 63 61 6e 20 61 70 70  atements can app
2c50: 65 61 72 20 69 6e 20 65 78 70 72 65 73 73 69 6f  ear in expressio
2c60: 6e 73 20 61 73 20 65 69 74 68 65 72 20 74 68 65  ns as either the
2c70: 0a 72 69 67 68 74 2d 68 61 6e 64 20 6f 70 65 72  .right-hand oper
2c80: 61 6e 64 20 6f 66 20 74 68 65 20 49 4e 20 6f 70  and of the IN op
2c90: 65 72 61 74 6f 72 20 6f 72 20 61 73 20 61 20 73  erator or as a s
2ca0: 63 61 6c 61 72 20 71 75 61 6e 74 69 74 79 2e 0a  calar quantity..
2cb0: 49 6e 20 62 6f 74 68 20 63 61 73 65 73 2c 20 74  In both cases, t
2cc0: 68 65 20 53 45 4c 45 43 54 20 73 68 6f 75 6c 64  he SELECT should
2cd0: 20 68 61 76 65 20 6f 6e 6c 79 20 61 20 73 69 6e   have only a sin
2ce0: 67 6c 65 20 63 6f 6c 75 6d 6e 20 69 6e 20 69 74  gle column in it
2cf0: 73 0a 72 65 73 75 6c 74 2e 20 20 43 6f 6d 70 6f  s.result.  Compo
2d00: 75 6e 64 20 53 45 4c 45 43 54 73 20 28 63 6f 6e  und SELECTs (con
2d10: 6e 65 63 74 65 64 20 77 69 74 68 20 6b 65 79 77  nected with keyw
2d20: 6f 72 64 73 20 6c 69 6b 65 20 55 4e 49 4f 4e 20  ords like UNION 
2d30: 6f 72 0a 45 58 43 45 50 54 29 20 61 72 65 20 61  or.EXCEPT) are a
2d40: 6c 6c 6f 77 65 64 2e 20 20 41 6e 79 20 4f 52 44  llowed.  Any ORD
2d50: 45 52 20 42 59 20 63 6c 61 75 73 65 20 6f 6e 20  ER BY clause on 
2d60: 74 68 65 20 73 65 6c 65 63 74 20 69 73 20 69 67  the select is ig
2d70: 6e 6f 72 65 64 2e 0a 41 20 53 45 4c 45 43 54 20  nored..A SELECT 
2d80: 69 6e 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e  in an expression
2d90: 20 69 73 20 65 76 61 6c 75 61 74 65 64 20 6f 6e   is evaluated on
2da0: 63 65 20 62 65 66 6f 72 65 20 61 6e 79 20 6f 74  ce before any ot
2db0: 68 65 72 20 70 72 6f 63 65 73 73 69 6e 67 0a 69  her processing.i
2dc0: 73 20 70 65 72 66 6f 72 6d 65 64 2c 20 73 6f 20  s performed, so 
2dd0: 6e 6f 6e 65 20 6f 66 20 74 68 65 20 65 78 70 72  none of the expr
2de0: 65 73 73 69 6f 6e 73 20 77 69 74 68 69 6e 20 74  essions within t
2df0: 68 65 20 73 65 6c 65 63 74 20 69 74 73 65 6c 66  he select itself
2e00: 20 63 61 6e 0a 72 65 66 65 72 20 74 6f 20 71 75   can.refer to qu
2e10: 61 6e 74 69 74 69 65 73 20 69 6e 20 74 68 65 20  antities in the 
2e20: 63 6f 6e 74 61 69 6e 69 6e 67 20 65 78 70 72 65  containing expre
2e30: 73 73 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57  ssion.</p>..<p>W
2e40: 68 65 6e 20 61 20 53 45 4c 45 43 54 20 69 73 20  hen a SELECT is 
2e50: 74 68 65 20 72 69 67 68 74 20 6f 70 65 72 61 6e  the right operan
2e60: 64 20 6f 66 20 74 68 65 20 49 4e 20 6f 70 65 72  d of the IN oper
2e70: 61 74 6f 72 2c 20 74 68 65 20 49 4e 0a 6f 70 65  ator, the IN.ope
2e80: 72 61 74 6f 72 20 72 65 74 75 72 6e 73 20 54 52  rator returns TR
2e90: 55 45 20 69 66 20 74 68 65 20 72 65 73 75 6c 74  UE if the result
2ea0: 20 6f 66 20 74 68 65 20 6c 65 66 74 20 6f 70 65   of the left ope
2eb0: 72 61 6e 64 20 69 73 20 61 6e 79 20 6f 66 0a 74  rand is any of.t
2ec0: 68 65 20 76 61 6c 75 65 73 20 67 65 6e 65 72 61  he values genera
2ed0: 74 65 64 20 62 79 20 74 68 65 20 73 65 6c 65 63  ted by the selec
2ee0: 74 2e 20 20 54 68 65 20 49 4e 20 6f 70 65 72 61  t.  The IN opera
2ef0: 74 6f 72 20 6d 61 79 20 62 65 20 70 72 65 63 65  tor may be prece
2f00: 64 65 64 0a 62 79 20 74 68 65 20 4e 4f 54 20 6b  ded.by the NOT k
2f10: 65 79 77 6f 72 64 20 74 6f 20 69 6e 76 65 72 74  eyword to invert
2f20: 20 74 68 65 20 73 65 6e 73 65 20 6f 66 20 74 68   the sense of th
2f30: 65 20 74 65 73 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e  e test.</p>..<p>
2f40: 57 68 65 6e 20 61 20 53 45 4c 45 43 54 20 61 70  When a SELECT ap
2f50: 70 65 61 72 73 20 77 69 74 68 69 6e 20 61 6e 20  pears within an 
2f60: 65 78 70 72 65 73 73 69 6f 6e 20 62 75 74 20 69  expression but i
2f70: 73 20 6e 6f 74 20 74 68 65 20 72 69 67 68 74 0a  s not the right.
2f80: 6f 70 65 72 61 6e 64 20 6f 66 20 61 6e 20 49 4e  operand of an IN
2f90: 20 6f 70 65 72 61 74 6f 72 2c 20 74 68 65 6e 20   operator, then 
2fa0: 74 68 65 20 66 69 72 73 74 20 72 6f 77 20 6f 66  the first row of
2fb0: 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74   the result of t
2fc0: 68 65 0a 53 45 4c 45 43 54 20 62 65 63 6f 6d 65  he.SELECT become
2fd0: 73 20 74 68 65 20 76 61 6c 75 65 20 75 73 65 64  s the value used
2fe0: 20 69 6e 20 74 68 65 20 65 78 70 72 65 73 73 69   in the expressi
2ff0: 6f 6e 2e 20 20 49 66 20 74 68 65 20 53 45 4c 45  on.  If the SELE
3000: 43 54 20 79 69 65 6c 64 73 0a 6d 6f 72 65 20 74  CT yields.more t
3010: 68 61 6e 20 6f 6e 65 20 72 65 73 75 6c 74 20 72  han one result r
3020: 6f 77 2c 20 61 6c 6c 20 72 6f 77 73 20 61 66 74  ow, all rows aft
3030: 65 72 20 74 68 65 20 66 69 72 73 74 20 61 72 65  er the first are
3040: 20 69 67 6e 6f 72 65 64 2e 20 20 49 66 0a 74 68   ignored.  If.th
3050: 65 20 53 45 4c 45 43 54 20 79 65 69 6c 64 73 20  e SELECT yeilds 
3060: 6e 6f 20 72 6f 77 73 2c 20 74 68 65 6e 20 74 68  no rows, then th
3070: 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 53  e value of the S
3080: 45 4c 45 43 54 20 69 73 20 4e 55 4c 4c 2e 3c 2f  ELECT is NULL.</
3090: 70 3e 0a 0a 3c 70 3e 54 68 65 20 65 78 70 72 65  p>..<p>The expre
30a0: 73 73 69 6f 6e 20 73 79 6e 74 61 78 20 63 75 72  ssion syntax cur
30b0: 72 65 6e 74 6c 79 20 73 75 70 70 6f 72 74 73 20  rently supports 
30c0: 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 0a 66 75  the following.fu
30d0: 6e 63 74 69 6f 6e 73 3a 3c 2f 70 3e 0a 0a 3c 62  nctions:</p>..<b
30e0: 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a  lockquote><pre>.
30f0: 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23 32 63  <font color="#2c
3100: 32 63 66 30 22 3e 3c 62 69 67 3e 63 6f 75 6e 74  2cf0"><big>count
3110: 20 20 20 20 6d 69 6e 20 20 20 20 20 20 20 6d 61      min       ma
3120: 78 20 20 20 20 20 20 20 73 75 6d 0a 61 76 67 20  x       sum.avg 
3130: 20 20 20 20 20 6c 65 6e 67 74 68 20 20 20 20 73       length    s
3140: 75 62 73 74 72 3c 2f 62 69 67 3e 3c 2f 66 6f 6e  ubstr</big></fon
3150: 74 3e 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b  t>.</pre></block
3160: 71 75 6f 74 65 3e 0a 0a 3c 70 3e 0a 54 68 65 20  quote>..<p>.The 
3170: 66 75 6e 63 74 69 6f 6e 73 20 3c 62 3e 63 6f 75  functions <b>cou
3180: 6e 74 3c 2f 62 3e 2c 20 3c 62 3e 73 75 6d 3c 2f  nt</b>, <b>sum</
3190: 62 3e 2c 20 61 6e 64 20 3c 62 3e 61 76 67 3c 2f  b>, and <b>avg</
31a0: 62 3e 20 61 6e 64 20 74 68 65 20 66 75 6e 63 74  b> and the funct
31b0: 69 6f 6e 73 0a 3c 62 3e 6d 69 6e 3c 2f 62 3e 20  ions.<b>min</b> 
31c0: 61 6e 64 20 3c 62 3e 6d 61 78 3c 2f 62 3e 20 75  and <b>max</b> u
31d0: 73 65 64 20 77 69 74 68 20 6f 6e 6c 79 20 6f 6e  sed with only on
31e0: 65 20 61 72 67 75 6d 65 6e 74 20 61 72 65 20 61  e argument are a
31f0: 6c 6c 20 61 67 67 72 65 67 61 74 65 0a 66 75 6e  ll aggregate.fun
3200: 63 74 69 6f 6e 73 2e 20 20 54 68 69 73 20 6d 65  ctions.  This me
3210: 61 6e 73 20 74 68 61 74 20 74 68 65 79 20 61 72  ans that they ar
3220: 65 20 63 6f 6d 70 75 74 65 64 20 61 63 72 6f 73  e computed acros
3230: 73 20 61 6c 6c 20 72 6f 77 73 20 6f 66 20 74 68  s all rows of th
3240: 65 20 72 65 73 75 6c 74 2e 0a 54 68 65 20 66 75  e result..The fu
3250: 6e 63 74 69 6f 6e 73 20 3c 62 3e 6d 69 6e 3c 2f  nctions <b>min</
3260: 62 3e 20 61 6e 64 20 3c 62 3e 6d 61 78 3c 2f 62  b> and <b>max</b
3270: 3e 0a 77 69 74 68 20 74 77 6f 20 6f 72 20 6d 6f  >.with two or mo
3280: 72 65 20 61 72 67 75 6d 65 6e 74 73 20 61 6e 64  re arguments and
3290: 20 74 68 65 20 0a 66 75 6e 63 74 69 6f 6e 73 20   the .functions 
32a0: 3c 62 3e 6c 65 6e 67 74 68 3c 2f 62 3e 20 61 6e  <b>length</b> an
32b0: 64 20 3c 62 3e 73 75 62 73 74 72 3c 2f 62 3e 0a  d <b>substr</b>.
32c0: 61 72 65 20 6e 6f 6e 2d 61 67 67 72 65 67 61 74  are non-aggregat
32d0: 65 73 2e 20 20 4e 6f 6e 2d 61 67 67 72 65 67 61  es.  Non-aggrega
32e0: 74 65 20 66 75 6e 63 74 69 6f 6e 73 0a 61 72 65  te functions.are
32f0: 20 63 6f 6d 70 75 74 65 64 20 73 65 70 61 72 61   computed separa
3300: 74 65 6c 79 20 66 6f 72 20 65 61 63 68 20 72 6f  tely for each ro
3310: 77 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 2e  w of the result.
3320: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 68 65 20 22  .</p>..<p>.The "
3330: 3c 62 3e 63 6f 75 6e 74 28 2a 29 3c 2f 62 3e 22  <b>count(*)</b>"
3340: 20 73 79 6e 74 61 78 20 69 73 20 73 75 70 70 6f   syntax is suppo
3350: 72 74 65 64 20 62 75 74 0a 22 3c 62 3e 63 6f 75  rted but."<b>cou
3360: 6e 74 28 64 69 73 74 69 6e 63 74 3c 2f 62 3e 20  nt(distinct</b> 
3370: 3c 69 3e 43 4f 4c 55 4d 4e 2d 4e 41 4d 45 3c 2f  <i>COLUMN-NAME</
3380: 69 3e 3c 62 3e 29 3c 2f 62 3e 22 20 69 73 20 6e  i><b>)</b>" is n
3390: 6f 74 2e 0a 3c 2f 70 3e 0a 7d 0a 0a 53 65 63 74  ot..</p>.}..Sect
33a0: 69 6f 6e 20 49 4e 53 45 52 54 20 69 6e 73 65 72  ion INSERT inser
33b0: 74 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73  t..Syntax {sql-s
33c0: 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 49 4e 53 45  tatement} {.INSE
33d0: 52 54 20 49 4e 54 4f 20 3c 74 61 62 6c 65 2d 6e  RT INTO <table-n
33e0: 61 6d 65 3e 20 5b 28 20 3c 63 6f 6c 75 6d 6e 2d  ame> [( <column-
33f0: 6c 69 73 74 3e 20 29 5d 20 56 41 4c 55 45 53 20  list> )] VALUES 
3400: 28 20 3c 76 61 6c 75 65 2d 6c 69 73 74 3e 20 29  ( <value-list> )
3410: 20 7c 0a 49 4e 53 45 52 54 20 49 4e 54 4f 20 3c   |.INSERT INTO <
3420: 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 28 20 3c  table-name> [( <
3430: 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 20 29 5d 20  column-list> )] 
3440: 3c 73 65 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e  <select-statemen
3450: 74 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e  t>.}..puts {.<p>
3460: 54 68 65 20 49 4e 53 45 52 54 20 73 74 61 74 65  The INSERT state
3470: 6d 65 6e 74 20 63 6f 6d 65 73 20 69 6e 20 74 77  ment comes in tw
3480: 6f 20 62 61 73 69 63 20 66 6f 72 6d 73 2e 20 20  o basic forms.  
3490: 54 68 65 20 66 69 72 73 74 20 66 6f 72 6d 0a 28  The first form.(
34a0: 77 69 74 68 20 74 68 65 20 22 56 41 4c 55 45 53  with the "VALUES
34b0: 22 20 6b 65 79 77 6f 72 64 29 20 63 72 65 61 74  " keyword) creat
34c0: 65 73 20 61 20 73 69 6e 67 6c 65 20 6e 65 77 20  es a single new 
34d0: 72 6f 77 20 69 6e 20 61 6e 20 65 78 69 73 74 69  row in an existi
34e0: 6e 67 20 74 61 62 6c 65 2e 0a 49 66 20 6e 6f 20  ng table..If no 
34f0: 63 6f 6c 75 6d 6e 2d 6c 69 73 74 20 69 73 20 73  column-list is s
3500: 70 65 63 69 66 69 65 64 20 74 68 65 6e 20 74 68  pecified then th
3510: 65 20 6e 75 6d 62 65 72 20 6f 66 20 76 61 6c 75  e number of valu
3520: 65 73 20 6d 75 73 74 0a 62 65 20 74 68 65 20 73  es must.be the s
3530: 61 6d 65 20 61 73 20 74 68 65 20 6e 75 6d 62 65  ame as the numbe
3540: 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20  r of columns in 
3550: 74 68 65 20 74 61 62 6c 65 2e 20 20 49 66 20 61  the table.  If a
3560: 20 63 6f 6c 75 6d 6e 2d 6c 69 73 74 0a 69 73 20   column-list.is 
3570: 73 70 65 63 69 66 69 65 64 2c 20 74 68 65 6e 20  specified, then 
3580: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 76 61  the number of va
3590: 6c 75 65 73 20 6d 75 73 74 20 6d 61 74 63 68 20  lues must match 
35a0: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a 73 70  the number of.sp
35b0: 65 63 69 66 69 65 64 20 63 6f 6c 75 6d 6e 73 2e  ecified columns.
35c0: 20 20 43 6f 6c 75 6d 6e 73 20 6f 66 20 74 68 65    Columns of the
35d0: 20 74 61 62 6c 65 20 74 68 61 74 20 64 6f 20 6e   table that do n
35e0: 6f 74 20 61 70 70 65 61 72 20 69 6e 20 74 68 65  ot appear in the
35f0: 0a 63 6f 6c 75 6d 6e 20 6c 69 73 74 20 61 72 65  .column list are
3600: 20 66 69 6c 6c 20 77 69 74 68 20 74 68 65 20 64   fill with the d
3610: 65 66 61 75 6c 74 20 76 61 6c 75 65 2c 20 6f 72  efault value, or
3620: 20 77 69 74 68 20 4e 55 4c 4c 20 69 66 20 6e 6f   with NULL if no
3630: 74 0a 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20  t.default value 
3640: 69 73 20 73 70 65 63 69 66 69 65 64 2e 0a 3c 2f  is specified..</
3650: 70 3e 0a 0a 3c 70 3e 54 68 65 20 73 65 63 6f 6e  p>..<p>The secon
3660: 64 20 66 6f 72 6d 20 6f 66 20 74 68 65 20 49 4e  d form of the IN
3670: 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74 20 74  SERT statement t
3680: 61 6b 65 73 20 69 74 20 64 61 74 61 20 66 72 6f  akes it data fro
3690: 6d 20 61 0a 53 45 4c 45 43 54 20 73 74 61 74 65  m a.SELECT state
36a0: 6d 65 6e 74 2e 20 20 54 68 65 20 6e 75 6d 62 65  ment.  The numbe
36b0: 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20  r of columns in 
36c0: 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68  the result of th
36d0: 65 0a 53 45 4c 45 43 54 20 6d 75 73 74 20 65 78  e.SELECT must ex
36e0: 61 63 74 6c 79 20 6d 61 74 63 68 20 74 68 65 20  actly match the 
36f0: 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e  number of column
3700: 73 20 69 6e 20 74 68 65 20 74 61 62 6c 65 20 69  s in the table i
3710: 66 0a 6e 6f 20 63 6f 6c 75 6d 6e 20 6c 69 73 74  f.no column list
3720: 20 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 6f   is specified, o
3730: 72 20 69 74 20 6d 75 73 74 20 6d 61 74 63 68 20  r it must match 
3740: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f  the number of co
3750: 6c 75 6d 6e 73 0a 6e 61 6d 65 20 69 6e 20 74 68  lumns.name in th
3760: 65 20 63 6f 6c 75 6d 6e 20 6c 69 73 74 2e 20 20  e column list.  
3770: 41 20 6e 65 77 20 65 6e 74 72 79 20 69 73 20 6d  A new entry is m
3780: 61 64 65 20 69 6e 20 74 68 65 20 74 61 62 6c 65  ade in the table
3790: 0a 66 6f 72 20 65 76 65 72 79 20 72 6f 77 20 6f  .for every row o
37a0: 66 20 74 68 65 20 53 45 4c 45 43 54 20 72 65 73  f the SELECT res
37b0: 75 6c 74 2e 20 20 54 68 65 20 53 45 4c 45 43 54  ult.  The SELECT
37c0: 20 6d 61 79 20 62 65 20 73 69 6d 70 6c 65 0a 6f   may be simple.o
37d0: 72 20 63 6f 6d 70 6f 75 6e 64 2e 20 20 49 66 20  r compound.  If 
37e0: 74 68 65 20 53 45 4c 45 43 54 20 73 74 61 74 65  the SELECT state
37f0: 6d 65 6e 74 20 68 61 73 20 61 6e 20 4f 52 44 45  ment has an ORDE
3800: 52 20 42 59 20 63 6c 61 75 73 65 2c 0a 74 68 65  R BY clause,.the
3810: 20 4f 52 44 45 52 20 42 59 20 69 73 20 69 67 6e   ORDER BY is ign
3820: 6f 72 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 53 65 63  ored.</p>.}..Sec
3830: 74 69 6f 6e 20 53 45 4c 45 43 54 20 73 65 6c 65  tion SELECT sele
3840: 63 74 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d  ct..Syntax {sql-
3850: 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 53 45 4c  statement} {.SEL
3860: 45 43 54 20 3c 72 65 73 75 6c 74 3e 20 46 52 4f  ECT <result> FRO
3870: 4d 20 3c 74 61 62 6c 65 2d 6c 69 73 74 3e 20 0a  M <table-list> .
3880: 5b 57 48 45 52 45 20 3c 65 78 70 72 65 73 73 69  [WHERE <expressi
3890: 6f 6e 3e 5d 0a 5b 47 52 4f 55 50 20 42 59 20 3c  on>].[GROUP BY <
38a0: 65 78 70 72 2d 6c 69 73 74 3e 5d 0a 5b 48 41 56  expr-list>].[HAV
38b0: 49 4e 47 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e  ING <expression>
38c0: 5d 0a 5b 3c 63 6f 6d 70 6f 75 6e 64 2d 6f 70 3e  ].[<compound-op>
38d0: 20 3c 73 65 6c 65 63 74 3e 5d 2a 0a 5b 4f 52 44   <select>]*.[ORD
38e0: 45 52 20 42 59 20 3c 73 6f 72 74 2d 65 78 70 72  ER BY <sort-expr
38f0: 2d 6c 69 73 74 3e 5d 0a 7d 20 7b 72 65 73 75 6c  -list>].} {resul
3900: 74 7d 20 7b 0a 53 54 41 52 20 7c 20 3c 72 65 73  t} {.STAR | <res
3910: 75 6c 74 2d 63 6f 6c 75 6d 6e 3e 20 5b 2c 20 3c  ult-column> [, <
3920: 72 65 73 75 6c 74 2d 63 6f 6c 75 6d 6e 3e 5d 2a  result-column>]*
3930: 0a 7d 20 7b 72 65 73 75 6c 74 2d 63 6f 6c 75 6d  .} {result-colum
3940: 6e 7d 20 7b 0a 3c 65 78 70 72 65 73 73 69 6f 6e  n} {.<expression
3950: 3e 20 5b 20 5b 41 53 5d 20 3c 73 74 72 69 6e 67  > [ [AS] <string
3960: 3e 20 5d 0a 7d 20 7b 74 61 62 6c 65 2d 6c 69 73  > ].} {table-lis
3970: 74 7d 20 7b 0a 3c 74 61 62 6c 65 2d 6e 61 6d 65  t} {.<table-name
3980: 3e 20 5b 2c 20 3c 74 61 62 6c 65 2d 6e 61 6d 65  > [, <table-name
3990: 3e 5d 2a 0a 7d 20 7b 73 6f 72 74 2d 65 78 70 72  >]*.} {sort-expr
39a0: 2d 6c 69 73 74 7d 20 7b 0a 3c 65 78 70 72 3e 20  -list} {.<expr> 
39b0: 5b 3c 73 6f 72 74 2d 6f 72 64 65 72 3e 5d 20 5b  [<sort-order>] [
39c0: 2c 20 3c 65 78 70 72 3e 20 5b 3c 73 6f 72 74 2d  , <expr> [<sort-
39d0: 6f 72 64 65 72 3e 5d 5d 2a 0a 7d 20 7b 73 6f 72  order>]]*.} {sor
39e0: 74 2d 6f 72 64 65 72 7d 20 7b 0a 41 53 43 20 7c  t-order} {.ASC |
39f0: 20 44 45 53 43 0a 7d 20 7b 63 6f 6d 70 6f 75 6e   DESC.} {compoun
3a00: 64 5f 6f 70 7d 20 7b 0a 55 4e 49 4f 4e 20 7c 20  d_op} {.UNION | 
3a10: 55 4e 49 4f 4e 20 41 4c 4c 20 7c 20 49 4e 54 45  UNION ALL | INTE
3a20: 52 53 45 43 54 20 7c 20 45 58 43 45 50 54 0a 7d  RSECT | EXCEPT.}
3a30: 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20  ..puts {.<p>The 
3a40: 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74  SELECT statement
3a50: 20 69 73 20 75 73 65 64 20 74 6f 20 71 75 65 72   is used to quer
3a60: 79 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 20  y the database. 
3a70: 20 54 68 65 0a 72 65 73 75 6c 74 20 6f 66 20 61   The.result of a
3a80: 20 53 45 4c 45 43 54 20 69 73 20 7a 65 72 6f 20   SELECT is zero 
3a90: 6f 72 20 6d 6f 72 65 20 72 6f 77 73 20 6f 66 20  or more rows of 
3aa0: 64 61 74 61 20 77 68 65 72 65 20 65 61 63 68 20  data where each 
3ab0: 72 6f 77 0a 68 61 73 20 61 20 66 69 78 65 64 20  row.has a fixed 
3ac0: 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e  number of column
3ad0: 73 2e 20 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  s.  The number o
3ae0: 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65  f columns in the
3af0: 0a 72 65 73 75 6c 74 20 69 73 20 73 70 65 63 69  .result is speci
3b00: 66 69 65 64 20 62 79 20 74 68 65 20 65 78 70 72  fied by the expr
3b10: 65 73 73 69 6f 6e 20 6c 69 73 74 20 69 6e 20 62  ession list in b
3b20: 65 74 77 65 65 6e 20 74 68 65 0a 53 45 4c 45 43  etween the.SELEC
3b30: 54 20 61 6e 64 20 46 52 4f 4d 20 6b 65 79 77 6f  T and FROM keywo
3b40: 72 64 73 2e 20 20 41 6e 79 20 61 72 62 69 74 72  rds.  Any arbitr
3b50: 61 72 79 20 65 78 70 72 65 73 73 69 6f 6e 20 63  ary expression c
3b60: 61 6e 20 62 65 20 75 73 65 64 0a 61 73 20 61 20  an be used.as a 
3b70: 72 65 73 75 6c 74 2e 20 20 49 66 20 74 68 65 20  result.  If the 
3b80: 72 65 73 75 6c 74 20 73 70 65 63 69 66 69 63 61  result specifica
3b90: 74 69 6f 6e 20 69 73 20 6a 75 73 74 7d 0a 70 75  tion is just}.pu
3ba0: 74 73 20 22 5b 4f 70 65 72 61 74 6f 72 20 2a 5d  ts "[Operator *]
3bb0: 20 74 68 65 6e 20 61 6c 6c 20 63 6f 6c 75 6d 6e   then all column
3bc0: 73 20 6f 66 20 61 6c 6c 20 74 61 62 6c 65 73 20  s of all tables 
3bd0: 61 72 65 20 75 73 65 64 20 61 73 20 74 68 65 20  are used as the 
3be0: 72 65 73 75 6c 74 2e 22 0a 70 75 74 73 20 7b 3c  result.".puts {<
3bf0: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 71 75 65 72  /p>..<p>The quer
3c00: 79 20 69 73 20 65 78 65 63 75 74 65 64 20 61 67  y is executed ag
3c10: 61 69 6e 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20  ain one or more 
3c20: 74 61 62 6c 65 73 20 73 70 65 63 69 66 69 65 64  tables specified
3c30: 20 61 66 74 65 72 0a 74 68 65 20 46 52 4f 4d 20   after.the FROM 
3c40: 6b 65 79 77 6f 72 64 2e 20 20 49 66 20 6d 6f 72  keyword.  If mor
3c50: 65 20 74 68 61 6e 20 6f 6e 65 20 74 61 62 6c 65  e than one table
3c60: 20 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 74   is specified, t
3c70: 68 65 6e 20 74 68 65 0a 71 75 65 72 79 20 69 73  hen the.query is
3c80: 20 61 67 61 69 6e 73 74 20 74 68 65 20 6a 6f 69   against the joi
3c90: 6e 20 6f 66 20 74 68 65 20 76 61 72 69 6f 75 73  n of the various
3ca0: 20 74 61 62 6c 65 73 2e 3c 2f 70 3e 0a 0a 3c 70   tables.</p>..<p
3cb0: 3e 54 68 65 20 57 48 45 52 45 20 63 6c 61 75 73  >The WHERE claus
3cc0: 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f  e can be used to
3cd0: 20 6c 69 6d 69 74 20 74 68 65 20 6e 75 6d 62 65   limit the numbe
3ce0: 72 20 6f 66 20 72 6f 77 73 20 6f 76 65 72 0a 77  r of rows over.w
3cf0: 68 69 63 68 20 74 68 65 20 71 75 65 72 79 20 6f  hich the query o
3d00: 70 65 72 61 74 65 73 2e 20 20 4e 6f 74 65 20 74  perates.  Note t
3d10: 68 61 74 20 62 65 63 61 75 73 65 20 6f 66 20 6c  hat because of l
3d20: 69 6d 69 74 61 74 69 6f 6e 73 20 6f 66 0a 47 44  imitations of.GD
3d30: 42 4d 20 28 69 74 20 75 73 65 73 20 68 61 73 68  BM (it uses hash
3d40: 69 6e 67 20 6e 6f 74 20 62 2d 74 72 65 65 73 29  ing not b-trees)
3d50: 20 69 6e 64 69 63 65 73 20 77 69 6c 6c 20 6f 6e   indices will on
3d60: 6c 79 20 62 65 20 75 73 65 64 20 74 6f 0a 6f 70  ly be used to.op
3d70: 74 69 6d 69 7a 65 20 74 68 65 20 71 75 65 72 79  timize the query
3d80: 20 69 66 20 57 48 45 52 45 20 65 78 70 72 65 73   if WHERE expres
3d90: 73 69 6f 6e 20 63 6f 6e 74 61 69 6e 73 20 65 71  sion contains eq
3da0: 75 61 6c 69 74 79 20 63 6f 6d 70 61 72 69 73 6f  uality compariso
3db0: 6e 73 0a 63 6f 6e 6e 65 63 74 65 64 20 62 79 20  ns.connected by 
3dc0: 74 68 65 20 41 4e 44 20 6f 70 65 72 61 74 6f 72  the AND operator
3dd0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 47 52  .</p>..<p>The GR
3de0: 4f 55 50 20 42 59 20 63 6c 61 75 73 65 73 20 63  OUP BY clauses c
3df0: 61 75 73 65 73 20 6f 6e 65 20 6f 72 20 6d 6f 72  auses one or mor
3e00: 65 20 72 6f 77 73 20 6f 66 20 74 68 65 20 72 65  e rows of the re
3e10: 73 75 6c 74 20 74 6f 0a 62 65 20 63 6f 6d 62 69  sult to.be combi
3e20: 6e 65 64 20 69 6e 74 6f 20 61 20 73 69 6e 67 6c  ned into a singl
3e30: 65 20 72 6f 77 20 6f 66 20 6f 75 74 70 75 74 2e  e row of output.
3e40: 20 20 54 68 69 73 20 69 73 20 65 73 70 65 63 69    This is especi
3e50: 61 6c 6c 79 20 75 73 65 66 75 6c 0a 77 68 65 6e  ally useful.when
3e60: 20 74 68 65 20 72 65 73 75 6c 74 20 63 6f 6e 74   the result cont
3e70: 61 69 6e 73 20 61 67 67 72 65 67 61 74 65 20 66  ains aggregate f
3e80: 75 6e 63 74 69 6f 6e 73 2e 20 20 54 68 65 20 65  unctions.  The e
3e90: 78 70 72 65 73 73 69 6f 6e 73 20 69 6e 0a 74 68  xpressions in.th
3ea0: 65 20 47 52 4f 55 50 20 42 59 20 63 6c 61 75 73  e GROUP BY claus
3eb0: 65 20 64 6f 20 3c 65 6d 3e 6e 6f 74 3c 2f 65 6d  e do <em>not</em
3ec0: 3e 20 68 61 76 65 20 74 6f 20 62 65 20 65 78 70  > have to be exp
3ed0: 72 65 73 73 69 6f 6e 73 20 74 68 61 74 0a 61 70  ressions that.ap
3ee0: 70 65 61 72 20 69 6e 20 74 68 65 20 72 65 73 75  pear in the resu
3ef0: 6c 74 2e 20 20 54 68 65 20 48 41 56 49 4e 47 20  lt.  The HAVING 
3f00: 63 6c 61 75 73 65 20 69 73 20 73 69 6d 69 6c 61  clause is simila
3f10: 72 20 74 6f 20 57 48 45 52 45 20 65 78 63 65 70  r to WHERE excep
3f20: 74 0a 74 68 61 74 20 48 41 56 49 4e 47 20 61 70  t.that HAVING ap
3f30: 70 6c 69 65 73 20 61 66 74 65 72 20 67 72 6f 75  plies after grou
3f40: 70 69 6e 67 20 68 61 73 20 6f 63 63 75 72 72 65  ping has occurre
3f50: 64 2e 20 20 54 68 65 20 48 41 56 49 4e 47 20 65  d.  The HAVING e
3f60: 78 70 72 65 73 73 69 6f 6e 0a 6d 61 79 20 72 65  xpression.may re
3f70: 66 65 72 20 74 6f 20 76 61 6c 75 65 73 2c 20 65  fer to values, e
3f80: 76 65 6e 20 61 67 67 72 65 67 61 74 65 20 66 75  ven aggregate fu
3f90: 6e 63 74 69 6f 6e 73 2c 20 74 68 61 74 20 61 72  nctions, that ar
3fa0: 65 20 6e 6f 74 20 69 6e 20 74 68 65 20 72 65 73  e not in the res
3fb0: 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ult.</p>..<p>The
3fc0: 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73 65   ORDER BY clause
3fd0: 20 63 61 75 73 65 73 20 74 68 65 20 6f 75 74 70   causes the outp
3fe0: 75 74 20 72 6f 77 73 20 74 6f 20 62 65 20 73 6f  ut rows to be so
3ff0: 72 74 65 64 2e 20 20 0a 54 68 65 20 61 72 67 75  rted.  .The argu
4000: 6d 65 6e 74 20 74 6f 20 4f 52 44 45 52 20 42 59  ment to ORDER BY
4010: 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 65 78   is a list of ex
4020: 70 72 65 73 73 69 6f 6e 73 20 74 68 61 74 20 61  pressions that a
4030: 72 65 20 75 73 65 64 20 61 73 20 74 68 65 0a 6b  re used as the.k
4040: 65 79 20 66 6f 72 20 74 68 65 20 73 6f 72 74 2e  ey for the sort.
4050: 20 20 54 68 65 20 65 78 70 72 65 73 73 69 6f 6e    The expression
4060: 73 20 64 6f 20 6e 6f 74 20 68 61 76 65 20 74 6f  s do not have to
4070: 20 62 65 20 70 61 72 74 20 6f 66 20 74 68 65 0a   be part of the.
4080: 72 65 73 75 6c 74 20 66 6f 72 20 61 20 73 69 6d  result for a sim
4090: 70 6c 65 20 53 45 4c 45 43 54 2c 20 62 75 74 20  ple SELECT, but 
40a0: 69 6e 20 61 20 63 6f 6d 70 6f 75 6e 64 20 53 45  in a compound SE
40b0: 4c 45 43 54 20 65 61 63 68 20 73 6f 72 74 0a 65  LECT each sort.e
40c0: 78 70 72 65 73 73 69 6f 6e 20 6d 75 73 74 20 65  xpression must e
40d0: 78 61 63 74 6c 79 20 6d 61 74 63 68 20 6f 6e 65  xactly match one
40e0: 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 63   of the result c
40f0: 6f 6c 75 6d 6e 73 2e 20 20 45 61 63 68 0a 73 6f  olumns.  Each.so
4100: 72 74 20 65 78 70 72 65 73 73 69 6f 6e 20 6d 61  rt expression ma
4110: 79 20 62 65 20 6f 70 74 69 6f 6e 61 6c 6c 79 20  y be optionally 
4120: 66 6f 6c 6c 6f 77 65 64 20 62 79 20 41 53 43 20  followed by ASC 
4130: 6f 72 20 44 45 53 43 20 74 6f 20 73 70 65 63 69  or DESC to speci
4140: 66 79 0a 74 68 65 20 73 6f 72 74 20 6f 72 64 65  fy.the sort orde
4150: 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 63 6f 6d  r.</p>..<p>A com
4160: 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 69 73 20  pound SELECT is 
4170: 66 6f 72 6d 65 64 20 66 72 6f 6d 20 74 77 6f 20  formed from two 
4180: 6f 72 20 6d 6f 72 65 20 73 69 6d 70 6c 65 20 53  or more simple S
4190: 45 4c 45 43 54 73 20 63 6f 6e 6e 65 63 74 65 64  ELECTs connected
41a0: 0a 62 79 20 6f 6e 65 20 6f 66 20 74 68 65 20 6f  .by one of the o
41b0: 70 65 72 61 74 6f 72 73 20 55 4e 49 4f 4e 2c 20  perators UNION, 
41c0: 55 4e 49 4f 4e 20 41 4c 4c 2c 20 49 4e 54 45 52  UNION ALL, INTER
41d0: 53 45 43 54 2c 20 6f 72 20 45 58 43 45 50 54 2e  SECT, or EXCEPT.
41e0: 20 20 49 6e 0a 61 20 63 6f 6d 70 6f 75 6e 64 20    In.a compound 
41f0: 53 45 4c 45 43 54 2c 20 61 6c 6c 20 74 68 65 20  SELECT, all the 
4200: 63 6f 6e 73 74 69 74 75 65 6e 74 20 53 45 4c 45  constituent SELE
4210: 43 54 73 20 6d 75 73 74 20 73 70 65 63 69 66 79  CTs must specify
4220: 20 74 68 65 0a 73 61 6d 65 20 6e 75 6d 62 65 72   the.same number
4230: 20 6f 66 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d   of result colum
4240: 6e 73 2e 20 20 54 68 65 72 65 20 6d 61 79 20 62  ns.  There may b
4250: 65 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20  e only a single 
4260: 4f 52 44 45 52 20 42 59 0a 63 6c 61 75 73 65 20  ORDER BY.clause 
4270: 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68  at the end of th
4280: 65 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43  e compound SELEC
4290: 54 2e 20 20 54 68 65 20 55 4e 49 4f 4e 20 61 6e  T.  The UNION an
42a0: 64 20 55 4e 49 4f 4e 20 41 4c 4c 0a 6f 70 65 72  d UNION ALL.oper
42b0: 61 74 6f 72 73 20 63 6f 6d 62 69 6e 65 20 74 68  ators combine th
42c0: 65 20 72 65 73 75 6c 74 73 20 6f 66 20 74 68 65  e results of the
42d0: 20 53 45 4c 45 43 54 73 20 74 6f 20 74 68 65 20   SELECTs to the 
42e0: 72 69 67 68 74 20 61 6e 64 20 6c 65 66 74 20 69  right and left i
42f0: 6e 74 6f 0a 61 20 73 69 6e 67 6c 65 20 62 69 67  nto.a single big
4300: 20 74 61 62 6c 65 2e 20 20 54 68 65 20 64 69 66   table.  The dif
4310: 66 65 72 65 6e 63 65 20 69 73 20 74 68 61 74 20  ference is that 
4320: 69 6e 20 55 4e 49 4f 4e 20 61 6c 6c 20 72 65 73  in UNION all res
4330: 75 6c 74 20 72 6f 77 73 0a 61 72 65 20 64 69 73  ult rows.are dis
4340: 74 69 6e 63 74 20 77 68 65 72 65 20 69 6e 20 55  tinct where in U
4350: 4e 49 4f 4e 20 41 4c 4c 20 74 68 65 72 65 20 6d  NION ALL there m
4360: 61 79 20 62 65 20 64 75 70 6c 69 63 61 74 65 73  ay be duplicates
4370: 2e 0a 54 68 65 20 49 4e 54 45 52 53 45 43 54 20  ..The INTERSECT 
4380: 6f 70 65 72 61 74 6f 72 20 74 61 6b 65 73 20 74  operator takes t
4390: 68 65 20 69 6e 74 65 72 73 65 63 74 69 6f 6e 20  he intersection 
43a0: 6f 66 20 74 68 65 20 72 65 73 75 6c 74 73 20 6f  of the results o
43b0: 66 20 74 68 65 0a 6c 65 66 74 20 61 6e 64 20 72  f the.left and r
43c0: 69 67 68 74 20 53 45 4c 45 43 54 73 2e 20 20 45  ight SELECTs.  E
43d0: 58 43 45 50 54 20 74 61 6b 65 73 20 74 68 65 20  XCEPT takes the 
43e0: 72 65 73 75 6c 74 20 6f 66 20 6c 65 66 74 20 53  result of left S
43f0: 45 4c 45 43 54 20 61 66 74 65 72 0a 72 65 6d 6f  ELECT after.remo
4400: 76 69 6e 67 20 74 68 65 20 72 65 73 75 6c 74 73  ving the results
4410: 20 6f 66 20 74 68 65 20 72 69 67 68 74 20 53 45   of the right SE
4420: 4c 45 43 54 2e 20 20 57 68 65 6e 20 74 68 72 65  LECT.  When thre
4430: 65 20 61 72 65 20 6d 6f 72 65 20 53 45 4c 45 43  e are more SELEC
4440: 54 73 0a 61 72 65 20 63 6f 6e 6e 65 63 74 65 64  Ts.are connected
4450: 20 69 6e 74 6f 20 61 20 63 6f 6d 70 6f 75 6e 64   into a compound
4460: 2c 20 74 68 65 79 20 67 72 6f 75 70 20 66 72 6f  , they group fro
4470: 6d 20 6c 65 66 74 20 74 6f 20 72 69 67 68 74 2e  m left to right.
4480: 3c 2f 70 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20  </p>.}..Section 
4490: 55 50 44 41 54 45 20 75 70 64 61 74 65 0a 0a 53  UPDATE update..S
44a0: 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65  yntax {sql-state
44b0: 6d 65 6e 74 7d 20 7b 0a 55 50 44 41 54 45 20 3c  ment} {.UPDATE <
44c0: 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 53 45 54 20  table-name> SET 
44d0: 3c 61 73 73 69 67 6e 6d 65 6e 74 3e 20 5b 2c 20  <assignment> [, 
44e0: 3c 61 73 73 69 67 6e 6d 65 6e 74 3e 5d 20 5b 57  <assignment>] [W
44f0: 48 45 52 45 20 3c 65 78 70 72 65 73 73 69 6f 6e  HERE <expression
4500: 3e 5d 0a 7d 20 7b 61 73 73 69 67 6e 6d 65 6e 74  >].} {assignment
4510: 7d 20 7b 0a 3c 63 6f 6c 75 6d 6e 2d 6e 61 6d 65  } {.<column-name
4520: 3e 20 3d 20 3c 65 78 70 72 65 73 73 69 6f 6e 3e  > = <expression>
4530: 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68  .}..puts {.<p>Th
4540: 65 20 55 50 44 41 54 45 20 73 74 61 74 65 6d 65  e UPDATE stateme
4550: 6e 74 20 69 73 20 75 73 65 64 20 74 6f 20 63 68  nt is used to ch
4560: 61 6e 67 65 20 74 68 65 20 76 61 6c 75 65 20 6f  ange the value o
4570: 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 0a 73 65  f columns in .se
4580: 6c 65 63 74 65 64 20 72 6f 77 73 20 6f 66 20 61  lected rows of a
4590: 20 74 61 62 6c 65 2e 20 20 45 61 63 68 20 61 73   table.  Each as
45a0: 73 69 67 6e 6d 65 6e 74 20 69 6e 20 61 6e 20 55  signment in an U
45b0: 50 44 41 54 45 20 73 70 65 63 69 66 69 65 73 0a  PDATE specifies.
45c0: 61 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 74 6f  a column name to
45d0: 20 74 68 65 20 6c 65 66 74 20 6f 66 20 74 68 65   the left of the
45e0: 20 65 71 75 61 6c 73 20 73 69 67 6e 20 61 6e 64   equals sign and
45f0: 20 61 6e 20 61 72 62 69 74 72 61 72 79 20 65 78   an arbitrary ex
4600: 70 72 65 73 73 69 6f 6e 0a 74 6f 20 74 68 65 20  pression.to the 
4610: 72 69 67 68 74 2e 20 20 54 68 65 20 65 78 70 72  right.  The expr
4620: 65 73 73 69 6f 6e 73 20 6d 61 79 20 75 73 65 20  essions may use 
4630: 74 68 65 20 76 61 6c 75 65 73 20 6f 66 20 6f 74  the values of ot
4640: 68 65 72 20 63 6f 6c 75 6d 6e 73 2e 0a 41 6c 6c  her columns..All
4650: 20 65 78 70 72 65 73 73 69 6f 6e 73 20 61 72 65   expressions are
4660: 20 65 76 61 6c 75 61 74 65 64 20 62 65 66 6f 72   evaluated befor
4670: 65 20 61 6e 79 20 61 73 73 69 67 6e 6d 65 6e 74  e any assignment
4680: 73 20 61 72 65 20 6d 61 64 65 2e 0a 41 20 57 48  s are made..A WH
4690: 45 52 45 20 63 6c 61 75 73 65 20 63 61 6e 20 62  ERE clause can b
46a0: 65 20 75 73 65 64 20 74 6f 20 72 65 73 74 72 69  e used to restri
46b0: 63 74 20 77 68 69 63 68 20 72 6f 77 73 20 61 72  ct which rows ar
46c0: 65 20 75 70 64 61 74 65 64 2e 0a 7d 0a 0a 53 65  e updated..}..Se
46d0: 63 74 69 6f 6e 20 56 41 43 55 55 4d 20 76 61 63  ction VACUUM vac
46e0: 75 75 6d 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c  uum..Syntax {sql
46f0: 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 56 41  -statement} {.VA
4700: 43 55 55 4d 20 5b 3c 69 6e 64 65 78 2d 6f 72 2d  CUUM [<index-or-
4710: 74 61 62 6c 65 2d 6e 61 6d 65 3e 5d 0a 7d 0a 0a  table-name>].}..
4720: 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 56 41  puts {.<p>The VA
4730: 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20 69 73 20  CUUM command is 
4740: 61 6e 20 53 51 4c 69 74 65 20 65 78 74 65 6e 73  an SQLite extens
4750: 69 6f 6e 20 6d 6f 64 65 6c 6c 65 64 20 61 66 74  ion modelled aft
4760: 65 72 20 61 20 73 69 6d 69 6c 61 72 0a 63 6f 6d  er a similar.com
4770: 6d 61 6e 64 20 66 6f 75 6e 64 20 69 6e 20 50 6f  mand found in Po
4780: 73 74 67 72 65 53 51 4c 2e 20 20 49 66 20 56 41  stgreSQL.  If VA
4790: 43 55 55 4d 20 69 73 20 69 6e 76 6f 6b 65 64 20  CUUM is invoked 
47a0: 77 69 74 68 20 74 68 65 20 6e 61 6d 65 20 6f 66  with the name of
47b0: 20 61 0a 74 61 62 6c 65 20 6f 72 20 69 6e 64 65   a.table or inde
47c0: 78 2c 20 74 68 65 6e 20 74 68 65 20 3c 62 3e 67  x, then the <b>g
47d0: 64 62 6d 5f 72 65 6f 72 67 61 6e 69 7a 65 28 29  dbm_reorganize()
47e0: 3c 2f 62 3e 20 66 75 6e 63 74 69 6f 6e 20 69 73  </b> function is
47f0: 20 63 61 6c 6c 65 64 0a 6f 6e 20 74 68 65 20 63   called.on the c
4800: 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 47 44 42  orresponding GDB
4810: 4d 20 66 69 6c 65 2e 20 20 49 66 20 56 41 43 55  M file.  If VACU
4820: 55 4d 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 69  UM is invoked wi
4830: 74 68 20 6e 6f 20 61 72 67 75 6d 65 6e 74 73 2c  th no arguments,
4840: 0a 74 68 65 6e 20 3c 62 3e 67 64 62 6d 5f 72 65  .then <b>gdbm_re
4850: 6f 72 67 61 6e 69 7a 65 28 29 3c 2f 62 3e 20 69  organize()</b> i
4860: 73 20 63 61 6c 6c 65 64 20 66 6f 72 20 65 76 65  s called for eve
4870: 72 79 20 47 44 42 4d 20 66 69 6c 65 20 69 6e 20  ry GDBM file in 
4880: 74 68 65 20 64 61 74 61 62 61 73 65 2e 3c 2f 70  the database.</p
4890: 3e 0a 0a 3c 70 3e 49 74 20 69 73 20 61 20 67 6f  >..<p>It is a go
48a0: 6f 64 20 69 64 65 61 20 74 6f 20 72 75 6e 20 56  od idea to run V
48b0: 41 43 55 55 4d 20 61 66 74 65 72 20 63 72 65 61  ACUUM after crea
48c0: 74 69 6e 67 20 6c 61 72 67 65 20 69 6e 64 69 63  ting large indic
48d0: 65 73 2c 0a 65 73 70 65 63 69 61 6c 6c 79 20 69  es,.especially i
48e0: 6e 64 69 63 65 73 20 77 68 65 72 65 20 61 20 73  ndices where a s
48f0: 69 6e 67 6c 65 20 69 6e 64 65 78 20 76 61 6c 75  ingle index valu
4900: 65 20 72 65 66 65 72 73 20 74 6f 20 6d 61 6e 79  e refers to many
4910: 0a 65 6e 74 72 69 65 73 20 69 6e 20 74 68 65 20  .entries in the 
4920: 64 61 74 61 20 74 61 62 6c 65 2e 20 20 52 65 6f  data table.  Reo
4930: 72 67 61 6e 69 7a 69 6e 67 20 74 68 65 73 65 20  rganizing these 
4940: 69 6e 64 69 63 65 73 20 77 69 6c 6c 20 6d 61 6b  indices will mak
4950: 65 0a 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67  e.the underlying
4960: 20 47 44 42 4d 20 66 69 6c 65 20 6d 75 63 68 20   GDBM file much 
4970: 73 6d 61 6c 6c 65 72 20 61 6e 64 20 77 69 6c 6c  smaller and will
4980: 20 68 65 6c 70 20 71 75 65 72 69 65 73 20 74 6f   help queries to
4990: 0a 72 75 6e 20 6d 75 63 68 20 66 61 73 74 65 72  .run much faster
49a0: 2e 3c 2f 70 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a  .</p>.}..puts {.
49b0: 3c 70 3e 3c 2f 70 3e 0a 7d 0a 0a 70 75 74 73 20  <p></p>.}..puts 
49c0: 7b 0a 3c 70 3e 3c 68 72 20 2f 3e 3c 2f 70 3e 0a  {.<p><hr /></p>.
49d0: 3c 70 3e 3c 61 20 68 72 65 66 3d 22 69 6e 64 65  <p><a href="inde
49e0: 78 2e 68 74 6d 6c 22 3e 3c 69 6d 67 20 73 72 63  x.html"><img src
49f0: 3d 22 2f 67 6f 62 61 63 6b 2e 6a 70 67 22 20 62  ="/goback.jpg" b
4a00: 6f 72 64 65 72 3d 30 20 2f 3e 0a 42 61 63 6b 20  order=0 />.Back 
4a10: 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20 48 6f  to the SQLite Ho
4a20: 6d 65 20 50 61 67 65 3c 2f 61 3e 0a 3c 2f 70 3e  me Page</a>.</p>
4a30: 0a 0a 3c 2f 62 6f 64 79 3e 3c 2f 68 74 6d 6c 3e  ..</body></html>
4a40: 7d 0a                                            }.