/ Hex Artifact Content
Login

Artifact bb945a1081928d9de8f08fa15632ac42c73c0c13:


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 35 37 20 32 30 30 33  .tcl,v 1.57 2003
0060: 2f 30 35 2f 31 30 20 30 32 3a 35 34 3a 30 32 20  /05/10 02:54:02 
0070: 6a 70 6c 79 6f 6e 20 45 78 70 20 24 7d 0a 0a 70  jplyon Exp $}..p
0080: 75 74 73 20 7b 3c 68 74 6d 6c 3e 0a 3c 68 65 61  uts {<html>.<hea
0090: 64 3e 0a 20 20 3c 74 69 74 6c 65 3e 51 75 65 72  d>.  <title>Quer
00a0: 79 20 4c 61 6e 67 75 61 67 65 20 55 6e 64 65 72  y Language Under
00b0: 73 74 6f 6f 64 20 42 79 20 53 51 4c 69 74 65 3c  stood By SQLite<
00c0: 2f 74 69 74 6c 65 3e 0a 3c 2f 68 65 61 64 3e 0a  /title>.</head>.
00d0: 3c 62 6f 64 79 20 62 67 63 6f 6c 6f 72 3d 77 68  <body bgcolor=wh
00e0: 69 74 65 3e 0a 3c 68 31 20 61 6c 69 67 6e 3d 63  ite>.<h1 align=c
00f0: 65 6e 74 65 72 3e 0a 53 51 4c 20 41 73 20 55 6e  enter>.SQL As Un
0100: 64 65 72 73 74 6f 6f 64 20 42 79 20 53 51 4c 69  derstood By SQLi
0110: 74 65 0a 3c 2f 68 31 3e 7d 0a 70 75 74 73 20 22  te.</h1>}.puts "
0120: 3c 70 20 61 6c 69 67 6e 3d 63 65 6e 74 65 72 3e  <p align=center>
0130: 0a 28 54 68 69 73 20 70 61 67 65 20 77 61 73 20  .(This page was 
0140: 6c 61 73 74 20 6d 6f 64 69 66 69 65 64 20 6f 6e  last modified on
0150: 20 5b 6c 72 61 6e 67 65 20 24 72 63 73 69 64 20   [lrange $rcsid 
0160: 33 20 34 5d 20 55 54 43 29 0a 3c 2f 70 3e 22 0a  3 4] UTC).</p>".
0170: 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 53  .puts {.<p>The S
0180: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 75 6e  QLite library un
0190: 64 65 72 73 74 61 6e 64 73 20 6d 6f 73 74 20 6f  derstands most o
01a0: 66 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 53  f the standard S
01b0: 51 4c 0a 6c 61 6e 67 75 61 67 65 2e 20 20 42 75  QL.language.  Bu
01c0: 74 20 69 74 20 64 6f 65 73 20 3c 61 20 68 72 65  t it does <a hre
01d0: 66 3d 22 6f 6d 69 74 74 65 64 2e 68 74 6d 6c 22  f="omitted.html"
01e0: 3e 6f 6d 69 74 20 73 6f 6d 65 20 66 65 61 74 75  >omit some featu
01f0: 72 65 73 3c 2f 61 3e 0a 77 68 69 6c 65 20 61 74  res</a>.while at
0200: 20 74 68 65 20 73 61 6d 65 20 74 69 6d 65 0a 61   the same time.a
0210: 64 64 69 6e 67 20 61 20 66 65 77 20 66 65 61 74  dding a few feat
0220: 75 72 65 73 20 6f 66 20 69 74 73 20 6f 77 6e 2e  ures of its own.
0230: 20 20 54 68 69 73 20 64 6f 63 75 6d 65 6e 74 20    This document 
0240: 61 74 74 65 6d 70 74 73 20 74 6f 0a 64 65 73 63  attempts to.desc
0250: 72 69 62 65 20 70 65 72 63 69 73 65 6c 79 20 77  ribe percisely w
0260: 68 61 74 20 70 61 72 74 73 20 6f 66 20 74 68 65  hat parts of the
0270: 20 53 51 4c 20 6c 61 6e 67 75 61 67 65 20 53 51   SQL language SQ
0280: 4c 69 74 65 20 64 6f 65 73 0a 61 6e 64 20 64 6f  Lite does.and do
0290: 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 2e 20  es not support. 
02a0: 20 41 20 6c 69 73 74 20 6f 66 20 3c 61 20 68 72   A list of <a hr
02b0: 65 66 3d 22 23 6b 65 79 77 6f 72 64 73 22 3e 6b  ef="#keywords">k
02c0: 65 79 77 6f 72 64 73 3c 61 2f 3e 20 69 73 20 0a  eywords<a/> is .
02d0: 67 69 76 65 6e 20 61 74 20 74 68 65 20 65 6e 64  given at the end
02e0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 6e 20 61 6c 6c  .</p>..<p>In all
02f0: 20 6f 66 20 74 68 65 20 73 79 6e 74 61 78 20 64   of the syntax d
0300: 69 61 67 72 61 6d 73 20 74 68 61 74 20 66 6f 6c  iagrams that fol
0310: 6c 6f 77 2c 20 6c 69 74 65 72 61 6c 20 74 65 78  low, literal tex
0320: 74 20 69 73 20 73 68 6f 77 6e 20 69 6e 0a 62 6f  t is shown in.bo
0330: 6c 64 20 62 6c 75 65 2e 20 20 4e 6f 6e 2d 74 65  ld blue.  Non-te
0340: 72 6d 69 6e 61 6c 20 73 79 6d 62 6f 6c 73 20 61  rminal symbols a
0350: 72 65 20 73 68 6f 77 6e 20 69 6e 20 69 74 61 6c  re shown in ital
0360: 69 63 20 72 65 64 2e 20 20 4f 70 65 72 61 74 6f  ic red.  Operato
0370: 72 73 0a 74 68 61 74 20 61 72 65 20 70 61 72 74  rs.that are part
0380: 20 6f 66 20 74 68 65 20 73 79 6e 74 61 63 74 69   of the syntacti
0390: 63 20 6d 61 72 6b 75 70 20 69 74 73 65 6c 66 20  c markup itself 
03a0: 61 72 65 20 73 68 6f 77 6e 20 69 6e 20 62 6c 61  are shown in bla
03b0: 63 6b 20 72 6f 6d 61 6e 2e 3c 2f 70 3e 0a 0a 3c  ck roman.</p>..<
03c0: 70 3e 54 68 69 73 20 64 6f 63 75 6d 65 6e 74 20  p>This document 
03d0: 69 73 20 6a 75 73 74 20 61 6e 20 6f 76 65 72 76  is just an overv
03e0: 69 65 77 20 6f 66 20 74 68 65 20 53 51 4c 20 73  iew of the SQL s
03f0: 79 6e 74 61 78 20 69 6d 70 6c 65 6d 65 6e 74 65  yntax implemente
0400: 64 0a 62 79 20 53 51 4c 69 74 65 2e 20 20 4d 61  d.by SQLite.  Ma
0410: 6e 79 20 6c 6f 77 2d 6c 65 76 65 6c 20 70 72 6f  ny low-level pro
0420: 64 75 63 74 69 6f 6e 73 20 61 72 65 20 6f 6d 69  ductions are omi
0430: 74 74 65 64 2e 20 20 46 6f 72 20 64 65 74 61 69  tted.  For detai
0440: 6c 65 64 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a  led information.
0450: 6f 6e 20 74 68 65 20 6c 61 6e 67 75 61 67 65 20  on the language 
0460: 74 68 61 74 20 53 51 4c 69 74 65 20 75 6e 64 65  that SQLite unde
0470: 72 73 74 61 6e 64 73 2c 20 72 65 66 65 72 20 74  rstands, refer t
0480: 6f 20 74 68 65 20 73 6f 75 72 63 65 20 63 6f 64  o the source cod
0490: 65 20 61 6e 64 0a 74 68 65 20 67 72 61 6d 6d 61  e and.the gramma
04a0: 72 20 66 69 6c 65 20 22 70 61 72 73 65 2e 79 22  r file "parse.y"
04b0: 2e 3c 2f 70 3e 0a 0a 0a 3c 70 3e 53 51 4c 69 74  .</p>...<p>SQLit
04c0: 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68 65  e implements the
04d0: 20 66 6f 6c 6c 6f 77 20 73 79 6e 74 61 78 3a 3c   follow syntax:<
04e0: 2f 70 3e 0a 3c 70 3e 3c 75 6c 3e 0a 7d 0a 0a 66  /p>.<p><ul>.}..f
04f0: 6f 72 65 61 63 68 20 7b 73 65 63 74 69 6f 6e 7d  oreach {section}
0500: 20 5b 6c 73 6f 72 74 20 2d 69 6e 64 65 78 20 30   [lsort -index 0
0510: 20 2d 64 69 63 74 69 6f 6e 61 72 79 20 7b 0a 20   -dictionary {. 
0520: 20 7b 7b 43 52 45 41 54 45 20 54 41 42 4c 45 7d   {{CREATE TABLE}
0530: 20 63 72 65 61 74 65 74 61 62 6c 65 7d 0a 20 20   createtable}.  
0540: 7b 7b 43 52 45 41 54 45 20 49 4e 44 45 58 7d 20  {{CREATE INDEX} 
0550: 63 72 65 61 74 65 69 6e 64 65 78 7d 0a 20 20 7b  createindex}.  {
0560: 56 41 43 55 55 4d 20 76 61 63 75 75 6d 7d 0a 20  VACUUM vacuum}. 
0570: 20 7b 7b 44 52 4f 50 20 54 41 42 4c 45 7d 20 64   {{DROP TABLE} d
0580: 72 6f 70 74 61 62 6c 65 7d 0a 20 20 7b 7b 44 52  roptable}.  {{DR
0590: 4f 50 20 49 4e 44 45 58 7d 20 64 72 6f 70 69 6e  OP INDEX} dropin
05a0: 64 65 78 7d 0a 20 20 7b 49 4e 53 45 52 54 20 69  dex}.  {INSERT i
05b0: 6e 73 65 72 74 7d 0a 20 20 7b 52 45 50 4c 41 43  nsert}.  {REPLAC
05c0: 45 20 72 65 70 6c 61 63 65 7d 0a 20 20 7b 44 45  E replace}.  {DE
05d0: 4c 45 54 45 20 64 65 6c 65 74 65 7d 0a 20 20 7b  LETE delete}.  {
05e0: 55 50 44 41 54 45 20 75 70 64 61 74 65 7d 0a 20  UPDATE update}. 
05f0: 20 7b 53 45 4c 45 43 54 20 73 65 6c 65 63 74 7d   {SELECT select}
0600: 0a 20 20 7b 63 6f 6d 6d 65 6e 74 20 63 6f 6d 6d  .  {comment comm
0610: 65 6e 74 7d 0a 20 20 7b 43 4f 50 59 20 63 6f 70  ent}.  {COPY cop
0620: 79 7d 0a 20 20 7b 45 58 50 4c 41 49 4e 20 65 78  y}.  {EXPLAIN ex
0630: 70 6c 61 69 6e 7d 0a 20 20 7b 65 78 70 72 65 73  plain}.  {expres
0640: 73 69 6f 6e 20 65 78 70 72 7d 0a 20 20 7b 7b 42  sion expr}.  {{B
0650: 45 47 49 4e 20 54 52 41 4e 53 41 43 54 49 4f 4e  EGIN TRANSACTION
0660: 7d 20 74 72 61 6e 73 61 63 74 69 6f 6e 7d 0a 20  } transaction}. 
0670: 20 7b 7b 43 4f 4d 4d 49 54 20 54 52 41 4e 53 41   {{COMMIT TRANSA
0680: 43 54 49 4f 4e 7d 20 74 72 61 6e 73 61 63 74 69  CTION} transacti
0690: 6f 6e 7d 0a 20 20 7b 7b 45 4e 44 20 54 52 41 4e  on}.  {{END TRAN
06a0: 53 41 43 54 49 4f 4e 7d 20 74 72 61 6e 73 61 63  SACTION} transac
06b0: 74 69 6f 6e 7d 0a 20 20 7b 7b 52 4f 4c 4c 42 41  tion}.  {{ROLLBA
06c0: 43 4b 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20  CK TRANSACTION} 
06d0: 74 72 61 6e 73 61 63 74 69 6f 6e 7d 0a 20 20 7b  transaction}.  {
06e0: 50 52 41 47 4d 41 20 70 72 61 67 6d 61 7d 0a 20  PRAGMA pragma}. 
06f0: 20 7b 7b 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63   {{ON CONFLICT c
0700: 6c 61 75 73 65 7d 20 63 6f 6e 66 6c 69 63 74 7d  lause} conflict}
0710: 0a 20 20 7b 7b 43 52 45 41 54 45 20 56 49 45 57  .  {{CREATE VIEW
0720: 7d 20 63 72 65 61 74 65 76 69 65 77 7d 0a 20 20  } createview}.  
0730: 7b 7b 44 52 4f 50 20 56 49 45 57 7d 20 64 72 6f  {{DROP VIEW} dro
0740: 70 76 69 65 77 7d 0a 20 20 7b 7b 43 52 45 41 54  pview}.  {{CREAT
0750: 45 20 54 52 49 47 47 45 52 7d 20 63 72 65 61 74  E TRIGGER} creat
0760: 65 74 72 69 67 67 65 72 7d 0a 20 20 7b 7b 44 52  etrigger}.  {{DR
0770: 4f 50 20 54 52 49 47 47 45 52 7d 20 64 72 6f 70  OP TRIGGER} drop
0780: 74 72 69 67 67 65 72 7d 0a 20 20 7b 7b 41 54 54  trigger}.  {{ATT
0790: 41 43 48 20 44 41 54 41 42 41 53 45 7d 20 61 74  ACH DATABASE} at
07a0: 74 61 63 68 7d 0a 20 20 7b 7b 44 45 54 41 43 48  tach}.  {{DETACH
07b0: 20 44 41 54 41 42 41 53 45 7d 20 64 65 74 61 63   DATABASE} detac
07c0: 68 7d 0a 7d 5d 20 7b 0a 20 20 70 75 74 73 20 22  h}.}] {.  puts "
07d0: 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 5c 22 23 5b  <li><a href=\"#[
07e0: 6c 69 6e 64 65 78 20 24 73 65 63 74 69 6f 6e 20  lindex $section 
07f0: 31 5d 5c 22 3e 5b 6c 69 6e 64 65 78 20 24 73 65  1]\">[lindex $se
0800: 63 74 69 6f 6e 20 30 5d 3c 2f 61 3e 3c 2f 6c 69  ction 0]</a></li
0810: 3e 22 0a 7d 0a 70 75 74 73 20 7b 3c 2f 75 6c 3e  >".}.puts {</ul>
0820: 3c 2f 70 3e 0a 0a 3c 70 3e 44 65 74 61 69 6c 73  </p>..<p>Details
0830: 20 6f 6e 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e   on the implemen
0840: 74 61 74 69 6f 6e 20 6f 66 20 65 61 63 68 20 63  tation of each c
0850: 6f 6d 6d 61 6e 64 20 61 72 65 20 70 72 6f 76 69  ommand are provi
0860: 64 65 64 20 69 6e 0a 74 68 65 20 73 65 71 75 65  ded in.the seque
0870: 6c 2e 3c 2f 70 3e 0a 7d 0a 0a 70 72 6f 63 20 53  l.</p>.}..proc S
0880: 79 6e 74 61 78 20 7b 61 72 67 73 7d 20 7b 0a 20  yntax {args} {. 
0890: 20 70 75 74 73 20 7b 3c 74 61 62 6c 65 20 63 65   puts {<table ce
08a0: 6c 6c 70 61 64 64 69 6e 67 3d 22 31 30 22 3e 7d  llpadding="10">}
08b0: 0a 20 20 66 6f 72 65 61 63 68 20 7b 72 75 6c 65  .  foreach {rule
08c0: 20 62 6f 64 79 7d 20 24 61 72 67 73 20 7b 0a 20   body} $args {. 
08d0: 20 20 20 70 75 74 73 20 22 3c 74 72 3e 3c 74 64     puts "<tr><td
08e0: 20 61 6c 69 67 6e 3d 5c 22 72 69 67 68 74 5c 22   align=\"right\"
08f0: 20 76 61 6c 69 67 6e 3d 5c 22 74 6f 70 5c 22 3e   valign=\"top\">
0900: 22 0a 20 20 20 20 70 75 74 73 20 22 3c 69 3e 3c  ".    puts "<i><
0910: 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 66 66  font color=\"#ff
0920: 33 34 33 34 5c 22 3e 24 72 75 6c 65 3c 2f 66 6f  3434\">$rule</fo
0930: 6e 74 3e 3c 2f 69 3e 26 6e 62 73 70 3b 3a 3a 3d  nt></i>&nbsp;::=
0940: 3c 2f 74 64 3e 22 0a 20 20 20 20 72 65 67 73 75  </td>".    regsu
0950: 62 20 2d 61 6c 6c 20 3c 20 24 62 6f 64 79 20 7b  b -all < $body {
0960: 25 4c 54 7d 20 62 6f 64 79 0a 20 20 20 20 72 65  %LT} body.    re
0970: 67 73 75 62 20 2d 61 6c 6c 20 3e 20 24 62 6f 64  gsub -all > $bod
0980: 79 20 7b 25 47 54 7d 20 62 6f 64 79 0a 20 20 20  y {%GT} body.   
0990: 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 25 4c 54   regsub -all %LT
09a0: 20 24 62 6f 64 79 20 7b 3c 2f 66 6f 6e 74 3e 3c   $body {</font><
09b0: 2f 62 3e 3c 69 3e 3c 66 6f 6e 74 20 63 6f 6c 6f  /b><i><font colo
09c0: 72 3d 22 23 66 66 33 34 33 34 22 3e 7d 20 62 6f  r="#ff3434">} bo
09d0: 64 79 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61  dy.    regsub -a
09e0: 6c 6c 20 25 47 54 20 24 62 6f 64 79 20 7b 3c 2f  ll %GT $body {</
09f0: 66 6f 6e 74 3e 3c 2f 69 3e 3c 62 3e 3c 66 6f 6e  font></i><b><fon
0a00: 74 20 63 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30  t color="#2c2cf0
0a10: 22 3e 7d 20 62 6f 64 79 0a 20 20 20 20 72 65 67  ">} body.    reg
0a20: 73 75 62 20 2d 61 6c 6c 20 7b 5b 5d 7c 5b 2a 3f  sub -all {[]|[*?
0a30: 5d 7d 20 24 62 6f 64 79 20 7b 3c 2f 66 6f 6e 74  ]} $body {</font
0a40: 3e 3c 2f 62 3e 26 3c 62 3e 3c 66 6f 6e 74 20 63  ></b>&<b><font c
0a50: 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30 22 3e 7d  olor="#2c2cf0">}
0a60: 20 62 6f 64 79 0a 20 20 20 20 72 65 67 73 75 62   body.    regsub
0a70: 20 2d 61 6c 6c 20 22 5c 6e 22 20 5b 73 74 72 69   -all "\n" [stri
0a80: 6e 67 20 74 72 69 6d 20 24 62 6f 64 79 5d 20 22  ng trim $body] "
0a90: 3c 62 72 3e 5c 6e 22 20 62 6f 64 79 0a 20 20 20  <br>\n" body.   
0aa0: 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 22 5c 6e   regsub -all "\n
0ab0: 20 20 2a 22 20 24 62 6f 64 79 20 22 5c 6e 5c 5c    *" $body "\n\\
0ac0: 26 6e 62 73 70 3b 5c 5c 26 6e 62 73 70 3b 5c 5c  &nbsp;\\&nbsp;\\
0ad0: 26 6e 62 73 70 3b 5c 5c 26 6e 62 73 70 3b 22 20  &nbsp;\\&nbsp;" 
0ae0: 62 6f 64 79 0a 20 20 20 20 72 65 67 73 75 62 20  body.    regsub 
0af0: 2d 61 6c 6c 20 7b 5b 7c 2c 2e 2a 28 29 5d 7d 20  -all {[|,.*()]} 
0b00: 24 62 6f 64 79 20 7b 3c 62 69 67 3e 26 3c 2f 62  $body {<big>&</b
0b10: 69 67 3e 7d 20 62 6f 64 79 0a 20 20 20 20 72 65  ig>} body.    re
0b20: 67 73 75 62 20 2d 61 6c 6c 20 7b 20 3d 20 7d 20  gsub -all { = } 
0b30: 24 62 6f 64 79 20 7b 20 3c 62 69 67 3e 3d 3c 2f  $body { <big>=</
0b40: 62 69 67 3e 20 7d 20 62 6f 64 79 0a 20 20 20 20  big> } body.    
0b50: 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b 53 54 41  regsub -all {STA
0b60: 52 7d 20 24 62 6f 64 79 20 7b 3c 62 69 67 3e 2a  R} $body {<big>*
0b70: 3c 2f 62 69 67 3e 7d 20 62 6f 64 79 0a 20 20 20  </big>} body.   
0b80: 20 23 23 20 54 68 65 73 65 20 6d 65 74 61 63 68   ## These metach
0b90: 61 72 61 63 74 65 72 73 20 6d 75 73 74 20 62 65  aracters must be
0ba0: 20 68 61 6e 64 6c 65 64 20 74 6f 20 75 6e 64 6f   handled to undo
0bb0: 20 62 65 69 6e 67 0a 20 20 20 20 23 23 20 74 72   being.    ## tr
0bc0: 65 61 74 65 64 20 61 73 20 53 51 4c 20 70 75 6e  eated as SQL pun
0bd0: 63 74 75 61 74 69 6f 6e 20 63 68 61 72 61 63 74  ctuation charact
0be0: 65 72 73 20 61 62 6f 76 65 2e 0a 20 20 20 20 72  ers above..    r
0bf0: 65 67 73 75 62 20 2d 61 6c 6c 20 7b 52 50 50 4c  egsub -all {RPPL
0c00: 55 53 7d 20 24 62 6f 64 79 20 7b 3c 2f 66 6f 6e  US} $body {</fon
0c10: 74 3e 3c 2f 62 3e 29 2b 3c 62 3e 3c 66 6f 6e 74  t></b>)+<b><font
0c20: 20 63 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30 22   color="#2c2cf0"
0c30: 3e 7d 20 62 6f 64 79 0a 20 20 20 20 72 65 67 73  >} body.    regs
0c40: 75 62 20 2d 61 6c 6c 20 7b 4c 50 7d 20 24 62 6f  ub -all {LP} $bo
0c50: 64 79 20 7b 3c 2f 66 6f 6e 74 3e 3c 2f 62 3e 28  dy {</font></b>(
0c60: 3c 62 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22  <b><font color="
0c70: 23 32 63 32 63 66 30 22 3e 7d 20 62 6f 64 79 0a  #2c2cf0">} body.
0c80: 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20      regsub -all 
0c90: 7b 52 50 7d 20 24 62 6f 64 79 20 7b 3c 2f 66 6f  {RP} $body {</fo
0ca0: 6e 74 3e 3c 2f 62 3e 29 3c 62 3e 3c 66 6f 6e 74  nt></b>)<b><font
0cb0: 20 63 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30 22   color="#2c2cf0"
0cc0: 3e 7d 20 62 6f 64 79 0a 20 20 20 20 23 23 20 50  >} body.    ## P
0cd0: 6c 61 63 65 20 74 68 65 20 6c 65 66 74 2d 68 61  lace the left-ha
0ce0: 6e 64 20 73 69 64 65 20 6f 66 20 74 68 65 20 72  nd side of the r
0cf0: 75 6c 65 20 69 6e 20 74 68 65 20 32 6e 64 20 74  ule in the 2nd t
0d00: 61 62 6c 65 20 63 6f 6c 75 6d 6e 2e 0a 20 20 20  able column..   
0d10: 20 70 75 74 73 20 22 3c 74 64 3e 3c 62 3e 3c 66   puts "<td><b><f
0d20: 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 32 63 32  ont color=\"#2c2
0d30: 63 66 30 5c 22 3e 24 62 6f 64 79 3c 2f 66 6f 6e  cf0\">$body</fon
0d40: 74 3e 3c 2f 62 3e 3c 2f 74 64 3e 3c 2f 74 72 3e  t></b></td></tr>
0d50: 22 0a 20 20 7d 0a 20 20 70 75 74 73 20 7b 3c 2f  ".  }.  puts {</
0d60: 74 61 62 6c 65 3e 7d 0a 7d 0a 70 72 6f 63 20 4f  table>}.}.proc O
0d70: 70 65 72 61 74 6f 72 20 7b 6e 61 6d 65 7d 20 7b  perator {name} {
0d80: 0a 20 20 72 65 74 75 72 6e 20 22 3c 66 6f 6e 74  .  return "<font
0d90: 20 63 6f 6c 6f 72 3d 5c 22 23 32 63 32 63 66 30   color=\"#2c2cf0
0da0: 5c 22 3e 3c 62 69 67 3e 24 6e 61 6d 65 3c 2f 62  \"><big>$name</b
0db0: 69 67 3e 3c 2f 66 6f 6e 74 3e 22 0a 7d 0a 70 72  ig></font>".}.pr
0dc0: 6f 63 20 4e 6f 6e 74 65 72 6d 69 6e 61 6c 20 7b  oc Nonterminal {
0dd0: 6e 61 6d 65 7d 20 7b 0a 20 20 72 65 74 75 72 6e  name} {.  return
0de0: 20 22 3c 69 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72   "<i><font color
0df0: 3d 5c 22 23 66 66 33 34 33 34 5c 22 3e 24 6e 61  =\"#ff3434\">$na
0e00: 6d 65 3c 2f 66 6f 6e 74 3e 3c 2f 69 3e 22 0a 7d  me</font></i>".}
0e10: 0a 70 72 6f 63 20 4b 65 79 77 6f 72 64 20 7b 6e  .proc Keyword {n
0e20: 61 6d 65 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20  ame} {.  return 
0e30: 22 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23  "<font color=\"#
0e40: 32 63 32 63 66 30 5c 22 3e 24 6e 61 6d 65 3c 2f  2c2cf0\">$name</
0e50: 66 6f 6e 74 3e 22 0a 7d 0a 20 0a 0a 70 72 6f 63  font>".}. ..proc
0e60: 20 53 65 63 74 69 6f 6e 20 7b 6e 61 6d 65 20 7b   Section {name {
0e70: 6c 61 62 65 6c 20 7b 7d 7d 7d 20 7b 0a 20 20 70  label {}}} {.  p
0e80: 75 74 73 20 22 5c 6e 3c 68 72 20 2f 3e 22 0a 20  uts "\n<hr />". 
0e90: 20 69 66 20 7b 24 6c 61 62 65 6c 21 3d 22 22 7d   if {$label!=""}
0ea0: 20 7b 0a 20 20 20 20 70 75 74 73 20 22 3c 61 20   {.    puts "<a 
0eb0: 6e 61 6d 65 3d 5c 22 24 6c 61 62 65 6c 5c 22 3e  name=\"$label\">
0ec0: 22 0a 20 20 7d 0a 20 20 70 75 74 73 20 22 3c 68  ".  }.  puts "<h
0ed0: 31 3e 24 6e 61 6d 65 3c 2f 68 31 3e 5c 6e 22 0a  1>$name</h1>\n".
0ee0: 7d 0a 0a 70 72 6f 63 20 45 78 61 6d 70 6c 65 20  }..proc Example 
0ef0: 7b 74 65 78 74 7d 20 7b 0a 20 20 70 75 74 73 20  {text} {.  puts 
0f00: 22 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72  "<blockquote><pr
0f10: 65 3e 24 74 65 78 74 3c 2f 70 72 65 3e 3c 2f 62  e>$text</pre></b
0f20: 6c 6f 63 6b 71 75 6f 74 65 3e 22 0a 7d 0a 0a 0a  lockquote>".}...
0f30: 53 65 63 74 69 6f 6e 20 7b 41 54 54 41 43 48 20  Section {ATTACH 
0f40: 44 41 54 41 42 41 53 45 7d 20 61 74 74 61 63 68  DATABASE} attach
0f50: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74  ..Syntax {sql-st
0f60: 61 74 65 6d 65 6e 74 7d 20 7b 0a 41 54 54 41 43  atement} {.ATTAC
0f70: 48 20 5b 44 41 54 41 42 41 53 45 5d 20 3c 64 61  H [DATABASE] <da
0f80: 74 61 62 61 73 65 2d 66 69 6c 65 6e 61 6d 65 3e  tabase-filename>
0f90: 20 41 53 20 3c 64 61 74 61 62 61 73 65 2d 6e 61   AS <database-na
0fa0: 6d 65 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70  me>.}..puts {.<p
0fb0: 3e 54 68 65 20 41 54 54 41 43 48 20 44 41 54 41  >The ATTACH DATA
0fc0: 42 41 53 45 20 73 74 61 74 65 6d 65 6e 74 20 61  BASE statement a
0fd0: 64 64 73 20 61 20 70 72 65 65 78 69 73 74 69 6e  dds a preexistin
0fe0: 67 20 64 61 74 61 62 61 73 65 20 0a 66 69 6c 65  g database .file
0ff0: 20 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20   to the current 
1000: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
1010: 69 6f 6e 2e 20 20 49 66 20 74 68 65 20 66 69 6c  ion.  If the fil
1020: 65 6e 61 6d 65 20 63 6f 6e 74 61 69 6e 73 20 0a  ename contains .
1030: 70 75 6e 63 74 75 61 74 69 6f 6e 20 63 68 61 72  punctuation char
1040: 61 63 74 65 72 73 20 69 74 20 6d 75 73 74 20 62  acters it must b
1050: 65 20 71 75 6f 74 65 64 2e 20 20 54 68 65 20 6e  e quoted.  The n
1060: 61 6d 65 73 20 27 6d 61 69 6e 27 20 61 6e 64 20  ames 'main' and 
1070: 0a 27 74 65 6d 70 27 20 72 65 66 65 72 20 74 6f  .'temp' refer to
1080: 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61   the main databa
1090: 73 65 20 61 6e 64 20 74 68 65 20 64 61 74 61 62  se and the datab
10a0: 61 73 65 20 75 73 65 64 20 66 6f 72 20 0a 74 65  ase used for .te
10b0: 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 73 2e 20  mporary tables. 
10c0: 20 54 68 65 73 65 20 63 61 6e 6e 6f 74 20 62 65   These cannot be
10d0: 20 64 65 74 61 63 68 65 64 2e 20 20 41 74 74 61   detached.  Atta
10e0: 63 68 65 64 20 64 61 74 61 62 61 73 65 73 20 0a  ched databases .
10f0: 61 72 65 20 72 65 6d 6f 76 65 64 20 75 73 69 6e  are removed usin
1100: 67 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23  g the <a href="#
1110: 64 65 74 61 63 68 22 3e 44 45 54 41 43 48 20 44  detach">DETACH D
1120: 41 54 41 42 41 53 45 3c 2f 61 3e 20 0a 73 74 61  ATABASE</a> .sta
1130: 74 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e  tement.</p>..<p>
1140: 59 6f 75 20 63 61 6e 20 72 65 61 64 20 66 72 6f  You can read fro
1150: 6d 20 61 6e 64 20 77 72 69 74 65 20 74 6f 20 61  m and write to a
1160: 6e 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62  n attached datab
1170: 61 73 65 2c 20 62 75 74 20 79 6f 75 20 63 61 6e  ase, but you can
1180: 6e 6f 74 20 0a 61 6c 74 65 72 20 74 68 65 20 73  not .alter the s
1190: 63 68 65 6d 61 20 6f 66 20 61 6e 20 61 74 74 61  chema of an atta
11a0: 63 68 65 64 20 64 61 74 61 62 61 73 65 2e 20 20  ched database.  
11b0: 59 6f 75 20 63 61 6e 20 6f 6e 6c 79 20 43 52 45  You can only CRE
11c0: 41 54 45 20 61 6e 64 20 0a 44 52 4f 50 20 69 6e  ATE and .DROP in
11d0: 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 64 61   the original da
11e0: 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e  tabase.</p>..<p>
11f0: 59 6f 75 20 63 61 6e 6e 6f 74 20 63 72 65 61 74  You cannot creat
1200: 65 20 61 20 6e 65 77 20 74 61 62 6c 65 20 77 69  e a new table wi
1210: 74 68 20 74 68 65 20 73 61 6d 65 20 6e 61 6d 65  th the same name
1220: 20 61 73 20 61 20 74 61 62 6c 65 20 69 6e 20 0a   as a table in .
1230: 61 6e 20 61 74 74 61 63 68 65 64 20 64 61 74 61  an attached data
1240: 62 61 73 65 2c 20 62 75 74 20 79 6f 75 20 63 61  base, but you ca
1250: 6e 20 61 74 74 61 63 68 20 61 20 64 61 74 61 62  n attach a datab
1260: 61 73 65 20 77 68 69 63 68 20 63 6f 6e 74 61 69  ase which contai
1270: 6e 73 0a 74 61 62 6c 65 73 20 77 68 6f 73 65 20  ns.tables whose 
1280: 6e 61 6d 65 73 20 61 72 65 20 64 75 70 6c 69 63  names are duplic
1290: 61 74 65 73 20 6f 66 20 74 61 62 6c 65 73 20 69  ates of tables i
12a0: 6e 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62  n the main datab
12b0: 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 61 62  ase.</p>..<p>Tab
12c0: 6c 65 73 20 69 6e 20 61 6e 20 61 74 74 61 63 68  les in an attach
12d0: 65 64 20 64 61 74 61 62 61 73 65 20 63 61 6e 20  ed database can 
12e0: 62 65 20 72 65 66 65 72 72 65 64 20 74 6f 20 75  be referred to u
12f0: 73 69 6e 67 20 74 68 65 20 73 79 6e 74 61 78 20  sing the syntax 
1300: 0a 3c 69 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d  .<i>database-nam
1310: 65 2e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e  e.table-name</i>
1320: 2e 20 20 49 66 20 61 6e 20 61 74 74 61 63 68 65  .  If an attache
1330: 64 20 74 61 62 6c 65 20 64 6f 65 73 6e 27 74 20  d table doesn't 
1340: 68 61 76 65 20 0a 61 20 64 75 70 6c 69 63 61 74  have .a duplicat
1350: 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 69 6e 20  e table name in 
1360: 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73  the main databas
1370: 65 2c 20 69 74 20 64 6f 65 73 6e 27 74 20 72 65  e, it doesn't re
1380: 71 75 69 72 65 20 61 20 0a 64 61 74 61 62 61 73  quire a .databas
1390: 65 20 6e 61 6d 65 20 70 72 65 66 69 78 2e 20 20  e name prefix.  
13a0: 57 68 65 6e 20 61 20 64 61 74 61 62 61 73 65 20  When a database 
13b0: 69 73 20 61 74 74 61 63 68 65 64 2c 20 61 6c 6c  is attached, all
13c0: 20 6f 66 20 69 74 73 20 0a 74 61 62 6c 65 73 20   of its .tables 
13d0: 77 68 69 63 68 20 64 6f 6e 27 74 20 68 61 76 65  which don't have
13e0: 20 64 75 70 6c 69 63 61 74 65 20 6e 61 6d 65 73   duplicate names
13f0: 20 62 65 63 6f 6d 65 20 74 68 65 20 27 64 65 66   become the 'def
1400: 61 75 6c 74 27 20 74 61 62 6c 65 0a 6f 66 20 74  ault' table.of t
1410: 68 61 74 20 6e 61 6d 65 2e 20 20 41 6e 79 20 74  hat name.  Any t
1420: 61 62 6c 65 73 20 6f 66 20 74 68 61 74 20 6e 61  ables of that na
1430: 6d 65 20 61 74 74 61 63 68 65 64 20 61 66 74 65  me attached afte
1440: 72 77 61 72 64 73 20 72 65 71 75 69 72 65 20 74  rwards require t
1450: 68 65 20 74 61 62 6c 65 20 0a 70 72 65 66 69 78  he table .prefix
1460: 2e 20 49 66 20 74 68 65 20 27 64 65 66 61 75 6c  . If the 'defaul
1470: 74 27 20 74 61 62 6c 65 20 6f 66 20 61 20 67 69  t' table of a gi
1480: 76 65 6e 20 6e 61 6d 65 20 69 73 20 64 65 74 61  ven name is deta
1490: 63 68 65 64 2c 20 74 68 65 6e 20 0a 74 68 65 20  ched, then .the 
14a0: 6c 61 73 74 20 74 61 62 6c 65 20 6f 66 20 74 68  last table of th
14b0: 61 74 20 6e 61 6d 65 20 61 74 74 61 63 68 65 64  at name attached
14c0: 20 62 65 63 6f 6d 65 73 20 74 68 65 20 6e 65 77   becomes the new
14d0: 20 64 65 66 61 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c   default.</p>..<
14e0: 70 3e 57 68 65 6e 20 74 68 65 72 65 20 61 72 65  p>When there are
14f0: 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61   attached databa
1500: 73 65 73 2c 20 74 72 61 6e 73 61 63 74 69 6f 6e  ses, transaction
1510: 73 20 61 72 65 20 6e 6f 74 20 61 74 6f 6d 69 63  s are not atomic
1520: 2e 20 0a 54 72 61 6e 73 61 63 74 69 6f 6e 73 20  . .Transactions 
1530: 63 6f 6e 74 69 6e 75 65 20 74 6f 20 62 65 20 61  continue to be a
1540: 74 6f 6d 69 63 20 77 69 74 68 69 6e 20 65 61 63  tomic within eac
1550: 68 20 69 6e 64 69 76 69 64 75 61 6c 0a 64 61 74  h individual.dat
1560: 61 62 61 73 65 20 66 69 6c 65 2e 20 42 75 74 20  abase file. But 
1570: 69 66 20 79 6f 75 72 20 6d 61 63 68 69 6e 65 20  if your machine 
1580: 63 72 61 73 68 65 73 20 69 6e 20 74 68 65 20 6d  crashes in the m
1590: 69 64 64 6c 65 0a 6f 66 20 61 20 43 4f 4d 4d 49  iddle.of a COMMI
15a0: 54 20 77 68 65 72 65 20 79 6f 75 20 68 61 76 65  T where you have
15b0: 20 75 70 64 61 74 65 64 20 74 77 6f 20 6f 72 20   updated two or 
15c0: 6d 6f 72 65 20 64 61 74 61 62 61 73 65 0a 66 69  more database.fi
15d0: 6c 65 73 2c 20 73 6f 6d 65 20 6f 66 20 74 68 6f  les, some of tho
15e0: 73 65 20 66 69 6c 65 73 20 6d 69 67 68 74 20 67  se files might g
15f0: 65 74 20 74 68 65 20 63 68 61 6e 67 65 73 20 77  et the changes w
1600: 68 65 72 65 20 6f 74 68 65 72 73 0a 6d 69 67 68  here others.migh
1610: 74 20 6e 6f 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  t not.</p>..<p>T
1620: 68 65 72 65 20 69 73 20 61 20 63 6f 6d 70 69 6c  here is a compil
1630: 65 2d 74 69 6d 65 20 6c 69 6d 69 74 20 6f 66 20  e-time limit of 
1640: 31 30 20 61 74 74 61 63 68 65 64 20 64 61 74 61  10 attached data
1650: 62 61 73 65 20 66 69 6c 65 73 2e 3c 2f 70 3e 0a  base files.</p>.
1660: 0a 3c 70 3e 45 78 65 63 75 74 69 6e 67 20 61 20  .<p>Executing a 
1670: 42 45 47 49 4e 20 54 52 41 4e 53 41 43 54 49 4f  BEGIN TRANSACTIO
1680: 4e 20 73 74 61 74 65 6d 65 6e 74 20 6c 6f 63 6b  N statement lock
1690: 73 20 61 6c 6c 20 64 61 74 61 62 61 73 65 0a 66  s all database.f
16a0: 69 6c 65 73 2c 20 73 6f 20 74 68 69 73 20 66 65  iles, so this fe
16b0: 61 74 75 72 65 20 63 61 6e 6e 6f 74 20 28 63 75  ature cannot (cu
16c0: 72 72 65 6e 74 6c 79 29 20 62 65 20 75 73 65 64  rrently) be used
16d0: 20 74 6f 20 69 6e 63 72 65 61 73 65 20 0a 63 6f   to increase .co
16e0: 6e 63 75 72 72 61 6e 63 79 2e 3c 2f 70 3e 0a 7d  ncurrancy.</p>.}
16f0: 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 42 45 47 49  ...Section {BEGI
1700: 4e 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74  N TRANSACTION} t
1710: 72 61 6e 73 61 63 74 69 6f 6e 0a 0a 53 79 6e 74  ransaction..Synt
1720: 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e  ax {sql-statemen
1730: 74 7d 20 7b 0a 42 45 47 49 4e 20 5b 54 52 41 4e  t} {.BEGIN [TRAN
1740: 53 41 43 54 49 4f 4e 20 5b 3c 6e 61 6d 65 3e 5d  SACTION [<name>]
1750: 5d 20 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 3c  ] [ON CONFLICT <
1760: 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74  conflict-algorit
1770: 68 6d 3e 5d 0a 7d 0a 53 79 6e 74 61 78 20 7b 73  hm>].}.Syntax {s
1780: 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a  ql-statement} {.
1790: 45 4e 44 20 5b 54 52 41 4e 53 41 43 54 49 4f 4e  END [TRANSACTION
17a0: 20 5b 3c 6e 61 6d 65 3e 5d 5d 0a 7d 0a 53 79 6e   [<name>]].}.Syn
17b0: 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65  tax {sql-stateme
17c0: 6e 74 7d 20 7b 0a 43 4f 4d 4d 49 54 20 5b 54 52  nt} {.COMMIT [TR
17d0: 41 4e 53 41 43 54 49 4f 4e 20 5b 3c 6e 61 6d 65  ANSACTION [<name
17e0: 3e 5d 5d 0a 7d 0a 53 79 6e 74 61 78 20 7b 73 71  >]].}.Syntax {sq
17f0: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 52  l-statement} {.R
1800: 4f 4c 4c 42 41 43 4b 20 5b 54 52 41 4e 53 41 43  OLLBACK [TRANSAC
1810: 54 49 4f 4e 20 5b 3c 6e 61 6d 65 3e 5d 5d 0a 7d  TION [<name>]].}
1820: 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 42 65 67 69  ..puts {.<p>Begi
1830: 6e 6e 69 6e 67 20 69 6e 20 76 65 72 73 69 6f 6e  nning in version
1840: 20 32 2e 30 2c 20 53 51 4c 69 74 65 20 73 75 70   2.0, SQLite sup
1850: 70 6f 72 74 73 20 74 72 61 6e 73 61 63 74 69 6f  ports transactio
1860: 6e 73 20 77 69 74 68 0a 72 6f 6c 6c 62 61 63 6b  ns with.rollback
1870: 20 61 6e 64 20 61 74 6f 6d 69 63 20 63 6f 6d 6d   and atomic comm
1880: 69 74 2e 20 20 53 65 65 20 3c 61 20 68 72 65 66  it.  See <a href
1890: 3d 22 23 61 74 74 61 63 68 22 3e 41 54 54 41 43  ="#attach">ATTAC
18a0: 48 3c 2f 61 3e 20 66 6f 72 0a 61 6e 20 65 78 63  H</a> for.an exc
18b0: 65 70 74 69 6f 6e 20 77 68 65 6e 20 74 68 65 72  eption when ther
18c0: 65 20 61 72 65 20 61 74 74 61 63 68 65 64 20 64  e are attached d
18d0: 61 74 61 62 61 73 65 73 2e 3c 2f 70 3e 0a 0a 3c  atabases.</p>..<
18e0: 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 74  p>The optional t
18f0: 72 61 6e 73 61 63 74 69 6f 6e 20 6e 61 6d 65 20  ransaction name 
1900: 69 73 20 69 67 6e 6f 72 65 64 2e 20 53 51 4c 69  is ignored. SQLi
1910: 74 65 20 63 75 72 72 65 6e 74 6c 79 20 0a 64 6f  te currently .do
1920: 65 73 6e 27 74 20 61 6c 6c 6f 77 20 6e 65 73 74  esn't allow nest
1930: 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 2e  ed transactions.
1940: 20 20 41 74 74 65 6d 70 74 69 6e 67 20 74 6f 20    Attempting to 
1950: 73 74 61 72 74 20 61 20 6e 65 77 20 0a 74 72 61  start a new .tra
1960: 6e 73 61 63 74 69 6f 6e 20 69 6e 73 69 64 65 20  nsaction inside 
1970: 61 6e 6f 74 68 65 72 20 69 73 20 61 6e 20 65 72  another is an er
1980: 72 6f 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 4e 6f  ror.</p>..<p>.No
1990: 20 63 68 61 6e 67 65 73 20 63 61 6e 20 62 65 20   changes can be 
19a0: 6d 61 64 65 20 74 6f 20 74 68 65 20 64 61 74 61  made to the data
19b0: 62 61 73 65 20 65 78 63 65 70 74 20 77 69 74 68  base except with
19c0: 69 6e 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  in a transaction
19d0: 2e 0a 41 6e 79 20 63 6f 6d 6d 61 6e 64 20 74 68  ..Any command th
19e0: 61 74 20 63 68 61 6e 67 65 73 20 74 68 65 20 64  at changes the d
19f0: 61 74 61 62 61 73 65 20 28 62 61 73 69 63 61 6c  atabase (basical
1a00: 6c 79 2c 20 61 6e 79 20 53 51 4c 20 63 6f 6d 6d  ly, any SQL comm
1a10: 61 6e 64 0a 6f 74 68 65 72 20 74 68 61 6e 20 53  and.other than S
1a20: 45 4c 45 43 54 29 20 77 69 6c 6c 20 61 75 74 6f  ELECT) will auto
1a30: 6d 61 74 69 63 61 6c 6c 79 20 73 74 61 72 74 20  matically start 
1a40: 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 66  a transaction if
1a50: 0a 6f 6e 65 20 69 73 20 6e 6f 74 20 61 6c 72 65  .one is not alre
1a60: 61 64 79 20 69 6e 20 65 66 66 65 63 74 2e 20 20  ady in effect.  
1a70: 41 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 73 74  Automatically st
1a80: 61 72 74 65 64 20 74 72 61 6e 73 61 63 74 69 6f  arted transactio
1a90: 6e 73 0a 61 72 65 20 63 6f 6d 6d 69 74 74 65 64  ns.are committed
1aa0: 20 61 74 20 74 68 65 20 63 6f 6e 63 6c 75 73 69   at the conclusi
1ab0: 6f 6e 20 6f 66 20 74 68 65 20 63 6f 6d 6d 61 6e  on of the comman
1ac0: 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 72 61  d..</p>..<p>.Tra
1ad0: 6e 73 61 63 74 69 6f 6e 73 20 63 61 6e 20 62 65  nsactions can be
1ae0: 20 73 74 61 72 74 65 64 20 6d 61 6e 75 61 6c 6c   started manuall
1af0: 79 20 75 73 69 6e 67 20 74 68 65 20 42 45 47 49  y using the BEGI
1b00: 4e 0a 63 6f 6d 6d 61 6e 64 2e 20 53 75 63 68 20  N.command. Such 
1b10: 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 75 73 75  transactions usu
1b20: 61 6c 6c 79 20 70 65 72 73 69 73 74 20 75 6e 74  ally persist unt
1b30: 69 6c 20 74 68 65 20 6e 65 78 74 0a 43 4f 4d 4d  il the next.COMM
1b40: 49 54 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 20 63  IT or ROLLBACK c
1b50: 6f 6d 6d 61 6e 64 2e 20 42 75 74 20 61 20 74 72  ommand. But a tr
1b60: 61 6e 73 61 63 74 69 6f 6e 20 77 69 6c 6c 20 61  ansaction will a
1b70: 6c 73 6f 20 0a 52 4f 4c 4c 42 41 43 4b 20 69 66  lso .ROLLBACK if
1b80: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73   the database is
1b90: 20 63 6c 6f 73 65 64 20 6f 72 20 69 66 20 61 6e   closed or if an
1ba0: 20 65 72 72 6f 72 20 6f 63 63 75 72 73 0a 61 6e   error occurs.an
1bb0: 64 20 74 68 65 20 52 4f 4c 4c 42 41 43 4b 20 63  d the ROLLBACK c
1bc0: 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69  onflict resoluti
1bd0: 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20  on algorithm is 
1be0: 73 70 65 63 69 66 69 65 64 2e 0a 53 65 65 20 74  specified..See t
1bf0: 68 65 20 64 6f 63 75 6d 65 6e 74 69 6f 6e 20 6f  he documention o
1c00: 6e 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23  n the <a href="#
1c10: 63 6f 6e 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e  conflict">ON CON
1c20: 46 4c 49 43 54 3c 2f 61 3e 0a 63 6c 61 75 73 65  FLICT</a>.clause
1c30: 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20   for additional 
1c40: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75  information abou
1c50: 74 20 74 68 65 20 52 4f 4c 4c 42 41 43 4b 0a 63  t the ROLLBACK.c
1c60: 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69  onflict resoluti
1c70: 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 2e 0a 3c 2f  on algorithm..</
1c80: 70 3e 0a 0a 3c 70 3e 0a 54 68 65 20 6f 70 74 69  p>..<p>.The opti
1c90: 6f 6e 61 6c 20 4f 4e 20 43 4f 4e 46 4c 49 43 54  onal ON CONFLICT
1ca0: 20 63 6c 61 75 73 65 20 61 74 20 74 68 65 20 65   clause at the e
1cb0: 6e 64 20 6f 66 20 61 20 42 45 47 49 4e 20 73 74  nd of a BEGIN st
1cc0: 61 74 65 6d 65 6e 74 0a 63 61 6e 20 62 65 20 75  atement.can be u
1cd0: 73 65 64 20 74 6f 20 63 68 61 6e 67 65 64 20 74  sed to changed t
1ce0: 68 65 20 64 65 66 61 75 6c 74 20 63 6f 6e 66 6c  he default confl
1cf0: 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61  ict resolution a
1d00: 6c 67 6f 72 69 74 68 6d 2e 0a 54 68 65 20 6e 6f  lgorithm..The no
1d10: 72 6d 61 6c 20 64 65 66 61 75 6c 74 20 69 73 20  rmal default is 
1d20: 41 42 4f 52 54 2e 20 20 49 66 20 61 6e 20 61 6c  ABORT.  If an al
1d30: 74 65 72 6e 61 74 69 76 65 20 69 73 20 73 70 65  ternative is spe
1d40: 63 69 66 69 65 64 20 62 79 0a 74 68 65 20 4f 4e  cified by.the ON
1d50: 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65   CONFLICT clause
1d60: 20 6f 66 20 61 20 42 45 47 49 4e 2c 20 74 68 65   of a BEGIN, the
1d70: 6e 20 74 68 61 74 20 61 6c 74 65 72 6e 61 74 69  n that alternati
1d80: 76 65 20 69 73 20 75 73 65 64 0a 61 73 20 74 68  ve is used.as th
1d90: 65 20 64 65 66 61 75 6c 74 20 66 6f 72 20 61 6c  e default for al
1da0: 6c 20 63 6f 6d 6d 61 6e 64 73 20 77 69 74 68 69  l commands withi
1db0: 6e 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f  n the transactio
1dc0: 6e 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74 0a  n.  The default.
1dd0: 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 6f 76 65  algorithm is ove
1de0: 72 72 69 64 64 65 6e 20 62 79 20 4f 4e 20 43 4f  rridden by ON CO
1df0: 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 73 20 6f  NFLICT clauses o
1e00: 6e 20 69 6e 64 69 76 69 64 75 61 6c 0a 63 6f 6e  n individual.con
1e10: 73 74 72 61 69 6e 74 73 20 77 69 74 68 69 6e 20  straints within 
1e20: 74 68 65 20 43 52 45 41 54 45 20 54 41 42 4c 45  the CREATE TABLE
1e30: 20 6f 72 20 43 52 45 41 54 45 20 49 4e 44 45 58   or CREATE INDEX
1e40: 20 73 74 61 74 65 6d 65 6e 74 73 0a 61 6e 64 20   statements.and 
1e50: 62 79 20 74 68 65 20 4f 52 20 63 6c 61 75 73 65  by the OR clause
1e60: 73 20 6f 6e 20 43 4f 50 59 2c 20 49 4e 53 45 52  s on COPY, INSER
1e70: 54 2c 20 61 6e 64 20 55 50 44 41 54 45 20 63 6f  T, and UPDATE co
1e80: 6d 6d 61 6e 64 73 2e 0a 3c 2f 70 3e 0a 7d 0a 0a  mmands..</p>.}..
1e90: 0a 53 65 63 74 69 6f 6e 20 63 6f 6d 6d 65 6e 74  .Section comment
1ea0: 20 63 6f 6d 6d 65 6e 74 0a 0a 53 79 6e 74 61 78   comment..Syntax
1eb0: 20 7b 63 6f 6d 6d 65 6e 74 7d 20 7b 3c 53 51 4c   {comment} {<SQL
1ec0: 2d 63 6f 6d 6d 65 6e 74 3e 20 7c 20 3c 43 2d 63  -comment> | <C-c
1ed0: 6f 6d 6d 65 6e 74 3e 0a 7d 20 7b 53 51 4c 2d 63  omment>.} {SQL-c
1ee0: 6f 6d 6d 65 6e 74 7d 20 7b 2d 2d 20 3c 73 69 6e  omment} {-- <sin
1ef0: 67 6c 65 2d 6c 69 6e 65 3e 0a 7d 20 7b 43 2d 63  gle-line>.} {C-c
1f00: 6f 6d 6d 65 6e 74 7d 20 7b 2f 53 54 41 52 20 3c  omment} {/STAR <
1f10: 6d 75 6c 74 69 70 6c 65 2d 6c 69 6e 65 73 3e 20  multiple-lines> 
1f20: 5b 53 54 41 52 2f 5d 0a 7d 0a 0a 70 75 74 73 20  [STAR/].}..puts 
1f30: 7b 0a 3c 70 3e 20 43 6f 6d 6d 65 6e 74 73 20 61  {.<p> Comments a
1f40: 72 65 6e 27 74 20 53 51 4c 20 63 6f 6d 6d 61 6e  ren't SQL comman
1f50: 64 73 2c 20 62 75 74 20 63 61 6e 20 6f 63 63 75  ds, but can occu
1f60: 72 20 69 6e 20 53 51 4c 20 71 75 65 72 69 65 73  r in SQL queries
1f70: 2e 20 54 68 65 79 20 61 72 65 20 0a 74 72 65 61  . They are .trea
1f80: 74 65 64 20 61 73 20 77 68 69 74 65 73 70 61 63  ted as whitespac
1f90: 65 20 62 79 20 74 68 65 20 70 61 72 73 65 72 2e  e by the parser.
1fa0: 20 54 68 65 79 20 63 61 6e 20 62 65 67 69 6e 20   They can begin 
1fb0: 61 6e 79 77 68 65 72 65 20 77 68 69 74 65 73 70  anywhere whitesp
1fc0: 61 63 65 20 0a 63 61 6e 20 62 65 20 66 6f 75 6e  ace .can be foun
1fd0: 64 2c 20 69 6e 63 6c 75 64 69 6e 67 20 69 6e 73  d, including ins
1fe0: 69 64 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20  ide expressions 
1ff0: 74 68 61 74 20 73 70 61 6e 20 6d 75 6c 74 69 70  that span multip
2000: 6c 65 20 6c 69 6e 65 73 2e 0a 3c 2f 70 3e 0a 0a  le lines..</p>..
2010: 3c 70 3e 20 53 51 4c 20 63 6f 6d 6d 65 6e 74 73  <p> SQL comments
2020: 20 6f 6e 6c 79 20 65 78 74 65 6e 64 20 74 6f 20   only extend to 
2030: 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 63  the end of the c
2040: 75 72 72 65 6e 74 20 6c 69 6e 65 2e 3c 2f 70 3e  urrent line.</p>
2050: 0a 0a 3c 70 3e 20 43 20 63 6f 6d 6d 65 6e 74 73  ..<p> C comments
2060: 20 63 61 6e 20 73 70 61 6e 20 61 6e 79 20 6e 75   can span any nu
2070: 6d 62 65 72 20 6f 66 20 6c 69 6e 65 73 2e 20 49  mber of lines. I
2080: 66 20 74 68 65 72 65 20 69 73 20 6e 6f 20 74 65  f there is no te
2090: 72 6d 69 6e 61 74 69 6e 67 0a 64 65 6c 69 6d 69  rminating.delimi
20a0: 74 65 72 2c 20 74 68 65 79 20 65 78 74 65 6e 64  ter, they extend
20b0: 20 74 6f 20 74 68 65 20 65 6e 64 20 6f 66 20 74   to the end of t
20c0: 68 65 20 69 6e 70 75 74 2e 20 54 68 69 73 20 69  he input. This i
20d0: 73 20 6e 6f 74 20 74 72 65 61 74 65 64 20 61 73  s not treated as
20e0: 20 0a 61 6e 20 65 72 72 6f 72 2e 20 41 20 6e 65   .an error. A ne
20f0: 77 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  w SQL statement 
2100: 63 61 6e 20 62 65 67 69 6e 20 6f 6e 20 61 20 6c  can begin on a l
2110: 69 6e 65 20 61 66 74 65 72 20 61 20 6d 75 6c 74  ine after a mult
2120: 69 6c 69 6e 65 20 0a 63 6f 6d 6d 65 6e 74 20 65  iline .comment e
2130: 6e 64 73 2e 20 43 20 63 6f 6d 6d 65 6e 74 73 20  nds. C comments 
2140: 63 61 6e 20 62 65 20 65 6d 62 65 64 64 65 64 20  can be embedded 
2150: 61 6e 79 77 68 65 72 65 20 77 68 69 74 65 73 70  anywhere whitesp
2160: 61 63 65 20 63 61 6e 20 6f 63 63 75 72 2c 20 0a  ace can occur, .
2170: 69 6e 63 6c 75 64 69 6e 67 20 69 6e 73 69 64 65  including inside
2180: 20 65 78 70 72 65 73 73 69 6f 6e 73 2c 20 61 6e   expressions, an
2190: 64 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20  d in the middle 
21a0: 6f 66 20 6f 74 68 65 72 20 53 51 4c 20 73 74 61  of other SQL sta
21b0: 74 65 6d 65 6e 74 73 2e 0a 43 20 63 6f 6d 6d 65  tements..C comme
21c0: 6e 74 73 20 64 6f 20 6e 6f 74 20 6e 65 73 74 2e  nts do not nest.
21d0: 20 53 51 4c 20 63 6f 6d 6d 65 6e 74 73 20 69 6e   SQL comments in
21e0: 73 69 64 65 20 61 20 43 20 63 6f 6d 6d 65 6e 74  side a C comment
21f0: 20 77 69 6c 6c 20 62 65 20 69 67 6e 6f 72 65 64   will be ignored
2200: 2e 0a 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69  ..</p>.}...Secti
2210: 6f 6e 20 43 4f 50 59 20 63 6f 70 79 0a 0a 53 79  on COPY copy..Sy
2220: 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d  ntax {sql-statem
2230: 65 6e 74 7d 20 7b 0a 43 4f 50 59 20 5b 20 4f 52  ent} {.COPY [ OR
2240: 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72   <conflict-algor
2250: 69 74 68 6d 3e 20 5d 20 5b 3c 64 61 74 61 62 61  ithm> ] [<databa
2260: 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62  se-name> .] <tab
2270: 6c 65 2d 6e 61 6d 65 3e 20 46 52 4f 4d 20 3c 66  le-name> FROM <f
2280: 69 6c 65 6e 61 6d 65 3e 0a 5b 20 55 53 49 4e 47  ilename>.[ USING
2290: 20 44 45 4c 49 4d 49 54 45 52 53 20 3c 64 65 6c   DELIMITERS <del
22a0: 69 6d 3e 20 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a  im> ].}..puts {.
22b0: 3c 70 3e 54 68 65 20 43 4f 50 59 20 63 6f 6d 6d  <p>The COPY comm
22c0: 61 6e 64 20 69 73 20 61 6e 20 65 78 74 65 6e 73  and is an extens
22d0: 69 6f 6e 20 75 73 65 64 20 74 6f 20 6c 6f 61 64  ion used to load
22e0: 20 6c 61 72 67 65 20 61 6d 6f 75 6e 74 73 20 6f   large amounts o
22f0: 66 0a 64 61 74 61 20 69 6e 74 6f 20 61 20 74 61  f.data into a ta
2300: 62 6c 65 2e 20 20 49 74 20 69 73 20 6d 6f 64 65  ble.  It is mode
2310: 6c 65 64 20 61 66 74 65 72 20 61 20 73 69 6d 69  led after a simi
2320: 6c 61 72 20 63 6f 6d 6d 61 6e 64 20 66 6f 75 6e  lar command foun
2330: 64 0a 69 6e 20 50 6f 73 74 67 72 65 53 51 4c 2e  d.in PostgreSQL.
2340: 20 20 49 6e 20 66 61 63 74 2c 20 74 68 65 20 53    In fact, the S
2350: 51 4c 69 74 65 20 43 4f 50 59 20 63 6f 6d 6d 61  QLite COPY comma
2360: 6e 64 20 69 73 20 73 70 65 63 69 66 69 63 61 6c  nd is specifical
2370: 6c 79 0a 64 65 73 69 67 6e 65 64 20 74 6f 20 62  ly.designed to b
2380: 65 20 61 62 6c 65 20 74 6f 20 72 65 61 64 20 74  e able to read t
2390: 68 65 20 6f 75 74 70 75 74 20 6f 66 20 74 68 65  he output of the
23a0: 20 50 6f 73 74 67 72 65 53 51 4c 20 64 75 6d 70   PostgreSQL dump
23b0: 0a 75 74 69 6c 69 74 79 20 3c 62 3e 70 67 5f 64  .utility <b>pg_d
23c0: 75 6d 70 3c 2f 62 3e 20 73 6f 20 74 68 61 74 20  ump</b> so that 
23d0: 64 61 74 61 20 63 61 6e 20 62 65 20 65 61 73 69  data can be easi
23e0: 6c 79 20 74 72 61 6e 73 66 65 72 72 65 64 20 66  ly transferred f
23f0: 72 6f 6d 0a 50 6f 73 74 67 72 65 53 51 4c 20 69  rom.PostgreSQL i
2400: 6e 74 6f 20 53 51 4c 69 74 65 2e 3c 2f 70 3e 0a  nto SQLite.</p>.
2410: 0a 3c 70 3e 54 68 65 20 74 61 62 6c 65 2d 6e 61  .<p>The table-na
2420: 6d 65 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f  me is the name o
2430: 66 20 61 6e 20 65 78 69 73 74 69 6e 67 20 74 61  f an existing ta
2440: 62 6c 65 20 77 68 69 63 68 20 69 73 20 74 6f 0a  ble which is to.
2450: 62 65 20 66 69 6c 6c 65 64 20 77 69 74 68 20 64  be filled with d
2460: 61 74 61 2e 20 20 54 68 65 20 66 69 6c 65 6e 61  ata.  The filena
2470: 6d 65 20 69 73 20 61 20 73 74 72 69 6e 67 20 6f  me is a string o
2480: 72 20 69 64 65 6e 74 69 66 69 65 72 20 74 68 61  r identifier tha
2490: 74 0a 6e 61 6d 65 73 20 61 20 66 69 6c 65 20 66  t.names a file f
24a0: 72 6f 6d 20 77 68 69 63 68 20 64 61 74 61 20 77  rom which data w
24b0: 69 6c 6c 20 62 65 20 72 65 61 64 2e 20 20 54 68  ill be read.  Th
24c0: 65 20 66 69 6c 65 6e 61 6d 65 20 63 61 6e 20 62  e filename can b
24d0: 65 0a 74 68 65 20 3c 62 3e 53 54 44 49 4e 3c 2f  e.the <b>STDIN</
24e0: 62 3e 20 74 6f 20 72 65 61 64 20 64 61 74 61 20  b> to read data 
24f0: 66 72 6f 6d 20 73 74 61 6e 64 61 72 64 20 69 6e  from standard in
2500: 70 75 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 45 61 63  put.</p>..<p>Eac
2510: 68 20 6c 69 6e 65 20 6f 66 20 74 68 65 20 69 6e  h line of the in
2520: 70 75 74 20 66 69 6c 65 20 69 73 20 63 6f 6e 76  put file is conv
2530: 65 72 74 65 64 20 69 6e 74 6f 20 61 20 73 69 6e  erted into a sin
2540: 67 6c 65 20 72 65 63 6f 72 64 0a 69 6e 20 74 68  gle record.in th
2550: 65 20 74 61 62 6c 65 2e 20 20 43 6f 6c 75 6d 6e  e table.  Column
2560: 73 20 61 72 65 20 73 65 70 61 72 61 74 65 64 20  s are separated 
2570: 62 79 20 74 61 62 73 2e 20 20 49 66 20 61 20 74  by tabs.  If a t
2580: 61 62 20 6f 63 63 75 72 73 20 61 73 0a 64 61 74  ab occurs as.dat
2590: 61 20 77 69 74 68 69 6e 20 61 20 63 6f 6c 75 6d  a within a colum
25a0: 6e 2c 20 74 68 65 6e 20 74 68 61 74 20 74 61 62  n, then that tab
25b0: 20 69 73 20 70 72 65 63 65 64 65 64 20 62 79 20   is preceded by 
25c0: 61 20 62 61 73 6b 73 6c 61 73 68 20 22 5c 22 0a  a baskslash "\".
25d0: 63 68 61 72 61 63 74 65 72 2e 20 20 41 20 62 61  character.  A ba
25e0: 73 6b 73 6c 61 73 68 20 69 6e 20 74 68 65 20 64  skslash in the d
25f0: 61 74 61 20 61 70 70 65 61 72 73 20 61 73 20 74  ata appears as t
2600: 77 6f 20 62 61 63 6b 73 6c 61 73 68 65 73 20 69  wo backslashes i
2610: 6e 0a 61 20 72 6f 77 2e 20 20 54 68 65 20 6f 70  n.a row.  The op
2620: 74 69 6f 6e 61 6c 20 55 53 49 4e 47 20 44 45 4c  tional USING DEL
2630: 49 4d 49 54 45 52 53 20 63 6c 61 75 73 65 20 63  IMITERS clause c
2640: 61 6e 20 73 70 65 63 69 66 79 20 61 20 64 65 6c  an specify a del
2650: 69 6d 69 74 65 72 0a 6f 74 68 65 72 20 74 68 61  imiter.other tha
2660: 6e 20 74 61 62 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49  n tab.</p>..<p>I
2670: 66 20 61 20 63 6f 6c 75 6d 6e 20 63 6f 6e 73 69  f a column consi
2680: 73 74 73 20 6f 66 20 74 68 65 20 63 68 61 72 61  sts of the chara
2690: 63 74 65 72 20 22 5c 4e 22 2c 20 74 68 61 74 20  cter "\N", that 
26a0: 63 6f 6c 75 6d 6e 20 69 73 20 66 69 6c 6c 65 64  column is filled
26b0: 0a 77 69 74 68 20 74 68 65 20 76 61 6c 75 65 20  .with the value 
26c0: 4e 55 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  NULL.</p>..<p>Th
26d0: 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c  e optional confl
26e0: 69 63 74 2d 63 6c 61 75 73 65 20 61 6c 6c 6f 77  ict-clause allow
26f0: 73 20 74 68 65 20 73 70 65 63 69 66 69 63 61 74  s the specificat
2700: 69 6f 6e 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e  ion of an altern
2710: 61 74 69 76 65 0a 63 6f 6e 73 74 72 61 69 6e 74  ative.constraint
2720: 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75   conflict resolu
2730: 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 74  tion algorithm t
2740: 6f 20 75 73 65 20 66 6f 72 20 74 68 69 73 20 6f  o use for this o
2750: 6e 65 20 63 6f 6d 6d 61 6e 64 2e 0a 53 65 65 20  ne command..See 
2760: 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69 74 6c  the section titl
2770: 65 64 0a 3c 61 20 68 72 65 66 3d 22 23 63 6f 6e  ed.<a href="#con
2780: 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49  flict">ON CONFLI
2790: 43 54 3c 2f 61 3e 20 66 6f 72 20 61 64 64 69 74  CT</a> for addit
27a0: 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f  ional informatio
27b0: 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20  n.</p>..<p>When 
27c0: 74 68 65 20 69 6e 70 75 74 20 64 61 74 61 20 73  the input data s
27d0: 6f 75 72 63 65 20 69 73 20 53 54 44 49 4e 2c 20  ource is STDIN, 
27e0: 74 68 65 20 69 6e 70 75 74 20 63 61 6e 20 62 65  the input can be
27f0: 20 74 65 72 6d 69 6e 61 74 65 64 0a 62 79 20 61   terminated.by a
2800: 20 6c 69 6e 65 20 74 68 61 74 20 63 6f 6e 74 61   line that conta
2810: 69 6e 73 20 6f 6e 6c 79 20 61 20 62 61 73 6b 73  ins only a basks
2820: 6c 61 73 68 20 61 6e 64 20 61 20 64 6f 74 3a 7d  lash and a dot:}
2830: 0a 70 75 74 73 20 22 5c 22 5b 4f 70 65 72 61 74  .puts "\"[Operat
2840: 6f 72 20 5c 5c 2e 5d 5c 22 2e 3c 2f 70 3e 22 0a  or \\.]\".</p>".
2850: 0a 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54  ..Section {CREAT
2860: 45 20 49 4e 44 45 58 7d 20 63 72 65 61 74 65 69  E INDEX} createi
2870: 6e 64 65 78 0a 0a 53 79 6e 74 61 78 20 7b 73 71  ndex..Syntax {sq
2880: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 43  l-statement} {.C
2890: 52 45 41 54 45 20 5b 54 45 4d 50 20 7c 20 54 45  REATE [TEMP | TE
28a0: 4d 50 4f 52 41 52 59 5d 20 5b 55 4e 49 51 55 45  MPORARY] [UNIQUE
28b0: 5d 20 49 4e 44 45 58 20 3c 69 6e 64 65 78 2d 6e  ] INDEX <index-n
28c0: 61 6d 65 3e 20 0a 4f 4e 20 5b 3c 64 61 74 61 62  ame> .ON [<datab
28d0: 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61  ase-name> .] <ta
28e0: 62 6c 65 2d 6e 61 6d 65 3e 20 28 20 3c 63 6f 6c  ble-name> ( <col
28f0: 75 6d 6e 2d 6e 61 6d 65 3e 20 5b 2c 20 3c 63 6f  umn-name> [, <co
2900: 6c 75 6d 6e 2d 6e 61 6d 65 3e 5d 2a 20 29 0a 5b  lumn-name>]* ).[
2910: 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 3c 63 6f   ON CONFLICT <co
2920: 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d  nflict-algorithm
2930: 3e 20 5d 0a 7d 20 7b 63 6f 6c 75 6d 6e 2d 6e 61  > ].} {column-na
2940: 6d 65 7d 20 7b 0a 3c 6e 61 6d 65 3e 20 5b 20 41  me} {.<name> [ A
2950: 53 43 20 7c 20 44 45 53 43 20 5d 0a 7d 0a 0a 70  SC | DESC ].}..p
2960: 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 43 52 45  uts {.<p>The CRE
2970: 41 54 45 20 49 4e 44 45 58 20 63 6f 6d 6d 61 6e  ATE INDEX comman
2980: 64 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 74 68  d consists of th
2990: 65 20 6b 65 79 77 6f 72 64 73 20 22 43 52 45 41  e keywords "CREA
29a0: 54 45 20 49 4e 44 45 58 22 20 66 6f 6c 6c 6f 77  TE INDEX" follow
29b0: 65 64 0a 62 79 20 74 68 65 20 6e 61 6d 65 20 6f  ed.by the name o
29c0: 66 20 74 68 65 20 6e 65 77 20 69 6e 64 65 78 2c  f the new index,
29d0: 20 74 68 65 20 6b 65 79 77 6f 72 64 20 22 4f 4e   the keyword "ON
29e0: 22 2c 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61  ", the name of a
29f0: 20 70 72 65 76 69 6f 75 73 6c 79 0a 63 72 65 61   previously.crea
2a00: 74 65 64 20 74 61 62 6c 65 20 74 68 61 74 20 69  ted table that i
2a10: 73 20 74 6f 20 62 65 20 69 6e 64 65 78 65 64 2c  s to be indexed,
2a20: 20 61 6e 64 20 61 20 70 61 72 65 6e 74 68 65 73   and a parenthes
2a30: 69 7a 65 64 20 6c 69 73 74 20 6f 66 20 6e 61 6d  ized list of nam
2a40: 65 73 20 6f 66 0a 63 6f 6c 75 6d 6e 73 20 69 6e  es of.columns in
2a50: 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74 20   the table that 
2a60: 61 72 65 20 75 73 65 64 20 66 6f 72 20 74 68 65  are used for the
2a70: 20 69 6e 64 65 78 20 6b 65 79 2e 0a 45 61 63 68   index key..Each
2a80: 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 63 61 6e   column name can
2a90: 20 62 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20   be followed by 
2aa0: 6f 6e 65 20 6f 66 20 74 68 65 20 22 41 53 43 22  one of the "ASC"
2ab0: 20 6f 72 20 22 44 45 53 43 22 20 6b 65 79 77 6f   or "DESC" keywo
2ac0: 72 64 73 0a 74 6f 20 69 6e 64 69 63 61 74 65 20  rds.to indicate 
2ad0: 73 6f 72 74 20 6f 72 64 65 72 2c 20 62 75 74 20  sort order, but 
2ae0: 74 68 65 20 73 6f 72 74 20 6f 72 64 65 72 20 69  the sort order i
2af0: 73 20 69 67 6e 6f 72 65 64 20 69 6e 20 74 68 65  s ignored in the
2b00: 20 63 75 72 72 65 6e 74 0a 69 6d 70 6c 65 6d 65   current.impleme
2b10: 6e 74 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70  ntation.</p>..<p
2b20: 3e 54 68 65 72 65 20 61 72 65 20 6e 6f 20 61 72  >There are no ar
2b30: 62 69 74 72 61 72 79 20 6c 69 6d 69 74 73 20 6f  bitrary limits o
2b40: 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  n the number of 
2b50: 69 6e 64 69 63 65 73 20 74 68 61 74 20 63 61 6e  indices that can
2b60: 20 62 65 0a 61 74 74 61 63 68 65 64 20 74 6f 20   be.attached to 
2b70: 61 20 73 69 6e 67 6c 65 20 74 61 62 6c 65 2c 20  a single table, 
2b80: 6e 6f 72 20 6f 6e 20 74 68 65 20 6e 75 6d 62 65  nor on the numbe
2b90: 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20  r of columns in 
2ba0: 61 6e 20 69 6e 64 65 78 2e 3c 2f 70 3e 0a 0a 3c  an index.</p>..<
2bb0: 70 3e 49 66 20 74 68 65 20 55 4e 49 51 55 45 20  p>If the UNIQUE 
2bc0: 6b 65 79 77 6f 72 64 20 61 70 70 65 61 72 73 20  keyword appears 
2bd0: 62 65 74 77 65 65 6e 20 43 52 45 41 54 45 20 61  between CREATE a
2be0: 6e 64 20 49 4e 44 45 58 20 74 68 65 6e 20 64 75  nd INDEX then du
2bf0: 70 6c 69 63 61 74 65 0a 69 6e 64 65 78 20 65 6e  plicate.index en
2c00: 74 72 69 65 73 20 61 72 65 20 6e 6f 74 20 61 6c  tries are not al
2c10: 6c 6f 77 65 64 2e 20 20 41 6e 79 20 61 74 74 65  lowed.  Any atte
2c20: 6d 70 74 20 74 6f 20 69 6e 73 65 72 74 20 61 20  mpt to insert a 
2c30: 64 75 70 6c 69 63 61 74 65 20 65 6e 74 72 79 0a  duplicate entry.
2c40: 77 69 6c 6c 20 72 65 73 75 6c 74 20 69 6e 20 61  will result in a
2c50: 6e 20 65 72 72 6f 72 2e 3c 2f 70 3e 0a 0a 3c 70  n error.</p>..<p
2c60: 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f  >The optional co
2c70: 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 20 61 6c  nflict-clause al
2c80: 6c 6f 77 73 20 74 68 65 20 73 70 65 63 69 66 69  lows the specifi
2c90: 63 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61 6c 74  cation of an alt
2ca0: 65 72 6e 61 74 69 76 65 0a 64 65 66 61 75 6c 74  ernative.default
2cb0: 20 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66   constraint conf
2cc0: 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20  lict resolution 
2cd0: 61 6c 67 6f 72 69 74 68 6d 20 66 6f 72 20 74 68  algorithm for th
2ce0: 69 73 20 69 6e 64 65 78 2e 0a 54 68 69 73 20 6f  is index..This o
2cf0: 6e 6c 79 20 6d 61 6b 65 73 20 73 65 6e 73 65 20  nly makes sense 
2d00: 69 66 20 74 68 65 20 55 4e 49 51 55 45 20 6b 65  if the UNIQUE ke
2d10: 79 77 6f 72 64 20 69 73 20 75 73 65 64 20 73 69  yword is used si
2d20: 6e 63 65 20 6f 74 68 65 72 77 69 73 65 0a 74 68  nce otherwise.th
2d30: 65 72 65 20 61 72 65 20 6e 6f 74 20 63 6f 6e 73  ere are not cons
2d40: 74 72 61 69 6e 74 73 20 6f 6e 20 74 68 65 20 69  traints on the i
2d50: 6e 64 65 78 2e 20 20 54 68 65 20 64 65 66 61 75  ndex.  The defau
2d60: 6c 74 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 0a  lt algorithm is.
2d70: 41 42 4f 52 54 2e 20 20 49 66 20 61 20 43 4f 50  ABORT.  If a COP
2d80: 59 2c 20 49 4e 53 45 52 54 2c 20 6f 72 20 55 50  Y, INSERT, or UP
2d90: 44 41 54 45 20 73 74 61 74 65 6d 65 6e 74 20 73  DATE statement s
2da0: 70 65 63 69 66 69 65 73 20 61 20 70 61 72 74 69  pecifies a parti
2db0: 63 75 6c 61 72 0a 63 6f 6e 66 6c 69 63 74 20 72  cular.conflict r
2dc0: 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69  esolution algori
2dd0: 74 68 6d 2c 20 74 68 61 74 20 61 6c 67 6f 72 69  thm, that algori
2de0: 74 68 6d 20 69 73 20 75 73 65 64 20 69 6e 20 70  thm is used in p
2df0: 6c 61 63 65 20 6f 66 0a 74 68 65 20 64 65 66 61  lace of.the defa
2e00: 75 6c 74 20 61 6c 67 6f 72 69 74 68 6d 20 73 70  ult algorithm sp
2e10: 65 63 69 66 69 65 64 20 68 65 72 65 2e 0a 53 65  ecified here..Se
2e20: 65 20 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69  e the section ti
2e30: 74 6c 65 64 0a 3c 61 20 68 72 65 66 3d 22 23 63  tled.<a href="#c
2e40: 6f 6e 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e 46  onflict">ON CONF
2e50: 4c 49 43 54 3c 2f 61 3e 20 66 6f 72 20 61 64 64  LICT</a> for add
2e60: 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74  itional informat
2e70: 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ion.</p>..<p>The
2e80: 20 65 78 61 63 74 20 74 65 78 74 0a 6f 66 20 65   exact text.of e
2e90: 61 63 68 20 43 52 45 41 54 45 20 49 4e 44 45 58  ach CREATE INDEX
2ea0: 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 73 74   statement is st
2eb0: 6f 72 65 64 20 69 6e 20 74 68 65 20 3c 62 3e 73  ored in the <b>s
2ec0: 71 6c 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e  qlite_master</b>
2ed0: 0a 6f 72 20 3c 62 3e 73 71 6c 69 74 65 5f 74 65  .or <b>sqlite_te
2ee0: 6d 70 5f 6d 61 73 74 65 72 3c 2f 62 3e 20 74 61  mp_master</b> ta
2ef0: 62 6c 65 2c 20 64 65 70 65 6e 64 69 6e 67 20 6f  ble, depending o
2f00: 6e 20 77 68 65 74 68 65 72 20 74 68 65 20 74 61  n whether the ta
2f10: 62 6c 65 0a 62 65 69 6e 67 20 69 6e 64 65 78 65  ble.being indexe
2f20: 64 20 69 73 20 74 65 6d 70 6f 72 61 72 79 2e 20  d is temporary. 
2f30: 20 45 76 65 72 79 74 69 6d 65 20 74 68 65 20 64   Everytime the d
2f40: 61 74 61 62 61 73 65 20 69 73 20 6f 70 65 6e 65  atabase is opene
2f50: 64 2c 0a 61 6c 6c 20 43 52 45 41 54 45 20 49 4e  d,.all CREATE IN
2f60: 44 45 58 20 73 74 61 74 65 6d 65 6e 74 73 0a 61  DEX statements.a
2f70: 72 65 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65  re read from the
2f80: 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61 73 74 65   <b>sqlite_maste
2f90: 72 3c 2f 62 3e 20 74 61 62 6c 65 20 61 6e 64 20  r</b> table and 
2fa0: 75 73 65 64 20 74 6f 20 72 65 67 65 6e 65 72 61  used to regenera
2fb0: 74 65 0a 53 51 4c 69 74 65 27 73 20 69 6e 74 65  te.SQLite's inte
2fc0: 72 6e 61 6c 20 72 65 70 72 65 73 65 6e 74 61 74  rnal representat
2fd0: 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 64 65 78  ion of the index
2fe0: 20 6c 61 79 6f 75 74 2e 3c 2f 70 3e 0a 0a 3c 70   layout.</p>..<p
2ff0: 3e 4e 6f 6e 2d 74 65 6d 70 6f 72 61 72 79 20 69  >Non-temporary i
3000: 6e 64 65 78 65 73 20 63 61 6e 6e 6f 74 20 62 65  ndexes cannot be
3010: 20 61 64 64 65 64 20 6f 6e 20 74 61 62 6c 65 73   added on tables
3020: 20 69 6e 20 61 74 74 61 63 68 65 64 20 0a 64 61   in attached .da
3030: 74 61 62 61 73 65 73 2e 20 20 54 68 65 79 20 61  tabases.  They a
3040: 72 65 20 72 65 6d 6f 76 65 64 20 77 69 74 68 20  re removed with 
3050: 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23 64 72  the <a href="#dr
3060: 6f 70 69 6e 64 65 78 22 3e 44 52 4f 50 20 49 4e  opindex">DROP IN
3070: 44 45 58 3c 2f 61 3e 20 0a 63 6f 6d 6d 61 6e 64  DEX</a> .command
3080: 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f  .</p>.}...Sectio
3090: 6e 20 7b 43 52 45 41 54 45 20 54 41 42 4c 45 7d  n {CREATE TABLE}
30a0: 20 7b 63 72 65 61 74 65 74 61 62 6c 65 7d 0a 0a   {createtable}..
30b0: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d  Syntax {sql-comm
30c0: 61 6e 64 7d 20 7b 0a 43 52 45 41 54 45 20 5b 54  and} {.CREATE [T
30d0: 45 4d 50 20 7c 20 54 45 4d 50 4f 52 41 52 59 5d  EMP | TEMPORARY]
30e0: 20 54 41 42 4c 45 20 3c 74 61 62 6c 65 2d 6e 61   TABLE <table-na
30f0: 6d 65 3e 20 28 0a 20 20 3c 63 6f 6c 75 6d 6e 2d  me> (.  <column-
3100: 64 65 66 3e 20 5b 2c 20 3c 63 6f 6c 75 6d 6e 2d  def> [, <column-
3110: 64 65 66 3e 5d 2a 0a 20 20 5b 2c 20 3c 63 6f 6e  def>]*.  [, <con
3120: 73 74 72 61 69 6e 74 3e 5d 2a 0a 29 0a 7d 20 7b  straint>]*.).} {
3130: 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 43  sql-command} {.C
3140: 52 45 41 54 45 20 5b 54 45 4d 50 20 7c 20 54 45  REATE [TEMP | TE
3150: 4d 50 4f 52 41 52 59 5d 20 54 41 42 4c 45 20 3c  MPORARY] TABLE <
3160: 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 41 53 20 3c  table-name> AS <
3170: 73 65 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74  select-statement
3180: 3e 0a 7d 20 7b 63 6f 6c 75 6d 6e 2d 64 65 66 7d  >.} {column-def}
3190: 20 7b 0a 3c 6e 61 6d 65 3e 20 5b 3c 74 79 70 65   {.<name> [<type
31a0: 3e 5d 20 5b 5b 43 4f 4e 53 54 52 41 49 4e 54 20  >] [[CONSTRAINT 
31b0: 3c 6e 61 6d 65 3e 5d 20 3c 63 6f 6c 75 6d 6e 2d  <name>] <column-
31c0: 63 6f 6e 73 74 72 61 69 6e 74 3e 5d 2a 0a 7d 20  constraint>]*.} 
31d0: 7b 74 79 70 65 7d 20 7b 0a 3c 74 79 70 65 6e 61  {type} {.<typena
31e0: 6d 65 3e 20 7c 0a 3c 74 79 70 65 6e 61 6d 65 3e  me> |.<typename>
31f0: 20 28 20 3c 6e 75 6d 62 65 72 3e 20 29 20 7c 0a   ( <number> ) |.
3200: 3c 74 79 70 65 6e 61 6d 65 3e 20 28 20 3c 6e 75  <typename> ( <nu
3210: 6d 62 65 72 3e 20 2c 20 3c 6e 75 6d 62 65 72 3e  mber> , <number>
3220: 20 29 0a 7d 20 7b 63 6f 6c 75 6d 6e 2d 63 6f 6e   ).} {column-con
3230: 73 74 72 61 69 6e 74 7d 20 7b 0a 4e 4f 54 20 4e  straint} {.NOT N
3240: 55 4c 4c 20 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d  ULL [ <conflict-
3250: 63 6c 61 75 73 65 3e 20 5d 20 7c 0a 50 52 49 4d  clause> ] |.PRIM
3260: 41 52 59 20 4b 45 59 20 5b 3c 73 6f 72 74 2d 6f  ARY KEY [<sort-o
3270: 72 64 65 72 3e 5d 20 5b 20 3c 63 6f 6e 66 6c 69  rder>] [ <confli
3280: 63 74 2d 63 6c 61 75 73 65 3e 20 5d 20 7c 0a 55  ct-clause> ] |.U
3290: 4e 49 51 55 45 20 5b 20 3c 63 6f 6e 66 6c 69 63  NIQUE [ <conflic
32a0: 74 2d 63 6c 61 75 73 65 3e 20 5d 20 7c 0a 43 48  t-clause> ] |.CH
32b0: 45 43 4b 20 28 20 3c 65 78 70 72 3e 20 29 20 5b  ECK ( <expr> ) [
32c0: 20 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73   <conflict-claus
32d0: 65 3e 20 5d 20 7c 0a 44 45 46 41 55 4c 54 20 3c  e> ] |.DEFAULT <
32e0: 76 61 6c 75 65 3e 0a 7d 20 7b 63 6f 6e 73 74 72  value>.} {constr
32f0: 61 69 6e 74 7d 20 7b 0a 50 52 49 4d 41 52 59 20  aint} {.PRIMARY 
3300: 4b 45 59 20 28 20 3c 6e 61 6d 65 3e 20 5b 2c 20  KEY ( <name> [, 
3310: 3c 6e 61 6d 65 3e 5d 2a 20 29 20 5b 20 3c 63 6f  <name>]* ) [ <co
3320: 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20 5d  nflict-clause> ]
3330: 7c 0a 55 4e 49 51 55 45 20 28 20 3c 6e 61 6d 65  |.UNIQUE ( <name
3340: 3e 20 5b 2c 20 3c 6e 61 6d 65 3e 5d 2a 20 29 20  > [, <name>]* ) 
3350: 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75  [ <conflict-clau
3360: 73 65 3e 20 5d 20 7c 0a 43 48 45 43 4b 20 28 20  se> ] |.CHECK ( 
3370: 3c 65 78 70 72 3e 20 29 20 5b 20 3c 63 6f 6e 66  <expr> ) [ <conf
3380: 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20 5d 0a 7d  lict-clause> ].}
3390: 20 7b 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73   {conflict-claus
33a0: 65 7d 20 7b 0a 4f 4e 20 43 4f 4e 46 4c 49 43 54  e} {.ON CONFLICT
33b0: 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72   <conflict-algor
33c0: 69 74 68 6d 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a  ithm>.}..puts {.
33d0: 3c 70 3e 41 20 43 52 45 41 54 45 20 54 41 42 4c  <p>A CREATE TABL
33e0: 45 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 62  E statement is b
33f0: 61 73 69 63 61 6c 6c 79 20 74 68 65 20 6b 65 79  asically the key
3400: 77 6f 72 64 73 20 22 43 52 45 41 54 45 20 54 41  words "CREATE TA
3410: 42 4c 45 22 0a 66 6f 6c 6c 6f 77 65 64 20 62 79  BLE".followed by
3420: 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 6e   the name of a n
3430: 65 77 20 74 61 62 6c 65 20 61 6e 64 20 61 20 70  ew table and a p
3440: 61 72 65 6e 74 68 65 73 69 7a 65 64 20 6c 69 73  arenthesized lis
3450: 74 20 6f 66 20 63 6f 6c 75 6d 6e 0a 64 65 66 69  t of column.defi
3460: 6e 69 74 69 6f 6e 73 20 61 6e 64 20 63 6f 6e 73  nitions and cons
3470: 74 72 61 69 6e 74 73 2e 20 20 54 68 65 20 74 61  traints.  The ta
3480: 62 6c 65 20 6e 61 6d 65 20 63 61 6e 20 62 65 20  ble name can be 
3490: 65 69 74 68 65 72 20 61 6e 20 69 64 65 6e 74 69  either an identi
34a0: 66 69 65 72 0a 6f 72 20 61 20 73 74 72 69 6e 67  fier.or a string
34b0: 2e 20 20 54 61 62 6c 65 73 20 6e 61 6d 65 73 20  .  Tables names 
34c0: 74 68 61 74 20 62 65 67 69 6e 20 77 69 74 68 20  that begin with 
34d0: 22 3c 62 3e 73 71 6c 69 74 65 5f 3c 2f 62 3e 22  "<b>sqlite_</b>"
34e0: 20 61 72 65 20 72 65 73 65 72 76 65 64 0a 66 6f   are reserved.fo
34f0: 72 20 75 73 65 20 62 79 20 74 68 65 20 65 6e 67  r use by the eng
3500: 69 6e 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 45 61 63  ine.</p>..<p>Eac
3510: 68 20 63 6f 6c 75 6d 6e 20 64 65 66 69 6e 69 74  h column definit
3520: 69 6f 6e 20 69 73 20 74 68 65 20 6e 61 6d 65 20  ion is the name 
3530: 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20 66 6f  of the column fo
3540: 6c 6c 6f 77 65 64 20 62 79 20 74 68 65 0a 64 61  llowed by the.da
3550: 74 61 74 79 70 65 20 66 6f 72 20 74 68 61 74 20  tatype for that 
3560: 63 6f 6c 75 6d 6e 2c 20 74 68 65 6e 20 6f 6e 65  column, then one
3570: 20 6f 72 20 6d 6f 72 65 20 6f 70 74 69 6f 6e 61   or more optiona
3580: 6c 20 63 6f 6c 75 6d 6e 20 63 6f 6e 73 74 72 61  l column constra
3590: 69 6e 74 73 2e 0a 53 51 4c 69 74 65 20 69 73 20  ints..SQLite is 
35a0: 3c 61 20 68 72 65 66 3d 22 64 61 74 61 74 79 70  <a href="datatyp
35b0: 65 73 2e 68 74 6d 6c 22 3e 74 79 70 65 6c 65 73  es.html">typeles
35c0: 73 3c 2f 61 3e 2e 0a 54 68 65 20 64 61 74 61 74  s</a>..The datat
35d0: 79 70 65 20 66 6f 72 20 74 68 65 20 63 6f 6c 75  ype for the colu
35e0: 6d 6e 20 64 6f 65 73 20 6e 6f 74 20 72 65 73 74  mn does not rest
35f0: 72 69 63 74 20 77 68 61 74 20 64 61 74 61 20 6d  rict what data m
3600: 61 79 20 62 65 20 70 75 74 0a 69 6e 20 74 68 61  ay be put.in tha
3610: 74 20 63 6f 6c 75 6d 6e 2e 0a 41 6c 6c 20 69 6e  t column..All in
3620: 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 73 74 6f  formation is sto
3630: 72 65 64 20 61 73 20 6e 75 6c 6c 2d 74 65 72 6d  red as null-term
3640: 69 6e 61 74 65 64 20 73 74 72 69 6e 67 73 2e 0a  inated strings..
3650: 54 68 65 20 55 4e 49 51 55 45 20 63 6f 6e 73 74  The UNIQUE const
3660: 72 61 69 6e 74 20 63 61 75 73 65 73 20 61 6e 20  raint causes an 
3670: 69 6e 64 65 78 20 74 6f 20 62 65 20 63 72 65 61  index to be crea
3680: 74 65 64 20 6f 6e 20 74 68 65 20 73 70 65 63 69  ted on the speci
3690: 66 69 65 64 0a 63 6f 6c 75 6d 6e 73 2e 20 20 54  fied.columns.  T
36a0: 68 69 73 20 69 6e 64 65 78 20 6d 75 73 74 20 63  his index must c
36b0: 6f 6e 74 61 69 6e 20 75 6e 69 71 75 65 20 6b 65  ontain unique ke
36c0: 79 73 2e 0a 54 68 65 20 44 45 46 41 55 4c 54 20  ys..The DEFAULT 
36d0: 63 6f 6e 73 74 72 61 69 6e 74 0a 73 70 65 63 69  constraint.speci
36e0: 66 69 65 73 20 61 20 64 65 66 61 75 6c 74 20 76  fies a default v
36f0: 61 6c 75 65 20 74 6f 20 75 73 65 20 77 68 65 6e  alue to use when
3700: 20 64 6f 69 6e 67 20 61 6e 20 49 4e 53 45 52 54   doing an INSERT
3710: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 53 70 65 63 69  ..</p>..<p>Speci
3720: 66 79 69 6e 67 20 61 20 50 52 49 4d 41 52 59 20  fying a PRIMARY 
3730: 4b 45 59 20 6e 6f 72 6d 61 6c 6c 79 20 6a 75 73  KEY normally jus
3740: 74 20 63 72 65 61 74 65 73 20 61 20 55 4e 49 51  t creates a UNIQ
3750: 55 45 20 69 6e 64 65 78 0a 6f 6e 20 74 68 65 20  UE index.on the 
3760: 70 72 69 6d 61 72 79 20 6b 65 79 2e 20 20 48 6f  primary key.  Ho
3770: 77 65 76 65 72 2c 20 69 66 20 70 72 69 6d 61 72  wever, if primar
3780: 79 20 6b 65 79 20 69 73 20 6f 6e 20 61 20 73 69  y key is on a si
3790: 6e 67 6c 65 20 63 6f 6c 75 6d 6e 0a 74 68 61 74  ngle column.that
37a0: 20 68 61 73 20 64 61 74 61 74 79 70 65 20 49 4e   has datatype IN
37b0: 54 45 47 45 52 2c 20 74 68 65 6e 20 74 68 61 74  TEGER, then that
37c0: 20 63 6f 6c 75 6d 6e 20 69 73 20 75 73 65 64 20   column is used 
37d0: 69 6e 74 65 72 6e 61 6c 6c 79 0a 61 73 20 74 68  internally.as th
37e0: 65 20 61 63 74 75 61 6c 20 6b 65 79 20 6f 66 20  e actual key of 
37f0: 74 68 65 20 42 2d 54 72 65 65 20 66 6f 72 20 74  the B-Tree for t
3800: 68 65 20 74 61 62 6c 65 2e 20 20 54 68 69 73 20  he table.  This 
3810: 6d 65 61 6e 73 20 74 68 61 74 20 74 68 65 20 63  means that the c
3820: 6f 6c 75 6d 6e 0a 6d 61 79 20 6f 6e 6c 79 20 68  olumn.may only h
3830: 6f 6c 64 20 75 6e 69 71 75 65 20 69 6e 74 65 67  old unique integ
3840: 65 72 20 76 61 6c 75 65 73 2e 20 20 28 45 78 63  er values.  (Exc
3850: 65 70 74 20 66 6f 72 20 74 68 69 73 20 6f 6e 65  ept for this one
3860: 20 63 61 73 65 2c 0a 53 51 4c 69 74 65 20 69 67   case,.SQLite ig
3870: 6e 6f 72 65 73 20 74 68 65 20 64 61 74 61 74 79  nores the dataty
3880: 70 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e  pe specification
3890: 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 61 6e 64 20   of columns and 
38a0: 61 6c 6c 6f 77 73 0a 61 6e 79 20 6b 69 6e 64 20  allows.any kind 
38b0: 6f 66 20 64 61 74 61 20 74 6f 20 62 65 20 70 75  of data to be pu
38c0: 74 20 69 6e 20 61 20 63 6f 6c 75 6d 6e 20 72 65  t in a column re
38d0: 67 61 72 64 6c 65 73 73 20 6f 66 20 69 74 73 20  gardless of its 
38e0: 64 65 63 6c 61 72 65 64 0a 64 61 74 61 74 79 70  declared.datatyp
38f0: 65 2e 29 20 20 49 66 20 61 20 74 61 62 6c 65 20  e.)  If a table 
3900: 64 6f 65 73 20 6e 6f 74 20 68 61 76 65 20 61 6e  does not have an
3910: 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59   INTEGER PRIMARY
3920: 20 4b 45 59 20 63 6f 6c 75 6d 6e 2c 0a 74 68 65   KEY column,.the
3930: 6e 20 74 68 65 20 42 2d 54 72 65 65 20 6b 65 79  n the B-Tree key
3940: 20 77 69 6c 6c 20 62 65 20 61 20 61 75 74 6f 6d   will be a autom
3950: 61 74 69 63 61 6c 6c 79 20 67 65 6e 65 72 61 74  atically generat
3960: 65 64 20 69 6e 74 65 67 65 72 2e 20 20 54 68 65  ed integer.  The
3970: 0a 42 2d 54 72 65 65 20 6b 65 79 20 66 6f 72 20  .B-Tree key for 
3980: 61 20 72 6f 77 20 63 61 6e 20 61 6c 77 61 79 73  a row can always
3990: 20 62 65 20 61 63 63 65 73 73 65 64 20 75 73 69   be accessed usi
39a0: 6e 67 20 6f 6e 65 20 6f 66 20 74 68 65 0a 73 70  ng one of the.sp
39b0: 65 63 69 61 6c 20 6e 61 6d 65 73 20 22 3c 62 3e  ecial names "<b>
39c0: 52 4f 57 49 44 3c 2f 62 3e 22 2c 20 22 3c 62 3e  ROWID</b>", "<b>
39d0: 4f 49 44 3c 2f 62 3e 22 2c 20 6f 72 20 22 3c 62  OID</b>", or "<b
39e0: 3e 5f 52 4f 57 49 44 5f 3c 2f 62 3e 22 2e 0a 54  >_ROWID_</b>"..T
39f0: 68 69 73 20 69 73 20 74 72 75 65 20 72 65 67 61  his is true rega
3a00: 72 64 6c 65 73 73 20 6f 66 20 77 68 65 74 68 65  rdless of whethe
3a10: 72 20 6f 72 20 6e 6f 74 20 74 68 65 72 65 20 69  r or not there i
3a20: 73 20 61 6e 20 49 4e 54 45 47 45 52 0a 50 52 49  s an INTEGER.PRI
3a30: 4d 41 52 59 20 4b 45 59 2e 3c 2f 70 3e 0a 0a 3c  MARY KEY.</p>..<
3a40: 70 3e 49 66 20 74 68 65 20 22 54 45 4d 50 22 20  p>If the "TEMP" 
3a50: 6f 72 20 22 54 45 4d 50 4f 52 41 52 59 22 20 6b  or "TEMPORARY" k
3a60: 65 79 77 6f 72 64 20 6f 63 63 75 72 73 20 69 6e  eyword occurs in
3a70: 20 62 65 74 77 65 65 6e 20 22 43 52 45 41 54 45   between "CREATE
3a80: 22 0a 61 6e 64 20 22 54 41 42 4c 45 22 20 74 68  ".and "TABLE" th
3a90: 65 6e 20 74 68 65 20 74 61 62 6c 65 20 74 68 61  en the table tha
3aa0: 74 20 69 73 20 63 72 65 61 74 65 64 20 69 73 20  t is created is 
3ab0: 6f 6e 6c 79 20 76 69 73 69 62 6c 65 20 74 6f 20  only visible to 
3ac0: 74 68 65 0a 70 72 6f 63 65 73 73 20 74 68 61 74  the.process that
3ad0: 20 6f 70 65 6e 65 64 20 74 68 65 20 64 61 74 61   opened the data
3ae0: 62 61 73 65 20 61 6e 64 20 69 73 20 61 75 74 6f  base and is auto
3af0: 6d 61 74 69 63 61 6c 6c 79 20 64 65 6c 65 74 65  matically delete
3b00: 64 20 77 68 65 6e 0a 74 68 65 20 64 61 74 61 62  d when.the datab
3b10: 61 73 65 20 69 73 20 63 6c 6f 73 65 64 2e 20 20  ase is closed.  
3b20: 41 6e 79 20 69 6e 64 69 63 65 73 20 63 72 65 61  Any indices crea
3b30: 74 65 64 20 6f 6e 20 61 20 74 65 6d 70 6f 72 61  ted on a tempora
3b40: 72 79 20 74 61 62 6c 65 0a 61 72 65 20 61 6c 73  ry table.are als
3b50: 6f 20 74 65 6d 70 6f 72 61 72 79 2e 20 20 54 65  o temporary.  Te
3b60: 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 73 20 61  mporary tables a
3b70: 6e 64 20 69 6e 64 69 63 65 73 20 61 72 65 20 73  nd indices are s
3b80: 74 6f 72 65 64 20 69 6e 20 61 0a 73 65 70 61 72  tored in a.separ
3b90: 61 74 65 20 66 69 6c 65 20 64 69 73 74 69 6e 63  ate file distinc
3ba0: 74 20 66 72 6f 6d 20 74 68 65 20 6d 61 69 6e 20  t from the main 
3bb0: 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e 3c 2f  database file.</
3bc0: 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f  p>..<p>The optio
3bd0: 6e 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61  nal conflict-cla
3be0: 75 73 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 65 61  use following ea
3bf0: 63 68 20 63 6f 6e 73 74 72 61 69 6e 74 0a 61 6c  ch constraint.al
3c00: 6c 6f 77 73 20 74 68 65 20 73 70 65 63 69 66 69  lows the specifi
3c10: 63 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61 6c 74  cation of an alt
3c20: 65 72 6e 61 74 69 76 65 20 64 65 66 61 75 6c 74  ernative default
3c30: 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66  .constraint conf
3c40: 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20  lict resolution 
3c50: 61 6c 67 6f 72 69 74 68 6d 20 66 6f 72 20 74 68  algorithm for th
3c60: 61 74 20 63 6f 6e 73 74 72 61 69 6e 74 2e 0a 54  at constraint..T
3c70: 68 65 20 64 65 66 61 75 6c 74 20 69 73 20 61 62  he default is ab
3c80: 6f 72 74 20 41 42 4f 52 54 2e 20 20 44 69 66 66  ort ABORT.  Diff
3c90: 65 72 65 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74  erent constraint
3ca0: 73 20 77 69 74 68 69 6e 20 74 68 65 20 73 61 6d  s within the sam
3cb0: 65 0a 74 61 62 6c 65 20 6d 61 79 20 68 61 76 65  e.table may have
3cc0: 20 64 69 66 66 65 72 65 6e 74 20 64 65 66 61 75   different defau
3cd0: 6c 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f  lt conflict reso
3ce0: 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d  lution algorithm
3cf0: 73 2e 0a 49 66 20 61 6e 20 43 4f 50 59 2c 20 49  s..If an COPY, I
3d00: 4e 53 45 52 54 2c 20 6f 72 20 55 50 44 41 54 45  NSERT, or UPDATE
3d10: 20 63 6f 6d 6d 61 6e 64 20 73 70 65 63 69 66 69   command specifi
3d20: 65 73 20 61 20 64 69 66 66 65 72 65 6e 74 20 63  es a different c
3d30: 6f 6e 66 6c 69 63 74 0a 72 65 73 6f 6c 75 74 69  onflict.resoluti
3d40: 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 2c 20 74 68  on algorithm, th
3d50: 65 6e 20 74 68 61 74 20 61 6c 67 6f 72 69 74 68  en that algorith
3d60: 6d 20 69 73 20 75 73 65 64 20 69 6e 20 70 6c 61  m is used in pla
3d70: 63 65 20 6f 66 20 74 68 65 0a 64 65 66 61 75 6c  ce of the.defaul
3d80: 74 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63  t algorithm spec
3d90: 69 66 69 65 64 20 69 6e 20 74 68 65 20 43 52 45  ified in the CRE
3da0: 41 54 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d  ATE TABLE statem
3db0: 65 6e 74 2e 0a 53 65 65 20 74 68 65 20 73 65 63  ent..See the sec
3dc0: 74 69 6f 6e 20 74 69 74 6c 65 64 0a 3c 61 20 68  tion titled.<a h
3dd0: 72 65 66 3d 22 23 63 6f 6e 66 6c 69 63 74 22 3e  ref="#conflict">
3de0: 4f 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e 20  ON CONFLICT</a> 
3df0: 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69  for additional i
3e00: 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a  nformation.</p>.
3e10: 0a 3c 70 3e 43 48 45 43 4b 20 63 6f 6e 73 74 72  .<p>CHECK constr
3e20: 61 69 6e 74 73 20 61 72 65 20 69 67 6e 6f 72 65  aints are ignore
3e30: 64 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74  d in the current
3e40: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e   implementation.
3e50: 0a 53 75 70 70 6f 72 74 20 66 6f 72 20 43 48 45  .Support for CHE
3e60: 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 6d  CK constraints m
3e70: 61 79 20 62 65 20 61 64 64 65 64 20 69 6e 20 74  ay be added in t
3e80: 68 65 20 66 75 74 75 72 65 2e 20 20 41 73 20 6f  he future.  As o
3e90: 66 0a 76 65 72 73 69 6f 6e 20 32 2e 33 2e 30 2c  f.version 2.3.0,
3ea0: 20 4e 4f 54 20 4e 55 4c 4c 2c 20 50 52 49 4d 41   NOT NULL, PRIMA
3eb0: 52 59 20 4b 45 59 2c 20 61 6e 64 20 55 4e 49 51  RY KEY, and UNIQ
3ec0: 55 45 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 61  UE constraints a
3ed0: 6c 6c 0a 77 6f 72 6b 2e 3c 2f 70 3e 0a 0a 3c 70  ll.work.</p>..<p
3ee0: 3e 54 68 65 72 65 20 61 72 65 20 6e 6f 20 61 72  >There are no ar
3ef0: 62 69 74 72 61 72 79 20 6c 69 6d 69 74 73 20 6f  bitrary limits o
3f00: 6e 20 74 68 65 20 6e 75 6d 62 65 72 0a 6f 66 20  n the number.of 
3f10: 63 6f 6c 75 6d 6e 73 20 6f 72 20 6f 6e 20 74 68  columns or on th
3f20: 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6e 73  e number of cons
3f30: 74 72 61 69 6e 74 73 20 69 6e 20 61 20 74 61 62  traints in a tab
3f40: 6c 65 2e 0a 54 68 65 20 74 6f 74 61 6c 20 61 6d  le..The total am
3f50: 6f 75 6e 74 20 6f 66 20 64 61 74 61 20 69 6e 20  ount of data in 
3f60: 61 20 73 69 6e 67 6c 65 20 72 6f 77 20 69 73 20  a single row is 
3f70: 6c 69 6d 69 74 65 64 20 74 6f 20 61 62 6f 75 74  limited to about
3f80: 0a 31 20 6d 65 67 61 62 79 74 65 73 2e 20 20 28  .1 megabytes.  (
3f90: 54 68 69 73 20 6c 69 6d 69 74 20 63 61 6e 20 62  This limit can b
3fa0: 65 20 69 6e 63 72 65 61 73 65 64 20 74 6f 20 31  e increased to 1
3fb0: 36 4d 42 20 62 79 20 63 68 61 6e 67 69 6e 67 0a  6MB by changing.
3fc0: 61 20 73 69 6e 67 6c 65 20 23 64 65 66 69 6e 65  a single #define
3fd0: 20 69 6e 20 74 68 65 20 73 6f 75 72 63 65 20 63   in the source c
3fe0: 6f 64 65 20 61 6e 64 20 72 65 63 6f 6d 70 69 6c  ode and recompil
3ff0: 69 6e 67 2e 29 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  ing.)</p>..<p>Th
4000: 65 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 41  e CREATE TABLE A
4010: 53 20 66 6f 72 6d 20 64 65 66 69 6e 65 73 20 74  S form defines t
4020: 68 65 20 74 61 62 6c 65 20 74 6f 20 62 65 0a 74  he table to be.t
4030: 68 65 20 72 65 73 75 6c 74 20 73 65 74 20 6f 66  he result set of
4040: 20 61 20 71 75 65 72 79 2e 20 20 54 68 65 20 6e   a query.  The n
4050: 61 6d 65 73 20 6f 66 20 74 68 65 20 74 61 62 6c  ames of the tabl
4060: 65 20 63 6f 6c 75 6d 6e 73 20 61 72 65 0a 74 68  e columns are.th
4070: 65 20 6e 61 6d 65 73 20 6f 66 20 74 68 65 20 63  e names of the c
4080: 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 72 65  olumns in the re
4090: 73 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  sult.</p>..<p>Th
40a0: 65 20 65 78 61 63 74 20 74 65 78 74 0a 6f 66 20  e exact text.of 
40b0: 65 61 63 68 20 43 52 45 41 54 45 20 54 41 42 4c  each CREATE TABL
40c0: 45 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 73  E statement is s
40d0: 74 6f 72 65 64 20 69 6e 20 74 68 65 20 3c 62 3e  tored in the <b>
40e0: 73 71 6c 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62  sqlite_master</b
40f0: 3e 0a 74 61 62 6c 65 2e 20 20 45 76 65 72 79 74  >.table.  Everyt
4100: 69 6d 65 20 74 68 65 20 64 61 74 61 62 61 73 65  ime the database
4110: 20 69 73 20 6f 70 65 6e 65 64 2c 20 61 6c 6c 20   is opened, all 
4120: 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 74 61  CREATE TABLE sta
4130: 74 65 6d 65 6e 74 73 0a 61 72 65 20 72 65 61 64  tements.are read
4140: 20 66 72 6f 6d 20 74 68 65 20 3c 62 3e 73 71 6c   from the <b>sql
4150: 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 20 74  ite_master</b> t
4160: 61 62 6c 65 20 61 6e 64 20 75 73 65 64 20 74 6f  able and used to
4170: 20 72 65 67 65 6e 65 72 61 74 65 0a 53 51 4c 69   regenerate.SQLi
4180: 74 65 27 73 20 69 6e 74 65 72 6e 61 6c 20 72 65  te's internal re
4190: 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20  presentation of 
41a0: 74 68 65 20 74 61 62 6c 65 20 6c 61 79 6f 75 74  the table layout
41b0: 2e 0a 49 66 20 74 68 65 20 6f 72 69 67 69 6e 61  ..If the origina
41c0: 6c 20 63 6f 6d 6d 61 6e 64 20 77 61 73 20 61 20  l command was a 
41d0: 43 52 45 41 54 45 20 54 41 42 4c 45 20 41 53 20  CREATE TABLE AS 
41e0: 74 68 65 6e 20 74 68 65 6e 20 61 6e 20 65 71 75  then then an equ
41f0: 69 76 61 6c 65 6e 74 0a 43 52 45 41 54 45 20 54  ivalent.CREATE T
4200: 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20 69  ABLE statement i
4210: 73 20 73 79 6e 74 68 65 73 69 7a 65 64 20 61 6e  s synthesized an
4220: 64 20 73 74 6f 72 65 20 69 6e 20 3c 62 3e 73 71  d store in <b>sq
4230: 6c 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 0a  lite_master</b>.
4240: 69 6e 20 70 6c 61 63 65 20 6f 66 20 74 68 65 20  in place of the 
4250: 6f 72 69 67 69 6e 61 6c 20 63 6f 6d 6d 61 6e 64  original command
4260: 2e 0a 54 68 65 20 74 65 78 74 20 6f 66 20 43 52  ..The text of CR
4270: 45 41 54 45 20 54 45 4d 50 4f 52 41 52 59 20 54  EATE TEMPORARY T
4280: 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 73 20  ABLE statements 
4290: 61 72 65 20 73 74 6f 72 65 64 20 69 6e 20 74 68  are stored in th
42a0: 65 0a 3c 62 3e 73 71 6c 69 74 65 5f 74 65 6d 70  e.<b>sqlite_temp
42b0: 5f 6d 61 73 74 65 72 3c 2f 62 3e 20 74 61 62 6c  _master</b> tabl
42c0: 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 61 62 6c  e..</p>..<p>Tabl
42d0: 65 73 20 61 72 65 20 72 65 6d 6f 76 65 64 20 75  es are removed u
42e0: 73 69 6e 67 20 74 68 65 20 3c 61 20 68 72 65 66  sing the <a href
42f0: 3d 22 23 64 72 6f 70 74 61 62 6c 65 22 3e 44 52  ="#droptable">DR
4300: 4f 50 20 54 41 42 4c 45 3c 2f 61 3e 20 0a 73 74  OP TABLE</a> .st
4310: 61 74 65 6d 65 6e 74 2e 20 20 4e 6f 6e 2d 74 65  atement.  Non-te
4320: 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 73 20 69  mporary tables i
4330: 6e 20 61 6e 20 61 74 74 61 63 68 65 64 20 64 61  n an attached da
4340: 74 61 62 61 73 65 20 63 61 6e 6e 6f 74 20 62 65  tabase cannot be
4350: 20 0a 64 72 6f 70 70 65 64 2e 3c 2f 70 3e 0a 7d   .dropped.</p>.}
4360: 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41  ...Section {CREA
4370: 54 45 20 54 52 49 47 47 45 52 7d 20 63 72 65 61  TE TRIGGER} crea
4380: 74 65 74 72 69 67 67 65 72 0a 0a 53 79 6e 74 61  tetrigger..Synta
4390: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
43a0: 7d 20 7b 0a 43 52 45 41 54 45 20 5b 54 45 4d 50  } {.CREATE [TEMP
43b0: 20 7c 20 54 45 4d 50 4f 52 41 52 59 5d 20 54 52   | TEMPORARY] TR
43c0: 49 47 47 45 52 20 3c 74 72 69 67 67 65 72 2d 6e  IGGER <trigger-n
43d0: 61 6d 65 3e 20 5b 20 42 45 46 4f 52 45 20 7c 20  ame> [ BEFORE | 
43e0: 41 46 54 45 52 20 5d 0a 3c 64 61 74 61 62 61 73  AFTER ].<databas
43f0: 65 2d 65 76 65 6e 74 3e 20 4f 4e 20 5b 3c 64 61  e-event> ON [<da
4400: 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20  tabase-name> .] 
4410: 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 0a 3c 74 72  <table-name>.<tr
4420: 69 67 67 65 72 2d 61 63 74 69 6f 6e 3e 0a 7d 0a  igger-action>.}.
4430: 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61  .Syntax {sql-sta
4440: 74 65 6d 65 6e 74 7d 20 7b 0a 43 52 45 41 54 45  tement} {.CREATE
4450: 20 5b 54 45 4d 50 20 7c 20 54 45 4d 50 4f 52 41   [TEMP | TEMPORA
4460: 52 59 5d 20 54 52 49 47 47 45 52 20 3c 74 72 69  RY] TRIGGER <tri
4470: 67 67 65 72 2d 6e 61 6d 65 3e 20 49 4e 53 54 45  gger-name> INSTE
4480: 41 44 20 4f 46 0a 3c 64 61 74 61 62 61 73 65 2d  AD OF.<database-
4490: 65 76 65 6e 74 3e 20 4f 4e 20 5b 3c 64 61 74 61  event> ON [<data
44a0: 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 76  base-name> .] <v
44b0: 69 65 77 2d 6e 61 6d 65 3e 0a 3c 74 72 69 67 67  iew-name>.<trigg
44c0: 65 72 2d 61 63 74 69 6f 6e 3e 0a 7d 0a 0a 53 79  er-action>.}..Sy
44d0: 6e 74 61 78 20 7b 64 61 74 61 62 61 73 65 2d 65  ntax {database-e
44e0: 76 65 6e 74 7d 20 7b 0a 44 45 4c 45 54 45 20 7c  vent} {.DELETE |
44f0: 20 0a 49 4e 53 45 52 54 20 7c 20 0a 55 50 44 41   .INSERT | .UPDA
4500: 54 45 20 7c 20 0a 55 50 44 41 54 45 20 4f 46 20  TE | .UPDATE OF 
4510: 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 0a 7d 0a  <column-list>.}.
4520: 0a 53 79 6e 74 61 78 20 7b 74 72 69 67 67 65 72  .Syntax {trigger
4530: 2d 61 63 74 69 6f 6e 7d 20 7b 0a 5b 20 46 4f 52  -action} {.[ FOR
4540: 20 45 41 43 48 20 52 4f 57 20 7c 20 46 4f 52 20   EACH ROW | FOR 
4550: 45 41 43 48 20 53 54 41 54 45 4d 45 4e 54 20 5d  EACH STATEMENT ]
4560: 20 5b 20 57 48 45 4e 20 3c 65 78 70 72 65 73 73   [ WHEN <express
4570: 69 6f 6e 3e 20 5d 20 0a 42 45 47 49 4e 20 0a 20  ion> ] .BEGIN . 
4580: 20 3c 74 72 69 67 67 65 72 2d 73 74 65 70 3e 20   <trigger-step> 
4590: 3b 20 5b 20 3c 74 72 69 67 67 65 72 2d 73 74 65  ; [ <trigger-ste
45a0: 70 3e 20 3b 20 5d 2a 0a 45 4e 44 0a 7d 0a 0a 53  p> ; ]*.END.}..S
45b0: 79 6e 74 61 78 20 7b 74 72 69 67 67 65 72 2d 73  yntax {trigger-s
45c0: 74 65 70 7d 20 7b 0a 3c 75 70 64 61 74 65 2d 73  tep} {.<update-s
45d0: 74 61 74 65 6d 65 6e 74 3e 20 7c 20 3c 69 6e 73  tatement> | <ins
45e0: 65 72 74 2d 73 74 61 74 65 6d 65 6e 74 3e 20 7c  ert-statement> |
45f0: 20 0a 3c 64 65 6c 65 74 65 2d 73 74 61 74 65 6d   .<delete-statem
4600: 65 6e 74 3e 20 7c 20 3c 73 65 6c 65 63 74 2d 73  ent> | <select-s
4610: 74 61 74 65 6d 65 6e 74 3e 20 0a 7d 0a 0a 70 75  tatement> .}..pu
4620: 74 73 20 7b 0a 3c 70 3e 54 68 65 20 43 52 45 41  ts {.<p>The CREA
4630: 54 45 20 54 52 49 47 47 45 52 20 73 74 61 74 65  TE TRIGGER state
4640: 6d 65 6e 74 20 69 73 20 75 73 65 64 20 74 6f 20  ment is used to 
4650: 61 64 64 20 74 72 69 67 67 65 72 73 20 74 6f 20  add triggers to 
4660: 74 68 65 20 0a 64 61 74 61 62 61 73 65 20 73 63  the .database sc
4670: 68 65 6d 61 2e 20 54 72 69 67 67 65 72 73 20 61  hema. Triggers a
4680: 72 65 20 64 61 74 61 62 61 73 65 20 6f 70 65 72  re database oper
4690: 61 74 69 6f 6e 73 20 28 74 68 65 20 3c 69 3e 74  ations (the <i>t
46a0: 72 69 67 67 65 72 2d 61 63 74 69 6f 6e 3c 2f 69  rigger-action</i
46b0: 3e 29 20 0a 74 68 61 74 20 61 72 65 20 61 75 74  >) .that are aut
46c0: 6f 6d 61 74 69 63 61 6c 6c 79 20 70 65 72 66 6f  omatically perfo
46d0: 72 6d 65 64 20 77 68 65 6e 20 61 20 73 70 65 63  rmed when a spec
46e0: 69 66 69 65 64 20 64 61 74 61 62 61 73 65 20 65  ified database e
46f0: 76 65 6e 74 20 28 74 68 65 0a 3c 69 3e 64 61 74  vent (the.<i>dat
4700: 61 62 61 73 65 2d 65 76 65 6e 74 3c 2f 69 3e 29  abase-event</i>)
4710: 20 6f 63 63 75 72 73 2e 20 20 3c 2f 70 3e 0a 0a   occurs.  </p>..
4720: 3c 70 3e 41 20 74 72 69 67 67 65 72 20 6d 61 79  <p>A trigger may
4730: 20 62 65 20 73 70 65 63 69 66 69 65 64 20 74 6f   be specified to
4740: 20 66 69 72 65 20 77 68 65 6e 65 76 65 72 20 61   fire whenever a
4750: 20 44 45 4c 45 54 45 2c 20 49 4e 53 45 52 54 20   DELETE, INSERT 
4760: 6f 72 20 55 50 44 41 54 45 20 6f 66 20 61 0a 70  or UPDATE of a.p
4770: 61 72 74 69 63 75 6c 61 72 20 64 61 74 61 62 61  articular databa
4780: 73 65 20 74 61 62 6c 65 20 6f 63 63 75 72 73 2c  se table occurs,
4790: 20 6f 72 20 77 68 65 6e 65 76 65 72 20 61 6e 20   or whenever an 
47a0: 55 50 44 41 54 45 20 6f 66 20 6f 6e 65 20 6f 72  UPDATE of one or
47b0: 20 6d 6f 72 65 0a 73 70 65 63 69 66 69 65 64 20   more.specified 
47c0: 63 6f 6c 75 6d 6e 73 20 6f 66 20 61 20 74 61 62  columns of a tab
47d0: 6c 65 20 61 72 65 20 75 70 64 61 74 65 64 2e 3c  le are updated.<
47e0: 2f 70 3e 0a 0a 3c 70 3e 41 74 20 74 68 69 73 20  /p>..<p>At this 
47f0: 74 69 6d 65 20 53 51 4c 69 74 65 20 73 75 70 70  time SQLite supp
4800: 6f 72 74 73 20 6f 6e 6c 79 20 46 4f 52 20 45 41  orts only FOR EA
4810: 43 48 20 52 4f 57 20 74 72 69 67 67 65 72 73 2c  CH ROW triggers,
4820: 20 6e 6f 74 20 46 4f 52 20 45 41 43 48 0a 53 54   not FOR EACH.ST
4830: 41 54 45 4d 45 4e 54 20 74 72 69 67 67 65 72 73  ATEMENT triggers
4840: 2e 20 48 65 6e 63 65 20 65 78 70 6c 69 63 69 74  . Hence explicit
4850: 6c 79 20 73 70 65 63 69 66 79 69 6e 67 20 46 4f  ly specifying FO
4860: 52 20 45 41 43 48 20 52 4f 57 20 69 73 20 6f 70  R EACH ROW is op
4870: 74 69 6f 6e 61 6c 2e 20 20 46 4f 52 0a 45 41 43  tional.  FOR.EAC
4880: 48 20 52 4f 57 20 69 6d 70 6c 69 65 73 20 74 68  H ROW implies th
4890: 61 74 20 74 68 65 20 53 51 4c 20 73 74 61 74 65  at the SQL state
48a0: 6d 65 6e 74 73 20 73 70 65 63 69 66 69 65 64 20  ments specified 
48b0: 61 73 20 3c 69 3e 74 72 69 67 67 65 72 2d 73 74  as <i>trigger-st
48c0: 65 70 73 3c 2f 69 3e 20 0a 6d 61 79 20 62 65 20  eps</i> .may be 
48d0: 65 78 65 63 75 74 65 64 20 28 64 65 70 65 6e 64  executed (depend
48e0: 69 6e 67 20 6f 6e 20 74 68 65 20 57 48 45 4e 20  ing on the WHEN 
48f0: 63 6c 61 75 73 65 29 20 66 6f 72 20 65 61 63 68  clause) for each
4900: 20 64 61 74 61 62 61 73 65 20 72 6f 77 20 62 65   database row be
4910: 69 6e 67 0a 69 6e 73 65 72 74 65 64 2c 20 75 70  ing.inserted, up
4920: 64 61 74 65 64 20 6f 72 20 64 65 6c 65 74 65 64  dated or deleted
4930: 20 62 79 20 74 68 65 20 73 74 61 74 65 6d 65 6e   by the statemen
4940: 74 20 63 61 75 73 69 6e 67 20 74 68 65 20 74 72  t causing the tr
4950: 69 67 67 65 72 20 74 6f 20 66 69 72 65 2e 3c 2f  igger to fire.</
4960: 70 3e 0a 0a 3c 70 3e 42 6f 74 68 20 74 68 65 20  p>..<p>Both the 
4970: 57 48 45 4e 20 63 6c 61 75 73 65 20 61 6e 64 20  WHEN clause and 
4980: 74 68 65 20 3c 69 3e 74 72 69 67 67 65 72 2d 73  the <i>trigger-s
4990: 74 65 70 73 3c 2f 69 3e 20 6d 61 79 20 61 63 63  teps</i> may acc
49a0: 65 73 73 20 65 6c 65 6d 65 6e 74 73 20 6f 66 20  ess elements of 
49b0: 0a 74 68 65 20 72 6f 77 20 62 65 69 6e 67 20 69  .the row being i
49c0: 6e 73 65 72 74 65 64 2c 20 64 65 6c 65 74 65 64  nserted, deleted
49d0: 20 6f 72 20 75 70 64 61 74 65 64 20 75 73 69 6e   or updated usin
49e0: 67 20 72 65 66 65 72 65 6e 63 65 73 20 6f 66 20  g references of 
49f0: 74 68 65 20 66 6f 72 6d 20 0a 22 4e 45 57 2e 3c  the form ."NEW.<
4a00: 69 3e 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69  i>column-name</i
4a10: 3e 22 20 61 6e 64 20 22 4f 4c 44 2e 3c 69 3e 63  >" and "OLD.<i>c
4a20: 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e 22 2c  olumn-name</i>",
4a30: 20 77 68 65 72 65 0a 3c 69 3e 63 6f 6c 75 6d 6e   where.<i>column
4a40: 2d 6e 61 6d 65 3c 2f 69 3e 20 69 73 20 74 68 65  -name</i> is the
4a50: 20 6e 61 6d 65 20 6f 66 20 61 20 63 6f 6c 75 6d   name of a colum
4a60: 6e 20 66 72 6f 6d 20 74 68 65 20 74 61 62 6c 65  n from the table
4a70: 20 74 68 61 74 20 74 68 65 20 74 72 69 67 67 65   that the trigge
4a80: 72 0a 69 73 20 61 73 73 6f 63 69 61 74 65 64 20  r.is associated 
4a90: 77 69 74 68 2e 20 4f 4c 44 20 61 6e 64 20 4e 45  with. OLD and NE
4aa0: 57 20 72 65 66 65 72 65 6e 63 65 73 20 6d 61 79  W references may
4ab0: 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 69 6e   only be used in
4ac0: 20 74 72 69 67 67 65 72 73 20 6f 6e 0a 3c 69 3e   triggers on.<i>
4ad0: 74 72 69 67 67 65 72 2d 65 76 65 6e 74 3c 2f 69  trigger-event</i
4ae0: 3e 73 20 66 6f 72 20 77 68 69 63 68 20 74 68 65  >s for which the
4af0: 79 20 61 72 65 20 72 65 6c 65 76 61 6e 74 2c 20  y are relevant, 
4b00: 61 73 20 66 6f 6c 6c 6f 77 73 3a 3c 2f 70 3e 0a  as follows:</p>.
4b10: 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3d 30  .<table border=0
4b20: 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31 30 3e   cellpadding=10>
4b30: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
4b40: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
4b50: 67 68 74 22 20 77 69 64 74 68 3d 31 32 30 3e 3c  ght" width=120><
4b60: 69 3e 49 4e 53 45 52 54 3c 2f 69 3e 3c 2f 74 64  i>INSERT</i></td
4b70: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
4b80: 70 22 3e 4e 45 57 20 72 65 66 65 72 65 6e 63 65  p">NEW reference
4b90: 73 20 61 72 65 20 76 61 6c 69 64 3c 2f 74 64 3e  s are valid</td>
4ba0: 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20  .</tr>.<tr>.<td 
4bb0: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
4bc0: 67 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74 68  gn="right" width
4bd0: 3d 31 32 30 3e 3c 69 3e 55 50 44 41 54 45 3c 2f  =120><i>UPDATE</
4be0: 69 3e 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  i></td>.<td vali
4bf0: 67 6e 3d 22 74 6f 70 22 3e 4e 45 57 20 61 6e 64  gn="top">NEW and
4c00: 20 4f 4c 44 20 72 65 66 65 72 65 6e 63 65 73 20   OLD references 
4c10: 61 72 65 20 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c  are valid</td>.<
4c20: 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61  /tr>.<tr>.<td va
4c30: 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e  lign="top" align
4c40: 3d 22 72 69 67 68 74 22 20 77 69 64 74 68 3d 31  ="right" width=1
4c50: 32 30 3e 3c 69 3e 44 45 4c 45 54 45 3c 2f 69 3e  20><i>DELETE</i>
4c60: 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  </td>.<td valign
4c70: 3d 22 74 6f 70 22 3e 4f 4c 44 20 72 65 66 65 72  ="top">OLD refer
4c80: 65 6e 63 65 73 20 61 72 65 20 76 61 6c 69 64 3c  ences are valid<
4c90: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62  /td>.</tr>.</tab
4ca0: 6c 65 3e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20  le>.</p>..<p>If 
4cb0: 61 20 57 48 45 4e 20 63 6c 61 75 73 65 20 69 73  a WHEN clause is
4cc0: 20 73 75 70 70 6c 69 65 64 2c 20 74 68 65 20 53   supplied, the S
4cd0: 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 73 70  QL statements sp
4ce0: 65 63 69 66 69 65 64 20 61 73 20 3c 69 3e 74 72  ecified as <i>tr
4cf0: 69 67 67 65 72 2d 73 74 65 70 73 3c 2f 69 3e 20  igger-steps</i> 
4d00: 61 72 65 20 6f 6e 6c 79 20 65 78 65 63 75 74 65  are only execute
4d10: 64 20 66 6f 72 20 72 6f 77 73 20 66 6f 72 20 77  d for rows for w
4d20: 68 69 63 68 20 74 68 65 20 57 48 45 4e 20 63 6c  hich the WHEN cl
4d30: 61 75 73 65 20 69 73 20 74 72 75 65 2e 20 49 66  ause is true. If
4d40: 20 6e 6f 20 57 48 45 4e 20 63 6c 61 75 73 65 20   no WHEN clause 
4d50: 69 73 20 73 75 70 70 6c 69 65 64 2c 20 74 68 65  is supplied, the
4d60: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20   SQL statements 
4d70: 61 72 65 20 65 78 65 63 75 74 65 64 20 66 6f 72  are executed for
4d80: 20 61 6c 6c 20 72 6f 77 73 2e 3c 2f 70 3e 0a 0a   all rows.</p>..
4d90: 3c 70 3e 54 68 65 20 73 70 65 63 69 66 69 65 64  <p>The specified
4da0: 20 3c 69 3e 74 72 69 67 67 65 72 2d 74 69 6d 65   <i>trigger-time
4db0: 3c 2f 69 3e 20 64 65 74 65 72 6d 69 6e 65 73 20  </i> determines 
4dc0: 77 68 65 6e 20 74 68 65 20 3c 69 3e 74 72 69 67  when the <i>trig
4dd0: 67 65 72 2d 73 74 65 70 73 3c 2f 69 3e 0a 77 69  ger-steps</i>.wi
4de0: 6c 6c 20 62 65 20 65 78 65 63 75 74 65 64 20 72  ll be executed r
4df0: 65 6c 61 74 69 76 65 20 74 6f 20 74 68 65 20 69  elative to the i
4e00: 6e 73 65 72 74 69 6f 6e 2c 20 6d 6f 64 69 66 69  nsertion, modifi
4e10: 63 61 74 69 6f 6e 20 6f 72 20 72 65 6d 6f 76 61  cation or remova
4e20: 6c 20 6f 66 20 74 68 65 0a 61 73 73 6f 63 69 61  l of the.associa
4e30: 74 65 64 20 72 6f 77 2e 3c 2f 70 3e 0a 0a 3c 70  ted row.</p>..<p
4e40: 3e 41 6e 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20  >An ON CONFLICT 
4e50: 63 6c 61 75 73 65 20 6d 61 79 20 62 65 20 73 70  clause may be sp
4e60: 65 63 69 66 69 65 64 20 61 73 20 70 61 72 74 20  ecified as part 
4e70: 6f 66 20 61 6e 20 55 50 44 41 54 45 20 6f 72 20  of an UPDATE or 
4e80: 49 4e 53 45 52 54 0a 3c 69 3e 74 72 69 67 67 65  INSERT.<i>trigge
4e90: 72 2d 73 74 65 70 3c 2f 69 3e 2e 20 48 6f 77 65  r-step</i>. Howe
4ea0: 76 65 72 20 69 66 20 61 6e 20 4f 4e 20 43 4f 4e  ver if an ON CON
4eb0: 46 4c 49 43 54 20 63 6c 61 75 73 65 20 69 73 20  FLICT clause is 
4ec0: 73 70 65 63 69 66 69 65 64 20 61 73 20 70 61 72  specified as par
4ed0: 74 20 6f 66 20 0a 74 68 65 20 73 74 61 74 65 6d  t of .the statem
4ee0: 65 6e 74 20 63 61 75 73 69 6e 67 20 74 68 65 20  ent causing the 
4ef0: 74 72 69 67 67 65 72 20 74 6f 20 66 69 72 65 2c  trigger to fire,
4f00: 20 74 68 65 6e 20 74 68 69 73 20 63 6f 6e 66 6c   then this confl
4f10: 69 63 74 20 68 61 6e 64 6c 69 6e 67 0a 70 6f 6c  ict handling.pol
4f20: 69 63 79 20 69 73 20 75 73 65 64 20 69 6e 73 74  icy is used inst
4f30: 65 61 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 72 69  ead.</p>..<p>Tri
4f40: 67 67 65 72 73 20 61 72 65 20 61 75 74 6f 6d 61  ggers are automa
4f50: 74 69 63 61 6c 6c 79 20 64 72 6f 70 70 65 64 20  tically dropped 
4f60: 77 68 65 6e 20 74 68 65 20 74 61 62 6c 65 20 74  when the table t
4f70: 68 61 74 20 74 68 65 79 20 61 72 65 20 0a 61 73  hat they are .as
4f80: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 69 73  sociated with is
4f90: 20 64 72 6f 70 70 65 64 2e 3c 2f 70 3e 0a 0a 3c   dropped.</p>..<
4fa0: 70 3e 54 72 69 67 67 65 72 73 20 6d 61 79 20 62  p>Triggers may b
4fb0: 65 20 63 72 65 61 74 65 64 20 6f 6e 20 76 69 65  e created on vie
4fc0: 77 73 2c 20 61 73 20 77 65 6c 6c 20 61 73 20 6f  ws, as well as o
4fd0: 72 64 69 6e 61 72 79 20 74 61 62 6c 65 73 2c 20  rdinary tables, 
4fe0: 62 79 20 73 70 65 63 69 66 79 69 6e 67 0a 49 4e  by specifying.IN
4ff0: 53 54 45 41 44 20 4f 46 20 69 6e 20 74 68 65 20  STEAD OF in the 
5000: 43 52 45 41 54 45 20 54 52 49 47 47 45 52 20 73  CREATE TRIGGER s
5010: 74 61 74 65 6d 65 6e 74 2e 20 49 66 20 6f 6e 65  tatement. If one
5020: 20 6f 72 20 6d 6f 72 65 20 4f 4e 20 49 4e 53 45   or more ON INSE
5030: 52 54 2c 20 4f 4e 20 44 45 4c 45 54 45 0a 6f 72  RT, ON DELETE.or
5040: 20 4f 4e 20 55 50 44 41 54 45 20 74 72 69 67 67   ON UPDATE trigg
5050: 65 72 73 20 61 72 65 20 64 65 66 69 6e 65 64 20  ers are defined 
5060: 6f 6e 20 61 20 76 69 65 77 2c 20 74 68 65 6e 20  on a view, then 
5070: 69 74 20 69 73 20 6e 6f 74 20 61 6e 20 65 72 72  it is not an err
5080: 6f 72 20 74 6f 20 65 78 65 63 75 74 65 0a 61 6e  or to execute.an
5090: 20 49 4e 53 45 52 54 2c 20 44 45 4c 45 54 45 20   INSERT, DELETE 
50a0: 6f 72 20 55 50 44 41 54 45 20 73 74 61 74 65 6d  or UPDATE statem
50b0: 65 6e 74 20 6f 6e 20 74 68 65 20 76 69 65 77 2c  ent on the view,
50c0: 20 72 65 73 70 65 63 74 69 76 65 6c 79 2e 20 54   respectively. T
50d0: 68 65 72 65 61 66 74 65 72 2c 0a 65 78 65 63 75  hereafter,.execu
50e0: 74 69 6e 67 20 61 6e 20 49 4e 53 45 52 54 2c 20  ting an INSERT, 
50f0: 44 45 4c 45 54 45 20 6f 72 20 55 50 44 41 54 45  DELETE or UPDATE
5100: 20 6f 6e 20 74 68 65 20 76 69 65 77 20 63 61 75   on the view cau
5110: 73 65 73 20 74 68 65 20 61 73 73 6f 63 69 61 74  ses the associat
5120: 65 64 0a 20 20 74 72 69 67 67 65 72 73 20 74 6f  ed.  triggers to
5130: 20 66 69 72 65 2e 20 54 68 65 20 72 65 61 6c 20   fire. The real 
5140: 74 61 62 6c 65 73 20 75 6e 64 65 72 6c 79 69 6e  tables underlyin
5150: 67 20 74 68 65 20 76 69 65 77 20 61 72 65 20 6e  g the view are n
5160: 6f 74 20 6d 6f 64 69 66 69 65 64 0a 20 20 28 65  ot modified.  (e
5170: 78 63 65 70 74 20 70 6f 73 73 69 62 6c 79 20 65  xcept possibly e
5180: 78 70 6c 69 63 69 74 6c 79 2c 20 62 79 20 61 20  xplicitly, by a 
5190: 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 29  trigger program)
51a0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 3c 62 3e 45 78 61  .</p>..<p><b>Exa
51b0: 6d 70 6c 65 3a 3c 2f 62 3e 3c 2f 70 3e 0a 0a 3c  mple:</b></p>..<
51c0: 70 3e 41 73 73 75 6d 69 6e 67 20 74 68 61 74 20  p>Assuming that 
51d0: 63 75 73 74 6f 6d 65 72 20 72 65 63 6f 72 64 73  customer records
51e0: 20 61 72 65 20 73 74 6f 72 65 64 20 69 6e 20 74   are stored in t
51f0: 68 65 20 22 63 75 73 74 6f 6d 65 72 73 22 20 74  he "customers" t
5200: 61 62 6c 65 2c 20 61 6e 64 0a 74 68 61 74 20 6f  able, and.that o
5210: 72 64 65 72 20 72 65 63 6f 72 64 73 20 61 72 65  rder records are
5220: 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 22   stored in the "
5230: 6f 72 64 65 72 73 22 20 74 61 62 6c 65 2c 20 74  orders" table, t
5240: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 72 69  he following tri
5250: 67 67 65 72 0a 65 6e 73 75 72 65 73 20 74 68 61  gger.ensures tha
5260: 74 20 61 6c 6c 20 61 73 73 6f 63 69 61 74 65 64  t all associated
5270: 20 6f 72 64 65 72 73 20 61 72 65 20 72 65 64 69   orders are redi
5280: 72 65 63 74 65 64 20 77 68 65 6e 20 61 20 63 75  rected when a cu
5290: 73 74 6f 6d 65 72 20 63 68 61 6e 67 65 73 0a 68  stomer changes.h
52a0: 69 73 20 6f 72 20 68 65 72 20 61 64 64 72 65 73  is or her addres
52b0: 73 3a 3c 2f 70 3e 0a 7d 0a 45 78 61 6d 70 6c 65  s:</p>.}.Example
52c0: 20 7b 0a 43 52 45 41 54 45 20 54 52 49 47 47 45   {.CREATE TRIGGE
52d0: 52 20 75 70 64 61 74 65 5f 63 75 73 74 6f 6d 65  R update_custome
52e0: 72 5f 61 64 64 72 65 73 73 20 55 50 44 41 54 45  r_address UPDATE
52f0: 20 4f 46 20 61 64 64 72 65 73 73 20 4f 4e 20 63   OF address ON c
5300: 75 73 74 6f 6d 65 72 73 20 0a 20 20 42 45 47 49  ustomers .  BEGI
5310: 4e 0a 20 20 20 20 55 50 44 41 54 45 20 6f 72 64  N.    UPDATE ord
5320: 65 72 73 20 53 45 54 20 61 64 64 72 65 73 73 20  ers SET address 
5330: 3d 20 6e 65 77 2e 61 64 64 72 65 73 73 20 57 48  = new.address WH
5340: 45 52 45 20 63 75 73 74 6f 6d 65 72 5f 6e 61 6d  ERE customer_nam
5350: 65 20 3d 20 6f 6c 64 2e 6e 61 6d 65 3b 0a 20 20  e = old.name;.  
5360: 45 4e 44 3b 0a 7d 0a 70 75 74 73 20 7b 0a 3c 70  END;.}.puts {.<p
5370: 3e 57 69 74 68 20 74 68 69 73 20 74 72 69 67 67  >With this trigg
5380: 65 72 20 69 6e 73 74 61 6c 6c 65 64 2c 20 65 78  er installed, ex
5390: 65 63 75 74 69 6e 67 20 74 68 65 20 73 74 61 74  ecuting the stat
53a0: 65 6d 65 6e 74 3a 3c 2f 70 3e 0a 7d 0a 0a 45 78  ement:</p>.}..Ex
53b0: 61 6d 70 6c 65 20 7b 0a 55 50 44 41 54 45 20 63  ample {.UPDATE c
53c0: 75 73 74 6f 6d 65 72 73 20 53 45 54 20 61 64 64  ustomers SET add
53d0: 72 65 73 73 20 3d 20 27 31 20 4d 61 69 6e 20 53  ress = '1 Main S
53e0: 74 2e 27 20 57 48 45 52 45 20 6e 61 6d 65 20 3d  t.' WHERE name =
53f0: 20 27 4a 61 63 6b 20 4a 6f 6e 65 73 27 3b 0a 7d   'Jack Jones';.}
5400: 0a 70 75 74 73 20 7b 0a 3c 70 3e 63 61 75 73 65  .puts {.<p>cause
5410: 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  s the following 
5420: 74 6f 20 62 65 20 61 75 74 6f 6d 61 74 69 63 61  to be automatica
5430: 6c 6c 79 20 65 78 65 63 75 74 65 64 3a 3c 2f 70  lly executed:</p
5440: 3e 0a 7d 0a 45 78 61 6d 70 6c 65 20 7b 0a 55 50  >.}.Example {.UP
5450: 44 41 54 45 20 6f 72 64 65 72 73 20 53 45 54 20  DATE orders SET 
5460: 61 64 64 72 65 73 73 20 3d 20 27 31 20 4d 61 69  address = '1 Mai
5470: 6e 20 53 74 2e 27 20 57 48 45 52 45 20 63 75 73  n St.' WHERE cus
5480: 74 6f 6d 65 72 5f 6e 61 6d 65 20 3d 20 27 4a 61  tomer_name = 'Ja
5490: 63 6b 20 4a 6f 6e 65 73 27 3b 0a 7d 0a 0a 70 75  ck Jones';.}..pu
54a0: 74 73 20 7b 0a 3c 70 3e 4e 6f 74 65 20 74 68 61  ts {.<p>Note tha
54b0: 74 20 63 75 72 72 65 6e 74 6c 79 2c 20 74 72 69  t currently, tri
54c0: 67 67 65 72 73 20 6d 61 79 20 62 65 68 61 76 65  ggers may behave
54d0: 20 6f 64 64 6c 79 20 77 68 65 6e 20 63 72 65 61   oddly when crea
54e0: 74 65 64 20 6f 6e 20 74 61 62 6c 65 73 0a 20 20  ted on tables.  
54f0: 77 69 74 68 20 49 4e 54 45 47 45 52 20 50 52 49  with INTEGER PRI
5500: 4d 41 52 59 20 4b 45 59 20 66 69 65 6c 64 73 2e  MARY KEY fields.
5510: 20 49 66 20 61 20 42 45 46 4f 52 45 20 74 72 69   If a BEFORE tri
5520: 67 67 65 72 20 70 72 6f 67 72 61 6d 20 6d 6f 64  gger program mod
5530: 69 66 69 65 73 20 74 68 65 20 0a 20 20 49 4e 54  ifies the .  INT
5540: 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59  EGER PRIMARY KEY
5550: 20 66 69 65 6c 64 20 6f 66 20 61 20 72 6f 77 20   field of a row 
5560: 74 68 61 74 20 77 69 6c 6c 20 62 65 20 73 75 62  that will be sub
5570: 73 65 71 75 65 6e 74 6c 79 20 75 70 64 61 74 65  sequently update
5580: 64 20 62 79 20 74 68 65 0a 20 20 73 74 61 74 65  d by the.  state
5590: 6d 65 6e 74 20 74 68 61 74 20 63 61 75 73 65 73  ment that causes
55a0: 20 74 68 65 20 74 72 69 67 67 65 72 20 74 6f 20   the trigger to 
55b0: 66 69 72 65 2c 20 74 68 65 6e 20 74 68 65 20 75  fire, then the u
55c0: 70 64 61 74 65 20 6d 61 79 20 6e 6f 74 20 6f 63  pdate may not oc
55d0: 63 75 72 2e 20 0a 20 20 54 68 65 20 77 6f 72 6b  cur. .  The work
55e0: 61 72 6f 75 6e 64 20 69 73 20 74 6f 20 64 65 63  around is to dec
55f0: 6c 61 72 65 20 74 68 65 20 74 61 62 6c 65 20 77  lare the table w
5600: 69 74 68 20 61 20 50 52 49 4d 41 52 59 20 4b 45  ith a PRIMARY KE
5610: 59 20 63 6f 6c 75 6d 6e 20 69 6e 73 74 65 61 64  Y column instead
5620: 0a 20 20 6f 66 20 61 6e 20 49 4e 54 45 47 45 52  .  of an INTEGER
5630: 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c   PRIMARY KEY col
5640: 75 6d 6e 2e 3c 2f 70 3e 0a 7d 0a 0a 70 75 74 73  umn.</p>.}..puts
5650: 20 7b 0a 3c 70 3e 41 20 73 70 65 63 69 61 6c 20   {.<p>A special 
5660: 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 52 41 49  SQL function RAI
5670: 53 45 28 29 20 6d 61 79 20 62 65 20 75 73 65 64  SE() may be used
5680: 20 77 69 74 68 69 6e 20 61 20 74 72 69 67 67 65   within a trigge
5690: 72 2d 70 72 6f 67 72 61 6d 2c 20 77 69 74 68 20  r-program, with 
56a0: 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 79  the following sy
56b0: 6e 74 61 78 3c 2f 70 3e 20 0a 7d 0a 53 79 6e 74  ntax</p> .}.Synt
56c0: 61 78 20 7b 72 61 69 73 65 2d 66 75 6e 63 74 69  ax {raise-functi
56d0: 6f 6e 7d 20 7b 0a 52 41 49 53 45 20 28 20 41 42  on} {.RAISE ( AB
56e0: 4f 52 54 2c 20 3c 65 72 72 6f 72 2d 6d 65 73 73  ORT, <error-mess
56f0: 61 67 65 3e 20 29 20 7c 20 0a 52 41 49 53 45 20  age> ) | .RAISE 
5700: 28 20 46 41 49 4c 2c 20 3c 65 72 72 6f 72 2d 6d  ( FAIL, <error-m
5710: 65 73 73 61 67 65 3e 20 29 20 7c 20 0a 52 41 49  essage> ) | .RAI
5720: 53 45 20 28 20 52 4f 4c 4c 42 41 43 4b 2c 20 3c  SE ( ROLLBACK, <
5730: 65 72 72 6f 72 2d 6d 65 73 73 61 67 65 3e 20 29  error-message> )
5740: 20 7c 20 0a 52 41 49 53 45 20 28 20 49 47 4e 4f   | .RAISE ( IGNO
5750: 52 45 20 29 0a 7d 0a 70 75 74 73 20 7b 0a 3c 70  RE ).}.puts {.<p
5760: 3e 57 68 65 6e 20 6f 6e 65 20 6f 66 20 74 68 65  >When one of the
5770: 20 66 69 72 73 74 20 74 68 72 65 65 20 66 6f 72   first three for
5780: 6d 73 20 69 73 20 63 61 6c 6c 65 64 20 64 75 72  ms is called dur
5790: 69 6e 67 20 74 72 69 67 67 65 72 2d 70 72 6f 67  ing trigger-prog
57a0: 72 61 6d 20 65 78 65 63 75 74 69 6f 6e 2c 20 74  ram execution, t
57b0: 68 65 20 73 70 65 63 69 66 69 65 64 20 4f 4e 20  he specified ON 
57c0: 43 4f 4e 46 4c 49 43 54 20 70 72 6f 63 65 73 73  CONFLICT process
57d0: 69 6e 67 20 69 73 20 70 65 72 66 6f 72 6d 65 64  ing is performed
57e0: 20 28 65 69 74 68 65 72 20 41 42 4f 52 54 2c 20   (either ABORT, 
57f0: 46 41 49 4c 20 6f 72 20 0a 20 52 4f 4c 4c 42 41  FAIL or . ROLLBA
5800: 43 4b 29 20 61 6e 64 20 74 68 65 20 63 75 72 72  CK) and the curr
5810: 65 6e 74 20 71 75 65 72 79 20 74 65 72 6d 69 6e  ent query termin
5820: 61 74 65 73 2e 20 41 6e 20 65 72 72 6f 72 20 63  ates. An error c
5830: 6f 64 65 20 6f 66 20 53 51 4c 49 54 45 5f 43 4f  ode of SQLITE_CO
5840: 4e 53 54 52 41 49 4e 54 20 69 73 20 72 65 74 75  NSTRAINT is retu
5850: 72 6e 65 64 20 74 6f 20 74 68 65 20 75 73 65 72  rned to the user
5860: 2c 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 65  , along with the
5870: 20 73 70 65 63 69 66 69 65 64 20 65 72 72 6f 72   specified error
5880: 20 6d 65 73 73 61 67 65 2e 3c 2f 70 3e 0a 0a 3c   message.</p>..<
5890: 70 3e 57 68 65 6e 20 52 41 49 53 45 28 49 47 4e  p>When RAISE(IGN
58a0: 4f 52 45 29 20 69 73 20 63 61 6c 6c 65 64 2c 20  ORE) is called, 
58b0: 74 68 65 20 72 65 6d 61 69 6e 64 65 72 20 6f 66  the remainder of
58c0: 20 74 68 65 20 63 75 72 72 65 6e 74 20 74 72 69   the current tri
58d0: 67 67 65 72 20 70 72 6f 67 72 61 6d 2c 0a 74 68  gger program,.th
58e0: 65 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74  e statement that
58f0: 20 63 61 75 73 65 64 20 74 68 65 20 74 72 69 67   caused the trig
5900: 67 65 72 20 70 72 6f 67 72 61 6d 20 74 6f 20 65  ger program to e
5910: 78 65 63 75 74 65 20 61 6e 64 20 61 6e 79 20 73  xecute and any s
5920: 75 62 73 65 71 75 65 6e 74 0a 20 20 20 20 74 72  ubsequent.    tr
5930: 69 67 67 65 72 20 70 72 6f 67 72 61 6d 73 20 74  igger programs t
5940: 68 61 74 20 77 6f 75 6c 64 20 6f 66 20 62 65 65  hat would of bee
5950: 6e 20 65 78 65 63 75 74 65 64 20 61 72 65 20 61  n executed are a
5960: 62 61 6e 64 6f 6e 65 64 2e 20 4e 6f 20 64 61 74  bandoned. No dat
5970: 61 62 61 73 65 0a 20 20 20 20 63 68 61 6e 67 65  abase.    change
5980: 73 20 61 72 65 20 72 6f 6c 6c 65 64 20 62 61 63  s are rolled bac
5990: 6b 2e 20 20 49 66 20 74 68 65 20 73 74 61 74 65  k.  If the state
59a0: 6d 65 6e 74 20 74 68 61 74 20 63 61 75 73 65 64  ment that caused
59b0: 20 74 68 65 20 74 72 69 67 67 65 72 20 70 72 6f   the trigger pro
59c0: 67 72 61 6d 0a 20 20 20 20 74 6f 20 65 78 65 63  gram.    to exec
59d0: 75 74 65 20 69 73 20 69 74 73 65 6c 66 20 70 61  ute is itself pa
59e0: 72 74 20 6f 66 20 61 20 74 72 69 67 67 65 72 20  rt of a trigger 
59f0: 70 72 6f 67 72 61 6d 2c 20 74 68 65 6e 20 74 68  program, then th
5a00: 61 74 20 74 72 69 67 67 65 72 20 70 72 6f 67 72  at trigger progr
5a10: 61 6d 0a 20 20 20 20 72 65 73 75 6d 65 73 20 65  am.    resumes e
5a20: 78 65 63 75 74 69 6f 6e 20 61 74 20 74 68 65 20  xecution at the 
5a30: 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65  beginning of the
5a40: 20 6e 65 78 74 20 73 74 65 70 2e 0a 3c 2f 70 3e   next step..</p>
5a50: 0a 0a 3c 70 3e 54 72 69 67 67 65 72 73 20 61 72  ..<p>Triggers ar
5a60: 65 20 72 65 6d 6f 76 65 64 20 75 73 69 6e 67 20  e removed using 
5a70: 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23 64 72  the <a href="#dr
5a80: 6f 70 74 72 69 67 67 65 72 22 3e 44 52 4f 50 20  optrigger">DROP 
5a90: 54 52 49 47 47 45 52 3c 2f 61 3e 0a 73 74 61 74  TRIGGER</a>.stat
5aa0: 65 6d 65 6e 74 2e 20 20 4e 6f 6e 2d 74 65 6d 70  ement.  Non-temp
5ab0: 6f 72 61 72 79 20 74 72 69 67 67 65 72 73 20 63  orary triggers c
5ac0: 61 6e 6e 6f 74 20 62 65 20 61 64 64 65 64 20 6f  annot be added o
5ad0: 6e 20 61 20 74 61 62 6c 65 20 69 6e 20 61 6e 20  n a table in an 
5ae0: 0a 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61  .attached databa
5af0: 73 65 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74  se.</p>.}...Sect
5b00: 69 6f 6e 20 7b 43 52 45 41 54 45 20 56 49 45 57  ion {CREATE VIEW
5b10: 7d 20 7b 63 72 65 61 74 65 76 69 65 77 7d 0a 0a  } {createview}..
5b20: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d  Syntax {sql-comm
5b30: 61 6e 64 7d 20 7b 0a 43 52 45 41 54 45 20 5b 54  and} {.CREATE [T
5b40: 45 4d 50 20 7c 20 54 45 4d 50 4f 52 41 52 59 5d  EMP | TEMPORARY]
5b50: 20 56 49 45 57 20 3c 76 69 65 77 2d 6e 61 6d 65   VIEW <view-name
5b60: 3e 20 41 53 20 3c 73 65 6c 65 63 74 2d 73 74 61  > AS <select-sta
5b70: 74 65 6d 65 6e 74 3e 0a 7d 0a 0a 70 75 74 73 20  tement>.}..puts 
5b80: 7b 0a 3c 70 3e 54 68 65 20 43 52 45 41 54 45 20  {.<p>The CREATE 
5b90: 56 49 45 57 20 63 6f 6d 6d 61 6e 64 20 61 73 73  VIEW command ass
5ba0: 69 67 6e 73 20 61 20 6e 61 6d 65 20 74 6f 20 61  igns a name to a
5bb0: 20 70 72 65 2d 70 61 63 6b 61 67 65 64 20 53 45   pre-packaged SE
5bc0: 4c 45 43 54 0a 73 74 61 74 65 6d 65 6e 74 2e 20  LECT.statement. 
5bd0: 20 4f 6e 63 65 20 74 68 65 20 76 69 65 77 20 69   Once the view i
5be0: 73 20 63 72 65 61 74 65 64 2c 20 69 74 20 63 61  s created, it ca
5bf0: 6e 20 62 65 20 75 73 65 64 20 69 6e 20 74 68 65  n be used in the
5c00: 20 46 52 4f 4d 20 63 6c 61 75 73 65 0a 6f 66 20   FROM clause.of 
5c10: 61 6e 6f 74 68 65 72 20 53 45 4c 45 43 54 20 69  another SELECT i
5c20: 6e 20 70 6c 61 63 65 20 6f 66 20 61 20 74 61 62  n place of a tab
5c30: 6c 65 20 6e 61 6d 65 2e 0a 3c 2f 70 3e 0a 0a 3c  le name..</p>..<
5c40: 70 3e 59 6f 75 20 63 61 6e 6e 6f 74 20 43 4f 50  p>You cannot COP
5c50: 59 2c 20 49 4e 53 45 52 54 20 6f 72 20 55 50 44  Y, INSERT or UPD
5c60: 41 54 45 20 61 20 76 69 65 77 2e 20 20 56 69 65  ATE a view.  Vie
5c70: 77 73 20 61 72 65 20 72 65 61 64 2d 6f 6e 6c 79  ws are read-only
5c80: 20 0a 69 6e 20 53 51 4c 69 74 65 2e 20 20 56 69   .in SQLite.  Vi
5c90: 65 77 73 20 61 72 65 20 72 65 6d 6f 76 65 64 20  ews are removed 
5ca0: 77 69 74 68 20 74 68 65 20 3c 61 20 68 72 65 66  with the <a href
5cb0: 3d 22 23 64 72 6f 70 76 69 65 77 22 3e 44 52 4f  ="#dropview">DRO
5cc0: 50 20 56 49 45 57 3c 2f 61 3e 20 0a 63 6f 6d 6d  P VIEW</a> .comm
5cd0: 61 6e 64 2e 20 20 4e 6f 6e 2d 74 65 6d 70 6f 72  and.  Non-tempor
5ce0: 61 72 79 20 76 69 65 77 73 20 63 61 6e 6e 6f 74  ary views cannot
5cf0: 20 62 65 20 63 72 65 61 74 65 64 20 6f 6e 20 74   be created on t
5d00: 61 62 6c 65 73 20 69 6e 20 61 6e 20 61 74 74 61  ables in an atta
5d10: 63 68 65 64 20 0a 64 61 74 61 62 61 73 65 2e 3c  ched .database.<
5d20: 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20  /p>.}...Section 
5d30: 44 45 4c 45 54 45 20 64 65 6c 65 74 65 0a 0a 53  DELETE delete..S
5d40: 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65  yntax {sql-state
5d50: 6d 65 6e 74 7d 20 7b 0a 44 45 4c 45 54 45 20 46  ment} {.DELETE F
5d60: 52 4f 4d 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e  ROM [<database-n
5d70: 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e  ame> .] <table-n
5d80: 61 6d 65 3e 20 5b 57 48 45 52 45 20 3c 65 78 70  ame> [WHERE <exp
5d90: 72 3e 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70  r>].}..puts {.<p
5da0: 3e 54 68 65 20 44 45 4c 45 54 45 20 63 6f 6d 6d  >The DELETE comm
5db0: 61 6e 64 20 69 73 20 75 73 65 64 20 74 6f 20 72  and is used to r
5dc0: 65 6d 6f 76 65 20 72 65 63 6f 72 64 73 20 66 72  emove records fr
5dd0: 6f 6d 20 61 20 74 61 62 6c 65 2e 0a 54 68 65 20  om a table..The 
5de0: 63 6f 6d 6d 61 6e 64 20 63 6f 6e 73 69 73 74 73  command consists
5df0: 20 6f 66 20 74 68 65 20 22 44 45 4c 45 54 45 20   of the "DELETE 
5e00: 46 52 4f 4d 22 20 6b 65 79 77 6f 72 64 73 20 66  FROM" keywords f
5e10: 6f 6c 6c 6f 77 65 64 20 62 79 0a 74 68 65 20 6e  ollowed by.the n
5e20: 61 6d 65 20 6f 66 20 74 68 65 20 74 61 62 6c 65  ame of the table
5e30: 20 66 72 6f 6d 20 77 68 69 63 68 20 72 65 63 6f   from which reco
5e40: 72 64 73 20 61 72 65 20 74 6f 20 62 65 20 72 65  rds are to be re
5e50: 6d 6f 76 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  moved..</p>..<p>
5e60: 57 69 74 68 6f 75 74 20 61 20 57 48 45 52 45 20  Without a WHERE 
5e70: 63 6c 61 75 73 65 2c 20 61 6c 6c 20 72 6f 77 73  clause, all rows
5e80: 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 61 72   of the table ar
5e90: 65 20 72 65 6d 6f 76 65 64 2e 0a 49 66 20 61 20  e removed..If a 
5ea0: 57 48 45 52 45 20 63 6c 61 75 73 65 20 69 73 20  WHERE clause is 
5eb0: 73 75 70 70 6c 69 65 64 2c 20 74 68 65 6e 20 6f  supplied, then o
5ec0: 6e 6c 79 20 74 68 6f 73 65 20 72 6f 77 73 20 74  nly those rows t
5ed0: 68 61 74 20 6d 61 74 63 68 0a 74 68 65 20 65 78  hat match.the ex
5ee0: 70 72 65 73 73 69 6f 6e 20 61 72 65 20 72 65 6d  pression are rem
5ef0: 6f 76 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65  oved.</p>.}...Se
5f00: 63 74 69 6f 6e 20 7b 44 45 54 41 43 48 20 44 41  ction {DETACH DA
5f10: 54 41 42 41 53 45 7d 20 64 65 74 61 63 68 0a 0a  TABASE} detach..
5f20: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d  Syntax {sql-comm
5f30: 61 6e 64 7d 20 7b 0a 44 45 54 41 43 48 20 5b 44  and} {.DETACH [D
5f40: 41 54 41 42 41 53 45 5d 20 3c 64 61 74 61 62 61  ATABASE] <databa
5f50: 73 65 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70 75 74 73  se-name>.}..puts
5f60: 20 7b 0a 3c 70 3e 54 68 69 73 20 73 74 61 74 65   {.<p>This state
5f70: 6d 65 6e 74 20 64 65 74 61 63 68 65 73 20 61 6e  ment detaches an
5f80: 20 61 64 64 69 74 69 6f 6e 61 6c 20 64 61 74 61   additional data
5f90: 62 61 73 65 20 66 69 6c 65 20 70 72 65 76 69 6f  base file previo
5fa0: 75 73 6c 79 20 61 74 74 61 63 68 65 64 0a 75 73  usly attached.us
5fb0: 69 6e 67 20 74 68 65 20 3c 61 20 68 72 65 66 3d  ing the <a href=
5fc0: 22 23 61 74 74 61 63 68 22 3e 41 54 54 41 43 48  "#attach">ATTACH
5fd0: 20 44 41 54 41 42 41 53 45 3c 2f 61 3e 20 73 74   DATABASE</a> st
5fe0: 61 74 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 70  atement.</p>..<p
5ff0: 3e 54 68 69 73 20 73 74 61 74 65 6d 65 6e 74 20  >This statement 
6000: 77 69 6c 6c 20 66 61 69 6c 20 69 66 20 53 51 4c  will fail if SQL
6010: 69 74 65 20 69 73 20 69 6e 20 74 68 65 20 6d 69  ite is in the mi
6020: 64 64 6c 65 20 6f 66 20 61 20 74 72 61 6e 73 61  ddle of a transa
6030: 63 74 69 6f 6e 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53  ction.</p>.}...S
6040: 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20 49 4e 44  ection {DROP IND
6050: 45 58 7d 20 64 72 6f 70 69 6e 64 65 78 0a 0a 53  EX} dropindex..S
6060: 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61  yntax {sql-comma
6070: 6e 64 7d 20 7b 0a 44 52 4f 50 20 49 4e 44 45 58  nd} {.DROP INDEX
6080: 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65   [<database-name
6090: 3e 20 2e 5d 20 3c 69 6e 64 65 78 2d 6e 61 6d 65  > .] <index-name
60a0: 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54  >.}..puts {.<p>T
60b0: 68 65 20 44 52 4f 50 20 49 4e 44 45 58 20 73 74  he DROP INDEX st
60c0: 61 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20  atement removes 
60d0: 61 6e 20 69 6e 64 65 78 20 61 64 64 65 64 20 77  an index added w
60e0: 69 74 68 20 74 68 65 20 3c 61 20 68 72 65 66 3d  ith the <a href=
60f0: 22 23 63 72 65 61 74 65 69 6e 64 65 78 22 3e 0a  "#createindex">.
6100: 43 52 45 41 54 45 20 49 4e 44 45 58 3c 2f 61 3e  CREATE INDEX</a>
6110: 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65   statement.  The
6120: 20 69 6e 64 65 78 20 6e 61 6d 65 64 20 69 73 20   index named is 
6130: 63 6f 6d 70 6c 65 74 65 6c 79 20 72 65 6d 6f 76  completely remov
6140: 65 64 20 66 72 6f 6d 0a 74 68 65 20 64 69 73 6b  ed from.the disk
6150: 2e 20 20 54 68 65 20 6f 6e 6c 79 20 77 61 79 20  .  The only way 
6160: 74 6f 20 72 65 63 6f 76 65 72 20 74 68 65 20 69  to recover the i
6170: 6e 64 65 78 20 69 73 20 74 6f 20 72 65 65 6e 74  ndex is to reent
6180: 65 72 20 74 68 65 0a 61 70 70 72 6f 70 72 69 61  er the.appropria
6190: 74 65 20 43 52 45 41 54 45 20 49 4e 44 45 58 20  te CREATE INDEX 
61a0: 63 6f 6d 6d 61 6e 64 2e 20 20 4e 6f 6e 2d 74 65  command.  Non-te
61b0: 6d 70 6f 72 61 72 79 20 69 6e 64 65 78 65 73 20  mporary indexes 
61c0: 6f 6e 20 74 61 62 6c 65 73 20 69 6e 20 0a 61 6e  on tables in .an
61d0: 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61   attached databa
61e0: 73 65 20 63 61 6e 6e 6f 74 20 62 65 20 64 72 6f  se cannot be dro
61f0: 70 70 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65  pped.</p>.}...Se
6200: 63 74 69 6f 6e 20 7b 44 52 4f 50 20 54 41 42 4c  ction {DROP TABL
6210: 45 7d 20 64 72 6f 70 74 61 62 6c 65 0a 0a 53 79  E} droptable..Sy
6220: 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e  ntax {sql-comman
6230: 64 7d 20 7b 0a 44 52 4f 50 20 54 41 42 4c 45 20  d} {.DROP TABLE 
6240: 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 0a 7d 0a 0a  <table-name>.}..
6250: 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 44 52  puts {.<p>The DR
6260: 4f 50 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  OP TABLE stateme
6270: 6e 74 20 72 65 6d 6f 76 65 73 20 61 20 74 61 62  nt removes a tab
6280: 6c 65 20 61 64 64 65 64 20 77 69 74 68 20 74 68  le added with th
6290: 65 20 3c 61 20 68 72 65 66 3d 0a 22 23 63 72 65  e <a href=."#cre
62a0: 61 74 65 74 61 62 6c 65 22 3e 43 52 45 41 54 45  atetable">CREATE
62b0: 20 54 41 42 4c 45 3c 2f 61 3e 20 73 74 61 74 65   TABLE</a> state
62c0: 6d 65 6e 74 2e 20 20 54 68 65 20 6e 61 6d 65 20  ment.  The name 
62d0: 73 70 65 63 69 66 69 65 64 20 69 73 20 74 68 65  specified is the
62e0: 0a 74 61 62 6c 65 20 6e 61 6d 65 2e 20 20 49 74  .table name.  It
62f0: 20 69 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20 72   is completely r
6300: 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68 65 20  emoved from the 
6310: 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 20  database schema 
6320: 61 6e 64 20 74 68 65 20 0a 64 69 73 6b 20 66 69  and the .disk fi
6330: 6c 65 2e 20 20 54 68 65 20 74 61 62 6c 65 20 63  le.  The table c
6340: 61 6e 20 6e 6f 74 20 62 65 20 72 65 63 6f 76 65  an not be recove
6350: 72 65 64 2e 20 20 41 6c 6c 20 69 6e 64 69 63 65  red.  All indice
6360: 73 20 61 73 73 6f 63 69 61 74 65 64 20 0a 77 69  s associated .wi
6370: 74 68 20 74 68 65 20 74 61 62 6c 65 20 61 72 65  th the table are
6380: 20 61 6c 73 6f 20 64 65 6c 65 74 65 64 2e 20 20   also deleted.  
6390: 4e 6f 6e 2d 74 65 6d 70 6f 72 61 72 79 20 74 61  Non-temporary ta
63a0: 62 6c 65 73 20 69 6e 20 61 6e 20 61 74 74 61 63  bles in an attac
63b0: 68 65 64 20 0a 64 61 74 61 62 61 73 65 20 63 61  hed .database ca
63c0: 6e 6e 6f 74 20 62 65 20 64 72 6f 70 70 65 64 2e  nnot be dropped.
63d0: 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e  </p>.}...Section
63e0: 20 7b 44 52 4f 50 20 54 52 49 47 47 45 52 7d 20   {DROP TRIGGER} 
63f0: 64 72 6f 70 74 72 69 67 67 65 72 0a 53 79 6e 74  droptrigger.Synt
6400: 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e  ax {sql-statemen
6410: 74 7d 20 7b 0a 44 52 4f 50 20 54 52 49 47 47 45  t} {.DROP TRIGGE
6420: 52 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d  R [<database-nam
6430: 65 3e 20 2e 5d 20 3c 74 72 69 67 67 65 72 2d 6e  e> .] <trigger-n
6440: 61 6d 65 3e 0a 7d 0a 70 75 74 73 20 7b 20 0a 3c  ame>.}.puts { .<
6450: 70 3e 54 68 65 20 44 52 4f 50 20 54 52 49 47 47  p>The DROP TRIGG
6460: 45 52 20 73 74 61 74 65 6d 65 6e 74 20 72 65 6d  ER statement rem
6470: 6f 76 65 73 20 61 20 74 72 69 67 67 65 72 20 63  oves a trigger c
6480: 72 65 61 74 65 64 20 62 79 20 74 68 65 20 0a 3c  reated by the .<
6490: 61 20 68 72 65 66 3d 22 23 63 72 65 61 74 65 74  a href="#createt
64a0: 72 69 67 67 65 72 22 3e 43 52 45 41 54 45 20 54  rigger">CREATE T
64b0: 52 49 47 47 45 52 3c 2f 61 3e 20 73 74 61 74 65  RIGGER</a> state
64c0: 6d 65 6e 74 2e 20 20 54 68 65 20 74 72 69 67 67  ment.  The trigg
64d0: 65 72 20 69 73 20 0a 64 65 6c 65 74 65 64 20 66  er is .deleted f
64e0: 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61 73 65  rom the database
64f0: 20 73 63 68 65 6d 61 2e 20 4e 6f 74 65 20 74 68   schema. Note th
6500: 61 74 20 74 72 69 67 67 65 72 73 20 61 72 65 20  at triggers are 
6510: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 0a 64  automatically .d
6520: 72 6f 70 70 65 64 20 77 68 65 6e 20 74 68 65 20  ropped when the 
6530: 61 73 73 6f 63 69 61 74 65 64 20 74 61 62 6c 65  associated table
6540: 20 69 73 20 64 72 6f 70 70 65 64 2e 20 20 4e 6f   is dropped.  No
6550: 6e 2d 74 65 6d 70 6f 72 61 72 79 20 74 72 69 67  n-temporary trig
6560: 67 65 72 73 20 0a 63 61 6e 6e 6f 74 20 62 65 20  gers .cannot be 
6570: 64 72 6f 70 70 65 64 20 6f 6e 20 61 74 74 61 63  dropped on attac
6580: 68 65 64 20 74 61 62 6c 65 73 2e 3c 2f 70 3e 0a  hed tables.</p>.
6590: 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f  }...Section {DRO
65a0: 50 20 56 49 45 57 7d 20 64 72 6f 70 76 69 65 77  P VIEW} dropview
65b0: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f  ..Syntax {sql-co
65c0: 6d 6d 61 6e 64 7d 20 7b 0a 44 52 4f 50 20 56 49  mmand} {.DROP VI
65d0: 45 57 20 3c 76 69 65 77 2d 6e 61 6d 65 3e 0a 7d  EW <view-name>.}
65e0: 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20  ..puts {.<p>The 
65f0: 44 52 4f 50 20 56 49 45 57 20 73 74 61 74 65 6d  DROP VIEW statem
6600: 65 6e 74 20 72 65 6d 6f 76 65 73 20 61 20 76 69  ent removes a vi
6610: 65 77 20 63 72 65 61 74 65 64 20 62 79 20 74 68  ew created by th
6620: 65 20 3c 61 20 68 72 65 66 3d 0a 22 23 63 72 65  e <a href=."#cre
6630: 61 74 65 76 69 65 77 22 3e 43 52 45 41 54 45 20  ateview">CREATE 
6640: 56 49 45 57 3c 2f 61 3e 20 73 74 61 74 65 6d 65  VIEW</a> stateme
6650: 6e 74 2e 20 20 54 68 65 20 6e 61 6d 65 20 73 70  nt.  The name sp
6660: 65 63 69 66 69 65 64 20 69 73 20 74 68 65 20 0a  ecified is the .
6670: 76 69 65 77 20 6e 61 6d 65 2e 20 20 49 74 20 69  view name.  It i
6680: 73 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74  s removed from t
6690: 68 65 20 64 61 74 61 62 61 73 65 20 73 63 68 65  he database sche
66a0: 6d 61 2c 20 62 75 74 20 6e 6f 20 61 63 74 75 61  ma, but no actua
66b0: 6c 20 64 61 74 61 20 0a 69 6e 20 74 68 65 20 75  l data .in the u
66c0: 6e 64 65 72 6c 79 69 6e 67 20 62 61 73 65 20 74  nderlying base t
66d0: 61 62 6c 65 73 20 69 73 20 6d 6f 64 69 66 69 65  ables is modifie
66e0: 64 2e 20 20 4e 6f 6e 2d 74 65 6d 70 6f 72 61 72  d.  Non-temporar
66f0: 79 20 76 69 65 77 73 20 69 6e 20 0a 61 74 74 61  y views in .atta
6700: 63 68 65 64 20 64 61 74 61 62 61 73 65 73 20 63  ched databases c
6710: 61 6e 6e 6f 74 20 62 65 20 64 72 6f 70 70 65 64  annot be dropped
6720: 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f  .</p>.}...Sectio
6730: 6e 20 45 58 50 4c 41 49 4e 20 65 78 70 6c 61 69  n EXPLAIN explai
6740: 6e 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73  n..Syntax {sql-s
6750: 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 45 58 50 4c  tatement} {.EXPL
6760: 41 49 4e 20 3c 73 71 6c 2d 73 74 61 74 65 6d 65  AIN <sql-stateme
6770: 6e 74 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70  nt>.}..puts {.<p
6780: 3e 54 68 65 20 45 58 50 4c 41 49 4e 20 63 6f 6d  >The EXPLAIN com
6790: 6d 61 6e 64 20 6d 6f 64 69 66 69 65 72 20 69 73  mand modifier is
67a0: 20 61 20 6e 6f 6e 2d 73 74 61 6e 64 61 72 64 20   a non-standard 
67b0: 65 78 74 65 6e 73 69 6f 6e 2e 20 20 54 68 65 0a  extension.  The.
67c0: 69 64 65 61 20 63 6f 6d 65 73 20 66 72 6f 6d 20  idea comes from 
67d0: 61 20 73 69 6d 69 6c 61 72 20 63 6f 6d 6d 61 6e  a similar comman
67e0: 64 20 66 6f 75 6e 64 20 69 6e 20 50 6f 73 74 67  d found in Postg
67f0: 72 65 53 51 4c 2c 20 62 75 74 20 74 68 65 20 6f  reSQL, but the o
6800: 70 65 72 61 74 69 6f 6e 0a 69 73 20 63 6f 6d 70  peration.is comp
6810: 6c 65 74 65 6c 79 20 64 69 66 66 65 72 65 6e 74  letely different
6820: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74 68 65  .</p>..<p>If the
6830: 20 45 58 50 4c 41 49 4e 20 6b 65 79 77 6f 72 64   EXPLAIN keyword
6840: 20 61 70 70 65 61 72 73 20 62 65 66 6f 72 65 20   appears before 
6850: 61 6e 79 20 6f 74 68 65 72 20 53 51 4c 69 74 65  any other SQLite
6860: 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 0a 74 68 65   SQL command.the
6870: 6e 20 69 6e 73 74 65 61 64 20 6f 66 20 61 63 74  n instead of act
6880: 75 61 6c 6c 79 20 65 78 65 63 75 74 69 6e 67 20  ually executing 
6890: 74 68 65 20 63 6f 6d 6d 61 6e 64 2c 20 74 68 65  the command, the
68a0: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
68b0: 77 69 6c 6c 0a 72 65 70 6f 72 74 20 62 61 63 6b  will.report back
68c0: 20 74 68 65 20 73 65 71 75 65 6e 63 65 20 6f 66   the sequence of
68d0: 20 76 69 72 74 75 61 6c 20 6d 61 63 68 69 6e 65   virtual machine
68e0: 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 69 74   instructions it
68f0: 20 77 6f 75 6c 64 20 68 61 76 65 0a 75 73 65 64   would have.used
6900: 20 74 6f 20 65 78 65 63 75 74 65 20 74 68 65 20   to execute the 
6910: 63 6f 6d 6d 61 6e 64 20 68 61 64 20 74 68 65 20  command had the 
6920: 45 58 50 4c 41 49 4e 20 6b 65 79 77 6f 72 64 20  EXPLAIN keyword 
6930: 6e 6f 74 20 62 65 65 6e 20 70 72 65 73 65 6e 74  not been present
6940: 2e 0a 46 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c  ..For additional
6950: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f   information abo
6960: 75 74 20 76 69 72 74 75 61 6c 20 6d 61 63 68 69  ut virtual machi
6970: 6e 65 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 20  ne instructions 
6980: 73 65 65 0a 74 68 65 20 3c 61 20 68 72 65 66 3d  see.the <a href=
6990: 22 61 72 63 68 2e 68 74 6d 6c 22 3e 61 72 63 68  "arch.html">arch
69a0: 69 74 65 63 74 75 72 65 20 64 65 73 63 72 69 70  itecture descrip
69b0: 74 69 6f 6e 3c 2f 61 3e 20 6f 72 20 74 68 65 20  tion</a> or the 
69c0: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 0a 6f 6e  documentation.on
69d0: 20 3c 61 20 68 72 65 66 3d 22 6f 70 63 6f 64 65   <a href="opcode
69e0: 2e 68 74 6d 6c 22 3e 61 76 61 69 6c 61 62 6c 65  .html">available
69f0: 20 6f 70 63 6f 64 65 73 3c 2f 61 3e 20 66 6f 72   opcodes</a> for
6a00: 20 74 68 65 20 76 69 72 74 75 61 6c 20 6d 61 63   the virtual mac
6a10: 68 69 6e 65 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65  hine.</p>.}...Se
6a20: 63 74 69 6f 6e 20 65 78 70 72 65 73 73 69 6f 6e  ction expression
6a30: 20 65 78 70 72 0a 0a 53 79 6e 74 61 78 20 7b 65   expr..Syntax {e
6a40: 78 70 72 7d 20 7b 0a 3c 65 78 70 72 3e 20 3c 62  xpr} {.<expr> <b
6a50: 69 6e 61 72 79 2d 6f 70 3e 20 3c 65 78 70 72 3e  inary-op> <expr>
6a60: 20 7c 0a 3c 65 78 70 72 3e 20 3c 6c 69 6b 65 2d   |.<expr> <like-
6a70: 6f 70 3e 20 3c 65 78 70 72 3e 20 7c 0a 3c 75 6e  op> <expr> |.<un
6a80: 61 72 79 2d 6f 70 3e 20 3c 65 78 70 72 3e 20 7c  ary-op> <expr> |
6a90: 0a 28 20 3c 65 78 70 72 3e 20 29 20 7c 0a 3c 63  .( <expr> ) |.<c
6aa0: 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 7c 0a 3c 74  olumn-name> |.<t
6ab0: 61 62 6c 65 2d 6e 61 6d 65 3e 20 2e 20 3c 63 6f  able-name> . <co
6ac0: 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 7c 0a 3c 64 61  lumn-name> |.<da
6ad0: 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 20 3c  tabase-name> . <
6ae0: 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 2e 20 3c 63  table-name> . <c
6af0: 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 7c 0a 3c 6c  olumn-name> |.<l
6b00: 69 74 65 72 61 6c 2d 76 61 6c 75 65 3e 20 7c 0a  iteral-value> |.
6b10: 3c 66 75 6e 63 74 69 6f 6e 2d 6e 61 6d 65 3e 20  <function-name> 
6b20: 28 20 3c 65 78 70 72 2d 6c 69 73 74 3e 20 7c 20  ( <expr-list> | 
6b30: 53 54 41 52 20 29 20 7c 0a 3c 65 78 70 72 3e 20  STAR ) |.<expr> 
6b40: 28 2b 29 20 7c 0a 3c 65 78 70 72 3e 20 49 53 4e  (+) |.<expr> ISN
6b50: 55 4c 4c 20 7c 0a 3c 65 78 70 72 3e 20 4e 4f 54  ULL |.<expr> NOT
6b60: 4e 55 4c 4c 20 7c 0a 3c 65 78 70 72 3e 20 5b 4e  NULL |.<expr> [N
6b70: 4f 54 5d 20 42 45 54 57 45 45 4e 20 3c 65 78 70  OT] BETWEEN <exp
6b80: 72 3e 20 41 4e 44 20 3c 65 78 70 72 3e 20 7c 0a  r> AND <expr> |.
6b90: 3c 65 78 70 72 3e 20 5b 4e 4f 54 5d 20 49 4e 20  <expr> [NOT] IN 
6ba0: 28 20 3c 76 61 6c 75 65 2d 6c 69 73 74 3e 20 29  ( <value-list> )
6bb0: 20 7c 0a 3c 65 78 70 72 3e 20 5b 4e 4f 54 5d 20   |.<expr> [NOT] 
6bc0: 49 4e 20 28 20 3c 73 65 6c 65 63 74 2d 73 74 61  IN ( <select-sta
6bd0: 74 65 6d 65 6e 74 3e 20 29 20 7c 0a 28 20 3c 73  tement> ) |.( <s
6be0: 65 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e  elect-statement>
6bf0: 20 29 20 7c 0a 43 41 53 45 20 5b 3c 65 78 70 72   ) |.CASE [<expr
6c00: 3e 5d 20 4c 50 20 57 48 45 4e 20 3c 65 78 70 72  >] LP WHEN <expr
6c10: 3e 20 54 48 45 4e 20 3c 65 78 70 72 3e 20 52 50  > THEN <expr> RP
6c20: 50 4c 55 53 20 5b 45 4c 53 45 20 3c 65 78 70 72  PLUS [ELSE <expr
6c30: 3e 5d 20 45 4e 44 0a 7d 20 7b 6c 69 6b 65 2d 6f  >] END.} {like-o
6c40: 70 7d 20 7b 0a 4c 49 4b 45 20 7c 20 47 4c 4f 42  p} {.LIKE | GLOB
6c50: 20 7c 20 4e 4f 54 20 4c 49 4b 45 20 7c 20 4e 4f   | NOT LIKE | NO
6c60: 54 20 47 4c 4f 42 0a 7d 0a 0a 70 75 74 73 20 7b  T GLOB.}..puts {
6c70: 0a 3c 70 3e 54 68 69 73 20 73 65 63 74 69 6f 6e  .<p>This section
6c80: 20 69 73 20 64 69 66 66 65 72 65 6e 74 20 66 72   is different fr
6c90: 6f 6d 20 74 68 65 20 6f 74 68 65 72 73 2e 20 20  om the others.  
6ca0: 4d 6f 73 74 20 6f 74 68 65 72 20 73 65 63 74 69  Most other secti
6cb0: 6f 6e 73 20 6f 66 0a 74 68 69 73 20 64 6f 63 75  ons of.this docu
6cc0: 6d 65 6e 74 20 74 61 6c 6b 73 20 61 62 6f 75 74  ment talks about
6cd0: 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 53 51   a particular SQ
6ce0: 4c 20 63 6f 6d 6d 61 6e 64 2e 20 20 54 68 69 73  L command.  This
6cf0: 20 73 65 63 74 69 6f 6e 20 64 6f 65 73 0a 6e 6f   section does.no
6d00: 74 20 74 61 6c 6b 20 61 62 6f 75 74 20 61 20 73  t talk about a s
6d10: 74 61 6e 64 61 6c 6f 6e 65 20 63 6f 6d 6d 61 6e  tandalone comman
6d20: 64 20 62 75 74 20 61 62 6f 75 74 20 22 65 78 70  d but about "exp
6d30: 72 65 73 73 69 6f 6e 73 22 20 77 68 69 63 68 20  ressions" which 
6d40: 61 72 65 20 0a 73 75 62 63 6f 6d 70 6f 6e 65 6e  are .subcomponen
6d50: 74 20 6f 66 20 6d 6f 73 74 20 6f 74 68 65 72 20  t of most other 
6d60: 63 6f 6d 6d 61 6e 64 73 2e 3c 2f 70 3e 0a 0a 3c  commands.</p>..<
6d70: 70 3e 53 51 4c 69 74 65 20 75 6e 64 65 72 73 74  p>SQLite underst
6d80: 61 6e 64 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69  ands the followi
6d90: 6e 67 20 62 69 6e 61 72 79 20 6f 70 65 72 61 74  ng binary operat
6da0: 6f 72 73 2c 20 69 6e 20 6f 72 64 65 72 20 66 72  ors, in order fr
6db0: 6f 6d 0a 68 69 67 68 65 73 74 20 74 6f 20 6c 6f  om.highest to lo
6dc0: 77 65 73 74 20 70 72 65 63 65 64 65 6e 63 65 3a  west precedence:
6dd0: 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
6de0: 65 3e 3c 70 72 65 3e 0a 3c 66 6f 6e 74 20 63 6f  e><pre>.<font co
6df0: 6c 6f 72 3d 22 23 32 63 32 63 66 30 22 3e 3c 62  lor="#2c2cf0"><b
6e00: 69 67 3e 7c 7c 0a 2a 20 20 20 20 2f 20 20 20 20  ig>||.*    /    
6e10: 25 0a 2b 20 20 20 20 2d 0a 26 6c 74 3b 26 6c 74  %.+    -.&lt;&lt
6e20: 3b 20 20 20 26 67 74 3b 26 67 74 3b 20 20 20 26  ;   &gt;&gt;   &
6e30: 61 6d 70 3b 20 20 20 20 7c 0a 26 6c 74 3b 20 20  amp;    |.&lt;  
6e40: 20 20 26 6c 74 3b 3d 20 20 20 26 67 74 3b 20 20    &lt;=   &gt;  
6e50: 20 20 26 67 74 3b 3d 0a 3d 20 20 20 20 3d 3d 20    &gt;=.=    == 
6e60: 20 20 21 3d 20 20 20 26 6c 74 3b 26 67 74 3b 20    !=   &lt;&gt; 
6e70: 20 20 3c 2f 62 69 67 3e 49 4e 0a 41 4e 44 20 20    </big>IN.AND  
6e80: 20 0a 4f 52 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70 72   .OR</font>.</pr
6e90: 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  e></blockquote>.
6ea0: 0a 3c 70 3e 53 75 70 70 6f 72 74 65 64 20 75 6e  .<p>Supported un
6eb0: 61 72 79 20 6f 70 65 72 61 74 65 72 73 20 61 72  ary operaters ar
6ec0: 65 20 74 68 65 73 65 3a 3c 2f 70 3e 0a 0a 3c 62  e these:</p>..<b
6ed0: 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a  lockquote><pre>.
6ee0: 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23 32 63  <font color="#2c
6ef0: 32 63 66 30 22 3e 3c 62 69 67 3e 2d 20 20 20 20  2cf0"><big>-    
6f00: 2b 20 20 20 20 21 20 20 20 20 7e 3c 2f 62 69 67  +    !    ~</big
6f10: 3e 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70 72 65 3e 3c  ></font>.</pre><
6f20: 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70  /blockquote>..<p
6f30: 3e 41 6e 79 20 53 51 4c 69 74 65 20 76 61 6c 75  >Any SQLite valu
6f40: 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 61 73  e can be used as
6f50: 20 70 61 72 74 20 6f 66 20 61 6e 20 65 78 70 72   part of an expr
6f60: 65 73 73 69 6f 6e 2e 20 20 0a 46 6f 72 20 61 72  ession.  .For ar
6f70: 69 74 68 6d 65 74 69 63 20 6f 70 65 72 61 74 69  ithmetic operati
6f80: 6f 6e 73 2c 20 69 6e 74 65 67 65 72 73 20 61 72  ons, integers ar
6f90: 65 20 74 72 65 61 74 65 64 20 61 73 20 69 6e 74  e treated as int
6fa0: 65 67 65 72 73 2e 0a 53 74 72 69 6e 67 73 20 61  egers..Strings a
6fb0: 72 65 20 66 69 72 73 74 20 63 6f 6e 76 65 72 74  re first convert
6fc0: 65 64 20 74 6f 20 72 65 61 6c 20 6e 75 6d 62 65  ed to real numbe
6fd0: 72 73 20 75 73 69 6e 67 20 3c 62 3e 61 74 6f 66  rs using <b>atof
6fe0: 28 29 3c 2f 62 3e 2e 0a 46 6f 72 20 63 6f 6d 70  ()</b>..For comp
6ff0: 61 72 69 73 6f 6e 20 6f 70 65 72 61 74 6f 72 73  arison operators
7000: 2c 20 6e 75 6d 62 65 72 73 20 63 6f 6d 70 61 72  , numbers compar
7010: 65 20 61 73 20 6e 75 6d 62 65 72 73 20 61 6e 64  e as numbers and
7020: 20 73 74 72 69 6e 67 73 0a 63 6f 6d 70 61 72 65   strings.compare
7030: 20 75 73 69 6e 67 20 74 68 65 20 3c 62 3e 73 74   using the <b>st
7040: 72 63 6d 70 28 29 3c 2f 62 3e 20 66 75 6e 63 74  rcmp()</b> funct
7050: 69 6f 6e 2e 0a 4e 6f 74 65 20 74 68 61 74 20 74  ion..Note that t
7060: 68 65 72 65 20 61 72 65 20 74 77 6f 20 76 61 72  here are two var
7070: 69 61 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 65  iations of the e
7080: 71 75 61 6c 73 20 61 6e 64 20 6e 6f 74 20 65 71  quals and not eq
7090: 75 61 6c 73 0a 6f 70 65 72 61 74 6f 72 73 2e 20  uals.operators. 
70a0: 20 45 71 75 61 6c 73 20 63 61 6e 20 62 65 20 65   Equals can be e
70b0: 69 74 68 65 72 7d 0a 70 75 74 73 20 22 5b 4f 70  ither}.puts "[Op
70c0: 65 72 61 74 6f 72 20 3d 5d 20 6f 72 20 5b 4f 70  erator =] or [Op
70d0: 65 72 61 74 6f 72 20 3d 3d 5d 2e 0a 54 68 65 20  erator ==]..The 
70e0: 6e 6f 6e 2d 65 71 75 61 6c 73 20 6f 70 65 72 61  non-equals opera
70f0: 74 6f 72 20 63 61 6e 20 62 65 20 65 69 74 68 65  tor can be eithe
7100: 72 0a 5b 4f 70 65 72 61 74 6f 72 20 21 3d 5d 20  r.[Operator !=] 
7110: 6f 72 20 5b 4f 70 65 72 61 74 6f 72 20 7b 26 6c  or [Operator {&l
7120: 74 3b 26 67 74 3b 7d 5d 2e 0a 54 68 65 20 5b 4f  t;&gt;}]..The [O
7130: 70 65 72 61 74 6f 72 20 7c 7c 5d 20 6f 70 65 72  perator ||] oper
7140: 61 74 6f 72 20 69 73 20 5c 22 63 6f 6e 63 61 74  ator is \"concat
7150: 65 6e 61 74 65 5c 22 20 2d 20 69 74 20 6a 6f 69  enate\" - it joi
7160: 6e 73 20 74 6f 67 65 74 68 65 72 0a 74 68 65 20  ns together.the 
7170: 74 77 6f 20 73 74 72 69 6e 67 73 20 6f 66 20 69  two strings of i
7180: 74 73 20 6f 70 65 72 61 6e 64 73 2e 0a 54 68 65  ts operands..The
7190: 20 6f 70 65 72 61 74 6f 72 20 5b 4f 70 65 72 61   operator [Opera
71a0: 74 6f 72 20 25 5d 20 6f 75 74 70 75 74 73 20 74  tor %] outputs t
71b0: 68 65 20 72 65 6d 61 69 6e 64 65 72 20 6f 66 20  he remainder of 
71c0: 69 74 73 20 6c 65 66 74 20 0a 6f 70 65 72 61 6e  its left .operan
71d0: 64 20 6d 6f 64 75 6c 6f 20 69 74 73 20 72 69 67  d modulo its rig
71e0: 68 74 20 6f 70 65 72 61 6e 64 2e 3c 2f 70 3e 22  ht operand.</p>"
71f0: 0a 70 75 74 73 20 7b 0a 0a 3c 61 20 6e 61 6d 65  .puts {..<a name
7200: 3d 22 6c 69 6b 65 22 3e 3c 2f 61 3e 0a 3c 70 3e  ="like"></a>.<p>
7210: 54 68 65 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f  The LIKE operato
7220: 72 20 64 6f 65 73 20 61 20 77 69 6c 64 63 61 72  r does a wildcar
7230: 64 20 63 6f 6d 70 61 72 69 73 69 6f 6e 2e 20 20  d comparision.  
7240: 54 68 65 20 6f 70 65 72 61 6e 64 0a 74 6f 20 74  The operand.to t
7250: 68 65 20 72 69 67 68 74 20 63 6f 6e 74 61 69 6e  he right contain
7260: 73 20 74 68 65 20 77 69 6c 64 63 61 72 64 73 2e  s the wildcards.
7270: 7d 0a 70 75 74 73 20 22 41 20 70 65 72 63 65 6e  }.puts "A percen
7280: 74 20 73 79 6d 62 6f 6c 20 5b 4f 70 65 72 61 74  t symbol [Operat
7290: 6f 72 20 25 5d 20 69 6e 20 74 68 65 20 72 69 67  or %] in the rig
72a0: 68 74 20 6f 70 65 72 61 6e 64 0a 6d 61 74 63 68  ht operand.match
72b0: 65 73 20 61 6e 79 20 73 65 71 75 65 6e 63 65 20  es any sequence 
72c0: 6f 66 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20  of zero or more 
72d0: 63 68 61 72 61 63 74 65 72 73 20 6f 6e 20 74 68  characters on th
72e0: 65 20 6c 65 66 74 2e 0a 41 6e 20 75 6e 64 65 72  e left..An under
72f0: 73 63 6f 72 65 20 5b 4f 70 65 72 61 74 6f 72 20  score [Operator 
7300: 5f 5d 20 6f 6e 20 74 68 65 20 72 69 67 68 74 0a  _] on the right.
7310: 6d 61 74 63 68 65 73 20 61 6e 79 20 73 69 6e 67  matches any sing
7320: 6c 65 20 63 68 61 72 61 63 74 65 72 20 6f 6e 20  le character on 
7330: 74 68 65 20 6c 65 66 74 2e 22 0a 70 75 74 73 20  the left.".puts 
7340: 7b 54 68 65 20 4c 49 4b 45 20 6f 70 65 72 61 74  {The LIKE operat
7350: 6f 72 20 69 73 0a 6e 6f 74 20 63 61 73 65 20 73  or is.not case s
7360: 65 6e 73 69 74 69 76 65 20 61 6e 64 20 77 69 6c  ensitive and wil
7370: 6c 20 6d 61 74 63 68 20 75 70 70 65 72 20 63 61  l match upper ca
7380: 73 65 20 63 68 61 72 61 63 74 65 72 73 20 6f 6e  se characters on
7390: 20 6f 6e 65 0a 73 69 64 65 20 61 67 61 69 6e 73   one.side agains
73a0: 74 20 6c 6f 77 65 72 20 63 61 73 65 20 63 68 61  t lower case cha
73b0: 72 61 63 74 65 72 73 20 6f 6e 20 74 68 65 20 6f  racters on the o
73c0: 74 68 65 72 2e 0a 28 41 20 62 75 67 3a 20 53 51  ther..(A bug: SQ
73d0: 4c 69 74 65 20 6f 6e 6c 79 20 75 6e 64 65 72 73  Lite only unders
73e0: 74 61 6e 64 73 20 75 70 70 65 72 2f 6c 6f 77 65  tands upper/lowe
73f0: 72 20 63 61 73 65 20 66 6f 72 20 37 2d 62 69 74  r case for 7-bit
7400: 20 4c 61 74 69 6e 0a 63 68 61 72 61 63 74 65 72   Latin.character
7410: 73 2e 20 20 48 65 6e 63 65 20 74 68 65 20 4c 49  s.  Hence the LI
7420: 4b 45 20 6f 70 65 72 61 74 6f 72 20 69 73 20 63  KE operator is c
7430: 61 73 65 20 73 65 6e 73 69 74 69 76 65 20 66 6f  ase sensitive fo
7440: 72 0a 38 2d 62 69 74 20 69 73 6f 38 38 35 39 20  r.8-bit iso8859 
7450: 63 68 61 72 61 63 74 65 72 73 20 6f 72 20 55 54  characters or UT
7460: 46 2d 38 20 63 68 61 72 61 63 74 65 72 73 2e 20  F-8 characters. 
7470: 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 0a 74 68   For example,.th
7480: 65 20 65 78 70 72 65 73 73 69 6f 6e 20 3c 62 3e  e expression <b>
7490: 27 61 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e 62  'a'&nbsp;LIKE&nb
74a0: 73 70 3b 27 41 27 3c 2f 62 3e 20 69 73 20 54 52  sp;'A'</b> is TR
74b0: 55 45 20 62 75 74 0a 3c 62 3e 27 26 61 65 6c 69  UE but.<b>'&aeli
74c0: 67 3b 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e 62  g;'&nbsp;LIKE&nb
74d0: 73 70 3b 27 26 41 45 6c 69 67 3b 27 3c 2f 62 3e  sp;'&AElig;'</b>
74e0: 20 69 73 20 46 41 4c 53 45 2e 29 2e 20 20 54 68   is FALSE.).  Th
74f0: 65 20 69 6e 66 69 78 20 0a 4c 49 4b 45 20 6f 70  e infix .LIKE op
7500: 65 72 61 74 6f 72 20 69 73 20 69 64 65 6e 74 69  erator is identi
7510: 63 61 6c 20 74 68 65 20 75 73 65 72 20 66 75 6e  cal the user fun
7520: 63 74 69 6f 6e 20 3c 61 20 68 72 65 66 3d 22 23  ction <a href="#
7530: 6c 69 6b 65 46 75 6e 63 22 3e 0a 6c 69 6b 65 28  likeFunc">.like(
7540: 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69  <i>X</i>,<i>Y</i
7550: 3e 29 3c 2f 61 3e 2e 0a 3c 2f 70 3e 0a 0a 3c 61  >)</a>..</p>..<a
7560: 20 6e 61 6d 65 3d 22 67 6c 6f 62 22 3e 3c 2f 61   name="glob"></a
7570: 3e 0a 3c 70 3e 54 68 65 20 47 4c 4f 42 20 6f 70  >.<p>The GLOB op
7580: 65 72 61 74 6f 72 20 69 73 20 73 69 6d 69 6c 61  erator is simila
7590: 72 20 74 6f 20 4c 49 4b 45 20 62 75 74 20 75 73  r to LIKE but us
75a0: 65 73 20 74 68 65 20 55 6e 69 78 0a 66 69 6c 65  es the Unix.file
75b0: 20 67 6c 6f 62 62 69 6e 67 20 73 79 6e 74 61 78   globbing syntax
75c0: 20 66 6f 72 20 69 74 73 20 77 69 6c 64 63 61 72   for its wildcar
75d0: 64 73 2e 20 20 41 6c 73 6f 2c 20 47 4c 4f 42 20  ds.  Also, GLOB 
75e0: 69 73 20 63 61 73 65 0a 73 65 6e 73 69 74 69 76  is case.sensitiv
75f0: 65 2c 20 75 6e 6c 69 6b 65 20 4c 49 4b 45 2e 20  e, unlike LIKE. 
7600: 20 42 6f 74 68 20 47 4c 4f 42 20 61 6e 64 20 4c   Both GLOB and L
7610: 49 4b 45 20 6d 61 79 20 62 65 20 70 72 65 63 65  IKE may be prece
7620: 64 65 64 20 62 79 0a 74 68 65 20 4e 4f 54 20 6b  ded by.the NOT k
7630: 65 79 77 6f 72 64 20 74 6f 20 69 6e 76 65 72 74  eyword to invert
7640: 20 74 68 65 20 73 65 6e 73 65 20 6f 66 20 74 68   the sense of th
7650: 65 20 74 65 73 74 2e 20 20 54 68 65 20 69 6e 66  e test.  The inf
7660: 69 78 20 47 4c 4f 42 20 0a 6f 70 65 72 61 74 6f  ix GLOB .operato
7670: 72 20 69 73 20 69 64 65 6e 74 69 63 61 6c 20 74  r is identical t
7680: 68 65 20 75 73 65 72 20 66 75 6e 63 74 69 6f 6e  he user function
7690: 20 3c 61 20 68 72 65 66 3d 22 23 67 6c 6f 62 46   <a href="#globF
76a0: 75 6e 63 22 3e 0a 67 6c 6f 62 28 3c 69 3e 58 3c  unc">.glob(<i>X<
76b0: 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 61  /i>,<i>Y</i>)</a
76c0: 3e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 63 6f 6c  >.</p>..<p>A col
76d0: 75 6d 6e 20 6e 61 6d 65 20 63 61 6e 20 62 65 20  umn name can be 
76e0: 61 6e 79 20 6f 66 20 74 68 65 20 6e 61 6d 65 73  any of the names
76f0: 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20   defined in the 
7700: 43 52 45 41 54 45 20 54 41 42 4c 45 0a 73 74 61  CREATE TABLE.sta
7710: 74 65 6d 65 6e 74 20 6f 72 20 6f 6e 65 20 6f 66  tement or one of
7720: 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73   the following s
7730: 70 65 63 69 61 6c 20 69 64 65 6e 74 69 66 69 65  pecial identifie
7740: 72 73 3a 20 22 3c 62 3e 52 4f 57 49 44 3c 2f 62  rs: "<b>ROWID</b
7750: 3e 22 2c 0a 22 3c 62 3e 4f 49 44 3c 2f 62 3e 22  >",."<b>OID</b>"
7760: 2c 20 6f 72 20 22 3c 62 3e 5f 52 4f 57 49 44 5f  , or "<b>_ROWID_
7770: 3c 2f 62 3e 22 2e 0a 54 68 65 73 65 20 73 70 65  </b>"..These spe
7780: 63 69 61 6c 20 69 64 65 6e 74 69 66 69 65 72 73  cial identifiers
7790: 20 61 6c 6c 20 64 65 73 63 72 69 62 65 20 74 68   all describe th
77a0: 65 0a 75 6e 69 71 75 65 20 72 61 6e 64 6f 6d 20  e.unique random 
77b0: 69 6e 74 65 67 65 72 20 6b 65 79 20 28 74 68 65  integer key (the
77c0: 20 22 72 6f 77 20 6b 65 79 22 29 20 61 73 73 6f   "row key") asso
77d0: 63 69 61 74 65 64 20 77 69 74 68 20 65 76 65 72  ciated with ever
77e0: 79 20 0a 72 6f 77 20 6f 66 20 65 76 65 72 79 20  y .row of every 
77f0: 74 61 62 6c 65 2e 0a 54 68 65 20 73 70 65 63 69  table..The speci
7800: 61 6c 20 69 64 65 6e 74 69 66 69 65 72 73 20 6f  al identifiers o
7810: 6e 6c 79 20 72 65 66 65 72 20 74 6f 20 74 68 65  nly refer to the
7820: 20 72 6f 77 20 6b 65 79 20 69 66 20 74 68 65 20   row key if the 
7830: 43 52 45 41 54 45 20 54 41 42 4c 45 0a 73 74 61  CREATE TABLE.sta
7840: 74 65 6d 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20  tement does not 
7850: 64 65 66 69 6e 65 20 61 20 72 65 61 6c 20 63 6f  define a real co
7860: 6c 75 6d 6e 20 77 69 74 68 20 74 68 65 20 73 61  lumn with the sa
7870: 6d 65 20 6e 61 6d 65 2e 20 20 52 6f 77 20 6b 65  me name.  Row ke
7880: 79 73 0a 61 63 74 20 6c 69 6b 65 20 72 65 61 64  ys.act like read
7890: 2d 6f 6e 6c 79 20 63 6f 6c 75 6d 6e 73 2e 20 20  -only columns.  
78a0: 41 20 72 6f 77 20 6b 65 79 20 63 61 6e 20 62 65  A row key can be
78b0: 20 75 73 65 64 20 61 6e 79 77 68 65 72 65 20 61   used anywhere a
78c0: 20 72 65 67 75 6c 61 72 0a 63 6f 6c 75 6d 6e 20   regular.column 
78d0: 63 61 6e 20 62 65 20 75 73 65 64 2c 20 65 78 63  can be used, exc
78e0: 65 70 74 20 74 68 61 74 20 79 6f 75 20 63 61 6e  ept that you can
78f0: 6e 6f 74 20 63 68 61 6e 67 65 20 74 68 65 20 76  not change the v
7900: 61 6c 75 65 0a 6f 66 20 61 20 72 6f 77 20 6b 65  alue.of a row ke
7910: 79 20 69 6e 20 61 6e 20 55 50 44 41 54 45 20 6f  y in an UPDATE o
7920: 72 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65  r INSERT stateme
7930: 6e 74 2e 0a 22 53 45 4c 45 43 54 20 2a 20 2e 2e  nt.."SELECT * ..
7940: 2e 22 20 64 6f 65 73 20 6e 6f 74 20 72 65 74 75  ." does not retu
7950: 72 6e 20 74 68 65 20 72 6f 77 20 6b 65 79 2e 3c  rn the row key.<
7960: 2f 70 3e 0a 0a 3c 70 3e 53 51 4c 69 74 65 20 73  /p>..<p>SQLite s
7970: 75 70 70 6f 72 74 73 20 61 20 6d 69 6e 69 6d 61  upports a minima
7980: 6c 20 4f 72 61 63 6c 65 38 20 6f 75 74 65 72 20  l Oracle8 outer 
7990: 6a 6f 69 6e 20 62 65 68 61 76 69 6f 72 2e 20 41  join behavior. A
79a0: 20 63 6f 6c 75 6d 6e 20 0a 65 78 70 72 65 73 73   column .express
79b0: 69 6f 6e 20 6f 66 20 74 68 65 20 66 6f 72 6d 20  ion of the form 
79c0: 22 63 6f 6c 75 6d 6e 22 20 6f 72 20 22 74 61 62  "column" or "tab
79d0: 6c 65 2e 63 6f 6c 75 6d 6e 22 20 63 61 6e 20 62  le.column" can b
79e0: 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 0a 74  e followed by .t
79f0: 68 65 20 73 70 65 63 69 61 6c 20 22 3c 62 3e 28  he special "<b>(
7a00: 2b 29 3c 2f 62 3e 22 20 6f 70 65 72 61 74 6f 72  +)</b>" operator
7a10: 2e 20 20 49 66 20 74 68 65 20 74 61 62 6c 65 20  .  If the table 
7a20: 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20 65 78  of the column ex
7a30: 70 72 65 73 73 69 6f 6e 20 0a 69 73 20 74 68 65  pression .is the
7a40: 20 73 65 63 6f 6e 64 20 6f 72 20 73 75 62 73 65   second or subse
7a50: 71 75 65 6e 74 20 74 61 62 6c 65 20 69 6e 20 61  quent table in a
7a60: 20 6a 6f 69 6e 2c 20 74 68 65 6e 20 74 68 61 74   join, then that
7a70: 20 74 61 62 6c 65 20 62 65 63 6f 6d 65 73 20 0a   table becomes .
7a80: 74 68 65 20 6c 65 66 74 20 74 61 62 6c 65 20 69  the left table i
7a90: 6e 20 61 20 4c 45 46 54 20 4f 55 54 45 52 20 4a  n a LEFT OUTER J
7aa0: 4f 49 4e 2e 20 20 54 68 65 20 65 78 70 72 65 73  OIN.  The expres
7ab0: 73 69 6f 6e 20 74 68 61 74 20 75 73 65 73 20 74  sion that uses t
7ac0: 68 61 74 20 0a 74 61 62 6c 65 20 62 65 63 6f 6d  hat .table becom
7ad0: 65 73 20 70 61 72 74 20 6f 66 20 74 68 65 20 4f  es part of the O
7ae0: 4e 20 63 6c 61 75 73 65 20 66 6f 72 20 74 68 65  N clause for the
7af0: 20 6a 6f 69 6e 2e 0a 54 68 65 20 65 78 61 63 74   join..The exact
7b00: 20 4f 72 61 63 6c 65 38 20 62 65 68 61 76 69 6f   Oracle8 behavio
7b10: 72 20 69 73 20 6e 6f 74 20 69 6d 70 6c 65 6d 65  r is not impleme
7b20: 6e 74 65 64 2c 20 62 75 74 20 69 74 20 69 73 20  nted, but it is 
7b30: 70 6f 73 73 69 62 6c 65 20 74 6f 20 0a 63 6f 6e  possible to .con
7b40: 73 74 72 75 63 74 20 71 75 65 72 69 65 73 20 74  struct queries t
7b50: 68 61 74 20 77 69 6c 6c 20 77 6f 72 6b 20 63 6f  hat will work co
7b60: 72 72 65 63 74 6c 79 20 66 6f 72 20 62 6f 74 68  rrectly for both
7b70: 20 53 51 4c 69 74 65 20 61 6e 64 20 4f 72 61 63   SQLite and Orac
7b80: 6c 65 38 2e 3c 2f 70 3e 0a 0a 3c 70 3e 53 45 4c  le8.</p>..<p>SEL
7b90: 45 43 54 20 73 74 61 74 65 6d 65 6e 74 73 20 63  ECT statements c
7ba0: 61 6e 20 61 70 70 65 61 72 20 69 6e 20 65 78 70  an appear in exp
7bb0: 72 65 73 73 69 6f 6e 73 20 61 73 20 65 69 74 68  ressions as eith
7bc0: 65 72 20 74 68 65 0a 72 69 67 68 74 2d 68 61 6e  er the.right-han
7bd0: 64 20 6f 70 65 72 61 6e 64 20 6f 66 20 74 68 65  d operand of the
7be0: 20 49 4e 20 6f 70 65 72 61 74 6f 72 20 6f 72 20   IN operator or 
7bf0: 61 73 20 61 20 73 63 61 6c 61 72 20 71 75 61 6e  as a scalar quan
7c00: 74 69 74 79 2e 0a 49 6e 20 62 6f 74 68 20 63 61  tity..In both ca
7c10: 73 65 73 2c 20 74 68 65 20 53 45 4c 45 43 54 20  ses, the SELECT 
7c20: 73 68 6f 75 6c 64 20 68 61 76 65 20 6f 6e 6c 79  should have only
7c30: 20 61 20 73 69 6e 67 6c 65 20 63 6f 6c 75 6d 6e   a single column
7c40: 20 69 6e 20 69 74 73 0a 72 65 73 75 6c 74 2e 20   in its.result. 
7c50: 20 43 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54   Compound SELECT
7c60: 73 20 28 63 6f 6e 6e 65 63 74 65 64 20 77 69 74  s (connected wit
7c70: 68 20 6b 65 79 77 6f 72 64 73 20 6c 69 6b 65 20  h keywords like 
7c80: 55 4e 49 4f 4e 20 6f 72 0a 45 58 43 45 50 54 29  UNION or.EXCEPT)
7c90: 20 61 72 65 20 61 6c 6c 6f 77 65 64 2e 0a 41 20   are allowed..A 
7ca0: 53 45 4c 45 43 54 20 69 6e 20 61 6e 20 65 78 70  SELECT in an exp
7cb0: 72 65 73 73 69 6f 6e 20 69 73 20 65 76 61 6c 75  ression is evalu
7cc0: 61 74 65 64 20 6f 6e 63 65 20 62 65 66 6f 72 65  ated once before
7cd0: 20 61 6e 79 20 6f 74 68 65 72 20 70 72 6f 63 65   any other proce
7ce0: 73 73 69 6e 67 0a 69 73 20 70 65 72 66 6f 72 6d  ssing.is perform
7cf0: 65 64 2c 20 73 6f 20 6e 6f 6e 65 20 6f 66 20 74  ed, so none of t
7d00: 68 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20 77  he expressions w
7d10: 69 74 68 69 6e 20 74 68 65 20 73 65 6c 65 63 74  ithin the select
7d20: 20 69 74 73 65 6c 66 20 63 61 6e 0a 72 65 66 65   itself can.refe
7d30: 72 20 74 6f 20 71 75 61 6e 74 69 74 69 65 73 20  r to quantities 
7d40: 69 6e 20 74 68 65 20 63 6f 6e 74 61 69 6e 69 6e  in the containin
7d50: 67 20 65 78 70 72 65 73 73 69 6f 6e 2e 3c 2f 70  g expression.</p
7d60: 3e 0a 0a 3c 70 3e 57 68 65 6e 20 61 20 53 45 4c  >..<p>When a SEL
7d70: 45 43 54 20 69 73 20 74 68 65 20 72 69 67 68 74  ECT is the right
7d80: 20 6f 70 65 72 61 6e 64 20 6f 66 20 74 68 65 20   operand of the 
7d90: 49 4e 20 6f 70 65 72 61 74 6f 72 2c 20 74 68 65  IN operator, the
7da0: 20 49 4e 0a 6f 70 65 72 61 74 6f 72 20 72 65 74   IN.operator ret
7db0: 75 72 6e 73 20 54 52 55 45 20 69 66 20 74 68 65  urns TRUE if the
7dc0: 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 20 6c   result of the l
7dd0: 65 66 74 20 6f 70 65 72 61 6e 64 20 69 73 20 61  eft operand is a
7de0: 6e 79 20 6f 66 0a 74 68 65 20 76 61 6c 75 65 73  ny of.the values
7df0: 20 67 65 6e 65 72 61 74 65 64 20 62 79 20 74 68   generated by th
7e00: 65 20 73 65 6c 65 63 74 2e 20 20 54 68 65 20 49  e select.  The I
7e10: 4e 20 6f 70 65 72 61 74 6f 72 20 6d 61 79 20 62  N operator may b
7e20: 65 20 70 72 65 63 65 64 65 64 0a 62 79 20 74 68  e preceded.by th
7e30: 65 20 4e 4f 54 20 6b 65 79 77 6f 72 64 20 74 6f  e NOT keyword to
7e40: 20 69 6e 76 65 72 74 20 74 68 65 20 73 65 6e 73   invert the sens
7e50: 65 20 6f 66 20 74 68 65 20 74 65 73 74 2e 3c 2f  e of the test.</
7e60: 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20 61 20 53 45  p>..<p>When a SE
7e70: 4c 45 43 54 20 61 70 70 65 61 72 73 20 77 69 74  LECT appears wit
7e80: 68 69 6e 20 61 6e 20 65 78 70 72 65 73 73 69 6f  hin an expressio
7e90: 6e 20 62 75 74 20 69 73 20 6e 6f 74 20 74 68 65  n but is not the
7ea0: 20 72 69 67 68 74 0a 6f 70 65 72 61 6e 64 20 6f   right.operand o
7eb0: 66 20 61 6e 20 49 4e 20 6f 70 65 72 61 74 6f 72  f an IN operator
7ec0: 2c 20 74 68 65 6e 20 74 68 65 20 66 69 72 73 74  , then the first
7ed0: 20 72 6f 77 20 6f 66 20 74 68 65 20 72 65 73 75   row of the resu
7ee0: 6c 74 20 6f 66 20 74 68 65 0a 53 45 4c 45 43 54  lt of the.SELECT
7ef0: 20 62 65 63 6f 6d 65 73 20 74 68 65 20 76 61 6c   becomes the val
7f00: 75 65 20 75 73 65 64 20 69 6e 20 74 68 65 20 65  ue used in the e
7f10: 78 70 72 65 73 73 69 6f 6e 2e 20 20 49 66 20 74  xpression.  If t
7f20: 68 65 20 53 45 4c 45 43 54 20 79 69 65 6c 64 73  he SELECT yields
7f30: 0a 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 72  .more than one r
7f40: 65 73 75 6c 74 20 72 6f 77 2c 20 61 6c 6c 20 72  esult row, all r
7f50: 6f 77 73 20 61 66 74 65 72 20 74 68 65 20 66 69  ows after the fi
7f60: 72 73 74 20 61 72 65 20 69 67 6e 6f 72 65 64 2e  rst are ignored.
7f70: 20 20 49 66 0a 74 68 65 20 53 45 4c 45 43 54 20    If.the SELECT 
7f80: 79 65 69 6c 64 73 20 6e 6f 20 72 6f 77 73 2c 20  yeilds no rows, 
7f90: 74 68 65 6e 20 74 68 65 20 76 61 6c 75 65 20 6f  then the value o
7fa0: 66 20 74 68 65 20 53 45 4c 45 43 54 20 69 73 20  f the SELECT is 
7fb0: 4e 55 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 70 3e 42 6f  NULL.</p>..<p>Bo
7fc0: 74 68 20 73 69 6d 70 6c 65 20 61 6e 64 20 61 67  th simple and ag
7fd0: 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e  gregate function
7fe0: 73 20 61 72 65 20 73 75 70 70 6f 72 74 65 64 2e  s are supported.
7ff0: 20 20 41 20 73 69 6d 70 6c 65 0a 66 75 6e 63 74    A simple.funct
8000: 69 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64 20  ion can be used 
8010: 69 6e 20 61 6e 79 20 65 78 70 72 65 73 73 69 6f  in any expressio
8020: 6e 2e 20 20 53 69 6d 70 6c 65 20 66 75 6e 63 74  n.  Simple funct
8030: 69 6f 6e 73 20 72 65 74 75 72 6e 0a 61 20 72 65  ions return.a re
8040: 73 75 6c 74 20 69 6d 6d 65 64 69 61 74 65 6c 79  sult immediately
8050: 20 62 61 73 65 64 20 6f 6e 20 74 68 65 69 72 20   based on their 
8060: 69 6e 70 75 74 73 2e 20 20 41 67 67 72 65 67 61  inputs.  Aggrega
8070: 74 65 20 66 75 6e 63 74 69 6f 6e 73 0a 6d 61 79  te functions.may
8080: 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 69 6e   only be used in
8090: 20 61 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d   a SELECT statem
80a0: 65 6e 74 2e 20 20 41 67 67 72 65 67 61 74 65 20  ent.  Aggregate 
80b0: 66 75 6e 63 74 69 6f 6e 73 20 63 6f 6d 70 75 74  functions comput
80c0: 65 0a 74 68 65 69 72 20 72 65 73 75 6c 74 20 61  e.their result a
80d0: 63 72 6f 73 73 20 61 6c 6c 20 72 6f 77 73 20 6f  cross all rows o
80e0: 66 20 74 68 65 20 72 65 73 75 6c 74 20 73 65 74  f the result set
80f0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 66 75  .</p>..<p>The fu
8100: 6e 63 74 69 6f 6e 73 20 73 68 6f 77 6e 20 62 65  nctions shown be
8110: 6c 6f 77 20 61 72 65 20 61 76 61 69 6c 61 62 6c  low are availabl
8120: 65 20 62 79 20 64 65 66 61 75 6c 74 2e 20 20 41  e by default.  A
8130: 64 64 69 74 69 6f 6e 61 6c 0a 66 75 6e 63 74 69  dditional.functi
8140: 6f 6e 73 20 6d 61 79 20 62 65 20 77 72 69 74 74  ons may be writt
8150: 65 6e 20 69 6e 20 43 20 61 6e 64 20 61 64 64 65  en in C and adde
8160: 64 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73  d to the databas
8170: 65 20 65 6e 67 69 6e 65 20 75 73 69 6e 67 0a 74  e engine using.t
8180: 68 65 20 3c 61 20 68 72 65 66 3d 22 63 5f 69 6e  he <a href="c_in
8190: 74 65 72 66 61 63 65 2e 68 74 6d 6c 23 63 66 75  terface.html#cfu
81a0: 6e 63 22 3e 73 71 6c 69 74 65 5f 63 72 65 61 74  nc">sqlite_creat
81b0: 65 5f 66 75 6e 63 74 69 6f 6e 28 29 3c 2f 61 3e  e_function()</a>
81c0: 0a 41 50 49 2e 3c 2f 70 3e 0a 0a 3c 74 61 62 6c  .API.</p>..<tabl
81d0: 65 20 62 6f 72 64 65 72 3d 30 20 63 65 6c 6c 70  e border=0 cellp
81e0: 61 64 64 69 6e 67 3d 31 30 3e 0a 3c 74 72 3e 0a  adding=10>.<tr>.
81f0: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
8200: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 77   align="right" w
8210: 69 64 74 68 3d 31 32 30 3e 61 62 73 28 3c 69 3e  idth=120>abs(<i>
8220: 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20  X</i>)</td>.<td 
8230: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74  valign="top">Ret
8240: 75 72 6e 20 74 68 65 20 61 62 73 6f 6c 75 74 65  urn the absolute
8250: 20 76 61 6c 75 65 20 6f 66 20 61 72 67 75 6d 65   value of argume
8260: 6e 74 20 3c 69 3e 58 3c 2f 69 3e 2e 3c 2f 74 64  nt <i>X</i>.</td
8270: 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74  >.</tr>..<tr>.<t
8280: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61  d valign="top" a
8290: 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 63 6f 61  lign="right">coa
82a0: 6c 65 73 63 65 28 3c 69 3e 58 3c 2f 69 3e 2c 3c  lesce(<i>X</i>,<
82b0: 69 3e 59 3c 2f 69 3e 2c 2e 2e 2e 29 3c 2f 74 64  i>Y</i>,...)</td
82c0: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
82d0: 70 22 3e 52 65 74 75 72 6e 20 61 20 63 6f 70 79  p">Return a copy
82e0: 20 6f 66 20 74 68 65 20 66 69 72 73 74 20 6e 6f   of the first no
82f0: 6e 2d 4e 55 4c 4c 20 61 72 67 75 6d 65 6e 74 2e  n-NULL argument.
8300: 20 20 49 66 0a 61 6c 6c 20 61 72 67 75 6d 65 6e    If.all argumen
8310: 74 73 20 61 72 65 20 4e 55 4c 4c 20 74 68 65 6e  ts are NULL then
8320: 20 4e 55 4c 4c 20 69 73 20 72 65 74 75 72 6e 65   NULL is returne
8330: 64 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c  d.</td>.</tr>..<
8340: 74 72 3e 0a 3c 61 20 6e 61 6d 65 3d 22 67 6c 6f  tr>.<a name="glo
8350: 62 46 75 6e 63 22 3e 3c 2f 61 3e 0a 3c 74 64 20  bFunc"></a>.<td 
8360: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
8370: 67 6e 3d 22 72 69 67 68 74 22 3e 67 6c 6f 62 28  gn="right">glob(
8380: 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69  <i>X</i>,<i>Y</i
8390: 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  >)</td>.<td vali
83a0: 67 6e 3d 22 74 6f 70 22 3e 54 68 69 73 20 66 75  gn="top">This fu
83b0: 6e 63 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74  nction is used t
83c0: 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 0a  o implement the.
83d0: 22 3c 62 3e 59 20 47 4c 4f 42 20 58 3c 2f 62 3e  "<b>Y GLOB X</b>
83e0: 22 20 73 79 6e 74 61 78 20 6f 66 20 53 51 4c 69  " syntax of SQLi
83f0: 74 65 2e 20 20 54 68 65 0a 3c 61 20 68 72 65 66  te.  The.<a href
8400: 3d 22 63 5f 69 6e 74 65 72 66 61 63 65 2e 68 74  ="c_interface.ht
8410: 6d 6c 23 63 66 75 6e 63 22 3e 73 71 6c 69 74 65  ml#cfunc">sqlite
8420: 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e  _create_function
8430: 28 29 3c 2f 61 3e 20 0a 69 6e 74 65 72 66 61 63  ()</a> .interfac
8440: 65 20 63 61 6e 0a 62 65 20 75 73 65 64 20 74 6f  e can.be used to
8450: 20 6f 76 65 72 72 69 64 65 20 74 68 69 73 20 66   override this f
8460: 75 6e 63 74 69 6f 6e 20 61 6e 64 20 74 68 65 72  unction and ther
8470: 65 62 79 20 63 68 61 6e 67 65 20 74 68 65 20 6f  eby change the o
8480: 70 65 72 61 74 69 6f 6e 0a 6f 66 20 74 68 65 20  peration.of the 
8490: 3c 61 20 68 72 65 66 3d 22 23 67 6c 6f 62 22 3e  <a href="#glob">
84a0: 47 4c 4f 42 3c 2f 61 3e 20 6f 70 65 72 61 74 6f  GLOB</a> operato
84b0: 72 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c  r.</td>.</tr>..<
84c0: 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
84d0: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
84e0: 74 22 3e 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72  t">last_insert_r
84f0: 6f 77 69 64 28 29 3c 2f 74 64 3e 0a 3c 74 64 20  owid()</td>.<td 
8500: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74  valign="top">Ret
8510: 75 72 6e 20 74 68 65 20 52 4f 57 49 44 20 6f 66  urn the ROWID of
8520: 20 74 68 65 20 6c 61 73 74 20 72 6f 77 20 69 6e   the last row in
8530: 73 65 72 74 20 66 72 6f 6d 20 74 68 69 73 0a 63  sert from this.c
8540: 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 74 68 65  onnection to the
8550: 20 64 61 74 61 62 61 73 65 2e 20 20 54 68 69 73   database.  This
8560: 20 69 73 20 74 68 65 20 73 61 6d 65 20 76 61 6c   is the same val
8570: 75 65 20 74 68 61 74 20 77 6f 75 6c 64 20 62 65  ue that would be
8580: 20 72 65 74 75 72 6e 65 64 0a 66 72 6f 6d 20 74   returned.from t
8590: 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6c 61 73  he <b>sqlite_las
85a0: 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 29  t_insert_rowid()
85b0: 3c 2f 62 3e 20 41 50 49 20 66 75 6e 63 74 69 6f  </b> API functio
85c0: 6e 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c  n.</td>.</tr>..<
85d0: 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
85e0: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
85f0: 74 22 3e 6c 65 6e 67 74 68 28 3c 69 3e 58 3c 2f  t">length(<i>X</
8600: 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c  i>)</td>.<td val
8610: 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e  ign="top">Return
8620: 20 74 68 65 20 73 74 72 69 6e 67 20 6c 65 6e 67   the string leng
8630: 74 68 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 20 69  th of <i>X</i> i
8640: 6e 20 63 68 61 72 61 63 74 65 72 73 2e 0a 49 66  n characters..If
8650: 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6e 66 69   SQLite is confi
8660: 67 75 72 65 64 20 74 6f 20 73 75 70 70 6f 72 74  gured to support
8670: 20 55 54 46 2d 38 2c 20 74 68 65 6e 20 74 68 65   UTF-8, then the
8680: 20 6e 75 6d 62 65 72 20 6f 66 20 55 54 46 2d 38   number of UTF-8
8690: 0a 63 68 61 72 61 63 74 65 72 73 20 69 73 20 72  .characters is r
86a0: 65 74 75 72 6e 65 64 2c 20 6e 6f 74 20 74 68 65  eturned, not the
86b0: 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73   number of bytes
86c0: 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74  .</td>.</tr>..<t
86d0: 72 3e 0a 3c 61 20 6e 61 6d 65 3d 22 6c 69 6b 65  r>.<a name="like
86e0: 46 75 6e 63 22 3e 3c 2f 61 3e 0a 3c 74 64 20 76  Func"></a>.<td v
86f0: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
8700: 6e 3d 22 72 69 67 68 74 22 3e 6c 69 6b 65 28 3c  n="right">like(<
8710: 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e  i>X</i>,<i>Y</i>
8720: 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67  )</td>.<td valig
8730: 6e 3d 22 74 6f 70 22 3e 54 68 69 73 20 66 75 6e  n="top">This fun
8740: 63 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f  ction is used to
8750: 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 0a 22   implement the."
8760: 3c 62 3e 59 20 4c 49 4b 45 20 58 3c 2f 62 3e 22  <b>Y LIKE X</b>"
8770: 20 73 79 6e 74 61 78 20 6f 66 20 53 51 4c 2e 20   syntax of SQL. 
8780: 20 54 68 65 0a 3c 61 20 68 72 65 66 3d 22 63 5f   The.<a href="c_
8790: 69 6e 74 65 72 66 61 63 65 2e 68 74 6d 6c 23 63  interface.html#c
87a0: 66 75 6e 63 22 3e 73 71 6c 69 74 65 5f 63 72 65  func">sqlite_cre
87b0: 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29 3c 2f  ate_function()</
87c0: 61 3e 20 0a 69 6e 74 65 72 66 61 63 65 20 63 61  a> .interface ca
87d0: 6e 0a 62 65 20 75 73 65 64 20 74 6f 20 6f 76 65  n.be used to ove
87e0: 72 72 69 64 65 20 74 68 69 73 20 66 75 6e 63 74  rride this funct
87f0: 69 6f 6e 20 61 6e 64 20 74 68 65 72 65 62 79 20  ion and thereby 
8800: 63 68 61 6e 67 65 20 74 68 65 20 6f 70 65 72 61  change the opera
8810: 74 69 6f 6e 0a 6f 66 20 74 68 65 20 3c 61 20 68  tion.of the <a h
8820: 72 65 66 3d 22 23 6c 69 6b 65 22 3e 4c 49 4b 45  ref="#like">LIKE
8830: 3c 2f 61 3e 20 6f 70 65 72 61 74 6f 72 2e 3c 2f  </a> operator.</
8840: 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a  td>.</tr>..<tr>.
8850: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
8860: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 6c   align="right">l
8870: 6f 77 65 72 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f  ower(<i>X</i>)</
8880: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
8890: 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20 63 6f  top">Return a co
88a0: 70 79 20 6f 66 20 73 74 72 69 6e 67 20 3c 69 3e  py of string <i>
88b0: 58 3c 2f 69 3e 20 77 69 6c 6c 20 61 6c 6c 20 63  X</i> will all c
88c0: 68 61 72 61 63 74 65 72 73 0a 63 6f 6e 76 65 72  haracters.conver
88d0: 74 65 64 20 74 6f 20 6c 6f 77 65 72 20 63 61 73  ted to lower cas
88e0: 65 2e 20 20 54 68 65 20 43 20 6c 69 62 72 61 72  e.  The C librar
88f0: 79 20 3c 62 3e 74 6f 6c 6f 77 65 72 28 29 3c 2f  y <b>tolower()</
8900: 62 3e 20 72 6f 75 74 69 6e 65 20 69 73 20 75 73  b> routine is us
8910: 65 64 0a 66 6f 72 20 74 68 65 20 63 6f 6e 76 65  ed.for the conve
8920: 72 73 69 6f 6e 2c 20 77 68 69 63 68 20 6d 65 61  rsion, which mea
8930: 6e 73 20 74 68 61 74 20 74 68 69 73 20 66 75 6e  ns that this fun
8940: 63 74 69 6f 6e 20 6d 69 67 68 74 20 6e 6f 74 0a  ction might not.
8950: 77 6f 72 6b 20 63 6f 72 72 65 63 74 6c 79 20 6f  work correctly o
8960: 6e 20 55 54 46 2d 38 20 63 68 61 72 61 63 74 65  n UTF-8 characte
8970: 72 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a  rs.</td>.</tr>..
8980: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
8990: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
89a0: 68 74 22 3e 6d 61 78 28 3c 69 3e 58 3c 2f 69 3e  ht">max(<i>X</i>
89b0: 2c 3c 69 3e 59 3c 2f 69 3e 2c 2e 2e 2e 29 3c 2f  ,<i>Y</i>,...)</
89c0: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
89d0: 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20  top">Return the 
89e0: 61 72 67 75 6d 65 6e 74 20 77 69 74 68 20 74 68  argument with th
89f0: 65 20 6d 61 78 69 6d 75 6d 20 76 61 6c 75 65 2e  e maximum value.
8a00: 20 20 41 72 67 75 6d 65 6e 74 73 0a 6d 61 79 20    Arguments.may 
8a10: 62 65 20 73 74 72 69 6e 67 73 20 69 6e 20 61 64  be strings in ad
8a20: 64 69 74 69 6f 6e 20 74 6f 20 6e 75 6d 62 65 72  dition to number
8a30: 73 2e 20 20 54 68 65 20 6d 61 78 69 6d 75 6d 20  s.  The maximum 
8a40: 76 61 6c 75 65 20 69 73 20 64 65 74 65 72 6d 69  value is determi
8a50: 6e 65 64 0a 62 79 20 74 68 65 20 75 73 75 61 6c  ned.by the usual
8a60: 20 73 6f 72 74 20 6f 72 64 65 72 2e 20 20 4e 6f   sort order.  No
8a70: 74 65 20 74 68 61 74 20 3c 62 3e 6d 61 78 28 29  te that <b>max()
8a80: 3c 2f 62 3e 20 69 73 20 61 20 73 69 6d 70 6c 65  </b> is a simple
8a90: 20 66 75 6e 63 74 69 6f 6e 20 77 68 65 6e 0a 69   function when.i
8aa0: 74 20 68 61 73 20 32 20 6f 72 20 6d 6f 72 65 20  t has 2 or more 
8ab0: 61 72 67 75 6d 65 6e 74 73 20 62 75 74 20 63 6f  arguments but co
8ac0: 6e 76 65 72 74 73 20 74 6f 20 61 6e 20 61 67 67  nverts to an agg
8ad0: 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 20  regate function 
8ae0: 69 66 20 67 69 76 65 6e 0a 6f 6e 6c 79 20 61 20  if given.only a 
8af0: 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 2e  single argument.
8b00: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72  </td>.</tr>..<tr
8b10: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
8b20: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
8b30: 3e 6d 69 6e 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69  >min(<i>X</i>,<i
8b40: 3e 59 3c 2f 69 3e 2c 2e 2e 2e 29 3c 2f 74 64 3e  >Y</i>,...)</td>
8b50: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
8b60: 22 3e 52 65 74 75 72 6e 20 74 68 65 20 61 72 67  ">Return the arg
8b70: 75 6d 65 6e 74 20 77 69 74 68 20 74 68 65 20 6d  ument with the m
8b80: 69 6e 69 6d 75 6d 20 76 61 6c 75 65 2e 20 20 41  inimum value.  A
8b90: 72 67 75 6d 65 6e 74 73 0a 6d 61 79 20 62 65 20  rguments.may be 
8ba0: 73 74 72 69 6e 67 73 20 69 6e 20 61 64 64 69 74  strings in addit
8bb0: 69 6f 6e 20 74 6f 20 6e 75 6d 62 65 72 73 2e 20  ion to numbers. 
8bc0: 20 54 68 65 20 6d 6d 69 6e 69 6d 75 6d 20 76 61   The mminimum va
8bd0: 6c 75 65 20 69 73 20 64 65 74 65 72 6d 69 6e 65  lue is determine
8be0: 64 0a 62 79 20 74 68 65 20 75 73 75 61 6c 20 73  d.by the usual s
8bf0: 6f 72 74 20 6f 72 64 65 72 2e 20 20 4e 6f 74 65  ort order.  Note
8c00: 20 74 68 61 74 20 3c 62 3e 6d 69 6e 28 29 3c 2f   that <b>min()</
8c10: 62 3e 20 69 73 20 61 20 73 69 6d 70 6c 65 20 66  b> is a simple f
8c20: 75 6e 63 74 69 6f 6e 20 77 68 65 6e 0a 69 74 20  unction when.it 
8c30: 68 61 73 20 32 20 6f 72 20 6d 6f 72 65 20 61 72  has 2 or more ar
8c40: 67 75 6d 65 6e 74 73 20 62 75 74 20 63 6f 6e 76  guments but conv
8c50: 65 72 74 73 20 74 6f 20 61 6e 20 61 67 67 72 65  erts to an aggre
8c60: 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 20 69 66  gate function if
8c70: 20 67 69 76 65 6e 0a 6f 6e 6c 79 20 61 20 73 69   given.only a si
8c80: 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 2e 3c 2f  ngle argument.</
8c90: 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a  td>.</tr>..<tr>.
8ca0: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
8cb0: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 72   align="right">r
8cc0: 61 6e 64 6f 6d 28 2a 29 3c 2f 74 64 3e 0a 3c 74  andom(*)</td>.<t
8cd0: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52  d valign="top">R
8ce0: 65 74 75 72 6e 20 61 20 72 61 6e 64 6f 6d 20 69  eturn a random i
8cf0: 6e 74 65 67 65 72 20 62 65 74 77 65 65 6e 20 2d  nteger between -
8d00: 32 31 34 37 34 38 33 36 34 38 20 61 6e 64 0a 2b  2147483648 and.+
8d10: 32 31 34 37 34 38 33 36 34 37 2e 3c 2f 74 64 3e  2147483647.</td>
8d20: 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64  .</tr>..<tr>.<td
8d30: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c   valign="top" al
8d40: 69 67 6e 3d 22 72 69 67 68 74 22 3e 72 6f 75 6e  ign="right">roun
8d50: 64 28 3c 69 3e 58 3c 2f 69 3e 29 3c 62 72 3e 72  d(<i>X</i>)<br>r
8d60: 6f 75 6e 64 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69  ound(<i>X</i>,<i
8d70: 3e 59 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64  >Y</i>)</td>.<td
8d80: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 6f   valign="top">Ro
8d90: 75 6e 64 20 6f 66 66 20 74 68 65 20 6e 75 6d 62  und off the numb
8da0: 65 72 20 3c 69 3e 58 3c 2f 69 3e 20 74 6f 20 3c  er <i>X</i> to <
8db0: 69 3e 59 3c 2f 69 3e 20 64 69 67 69 74 73 20 74  i>Y</i> digits t
8dc0: 6f 20 74 68 65 0a 72 69 67 68 74 20 6f 66 20 74  o the.right of t
8dd0: 68 65 20 64 65 63 69 6d 61 6c 20 70 6f 69 6e 74  he decimal point
8de0: 2e 20 20 49 66 20 74 68 65 20 3c 69 3e 59 3c 2f  .  If the <i>Y</
8df0: 69 3e 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f  i> argument is o
8e00: 6d 69 74 74 65 64 2c 20 30 20 69 73 20 0a 61 73  mitted, 0 is .as
8e10: 73 75 6d 65 64 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  sumed.</td>.</tr
8e20: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
8e30: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
8e40: 72 69 67 68 74 22 3e 73 6f 75 6e 64 65 78 28 3c  right">soundex(<
8e50: 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74  i>X</i>)</td>.<t
8e60: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 43  d valign="top">C
8e70: 6f 6d 70 75 74 65 20 74 68 65 20 73 6f 75 6e 64  ompute the sound
8e80: 65 78 20 65 6e 63 6f 64 69 6e 67 20 6f 66 20 74  ex encoding of t
8e90: 68 65 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c 2f  he string <i>X</
8ea0: 69 3e 2e 0a 54 68 65 20 73 74 72 69 6e 67 20 22  i>..The string "
8eb0: 3f 30 30 30 22 20 69 73 20 72 65 74 75 72 6e 65  ?000" is returne
8ec0: 64 20 69 66 20 74 68 65 20 61 72 67 75 6d 65 6e  d if the argumen
8ed0: 74 20 69 73 20 4e 55 4c 4c 2e 0a 54 68 69 73 20  t is NULL..This 
8ee0: 66 75 6e 63 74 69 6f 6e 20 69 73 20 6f 6d 69 74  function is omit
8ef0: 74 65 64 20 66 72 6f 6d 20 53 51 4c 69 74 65 20  ted from SQLite 
8f00: 62 79 20 64 65 66 61 75 6c 74 2e 0a 49 74 20 69  by default..It i
8f10: 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65  s only available
8f20: 20 74 68 65 20 2d 44 53 51 4c 49 54 45 5f 53 4f   the -DSQLITE_SO
8f30: 55 4e 44 45 58 3d 31 20 63 6f 6d 70 69 6c 65 72  UNDEX=1 compiler
8f40: 20 6f 70 74 69 6f 6e 0a 69 73 20 75 73 65 64 20   option.is used 
8f50: 77 68 65 6e 20 53 51 4c 69 74 65 20 69 73 20 62  when SQLite is b
8f60: 75 69 6c 74 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  uilt.</td>.</tr>
8f70: 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  ..<tr>.<td valig
8f80: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
8f90: 69 67 68 74 22 3e 73 71 6c 69 74 65 5f 76 65 72  ight">sqlite_ver
8fa0: 73 69 6f 6e 28 2a 29 3c 2f 74 64 3e 0a 3c 74 64  sion(*)</td>.<td
8fb0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65   valign="top">Re
8fc0: 74 75 72 6e 20 74 68 65 20 76 65 72 73 69 6f 6e  turn the version
8fd0: 20 73 74 72 69 6e 67 20 66 6f 72 20 74 68 65 20   string for the 
8fe0: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 0a 74  SQLite library.t
8ff0: 68 61 74 20 69 73 20 72 75 6e 6e 69 6e 67 2e 20  hat is running. 
9000: 20 45 78 61 6d 70 6c 65 3a 20 20 22 32 2e 38 2e   Example:  "2.8.
9010: 30 22 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c  0"</td>.</tr>..<
9020: 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
9030: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
9040: 74 22 3e 73 75 62 73 74 72 28 3c 69 3e 58 3c 2f  t">substr(<i>X</
9050: 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c 3c 69 3e 5a  i>,<i>Y</i>,<i>Z
9060: 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  </i>)</td>.<td v
9070: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75  align="top">Retu
9080: 72 6e 20 61 20 73 75 62 73 74 72 69 6e 67 20 6f  rn a substring o
9090: 66 20 69 6e 70 75 74 20 73 74 72 69 6e 67 20 3c  f input string <
90a0: 69 3e 58 3c 2f 69 3e 20 74 68 61 74 20 62 65 67  i>X</i> that beg
90b0: 69 6e 73 0a 77 69 74 68 20 74 68 65 20 3c 69 3e  ins.with the <i>
90c0: 59 3c 2f 69 3e 2d 74 68 20 63 68 61 72 61 63 74  Y</i>-th charact
90d0: 65 72 20 61 6e 64 20 77 68 69 63 68 20 69 73 20  er and which is 
90e0: 3c 69 3e 5a 3c 2f 69 3e 20 63 68 61 72 61 63 74  <i>Z</i> charact
90f0: 65 72 73 20 6c 6f 6e 67 2e 0a 54 68 65 20 6c 65  ers long..The le
9100: 66 74 2d 6d 6f 73 74 20 63 68 61 72 61 63 74 65  ft-most characte
9110: 72 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 20 69 73  r of <i>X</i> is
9120: 20 6e 75 6d 62 65 72 20 31 2e 20 20 49 66 20 3c   number 1.  If <
9130: 69 3e 59 3c 2f 69 3e 20 69 73 20 6e 65 67 61 74  i>Y</i> is negat
9140: 69 76 65 0a 74 68 65 20 74 68 65 20 66 69 72 73  ive.the the firs
9150: 74 20 63 68 61 72 61 63 74 65 72 20 6f 66 20 74  t character of t
9160: 68 65 20 73 75 62 73 74 72 69 6e 67 20 69 73 20  he substring is 
9170: 66 6f 75 6e 64 20 62 79 20 63 6f 75 6e 74 69 6e  found by countin
9180: 67 20 66 72 6f 6d 20 74 68 65 0a 72 69 67 68 74  g from the.right
9190: 20 72 61 74 68 65 72 20 74 68 61 6e 20 74 68 65   rather than the
91a0: 20 6c 65 66 74 2e 20 20 49 66 20 53 51 4c 69 74   left.  If SQLit
91b0: 65 20 69 73 20 63 6f 6e 66 69 67 75 72 65 64 20  e is configured 
91c0: 74 6f 20 73 75 70 70 6f 72 74 20 55 54 46 2d 38  to support UTF-8
91d0: 2c 0a 74 68 65 6e 20 63 68 61 72 61 63 74 65 72  ,.then character
91e0: 73 20 69 6e 64 69 63 65 73 20 72 65 66 65 72 20  s indices refer 
91f0: 74 6f 20 61 63 74 75 61 6c 20 55 54 46 2d 38 20  to actual UTF-8 
9200: 63 68 61 72 61 63 74 65 72 73 2c 20 6e 6f 74 20  characters, not 
9210: 62 79 74 65 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  bytes.</td>.</tr
9220: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
9230: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
9240: 72 69 67 68 74 22 3e 75 70 70 65 72 28 3c 69 3e  right">upper(<i>
9250: 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20  X</i>)</td>.<td 
9260: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74  valign="top">Ret
9270: 75 72 6e 20 61 20 63 6f 70 79 20 6f 66 20 69 6e  urn a copy of in
9280: 70 75 74 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c  put string <i>X<
9290: 2f 69 3e 20 63 6f 6e 76 65 72 74 65 64 20 74 6f  /i> converted to
92a0: 20 61 6c 6c 0a 75 70 70 65 72 2d 63 61 73 65 20   all.upper-case 
92b0: 6c 65 74 74 65 72 73 2e 20 20 54 68 65 20 69 6d  letters.  The im
92c0: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20  plementation of 
92d0: 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 75 73  this function us
92e0: 65 73 20 74 68 65 20 43 20 6c 69 62 72 61 72 79  es the C library
92f0: 0a 72 6f 75 74 69 6e 65 20 3c 62 3e 74 6f 75 70  .routine <b>toup
9300: 70 65 72 28 29 3c 2f 62 3e 20 77 68 69 63 68 20  per()</b> which 
9310: 6d 65 61 6e 73 20 69 74 20 6d 61 79 20 6e 6f 74  means it may not
9320: 20 77 6f 72 6b 20 63 6f 72 72 65 63 74 6c 79 20   work correctly 
9330: 6f 6e 20 0a 55 54 46 2d 38 20 73 74 72 69 6e 67  on .UTF-8 string
9340: 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f  s.</td>.</tr>.</
9350: 74 61 62 6c 65 3e 0a 0a 3c 70 3e 0a 54 68 65 20  table>..<p>.The 
9360: 66 6f 6c 6c 6f 77 69 6e 67 20 61 67 67 72 65 67  following aggreg
9370: 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72  ate functions ar
9380: 65 20 61 76 61 69 6c 61 62 6c 65 20 62 79 20 64  e available by d
9390: 65 66 61 75 6c 74 2e 20 20 41 64 64 69 74 69 6f  efault.  Additio
93a0: 6e 61 6c 0a 61 67 67 72 65 67 61 74 65 20 66 75  nal.aggregate fu
93b0: 6e 63 74 69 6f 6e 73 20 77 72 69 74 74 65 6e 20  nctions written 
93c0: 69 6e 20 43 20 6d 61 79 20 62 65 20 61 64 64 65  in C may be adde
93d0: 64 20 75 73 69 6e 67 20 74 68 65 20 0a 3c 61 20  d using the .<a 
93e0: 68 72 65 66 3d 22 63 5f 69 6e 74 65 72 66 61 63  href="c_interfac
93f0: 65 2e 68 74 6d 6c 23 63 66 75 6e 63 22 3e 73 71  e.html#cfunc">sq
9400: 6c 69 74 65 5f 63 72 65 61 74 65 5f 61 67 67 72  lite_create_aggr
9410: 65 67 61 74 65 28 29 3c 2f 61 3e 20 41 50 49 2e  egate()</a> API.
9420: 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20 62 6f 72  </p>..<table bor
9430: 64 65 72 3d 30 20 63 65 6c 6c 70 61 64 64 69 6e  der=0 cellpaddin
9440: 67 3d 31 30 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76  g=10>.<tr>.<td v
9450: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
9460: 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74 68 3d  n="right" width=
9470: 31 32 30 3e 61 76 67 28 3c 69 3e 58 3c 2f 69 3e  120>avg(<i>X</i>
9480: 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67  )</td>.<td valig
9490: 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74  n="top">Return t
94a0: 68 65 20 61 76 65 72 61 67 65 20 76 61 6c 75 65  he average value
94b0: 20 6f 66 20 61 6c 6c 20 3c 69 3e 58 3c 2f 69 3e   of all <i>X</i>
94c0: 20 77 69 74 68 69 6e 20 61 20 67 72 6f 75 70 2e   within a group.
94d0: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72  </td>.</tr>..<tr
94e0: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
94f0: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
9500: 3e 63 6f 75 6e 74 28 3c 69 3e 58 3c 2f 69 3e 29  >count(<i>X</i>)
9510: 3c 62 72 3e 63 6f 75 6e 74 28 2a 29 3c 2f 74 64  <br>count(*)</td
9520: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
9530: 70 22 3e 54 68 65 20 66 69 72 73 74 20 66 6f 72  p">The first for
9540: 6d 20 72 65 74 75 72 6e 20 61 20 63 6f 75 6e 74  m return a count
9550: 20 6f 66 20 74 68 65 20 6e 75 6d 62 65 72 20 6f   of the number o
9560: 66 20 74 69 6d 65 73 0a 74 68 61 74 20 3c 69 3e  f times.that <i>
9570: 58 3c 2f 69 3e 20 69 73 20 6e 6f 74 20 4e 55 4c  X</i> is not NUL
9580: 4c 20 69 6e 20 61 20 67 72 6f 75 70 2e 20 20 54  L in a group.  T
9590: 68 65 20 73 65 63 6f 6e 64 20 66 6f 72 6d 20 28  he second form (
95a0: 77 69 74 68 20 6e 6f 20 61 72 67 75 6d 65 6e 74  with no argument
95b0: 29 0a 72 65 74 75 72 6e 73 20 74 68 65 20 74 6f  ).returns the to
95c0: 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f  tal number of ro
95d0: 77 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e  ws in the group.
95e0: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72  </td>.</tr>..<tr
95f0: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
9600: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
9610: 3e 6d 61 78 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f  >max(<i>X</i>)</
9620: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
9630: 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20  top">Return the 
9640: 6d 61 78 69 6d 75 6d 20 76 61 6c 75 65 20 6f 66  maximum value of
9650: 20 61 6c 6c 20 76 61 6c 75 65 73 20 69 6e 20 74   all values in t
9660: 68 65 20 67 72 6f 75 70 2e 0a 54 68 65 20 75 73  he group..The us
9670: 75 61 6c 20 73 6f 72 74 20 6f 72 64 65 72 20 69  ual sort order i
9680: 73 20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d  s used to determ
9690: 69 6e 65 20 74 68 65 20 6d 61 78 69 6d 75 6d 2e  ine the maximum.
96a0: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72  </td>.</tr>..<tr
96b0: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
96c0: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
96d0: 3e 6d 69 6e 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f  >min(<i>X</i>)</
96e0: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
96f0: 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20  top">Return the 
9700: 6d 69 6e 69 6d 75 6d 20 76 61 6c 75 65 20 6f 66  minimum value of
9710: 20 61 6c 6c 20 76 61 6c 75 65 73 20 69 6e 20 74   all values in t
9720: 68 65 20 67 72 6f 75 70 2e 0a 54 68 65 20 75 73  he group..The us
9730: 75 61 6c 20 73 6f 72 74 20 6f 72 64 65 72 20 69  ual sort order i
9740: 73 20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d  s used to determ
9750: 69 6e 65 20 74 68 65 20 6d 69 6e 69 6d 75 6d 2e  ine the minimum.
9760: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72  </td>.</tr>..<tr
9770: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
9780: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
9790: 3e 73 75 6d 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f  >sum(<i>X</i>)</
97a0: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
97b0: 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20  top">Return the 
97c0: 6e 75 6d 65 72 69 63 20 73 75 6d 20 6f 66 20 61  numeric sum of a
97d0: 6c 6c 20 76 61 6c 75 65 73 20 69 6e 20 74 68 65  ll values in the
97e0: 20 67 72 6f 75 70 2e 3c 2f 74 64 3e 0a 3c 2f 74   group.</td>.</t
97f0: 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 7d 0a 0a 0a  r>.</table>.}...
9800: 53 65 63 74 69 6f 6e 20 49 4e 53 45 52 54 20 69  Section INSERT i
9810: 6e 73 65 72 74 0a 0a 53 79 6e 74 61 78 20 7b 73  nsert..Syntax {s
9820: 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a  ql-statement} {.
9830: 49 4e 53 45 52 54 20 5b 4f 52 20 3c 63 6f 6e 66  INSERT [OR <conf
9840: 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d 3e 5d  lict-algorithm>]
9850: 20 49 4e 54 4f 20 5b 3c 64 61 74 61 62 61 73 65   INTO [<database
9860: 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65  -name> .] <table
9870: 2d 6e 61 6d 65 3e 20 5b 28 3c 63 6f 6c 75 6d 6e  -name> [(<column
9880: 2d 6c 69 73 74 3e 29 5d 20 56 41 4c 55 45 53 28  -list>)] VALUES(
9890: 3c 76 61 6c 75 65 2d 6c 69 73 74 3e 29 20 7c 0a  <value-list>) |.
98a0: 49 4e 53 45 52 54 20 5b 4f 52 20 3c 63 6f 6e 66  INSERT [OR <conf
98b0: 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d 3e 5d  lict-algorithm>]
98c0: 20 49 4e 54 4f 20 5b 3c 64 61 74 61 62 61 73 65   INTO [<database
98d0: 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65  -name> .] <table
98e0: 2d 6e 61 6d 65 3e 20 5b 28 3c 63 6f 6c 75 6d 6e  -name> [(<column
98f0: 2d 6c 69 73 74 3e 29 5d 20 3c 73 65 6c 65 63 74  -list>)] <select
9900: 2d 73 74 61 74 65 6d 65 6e 74 3e 0a 7d 0a 0a 70  -statement>.}..p
9910: 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 49 4e 53  uts {.<p>The INS
9920: 45 52 54 20 73 74 61 74 65 6d 65 6e 74 20 63 6f  ERT statement co
9930: 6d 65 73 20 69 6e 20 74 77 6f 20 62 61 73 69 63  mes in two basic
9940: 20 66 6f 72 6d 73 2e 20 20 54 68 65 20 66 69 72   forms.  The fir
9950: 73 74 20 66 6f 72 6d 0a 28 77 69 74 68 20 74 68  st form.(with th
9960: 65 20 22 56 41 4c 55 45 53 22 20 6b 65 79 77 6f  e "VALUES" keywo
9970: 72 64 29 20 63 72 65 61 74 65 73 20 61 20 73 69  rd) creates a si
9980: 6e 67 6c 65 20 6e 65 77 20 72 6f 77 20 69 6e 20  ngle new row in 
9990: 61 6e 20 65 78 69 73 74 69 6e 67 20 74 61 62 6c  an existing tabl
99a0: 65 2e 0a 49 66 20 6e 6f 20 63 6f 6c 75 6d 6e 2d  e..If no column-
99b0: 6c 69 73 74 20 69 73 20 73 70 65 63 69 66 69 65  list is specifie
99c0: 64 20 74 68 65 6e 20 74 68 65 20 6e 75 6d 62 65  d then the numbe
99d0: 72 20 6f 66 20 76 61 6c 75 65 73 20 6d 75 73 74  r of values must
99e0: 0a 62 65 20 74 68 65 20 73 61 6d 65 20 61 73 20  .be the same as 
99f0: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f  the number of co
9a00: 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 74 61 62  lumns in the tab
9a10: 6c 65 2e 20 20 49 66 20 61 20 63 6f 6c 75 6d 6e  le.  If a column
9a20: 2d 6c 69 73 74 0a 69 73 20 73 70 65 63 69 66 69  -list.is specifi
9a30: 65 64 2c 20 74 68 65 6e 20 74 68 65 20 6e 75 6d  ed, then the num
9a40: 62 65 72 20 6f 66 20 76 61 6c 75 65 73 20 6d 75  ber of values mu
9a50: 73 74 20 6d 61 74 63 68 20 74 68 65 20 6e 75 6d  st match the num
9a60: 62 65 72 20 6f 66 0a 73 70 65 63 69 66 69 65 64  ber of.specified
9a70: 20 63 6f 6c 75 6d 6e 73 2e 20 20 43 6f 6c 75 6d   columns.  Colum
9a80: 6e 73 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20  ns of the table 
9a90: 74 68 61 74 20 64 6f 20 6e 6f 74 20 61 70 70 65  that do not appe
9aa0: 61 72 20 69 6e 20 74 68 65 0a 63 6f 6c 75 6d 6e  ar in the.column
9ab0: 20 6c 69 73 74 20 61 72 65 20 66 69 6c 6c 65 64   list are filled
9ac0: 20 77 69 74 68 20 74 68 65 20 64 65 66 61 75 6c   with the defaul
9ad0: 74 20 76 61 6c 75 65 2c 20 6f 72 20 77 69 74 68  t value, or with
9ae0: 20 4e 55 4c 4c 20 69 66 20 6e 6f 74 0a 64 65 66   NULL if not.def
9af0: 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20 73 70  ault value is sp
9b00: 65 63 69 66 69 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c  ecified..</p>..<
9b10: 70 3e 54 68 65 20 73 65 63 6f 6e 64 20 66 6f 72  p>The second for
9b20: 6d 20 6f 66 20 74 68 65 20 49 4e 53 45 52 54 20  m of the INSERT 
9b30: 73 74 61 74 65 6d 65 6e 74 20 74 61 6b 65 73 20  statement takes 
9b40: 69 74 20 64 61 74 61 20 66 72 6f 6d 20 61 0a 53  it data from a.S
9b50: 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 2e  ELECT statement.
9b60: 20 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20    The number of 
9b70: 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 72  columns in the r
9b80: 65 73 75 6c 74 20 6f 66 20 74 68 65 0a 53 45 4c  esult of the.SEL
9b90: 45 43 54 20 6d 75 73 74 20 65 78 61 63 74 6c 79  ECT must exactly
9ba0: 20 6d 61 74 63 68 20 74 68 65 20 6e 75 6d 62 65   match the numbe
9bb0: 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20  r of columns in 
9bc0: 74 68 65 20 74 61 62 6c 65 20 69 66 0a 6e 6f 20  the table if.no 
9bd0: 63 6f 6c 75 6d 6e 20 6c 69 73 74 20 69 73 20 73  column list is s
9be0: 70 65 63 69 66 69 65 64 2c 20 6f 72 20 69 74 20  pecified, or it 
9bf0: 6d 75 73 74 20 6d 61 74 63 68 20 74 68 65 20 6e  must match the n
9c00: 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73  umber of columns
9c10: 0a 6e 61 6d 65 20 69 6e 20 74 68 65 20 63 6f 6c  .name in the col
9c20: 75 6d 6e 20 6c 69 73 74 2e 20 20 41 20 6e 65 77  umn list.  A new
9c30: 20 65 6e 74 72 79 20 69 73 20 6d 61 64 65 20 69   entry is made i
9c40: 6e 20 74 68 65 20 74 61 62 6c 65 0a 66 6f 72 20  n the table.for 
9c50: 65 76 65 72 79 20 72 6f 77 20 6f 66 20 74 68 65  every row of the
9c60: 20 53 45 4c 45 43 54 20 72 65 73 75 6c 74 2e 20   SELECT result. 
9c70: 20 54 68 65 20 53 45 4c 45 43 54 20 6d 61 79 20   The SELECT may 
9c80: 62 65 20 73 69 6d 70 6c 65 0a 6f 72 20 63 6f 6d  be simple.or com
9c90: 70 6f 75 6e 64 2e 20 20 49 66 20 74 68 65 20 53  pound.  If the S
9ca0: 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 20  ELECT statement 
9cb0: 68 61 73 20 61 6e 20 4f 52 44 45 52 20 42 59 20  has an ORDER BY 
9cc0: 63 6c 61 75 73 65 2c 0a 74 68 65 20 4f 52 44 45  clause,.the ORDE
9cd0: 52 20 42 59 20 69 73 20 69 67 6e 6f 72 65 64 2e  R BY is ignored.
9ce0: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74  </p>..<p>The opt
9cf0: 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63  ional conflict-c
9d00: 6c 61 75 73 65 20 61 6c 6c 6f 77 73 20 74 68 65  lause allows the
9d10: 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f   specification o
9d20: 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65  f an alternative
9d30: 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66  .constraint conf
9d40: 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20  lict resolution 
9d50: 61 6c 67 6f 72 69 74 68 6d 20 74 6f 20 75 73 65  algorithm to use
9d60: 20 64 75 72 69 6e 67 20 74 68 69 73 20 6f 6e 65   during this one
9d70: 20 63 6f 6d 6d 61 6e 64 2e 0a 53 65 65 20 74 68   command..See th
9d80: 65 20 73 65 63 74 69 6f 6e 20 74 69 74 6c 65 64  e section titled
9d90: 0a 3c 61 20 68 72 65 66 3d 22 23 63 6f 6e 66 6c  .<a href="#confl
9da0: 69 63 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54  ict">ON CONFLICT
9db0: 3c 2f 61 3e 20 66 6f 72 20 61 64 64 69 74 69 6f  </a> for additio
9dc0: 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e  nal information.
9dd0: 0a 46 6f 72 20 63 6f 6d 70 61 74 69 62 69 6c 69  .For compatibili
9de0: 74 79 20 77 69 74 68 20 4d 79 53 51 4c 2c 20 74  ty with MySQL, t
9df0: 68 65 20 70 61 72 73 65 72 20 61 6c 6c 6f 77 73  he parser allows
9e00: 20 74 68 65 20 75 73 65 20 6f 66 20 74 68 65 0a   the use of the.
9e10: 73 69 6e 67 6c 65 20 6b 65 79 77 6f 72 64 20 3c  single keyword <
9e20: 61 20 68 72 65 66 3d 22 23 72 65 70 6c 61 63 65  a href="#replace
9e30: 22 3e 52 45 50 4c 41 43 45 3c 2f 61 3e 20 61 73  ">REPLACE</a> as
9e40: 20 61 6e 20 61 6c 69 61 73 20 66 6f 72 20 22 49   an alias for "I
9e50: 4e 53 45 52 54 20 4f 52 20 52 45 50 4c 41 43 45  NSERT OR REPLACE
9e60: 22 2e 0a 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74  "..</p>.}...Sect
9e70: 69 6f 6e 20 7b 4f 4e 20 43 4f 4e 46 4c 49 43 54  ion {ON CONFLICT
9e80: 20 63 6c 61 75 73 65 7d 20 63 6f 6e 66 6c 69 63   clause} conflic
9e90: 74 0a 0a 53 79 6e 74 61 78 20 7b 63 6f 6e 66 6c  t..Syntax {confl
9ea0: 69 63 74 2d 63 6c 61 75 73 65 7d 20 7b 0a 4f 4e  ict-clause} {.ON
9eb0: 20 43 4f 4e 46 4c 49 43 54 20 3c 63 6f 6e 66 6c   CONFLICT <confl
9ec0: 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d 3e 0a 7d  ict-algorithm>.}
9ed0: 20 7b 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72   {conflict-algor
9ee0: 69 74 68 6d 7d 20 7b 0a 52 4f 4c 4c 42 41 43 4b  ithm} {.ROLLBACK
9ef0: 20 7c 20 41 42 4f 52 54 20 7c 20 46 41 49 4c 20   | ABORT | FAIL 
9f00: 7c 20 49 47 4e 4f 52 45 20 7c 20 52 45 50 4c 41  | IGNORE | REPLA
9f10: 43 45 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e  CE.}..puts {.<p>
9f20: 54 68 65 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20  The ON CONFLICT 
9f30: 63 6c 61 75 73 65 20 69 73 20 6e 6f 74 20 61 20  clause is not a 
9f40: 73 65 70 61 72 61 74 65 20 53 51 4c 20 63 6f 6d  separate SQL com
9f50: 6d 61 6e 64 2e 20 20 49 74 20 69 73 20 61 0a 6e  mand.  It is a.n
9f60: 6f 6e 2d 73 74 61 6e 64 61 72 64 20 63 6c 61 75  on-standard clau
9f70: 73 65 20 74 68 61 74 20 63 61 6e 20 61 70 70 65  se that can appe
9f80: 61 72 20 69 6e 20 6d 61 6e 79 20 6f 74 68 65 72  ar in many other
9f90: 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 73 2e 0a 49   SQL commands..I
9fa0: 74 20 69 73 20 67 69 76 65 6e 20 69 74 73 20 6f  t is given its o
9fb0: 77 6e 20 73 65 63 74 69 6f 6e 20 69 6e 20 74 68  wn section in th
9fc0: 69 73 20 64 6f 63 75 6d 65 6e 74 20 62 65 63 61  is document beca
9fd0: 75 73 65 20 69 74 20 69 73 20 6e 6f 74 0a 70 61  use it is not.pa
9fe0: 72 74 20 6f 66 20 73 74 61 6e 64 61 72 64 20 53  rt of standard S
9ff0: 51 4c 20 61 6e 64 20 74 68 65 72 65 66 6f 72 65  QL and therefore
a000: 20 6d 69 67 68 74 20 6e 6f 74 20 62 65 20 66 61   might not be fa
a010: 6d 69 6c 69 61 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e  miliar.</p>..<p>
a020: 54 68 65 20 73 79 6e 74 61 78 20 66 6f 72 20 74  The syntax for t
a030: 68 65 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63  he ON CONFLICT c
a040: 6c 61 75 73 65 20 69 73 20 61 73 20 73 68 6f 77  lause is as show
a050: 6e 20 61 62 6f 76 65 20 66 6f 72 0a 74 68 65 20  n above for.the 
a060: 43 52 45 41 54 45 20 54 41 42 4c 45 2c 20 43 52  CREATE TABLE, CR
a070: 45 41 54 45 20 49 4e 44 45 58 2c 20 61 6e 64 20  EATE INDEX, and 
a080: 42 45 47 49 4e 20 54 52 41 4e 53 41 43 54 49 4f  BEGIN TRANSACTIO
a090: 4e 20 63 6f 6d 6d 61 6e 64 73 2e 0a 46 6f 72 20  N commands..For 
a0a0: 74 68 65 20 43 4f 50 59 2c 20 49 4e 53 45 52 54  the COPY, INSERT
a0b0: 2c 20 61 6e 64 20 55 50 44 41 54 45 20 63 6f 6d  , and UPDATE com
a0c0: 6d 61 6e 64 73 2c 20 74 68 65 20 6b 65 79 77 6f  mands, the keywo
a0d0: 72 64 73 0a 22 4f 4e 20 43 4f 4e 46 4c 49 43 54  rds."ON CONFLICT
a0e0: 22 20 61 72 65 20 72 65 70 6c 61 63 65 64 20 62  " are replaced b
a0f0: 79 20 22 4f 52 22 2c 20 74 6f 20 6d 61 6b 65 20  y "OR", to make 
a100: 74 68 65 20 73 79 6e 74 61 78 20 73 65 65 6d 20  the syntax seem 
a110: 6d 6f 72 65 0a 6e 61 74 75 72 61 6c 2e 20 20 42  more.natural.  B
a120: 75 74 20 74 68 65 20 6d 65 61 6e 69 6e 67 20 6f  ut the meaning o
a130: 66 20 74 68 65 20 63 6c 61 75 73 65 20 69 73 20  f the clause is 
a140: 74 68 65 20 73 61 6d 65 20 65 69 74 68 65 72 20  the same either 
a150: 77 61 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  way.</p>..<p>The
a160: 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61   ON CONFLICT cla
a170: 75 73 65 20 73 70 65 63 69 66 69 65 73 20 61 6e  use specifies an
a180: 20 61 6c 67 6f 72 69 74 68 6d 20 75 73 65 64 20   algorithm used 
a190: 74 6f 20 72 65 73 6f 6c 76 65 0a 63 6f 6e 73 74  to resolve.const
a1a0: 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 73 2e  raint conflicts.
a1b0: 20 20 54 68 65 72 65 20 61 72 65 20 66 69 76 65    There are five
a1c0: 20 63 68 6f 69 63 65 73 3a 20 52 4f 4c 4c 42 41   choices: ROLLBA
a1d0: 43 4b 2c 20 41 42 4f 52 54 2c 0a 46 41 49 4c 2c  CK, ABORT,.FAIL,
a1e0: 20 49 47 4e 4f 52 45 2c 20 61 6e 64 20 52 45 50   IGNORE, and REP
a1f0: 4c 41 43 45 2e 20 54 68 65 20 64 65 66 61 75 6c  LACE. The defaul
a200: 74 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 41  t algorithm is A
a210: 42 4f 52 54 2e 20 20 54 68 69 73 0a 69 73 20 77  BORT.  This.is w
a220: 68 61 74 20 74 68 65 79 20 6d 65 61 6e 3a 3c 2f  hat they mean:</
a230: 70 3e 0a 0a 3c 64 6c 3e 0a 3c 64 74 3e 3c 62 3e  p>..<dl>.<dt><b>
a240: 52 4f 4c 4c 42 41 43 4b 3c 2f 62 3e 3c 2f 64 74  ROLLBACK</b></dt
a250: 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61 20  >.<dd><p>When a 
a260: 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
a270: 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 61 6e 20  tion occurs, an 
a280: 69 6d 6d 65 64 69 61 74 65 20 52 4f 4c 4c 42 41  immediate ROLLBA
a290: 43 4b 0a 6f 63 63 75 72 73 2c 20 74 68 75 73 20  CK.occurs, thus 
a2a0: 65 6e 64 69 6e 67 20 74 68 65 20 63 75 72 72 65  ending the curre
a2b0: 6e 74 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c 20  nt transaction, 
a2c0: 61 6e 64 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20  and the command 
a2d0: 61 62 6f 72 74 73 0a 77 69 74 68 20 61 20 72 65  aborts.with a re
a2e0: 74 75 72 6e 20 63 6f 64 65 20 6f 66 20 53 51 4c  turn code of SQL
a2f0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 2e 20  ITE_CONSTRAINT. 
a300: 20 49 66 20 6e 6f 20 74 72 61 6e 73 61 63 74 69   If no transacti
a310: 6f 6e 20 69 73 0a 61 63 74 69 76 65 20 28 6f 74  on is.active (ot
a320: 68 65 72 20 74 68 61 6e 20 74 68 65 20 69 6d 70  her than the imp
a330: 6c 69 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e  lied transaction
a340: 20 74 68 61 74 20 69 73 20 63 72 65 61 74 65 64   that is created
a350: 20 6f 6e 20 65 76 65 72 79 0a 63 6f 6d 6d 61 6e   on every.comman
a360: 64 29 20 74 68 65 6e 20 74 68 69 73 20 61 6c 67  d) then this alg
a370: 6f 72 69 74 68 6d 20 77 6f 72 6b 73 20 74 68 65  orithm works the
a380: 20 73 61 6d 65 20 61 73 20 41 42 4f 52 54 2e 3c   same as ABORT.<
a390: 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62  /p></dd>..<dt><b
a3a0: 3e 41 42 4f 52 54 3c 2f 62 3e 3c 2f 64 74 3e 0a  >ABORT</b></dt>.
a3b0: 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61 20 63 6f  <dd><p>When a co
a3c0: 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69  nstraint violati
a3d0: 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20 63  on occurs, the c
a3e0: 6f 6d 6d 61 6e 64 20 62 61 63 6b 73 20 6f 75 74  ommand backs out
a3f0: 0a 61 6e 79 20 70 72 69 6f 72 20 63 68 61 6e 67  .any prior chang
a400: 65 73 20 69 74 20 6d 69 67 68 74 20 68 61 76 65  es it might have
a410: 20 6d 61 64 65 20 61 6e 64 20 61 62 6f 72 74 73   made and aborts
a420: 20 77 69 74 68 20 61 20 72 65 74 75 72 6e 20 63   with a return c
a430: 6f 64 65 0a 6f 66 20 53 51 4c 49 54 45 5f 43 4f  ode.of SQLITE_CO
a440: 4e 53 54 52 41 49 4e 54 2e 20 20 42 75 74 20 6e  NSTRAINT.  But n
a450: 6f 20 52 4f 4c 4c 42 41 43 4b 20 69 73 20 65 78  o ROLLBACK is ex
a460: 65 63 75 74 65 64 20 73 6f 20 63 68 61 6e 67 65  ecuted so change
a470: 73 0a 66 72 6f 6d 20 70 72 69 6f 72 20 63 6f 6d  s.from prior com
a480: 6d 61 6e 64 73 20 77 69 74 68 69 6e 20 74 68 65  mands within the
a490: 20 73 61 6d 65 20 74 72 61 6e 73 61 63 74 69 6f   same transactio
a4a0: 6e 0a 61 72 65 20 70 72 65 73 65 72 76 65 64 2e  n.are preserved.
a4b0: 20 20 54 68 69 73 20 69 73 20 74 68 65 20 64 65    This is the de
a4c0: 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72 2e 3c  fault behavior.<
a4d0: 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62  /p></dd>..<dt><b
a4e0: 3e 46 41 49 4c 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c  >FAIL</b></dt>.<
a4f0: 64 64 3e 3c 70 3e 57 68 65 6e 20 61 20 63 6f 6e  dd><p>When a con
a500: 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f  straint violatio
a510: 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20 63 6f  n occurs, the co
a520: 6d 6d 61 6e 64 20 61 62 6f 72 74 73 20 77 69 74  mmand aborts wit
a530: 68 20 61 0a 72 65 74 75 72 6e 20 63 6f 64 65 20  h a.return code 
a540: 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e  SQLITE_CONSTRAIN
a550: 54 2e 20 20 42 75 74 20 61 6e 79 20 63 68 61 6e  T.  But any chan
a560: 67 65 73 20 74 6f 20 74 68 65 20 64 61 74 61 62  ges to the datab
a570: 61 73 65 20 74 68 61 74 0a 74 68 65 20 63 6f 6d  ase that.the com
a580: 6d 61 6e 64 20 6d 61 64 65 20 70 72 69 6f 72 20  mand made prior 
a590: 74 6f 20 65 6e 63 6f 75 6e 74 65 72 69 6e 67 20  to encountering 
a5a0: 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 20 76  the constraint v
a5b0: 69 6f 6c 61 74 69 6f 6e 0a 61 72 65 20 70 72 65  iolation.are pre
a5c0: 73 65 72 76 65 64 20 61 6e 64 20 61 72 65 20 6e  served and are n
a5d0: 6f 74 20 62 61 63 6b 65 64 20 6f 75 74 2e 20 20  ot backed out.  
a5e0: 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 66 20  For example, if 
a5f0: 61 6e 20 55 50 44 41 54 45 0a 73 74 61 74 65 6d  an UPDATE.statem
a600: 65 6e 74 20 65 6e 63 6f 75 6e 74 65 72 65 64 20  ent encountered 
a610: 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f  a constraint vio
a620: 6c 61 74 69 6f 6e 20 6f 6e 20 74 68 65 20 31 30  lation on the 10
a630: 30 74 68 20 72 6f 77 20 74 68 61 74 0a 69 74 20  0th row that.it 
a640: 61 74 74 65 6d 70 74 73 20 74 6f 20 75 70 64 61  attempts to upda
a650: 74 65 2c 20 74 68 65 6e 20 74 68 65 20 66 69 72  te, then the fir
a660: 73 74 20 39 39 20 72 6f 77 20 63 68 61 6e 67 65  st 99 row change
a670: 73 20 61 72 65 20 70 72 65 73 65 72 76 65 64 0a  s are preserved.
a680: 62 75 74 20 63 68 61 6e 67 65 73 20 74 6f 20 72  but changes to r
a690: 6f 77 73 20 31 30 30 20 61 6e 64 20 62 65 79 6f  ows 100 and beyo
a6a0: 6e 64 20 6e 65 76 65 72 20 6f 63 63 75 72 2e 3c  nd never occur.<
a6b0: 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62  /p></dd>..<dt><b
a6c0: 3e 49 47 4e 4f 52 45 3c 2f 62 3e 3c 2f 64 74 3e  >IGNORE</b></dt>
a6d0: 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61 20 63  .<dd><p>When a c
a6e0: 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74  onstraint violat
a6f0: 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20  ion occurs, the 
a700: 6f 6e 65 20 72 6f 77 20 74 68 61 74 20 63 6f 6e  one row that con
a710: 74 61 69 6e 73 0a 74 68 65 20 63 6f 6e 73 74 72  tains.the constr
a720: 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 69  aint violation i
a730: 73 20 6e 6f 74 20 69 6e 73 65 72 74 65 64 20 6f  s not inserted o
a740: 72 20 63 68 61 6e 67 65 64 2e 20 20 42 75 74 20  r changed.  But 
a750: 74 68 65 20 63 6f 6d 6d 61 6e 64 0a 63 6f 6e 74  the command.cont
a760: 69 6e 75 65 73 20 65 78 65 63 75 74 69 6e 67 20  inues executing 
a770: 6e 6f 72 6d 61 6c 6c 79 2e 20 20 4f 74 68 65 72  normally.  Other
a780: 20 72 6f 77 73 20 62 65 66 6f 72 65 20 61 6e 64   rows before and
a790: 20 61 66 74 65 72 20 74 68 65 20 72 6f 77 20 74   after the row t
a7a0: 68 61 74 0a 63 6f 6e 74 61 69 6e 65 64 20 74 68  hat.contained th
a7b0: 65 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f  e constraint vio
a7c0: 6c 61 74 69 6f 6e 20 63 6f 6e 74 69 6e 75 65 20  lation continue 
a7d0: 74 6f 20 62 65 20 69 6e 73 65 72 74 65 64 20 6f  to be inserted o
a7e0: 72 20 75 70 64 61 74 65 64 0a 6e 6f 72 6d 61 6c  r updated.normal
a7f0: 6c 79 2e 20 20 4e 6f 20 65 72 72 6f 72 20 69 73  ly.  No error is
a800: 20 72 65 74 75 72 6e 65 64 2e 3c 2f 70 3e 3c 2f   returned.</p></
a810: 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 52 45 50 4c  dd>..<dt><b>REPL
a820: 41 43 45 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64  ACE</b></dt>.<dd
a830: 3e 3c 70 3e 57 68 65 6e 20 61 20 55 4e 49 51 55  ><p>When a UNIQU
a840: 45 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f  E constraint vio
a850: 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74  lation occurs, t
a860: 68 65 20 70 72 65 2d 65 78 69 73 74 69 6e 67 20  he pre-existing 
a870: 72 6f 77 73 0a 74 68 61 74 20 61 72 65 20 63 61  rows.that are ca
a880: 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 73 74 72  using the constr
a890: 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 61  aint violation a
a8a0: 72 65 20 72 65 6d 6f 76 65 64 20 70 72 69 6f 72  re removed prior
a8b0: 20 74 6f 20 69 6e 73 65 72 74 69 6e 67 0a 6f 72   to inserting.or
a8c0: 20 75 70 64 61 74 69 6e 67 20 74 68 65 20 63 75   updating the cu
a8d0: 72 72 65 6e 74 20 72 6f 77 2e 20 20 54 68 75 73  rrent row.  Thus
a8e0: 20 74 68 65 20 69 6e 73 65 72 74 20 6f 72 20 75   the insert or u
a8f0: 70 64 61 74 65 20 61 6c 77 61 79 73 20 6f 63 63  pdate always occ
a900: 75 72 73 2e 0a 54 68 65 20 63 6f 6d 6d 61 6e 64  urs..The command
a910: 20 63 6f 6e 74 69 6e 75 65 73 20 65 78 65 63 75   continues execu
a920: 74 69 6e 67 20 6e 6f 72 6d 61 6c 6c 79 2e 20 20  ting normally.  
a930: 4e 6f 20 65 72 72 6f 72 20 69 73 20 72 65 74 75  No error is retu
a940: 72 6e 65 64 2e 0a 49 66 20 61 20 4e 4f 54 20 4e  rned..If a NOT N
a950: 55 4c 4c 20 63 6f 6e 73 74 72 61 69 6e 74 20 76  ULL constraint v
a960: 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c  iolation occurs,
a970: 20 74 68 65 20 4e 55 4c 4c 20 76 61 6c 75 65 20   the NULL value 
a980: 69 73 20 72 65 70 6c 61 63 65 64 0a 62 79 20 74  is replaced.by t
a990: 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65  he default value
a9a0: 20 66 6f 72 20 74 68 61 74 20 63 6f 6c 75 6d 6e   for that column
a9b0: 2e 20 20 49 66 20 74 68 65 20 63 6f 6c 75 6d 6e  .  If the column
a9c0: 20 68 61 73 20 6e 6f 20 64 65 66 61 75 6c 74 0a   has no default.
a9d0: 76 61 6c 75 65 2c 20 74 68 65 6e 20 74 68 65 20  value, then the 
a9e0: 41 42 4f 52 54 20 61 6c 67 6f 72 69 74 68 6d 20  ABORT algorithm 
a9f0: 69 73 20 75 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 70  is used.</p>..<p
aa00: 3e 57 68 65 6e 20 74 68 69 73 20 63 6f 6e 66 6c  >When this confl
aa10: 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 73  ict resolution s
aa20: 74 72 61 74 65 67 79 20 64 65 6c 65 74 65 20 72  trategy delete r
aa30: 6f 77 73 20 69 6e 20 6f 72 64 65 72 20 74 6f 0a  ows in order to.
aa40: 73 74 61 74 69 73 66 79 20 61 20 63 6f 6e 73 74  statisfy a const
aa50: 72 61 69 6e 74 2c 20 69 74 20 64 6f 65 73 20 6e  raint, it does n
aa60: 6f 74 20 69 6e 76 6f 6b 65 20 64 65 6c 65 74 65  ot invoke delete
aa70: 20 74 72 69 67 67 65 72 73 20 6f 6e 20 74 68 6f   triggers on tho
aa80: 73 65 0a 72 6f 77 73 2e 20 20 42 75 74 20 74 68  se.rows.  But th
aa90: 61 74 20 6d 61 79 20 63 68 61 6e 67 65 20 69 6e  at may change in
aaa0: 20 61 20 66 75 74 75 72 65 20 72 65 6c 65 61 73   a future releas
aab0: 65 2e 3c 2f 70 3e 0a 0a 3c 2f 64 64 3e 0a 3c 2f  e.</p>..</dd>.</
aac0: 64 6c 3e 0a 0a 3c 70 3e 0a 54 68 65 20 63 6f 6e  dl>..<p>.The con
aad0: 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e  flict resolution
aae0: 20 61 6c 67 6f 72 69 74 68 6d 20 63 61 6e 20 62   algorithm can b
aaf0: 65 20 73 70 65 63 69 66 69 65 64 20 69 6e 20 74  e specified in t
ab00: 68 72 65 65 20 70 6c 61 63 65 73 2c 0a 69 6e 20  hree places,.in 
ab10: 6f 72 64 65 72 20 66 72 6f 6d 20 6c 6f 77 65 73  order from lowes
ab20: 74 20 74 6f 20 68 69 67 68 65 73 74 20 70 72 65  t to highest pre
ab30: 63 65 64 65 6e 63 65 3a 0a 3c 2f 70 3e 0a 0a 3c  cedence:.</p>..<
ab40: 6f 6c 3e 0a 3c 6c 69 3e 3c 70 3e 0a 4f 6e 20 61  ol>.<li><p>.On a
ab50: 20 42 45 47 49 4e 20 54 52 41 4e 53 41 43 54 49   BEGIN TRANSACTI
ab60: 4f 4e 20 63 6f 6d 6d 61 6e 64 2e 0a 3c 2f 70 3e  ON command..</p>
ab70: 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 4f  </li>..<li><p>.O
ab80: 6e 20 69 6e 64 69 76 69 64 75 61 6c 20 63 6f 6e  n individual con
ab90: 73 74 72 61 69 6e 74 73 20 77 69 74 68 69 6e 20  straints within 
aba0: 61 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 6f  a CREATE TABLE o
abb0: 72 20 43 52 45 41 54 45 20 49 4e 44 45 58 0a 73  r CREATE INDEX.s
abc0: 74 61 74 65 6d 65 6e 74 2e 0a 3c 2f 70 3e 3c 2f  tatement..</p></
abd0: 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 49 6e 20  li>..<li><p>.In 
abe0: 74 68 65 20 4f 52 20 63 6c 61 75 73 65 20 6f 66  the OR clause of
abf0: 20 61 20 43 4f 50 59 2c 20 49 4e 53 45 52 54 2c   a COPY, INSERT,
ac00: 20 6f 72 20 55 50 44 41 54 45 20 63 6f 6d 6d 61   or UPDATE comma
ac10: 6e 64 2e 0a 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 2f  nd..</p></li>.</
ac20: 6f 6c 3e 0a 0a 3c 70 3e 54 68 65 20 61 6c 67 6f  ol>..<p>The algo
ac30: 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20  rithm specified 
ac40: 69 6e 20 74 68 65 20 4f 52 20 63 6c 61 75 73 65  in the OR clause
ac50: 20 6f 66 20 61 20 43 4f 50 59 2c 20 49 4e 53 45   of a COPY, INSE
ac60: 52 54 2c 20 6f 72 20 55 50 44 41 54 45 0a 6f 76  RT, or UPDATE.ov
ac70: 65 72 72 69 64 65 73 20 61 6e 79 20 61 6c 67 6f  errides any algo
ac80: 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20  rithm specified 
ac90: 62 79 20 61 20 43 52 45 41 54 45 20 54 41 42 4c  by a CREATE TABL
aca0: 45 20 6f 72 20 43 52 45 41 54 45 20 49 4e 44 45  E or CREATE INDE
acb0: 58 2e 0a 54 68 65 20 61 6c 67 6f 72 69 74 68 6d  X..The algorithm
acc0: 20 73 70 65 63 69 66 69 65 64 20 77 69 74 68 69   specified withi
acd0: 6e 20 61 20 43 52 45 41 54 45 20 54 41 42 4c 45  n a CREATE TABLE
ace0: 20 6f 72 20 43 52 45 41 54 45 20 49 4e 44 45 58   or CREATE INDEX
acf0: 20 77 69 6c 6c 2c 20 69 6e 20 74 75 72 6e 2c 0a   will, in turn,.
ad00: 6f 76 65 72 72 69 64 65 20 74 68 65 20 61 6c 67  override the alg
ad10: 6f 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64  orithm specified
ad20: 20 62 79 20 61 20 42 45 47 49 4e 20 54 52 41 4e   by a BEGIN TRAN
ad30: 53 41 43 54 49 4f 4e 20 63 6f 6d 6d 61 6e 64 2e  SACTION command.
ad40: 0a 49 66 20 6e 6f 20 61 6c 67 6f 72 69 74 68 6d  .If no algorithm
ad50: 20 69 73 20 73 70 65 63 69 66 69 65 64 20 61 6e   is specified an
ad60: 79 77 68 65 72 65 2c 20 74 68 65 20 41 42 4f 52  ywhere, the ABOR
ad70: 54 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75  T algorithm is u
ad80: 73 65 64 2e 3c 2f 70 3e 0a 0a 7d 0a 23 20 3c 70  sed.</p>..}.# <p
ad90: 3e 46 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20  >For additional 
ada0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 2c 20 73 65 65  information, see
adb0: 20 0a 23 20 3c 61 20 68 72 65 66 3d 22 63 6f 6e   .# <a href="con
adc0: 66 6c 69 63 74 2e 68 74 6d 6c 22 3e 63 6f 6e 66  flict.html">conf
add0: 6c 69 63 74 2e 68 74 6d 6c 3c 2f 61 3e 2e 3c 2f  lict.html</a>.</
ade0: 70 3e 0a 0a 0a 53 65 63 74 69 6f 6e 20 50 52 41  p>...Section PRA
adf0: 47 4d 41 20 70 72 61 67 6d 61 0a 0a 53 79 6e 74  GMA pragma..Synt
ae00: 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e  ax {sql-statemen
ae10: 74 7d 20 7b 0a 50 52 41 47 4d 41 20 3c 6e 61 6d  t} {.PRAGMA <nam
ae20: 65 3e 20 5b 3d 20 3c 76 61 6c 75 65 3e 5d 20 7c  e> [= <value>] |
ae30: 0a 50 52 41 47 4d 41 20 3c 66 75 6e 63 74 69 6f  .PRAGMA <functio
ae40: 6e 3e 28 3c 61 72 67 3e 29 0a 7d 0a 0a 70 75 74  n>(<arg>).}..put
ae50: 73 20 7b 0a 3c 70 3e 54 68 65 20 50 52 41 47 4d  s {.<p>The PRAGM
ae60: 41 20 63 6f 6d 6d 61 6e 64 20 69 73 20 75 73 65  A command is use
ae70: 64 20 74 6f 20 6d 6f 64 69 66 79 20 74 68 65 20  d to modify the 
ae80: 6f 70 65 72 61 74 69 6f 6e 20 6f 66 20 74 68 65  operation of the
ae90: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e   SQLite library.
aea0: 0a 54 68 65 20 70 72 61 67 6d 61 20 63 6f 6d 6d  .The pragma comm
aeb0: 61 6e 64 20 69 73 20 65 78 70 65 72 69 6d 65 6e  and is experimen
aec0: 74 61 6c 20 61 6e 64 20 73 70 65 63 69 66 69 63  tal and specific
aed0: 20 70 72 61 67 6d 61 20 73 74 61 74 65 6d 65 6e   pragma statemen
aee0: 74 73 20 6d 61 79 20 62 65 0a 72 65 6d 6f 76 65  ts may be.remove
aef0: 64 20 6f 72 20 61 64 64 65 64 20 69 6e 20 66 75  d or added in fu
af00: 74 75 72 65 20 72 65 6c 65 61 73 65 73 20 6f 66  ture releases of
af10: 20 53 51 4c 69 74 65 2e 20 20 55 73 65 20 74 68   SQLite.  Use th
af20: 69 73 20 63 6f 6d 6d 61 6e 64 0a 77 69 74 68 20  is command.with 
af30: 63 61 75 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70  caution.</p>..<p
af40: 3e 54 68 65 20 63 75 72 72 65 6e 74 20 69 6d 70  >The current imp
af50: 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 73 75 70 70  lementation supp
af60: 6f 72 74 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69  orts the followi
af70: 6e 67 20 70 72 61 67 6d 61 73 3a 3c 2f 70 3e 0a  ng pragmas:</p>.
af80: 0a 3c 75 6c 3e 0a 3c 61 20 6e 61 6d 65 3d 22 70  .<ul>.<a name="p
af90: 72 61 67 6d 61 5f 63 61 63 68 65 5f 73 69 7a 65  ragma_cache_size
afa0: 22 3e 3c 2f 61 3e 0a 3c 6c 69 3e 3c 70 3e 3c 62  "></a>.<li><p><b
afb0: 3e 50 52 41 47 4d 41 20 63 61 63 68 65 5f 73 69  >PRAGMA cache_si
afc0: 7a 65 3b 0a 20 20 20 20 20 20 20 3c 62 72 3e 50  ze;.       <br>P
afd0: 52 41 47 4d 41 20 63 61 63 68 65 5f 73 69 7a 65  RAGMA cache_size
afe0: 20 3d 20 3c 2f 62 3e 3c 69 3e 4e 75 6d 62 65 72   = </b><i>Number
aff0: 2d 6f 66 2d 70 61 67 65 73 3c 2f 69 3e 3c 62 3e  -of-pages</i><b>
b000: 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70  ;</b></p>.    <p
b010: 3e 51 75 65 72 79 20 6f 72 20 63 68 61 6e 67 65  >Query or change
b020: 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d   the maximum num
b030: 62 65 72 20 6f 66 20 64 61 74 61 62 61 73 65 20  ber of database 
b040: 64 69 73 6b 20 70 61 67 65 73 20 74 68 61 74 20  disk pages that 
b050: 53 51 4c 69 74 65 0a 20 20 20 20 77 69 6c 6c 20  SQLite.    will 
b060: 68 6f 6c 64 20 69 6e 20 6d 65 6d 6f 72 79 20 61  hold in memory a
b070: 74 20 6f 6e 63 65 2e 20 20 45 61 63 68 20 70 61  t once.  Each pa
b080: 67 65 20 75 73 65 73 20 61 62 6f 75 74 20 31 2e  ge uses about 1.
b090: 35 4b 20 6f 66 20 6d 65 6d 6f 72 79 2e 0a 20 20  5K of memory..  
b0a0: 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 63 61    The default ca
b0b0: 63 68 65 20 73 69 7a 65 20 69 73 20 32 30 30 30  che size is 2000
b0c0: 2e 20 20 49 66 20 79 6f 75 20 61 72 65 20 64 6f  .  If you are do
b0d0: 69 6e 67 20 55 50 44 41 54 45 73 20 6f 72 20 44  ing UPDATEs or D
b0e0: 45 4c 45 54 45 73 0a 20 20 20 20 74 68 61 74 20  ELETEs.    that 
b0f0: 63 68 61 6e 67 65 20 6d 61 6e 79 20 72 6f 77 73  change many rows
b100: 20 6f 66 20 61 20 64 61 74 61 62 61 73 65 20 61   of a database a
b110: 6e 64 20 79 6f 75 20 64 6f 20 6e 6f 74 20 6d 69  nd you do not mi
b120: 6e 64 20 69 66 20 53 51 4c 69 74 65 0a 20 20 20  nd if SQLite.   
b130: 20 75 73 65 73 20 6d 6f 72 65 20 6d 65 6d 6f 72   uses more memor
b140: 79 2c 20 79 6f 75 20 63 61 6e 20 69 6e 63 72 65  y, you can incre
b150: 61 73 65 20 74 68 65 20 63 61 63 68 65 20 73 69  ase the cache si
b160: 7a 65 20 66 6f 72 20 61 20 70 6f 73 73 69 62 6c  ze for a possibl
b170: 65 20 73 70 65 65 64 0a 20 20 20 20 69 6d 70 72  e speed.    impr
b180: 6f 76 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 20 20 20  ovement.</p>.   
b190: 20 3c 70 3e 57 68 65 6e 20 79 6f 75 20 63 68 61   <p>When you cha
b1a0: 6e 67 65 20 74 68 65 20 63 61 63 68 65 20 73 69  nge the cache si
b1b0: 7a 65 20 75 73 69 6e 67 20 74 68 65 20 63 61 63  ze using the cac
b1c0: 68 65 5f 73 69 7a 65 20 70 72 61 67 6d 61 2c 20  he_size pragma, 
b1d0: 74 68 65 0a 20 20 20 20 63 68 61 6e 67 65 20 6f  the.    change o
b1e0: 6e 6c 79 20 65 6e 64 75 72 65 73 20 66 6f 72 20  nly endures for 
b1f0: 74 68 65 20 63 75 72 72 65 6e 74 20 73 65 73 73  the current sess
b200: 69 6f 6e 2e 20 20 54 68 65 20 63 61 63 68 65 20  ion.  The cache 
b210: 73 69 7a 65 20 72 65 76 65 72 74 73 0a 20 20 20  size reverts.   
b220: 20 74 6f 20 74 68 65 20 64 65 66 61 75 6c 74 20   to the default 
b230: 76 61 6c 75 65 20 77 68 65 6e 20 74 68 65 20 64  value when the d
b240: 61 74 61 62 61 73 65 20 69 73 20 63 6c 6f 73 65  atabase is close
b250: 64 20 61 6e 64 20 72 65 6f 70 65 6e 65 64 2e 20  d and reopened. 
b260: 20 55 73 65 0a 20 20 20 20 74 68 65 20 3c 61 20   Use.    the <a 
b270: 68 72 65 66 3d 22 23 70 72 61 67 6d 61 5f 64 65  href="#pragma_de
b280: 66 61 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65  fault_cache_size
b290: 22 3e 3c 62 3e 64 65 66 61 75 6c 74 5f 63 61 63  "><b>default_cac
b2a0: 68 65 5f 73 69 7a 65 3c 2f 62 3e 3c 2f 61 3e 20  he_size</b></a> 
b2b0: 0a 20 20 20 20 70 72 61 67 6d 61 20 74 6f 20 63  .    pragma to c
b2c0: 68 65 63 6b 20 74 68 65 20 63 61 63 68 65 20 73  heck the cache s
b2d0: 69 7a 65 20 70 65 72 6d 61 6e 65 6e 74 6c 79 2e  ize permanently.
b2e0: 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c  </p></li>..<li><
b2f0: 70 3e 3c 62 3e 50 52 41 47 4d 41 20 63 6f 75 6e  p><b>PRAGMA coun
b300: 74 5f 63 68 61 6e 67 65 73 20 3d 20 4f 4e 3b 0a  t_changes = ON;.
b310: 20 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d         <br>PRAGM
b320: 41 20 63 6f 75 6e 74 5f 63 68 61 6e 67 65 73 20  A count_changes 
b330: 3d 20 4f 46 46 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20  = OFF;</b></p>. 
b340: 20 20 20 3c 70 3e 57 68 65 6e 20 6f 6e 2c 20 74     <p>When on, t
b350: 68 65 20 43 4f 55 4e 54 5f 43 48 41 4e 47 45 53  he COUNT_CHANGES
b360: 20 70 72 61 67 6d 61 20 63 61 75 73 65 73 20 74   pragma causes t
b370: 68 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63  he callback func
b380: 74 69 6f 6e 20 74 6f 0a 20 20 20 20 62 65 20 69  tion to.    be i
b390: 6e 76 6f 6b 65 64 20 6f 6e 63 65 20 66 6f 72 20  nvoked once for 
b3a0: 65 61 63 68 20 44 45 4c 45 54 45 2c 20 49 4e 53  each DELETE, INS
b3b0: 45 52 54 2c 20 6f 72 20 55 50 44 41 54 45 20 6f  ERT, or UPDATE o
b3c0: 70 65 72 61 74 69 6f 6e 2e 20 20 54 68 65 0a 20  peration.  The. 
b3d0: 20 20 20 61 72 67 75 6d 65 6e 74 20 69 73 20 74     argument is t
b3e0: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77  he number of row
b3f0: 73 20 74 68 61 74 20 77 65 72 65 20 63 68 61 6e  s that were chan
b400: 67 65 64 2e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e  ged.</p>.    <p>
b410: 54 68 69 73 20 70 72 61 67 6d 61 20 6d 61 79 20  This pragma may 
b420: 62 65 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20  be removed from 
b430: 66 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20  future versions 
b440: 6f 66 20 53 51 4c 69 74 65 2e 0a 20 20 20 20 43  of SQLite..    C
b450: 6f 6e 73 69 64 65 72 20 75 73 69 6e 67 20 74 68  onsider using th
b460: 65 20 3c 62 3e 73 71 6c 69 74 65 5f 63 68 61 6e  e <b>sqlite_chan
b470: 67 65 73 28 29 3c 2f 62 3e 20 41 50 49 20 66 75  ges()</b> API fu
b480: 6e 63 74 69 6f 6e 20 69 6e 73 74 65 61 64 2e 3c  nction instead.<
b490: 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70  /p></li>..<li><p
b4a0: 3e 3c 62 3e 50 52 41 47 4d 41 20 64 61 74 61 62  ><b>PRAGMA datab
b4b0: 61 73 65 5f 6c 69 73 74 3b 3c 2f 62 3e 3c 2f 70  ase_list;</b></p
b4c0: 3e 0a 20 20 20 20 3c 70 3e 46 6f 72 20 65 61 63  >.    <p>For eac
b4d0: 68 20 6f 70 65 6e 20 64 61 74 61 62 61 73 65 2c  h open database,
b4e0: 20 69 6e 76 6f 6b 65 20 74 68 65 20 63 61 6c 6c   invoke the call
b4f0: 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 6f 6e  back function on
b500: 63 65 20 77 69 74 68 0a 20 20 20 20 69 6e 66 6f  ce with.    info
b510: 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68  rmation about th
b520: 61 74 20 64 61 74 61 62 61 73 65 2e 20 20 41 72  at database.  Ar
b530: 67 75 6d 65 6e 74 73 20 69 6e 63 6c 75 64 65 20  guments include 
b540: 74 68 65 20 69 6e 64 65 78 20 61 6e 64 20 0a 20  the index and . 
b550: 20 20 20 74 68 65 20 6e 61 6d 65 20 74 68 65 20     the name the 
b560: 64 61 74 62 61 73 65 20 77 61 73 20 61 74 74 61  datbase was atta
b570: 63 68 65 64 20 77 69 74 68 2e 20 20 54 68 65 20  ched with.  The 
b580: 66 69 72 73 74 20 72 6f 77 20 77 69 6c 6c 20 62  first row will b
b590: 65 20 66 6f 72 20 0a 20 20 20 20 74 68 65 20 6d  e for .    the m
b5a0: 61 69 6e 20 64 61 74 61 62 61 73 65 2e 20 20 54  ain database.  T
b5b0: 68 65 20 73 65 63 6f 6e 64 20 72 6f 77 20 77 69  he second row wi
b5c0: 6c 6c 20 62 65 20 66 6f 72 20 74 68 65 20 64 61  ll be for the da
b5d0: 74 61 62 61 73 65 20 75 73 65 64 20 74 6f 20 0a  tabase used to .
b5e0: 20 20 20 20 73 74 6f 72 65 20 74 65 6d 70 6f 72      store tempor
b5f0: 61 72 79 20 74 61 62 6c 65 73 2e 3c 2f 70 3e 3c  ary tables.</p><
b600: 2f 6c 69 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 70  /li>..<a name="p
b610: 72 61 67 6d 61 5f 64 65 66 61 75 6c 74 5f 63 61  ragma_default_ca
b620: 63 68 65 5f 73 69 7a 65 22 3e 3c 2f 61 3e 0a 3c  che_size"></a>.<
b630: 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20  li><p><b>PRAGMA 
b640: 64 65 66 61 75 6c 74 5f 63 61 63 68 65 5f 73 69  default_cache_si
b650: 7a 65 3b 0a 20 20 20 20 20 20 20 3c 62 72 3e 50  ze;.       <br>P
b660: 52 41 47 4d 41 20 64 65 66 61 75 6c 74 5f 63 61  RAGMA default_ca
b670: 63 68 65 5f 73 69 7a 65 20 3d 20 3c 2f 62 3e 3c  che_size = </b><
b680: 69 3e 4e 75 6d 62 65 72 2d 6f 66 2d 70 61 67 65  i>Number-of-page
b690: 73 3c 2f 69 3e 3c 62 3e 3b 3c 2f 62 3e 3c 2f 70  s</i><b>;</b></p
b6a0: 3e 0a 20 20 20 20 3c 70 3e 51 75 65 72 79 20 6f  >.    <p>Query o
b6b0: 72 20 63 68 61 6e 67 65 20 74 68 65 20 6d 61 78  r change the max
b6c0: 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 64  imum number of d
b6d0: 61 74 61 62 61 73 65 20 64 69 73 6b 20 70 61 67  atabase disk pag
b6e0: 65 73 20 74 68 61 74 20 53 51 4c 69 74 65 0a 20  es that SQLite. 
b6f0: 20 20 20 77 69 6c 6c 20 68 6f 6c 64 20 69 6e 20     will hold in 
b700: 6d 65 6d 6f 72 79 20 61 74 20 6f 6e 63 65 2e 20  memory at once. 
b710: 20 45 61 63 68 20 70 61 67 65 20 75 73 65 73 20   Each page uses 
b720: 61 62 6f 75 74 20 31 2e 35 4b 20 6f 66 20 6d 65  about 1.5K of me
b730: 6d 6f 72 79 2e 0a 20 20 20 20 54 68 69 73 20 70  mory..    This p
b740: 72 61 67 6d 61 20 77 6f 72 6b 73 20 6c 69 6b 65  ragma works like
b750: 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23 70   the <a href="#p
b760: 72 61 67 6d 61 5f 63 61 63 68 65 5f 73 69 7a 65  ragma_cache_size
b770: 22 3e 3c 62 3e 63 61 63 68 65 5f 73 69 7a 65 3c  "><b>cache_size<
b780: 2f 62 3e 3c 2f 61 3e 20 0a 20 20 20 20 70 72 61  /b></a> .    pra
b790: 67 6d 61 20 77 69 74 68 20 74 68 65 20 61 64 64  gma with the add
b7a0: 69 74 69 6f 6e 61 6c 0a 20 20 20 20 66 65 61 74  itional.    feat
b7b0: 75 72 65 20 74 68 61 74 20 69 74 20 63 68 61 6e  ure that it chan
b7c0: 67 65 73 20 74 68 65 20 63 61 63 68 65 20 73 69  ges the cache si
b7d0: 7a 65 20 70 65 72 73 69 73 74 65 6e 74 6c 79 2e  ze persistently.
b7e0: 20 20 57 69 74 68 20 74 68 69 73 20 70 72 61 67    With this prag
b7f0: 6d 61 2c 0a 20 20 20 20 79 6f 75 20 63 61 6e 20  ma,.    you can 
b800: 73 65 74 20 74 68 65 20 63 61 63 68 65 20 73 69  set the cache si
b810: 7a 65 20 6f 6e 63 65 20 61 6e 64 20 74 68 61 74  ze once and that
b820: 20 73 65 74 74 69 6e 67 20 69 73 20 72 65 74 61   setting is reta
b830: 69 6e 65 64 20 61 6e 64 20 72 65 75 73 65 64 0a  ined and reused.
b840: 20 20 20 20 65 76 65 72 79 74 69 6d 65 20 79 6f      everytime yo
b850: 75 20 72 65 6f 70 65 6e 20 74 68 65 20 64 61 74  u reopen the dat
b860: 61 62 61 73 65 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a  abase.</p></li>.
b870: 0a 3c 61 20 6e 61 6d 65 3d 22 70 72 61 67 6d 61  .<a name="pragma
b880: 5f 64 65 66 61 75 6c 74 5f 73 79 6e 63 68 72 6f  _default_synchro
b890: 6e 6f 75 73 22 3e 3c 2f 61 3e 0a 3c 6c 69 3e 3c  nous"></a>.<li><
b8a0: 70 3e 3c 62 3e 50 52 41 47 4d 41 20 64 65 66 61  p><b>PRAGMA defa
b8b0: 75 6c 74 5f 73 79 6e 63 68 72 6f 6e 6f 75 73 3b  ult_synchronous;
b8c0: 0a 20 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47  .       <br>PRAG
b8d0: 4d 41 20 64 65 66 61 75 6c 74 5f 73 79 6e 63 68  MA default_synch
b8e0: 72 6f 6e 6f 75 73 20 3d 20 46 55 4c 4c 3b 0a 20  ronous = FULL;. 
b8f0: 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41        <br>PRAGMA
b900: 20 64 65 66 61 75 6c 74 5f 73 79 6e 63 68 72 6f   default_synchro
b910: 6e 6f 75 73 20 3d 20 4e 4f 52 4d 41 4c 3b 0a 20  nous = NORMAL;. 
b920: 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41        <br>PRAGMA
b930: 20 64 65 66 61 75 6c 74 5f 73 79 6e 63 68 72 6f   default_synchro
b940: 6e 6f 75 73 20 3d 20 4f 46 46 3b 3c 2f 62 3e 3c  nous = OFF;</b><
b950: 2f 70 3e 0a 20 20 20 20 3c 70 3e 51 75 65 72 79  /p>.    <p>Query
b960: 20 6f 72 20 63 68 61 6e 67 65 20 74 68 65 20 73   or change the s
b970: 65 74 74 69 6e 67 20 6f 66 20 74 68 65 20 22 73  etting of the "s
b980: 79 6e 63 68 72 6f 6e 6f 75 73 22 20 66 6c 61 67  ynchronous" flag
b990: 20 69 6e 0a 20 20 20 20 74 68 65 20 64 61 74 61   in.    the data
b9a0: 62 61 73 65 2e 20 20 57 68 65 6e 20 73 79 6e 63  base.  When sync
b9b0: 68 72 6f 6e 6f 75 73 20 69 73 20 46 55 4c 4c 2c  hronous is FULL,
b9c0: 20 74 68 65 20 53 51 4c 69 74 65 20 64 61 74 61   the SQLite data
b9d0: 62 61 73 65 20 65 6e 67 69 6e 65 20 77 69 6c 6c  base engine will
b9e0: 0a 20 20 20 20 70 61 75 73 65 20 61 74 20 63 72  .    pause at cr
b9f0: 69 74 69 63 61 6c 20 6d 6f 6d 65 6e 74 73 20 74  itical moments t
ba00: 6f 20 6d 61 6b 65 20 73 75 72 65 20 74 68 61 74  o make sure that
ba10: 20 64 61 74 61 20 68 61 73 20 61 63 74 75 61 6c   data has actual
ba20: 6c 79 20 62 65 65 6e 20 0a 20 20 20 20 77 72 69  ly been .    wri
ba30: 74 74 65 6e 20 74 6f 20 74 68 65 20 64 69 73 6b  tten to the disk
ba40: 20 73 75 72 66 61 63 65 20 62 65 66 6f 72 65 20   surface before 
ba50: 63 6f 6e 74 69 6e 75 69 6e 67 2e 20 20 54 68 69  continuing.  Thi
ba60: 73 20 65 6e 73 75 72 65 73 20 74 68 61 74 20 69  s ensures that i
ba70: 66 0a 20 20 20 20 74 68 65 20 6f 70 65 72 61 74  f.    the operat
ba80: 69 6e 67 20 73 79 73 74 65 6d 20 63 72 61 73 68  ing system crash
ba90: 65 73 20 6f 72 20 69 66 20 74 68 65 72 65 20 69  es or if there i
baa0: 73 20 61 20 70 6f 77 65 72 20 66 61 69 6c 75 72  s a power failur
bab0: 65 2c 20 74 68 65 20 64 61 74 61 62 61 73 65 0a  e, the database.
bac0: 20 20 20 20 77 69 6c 6c 20 62 65 20 75 6e 63 6f      will be unco
bad0: 72 72 75 70 74 65 64 20 61 66 74 65 72 20 72 65  rrupted after re
bae0: 62 6f 6f 74 69 6e 67 2e 20 20 46 55 4c 4c 20 73  booting.  FULL s
baf0: 79 6e 63 68 72 6f 6e 6f 75 73 20 69 73 20 76 65  ynchronous is ve
bb00: 72 79 20 0a 20 20 20 20 73 61 66 65 2c 20 62 75  ry .    safe, bu
bb10: 74 20 69 74 20 69 73 20 61 6c 73 6f 20 73 6c 6f  t it is also slo
bb20: 77 2e 20 20 0a 20 20 20 20 57 68 65 6e 20 73 79  w.  .    When sy
bb30: 6e 63 68 72 6f 6e 6f 75 73 20 69 73 20 4e 4f 52  nchronous is NOR
bb40: 4d 41 4c 20 28 74 68 65 20 64 65 66 61 75 6c 74  MAL (the default
bb50: 29 2c 20 74 68 65 20 53 51 4c 69 74 65 20 64 61  ), the SQLite da
bb60: 74 61 62 61 73 65 0a 20 20 20 20 65 6e 67 69 6e  tabase.    engin
bb70: 65 20 77 69 6c 6c 20 73 74 69 6c 6c 20 70 61 75  e will still pau
bb80: 73 65 20 61 74 20 74 68 65 20 6d 6f 73 74 20 63  se at the most c
bb90: 72 69 74 69 63 61 6c 20 6d 6f 6d 65 6e 74 73 2c  ritical moments,
bba0: 20 62 75 74 20 6c 65 73 73 20 6f 66 74 65 6e 0a   but less often.
bbb0: 20 20 20 20 74 68 61 6e 20 69 6e 20 46 55 4c 4c      than in FULL
bbc0: 20 6d 6f 64 65 2e 20 20 54 68 65 72 65 20 69 73   mode.  There is
bbd0: 20 61 20 76 65 72 79 20 73 6d 61 6c 6c 20 28 74   a very small (t
bbe0: 68 6f 75 67 68 20 6e 6f 6e 2d 7a 65 72 6f 29 20  hough non-zero) 
bbf0: 63 68 61 6e 63 65 20 74 68 61 74 0a 20 20 20 20  chance that.    
bc00: 61 20 70 6f 77 65 72 20 66 61 69 6c 75 72 65 20  a power failure 
bc10: 61 74 20 6a 75 73 74 20 74 68 65 20 77 72 6f 6e  at just the wron
bc20: 67 20 74 69 6d 65 20 63 6f 75 6c 64 20 63 6f 72  g time could cor
bc30: 72 75 70 74 20 74 68 65 20 64 61 74 61 62 61 73  rupt the databas
bc40: 65 20 69 6e 0a 20 20 20 20 4e 4f 52 4d 41 4c 20  e in.    NORMAL 
bc50: 6d 6f 64 65 2e 20 20 42 75 74 20 69 6e 20 70 72  mode.  But in pr
bc60: 61 63 74 69 63 65 2c 20 79 6f 75 20 61 72 65 20  actice, you are 
bc70: 6d 6f 72 65 20 6c 69 6b 65 6c 79 20 74 6f 20 73  more likely to s
bc80: 75 66 66 65 72 0a 20 20 20 20 61 20 63 61 74 61  uffer.    a cata
bc90: 73 74 72 6f 70 68 69 63 20 64 69 73 6b 20 66 61  strophic disk fa
bca0: 69 6c 75 72 65 20 6f 72 20 73 6f 6d 65 20 6f 74  ilure or some ot
bcb0: 68 65 72 20 75 6e 72 65 63 6f 76 65 72 61 62 6c  her unrecoverabl
bcc0: 65 20 68 61 72 64 77 61 72 65 0a 20 20 20 20 66  e hardware.    f
bcd0: 61 75 6c 74 2e 20 20 53 6f 20 4e 4f 52 4d 41 4c  ault.  So NORMAL
bce0: 20 69 73 20 74 68 65 20 64 65 66 61 75 6c 74 20   is the default 
bcf0: 6d 6f 64 65 2e 0a 20 20 20 20 57 69 74 68 20 73  mode..    With s
bd00: 79 6e 63 68 72 6f 6e 6f 75 73 20 4f 46 46 2c 20  ynchronous OFF, 
bd10: 53 51 4c 69 74 65 20 63 6f 6e 74 69 6e 75 65 73  SQLite continues
bd20: 20 77 69 74 68 6f 75 74 20 70 61 75 73 69 6e 67   without pausing
bd30: 0a 20 20 20 20 61 73 20 73 6f 6f 6e 20 61 73 20  .    as soon as 
bd40: 69 74 20 68 61 73 20 68 61 6e 64 65 64 20 64 61  it has handed da
bd50: 74 61 20 6f 66 66 20 74 6f 20 74 68 65 20 6f 70  ta off to the op
bd60: 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 0a  erating system..
bd70: 20 20 20 20 49 66 20 74 68 65 20 61 70 70 6c 69      If the appli
bd80: 63 61 74 69 6f 6e 20 72 75 6e 6e 69 6e 67 20 53  cation running S
bd90: 51 4c 69 74 65 20 63 72 61 73 68 65 73 2c 20 74  QLite crashes, t
bda0: 68 65 20 64 61 74 61 20 77 69 6c 6c 20 62 65 20  he data will be 
bdb0: 73 61 66 65 2c 20 62 75 74 0a 20 20 20 20 74 68  safe, but.    th
bdc0: 65 20 64 61 74 61 62 61 73 65 20 6d 69 67 68 74  e database might
bdd0: 20 62 65 63 6f 6d 65 20 63 6f 72 72 75 70 74 65   become corrupte
bde0: 64 20 69 66 20 74 68 65 20 6f 70 65 72 61 74 69  d if the operati
bdf0: 6e 67 20 73 79 73 74 65 6d 0a 20 20 20 20 63 72  ng system.    cr
be00: 61 73 68 65 73 20 6f 72 20 74 68 65 20 63 6f 6d  ashes or the com
be10: 70 75 74 65 72 20 6c 6f 73 65 73 20 70 6f 77 65  puter loses powe
be20: 72 20 62 65 66 6f 72 65 20 74 68 61 74 20 64 61  r before that da
be30: 74 61 20 68 61 73 20 62 65 65 6e 20 77 72 69 74  ta has been writ
be40: 74 65 6e 0a 20 20 20 20 74 6f 20 74 68 65 20 64  ten.    to the d
be50: 69 73 6b 20 73 75 72 66 61 63 65 2e 20 20 4f 6e  isk surface.  On
be60: 20 74 68 65 20 6f 74 68 65 72 20 68 61 6e 64 2c   the other hand,
be70: 20 73 6f 6d 65 0a 20 20 20 20 6f 70 65 72 61 74   some.    operat
be80: 69 6f 6e 73 20 61 72 65 20 61 73 20 6d 75 63 68  ions are as much
be90: 20 61 73 20 35 30 20 6f 72 20 6d 6f 72 65 20 74   as 50 or more t
bea0: 69 6d 65 73 20 66 61 73 74 65 72 20 77 69 74 68  imes faster with
beb0: 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 4f 46 46   synchronous OFF
bec0: 2e 0a 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 3c  ..    </p>.    <
bed0: 70 3e 54 68 69 73 20 70 72 61 67 6d 61 20 63 68  p>This pragma ch
bee0: 61 6e 67 65 73 20 74 68 65 20 73 79 6e 63 68 72  anges the synchr
bef0: 6f 6e 6f 75 73 20 6d 6f 64 65 20 70 65 72 73 69  onous mode persi
bf00: 73 74 65 6e 74 6c 79 2e 20 20 4f 6e 63 65 20 63  stently.  Once c
bf10: 68 61 6e 67 65 64 2c 0a 20 20 20 20 74 68 65 20  hanged,.    the 
bf20: 6d 6f 64 65 20 73 74 61 79 73 20 61 73 20 73 65  mode stays as se
bf30: 74 20 65 76 65 6e 20 69 66 20 74 68 65 20 64 61  t even if the da
bf40: 74 61 62 61 73 65 20 69 73 20 63 6c 6f 73 65 64  tabase is closed
bf50: 20 61 6e 64 20 72 65 6f 70 65 6e 65 64 2e 20 20   and reopened.  
bf60: 54 68 65 0a 20 20 20 20 3c 61 20 68 72 65 66 3d  The.    <a href=
bf70: 22 23 70 72 61 67 6d 61 5f 73 79 6e 63 68 72 6f  "#pragma_synchro
bf80: 6e 6f 75 73 22 3e 3c 62 3e 73 79 6e 63 68 72 6f  nous"><b>synchro
bf90: 6e 6f 75 73 3c 2f 62 3e 3c 2f 61 3e 20 70 72 61  nous</b></a> pra
bfa0: 67 6d 61 20 64 6f 65 73 20 74 68 65 20 73 61 6d  gma does the sam
bfb0: 65 20 0a 20 20 20 20 74 68 69 6e 67 20 62 75 74  e .    thing but
bfc0: 20 6f 6e 6c 79 20 61 70 70 6c 69 65 73 20 74 68   only applies th
bfd0: 65 20 73 65 74 74 69 6e 67 20 74 6f 20 74 68 65  e setting to the
bfe0: 20 63 75 72 72 65 6e 74 20 73 65 73 73 69 6f 6e   current session
bff0: 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 61 20 6e  .</p></li>..<a n
c000: 61 6d 65 3d 22 70 72 61 67 6d 61 5f 64 65 66 61  ame="pragma_defa
c010: 75 6c 74 5f 74 65 6d 70 5f 73 74 6f 72 65 22 3e  ult_temp_store">
c020: 3c 2f 61 3e 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50  </a>.<li><p><b>P
c030: 52 41 47 4d 41 20 64 65 66 61 75 6c 74 5f 74 65  RAGMA default_te
c040: 6d 70 5f 73 74 6f 72 65 3b 0a 20 20 20 20 20 20  mp_store;.      
c050: 20 3c 62 72 3e 50 52 41 47 4d 41 20 64 65 66 61   <br>PRAGMA defa
c060: 75 6c 74 5f 74 65 6d 70 5f 73 74 6f 72 65 20 3d  ult_temp_store =
c070: 20 44 45 46 41 55 4c 54 3b 0a 20 20 20 20 20 20   DEFAULT;.      
c080: 20 3c 62 72 3e 50 52 41 47 4d 41 20 64 65 66 61   <br>PRAGMA defa
c090: 75 6c 74 5f 74 65 6d 70 5f 73 74 6f 72 65 20 3d  ult_temp_store =
c0a0: 20 4d 45 4d 4f 52 59 3b 0a 20 20 20 20 20 20 20   MEMORY;.       
c0b0: 3c 62 72 3e 50 52 41 47 4d 41 20 64 65 66 61 75  <br>PRAGMA defau
c0c0: 6c 74 5f 74 65 6d 70 5f 73 74 6f 72 65 20 3d 20  lt_temp_store = 
c0d0: 46 49 4c 45 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20  FILE;</b></p>.  
c0e0: 20 20 3c 70 3e 51 75 65 72 79 20 6f 72 20 63 68    <p>Query or ch
c0f0: 61 6e 67 65 20 74 68 65 20 73 65 74 74 69 6e 67  ange the setting
c100: 20 6f 66 20 74 68 65 20 22 74 65 6d 70 5f 73 74   of the "temp_st
c110: 6f 72 65 22 20 66 6c 61 67 20 73 74 6f 72 65 64  ore" flag stored
c120: 20 69 6e 0a 20 20 20 20 74 68 65 20 64 61 74 61   in.    the data
c130: 62 61 73 65 2e 20 20 57 68 65 6e 20 74 65 6d 70  base.  When temp
c140: 5f 73 74 6f 72 65 20 69 73 20 44 45 46 41 55 4c  _store is DEFAUL
c150: 54 2c 20 74 68 65 20 63 6f 6d 70 69 6c 65 2d 74  T, the compile-t
c160: 69 6d 65 20 64 65 66 61 75 6c 74 20 0a 20 20 20  ime default .   
c170: 20 69 73 20 75 73 65 64 20 66 6f 72 20 74 68 65   is used for the
c180: 20 74 65 6d 70 6f 72 61 72 79 20 64 61 74 61 62   temporary datab
c190: 61 73 65 2e 20 20 57 68 65 6e 20 74 65 6d 70 5f  ase.  When temp_
c1a0: 73 74 6f 72 65 20 69 73 20 4d 45 4d 4f 52 59 2c  store is MEMORY,
c1b0: 20 61 6e 20 0a 20 20 20 20 69 6e 2d 6d 65 6d 6f   an .    in-memo
c1c0: 72 79 20 64 61 74 61 62 61 73 65 20 69 73 20 75  ry database is u
c1d0: 73 65 64 2e 20 20 57 68 65 6e 20 74 65 6d 70 5f  sed.  When temp_
c1e0: 73 74 6f 72 65 20 69 73 20 46 49 4c 45 2c 20 61  store is FILE, a
c1f0: 20 74 65 6d 70 6f 72 61 72 79 20 0a 20 20 20 20   temporary .    
c200: 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 6f 6e  database file on
c210: 20 64 69 73 6b 20 77 69 6c 6c 20 62 65 20 75 73   disk will be us
c220: 65 64 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 69  ed.  Note that i
c230: 74 20 69 73 20 70 6f 73 73 69 62 6c 65 20 66 6f  t is possible fo
c240: 72 20 0a 20 20 20 20 74 68 65 20 6c 69 62 72 61  r .    the libra
c250: 72 79 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  ry compile-time 
c260: 6f 70 74 69 6f 6e 73 20 74 6f 20 6f 76 65 72 72  options to overr
c270: 69 64 65 20 74 68 69 73 20 73 65 74 74 69 6e 67  ide this setting
c280: 2e 20 20 4f 6e 63 65 20 0a 20 20 20 20 74 68 65  .  Once .    the
c290: 20 74 65 6d 70 6f 72 61 72 79 20 64 61 74 61 62   temporary datab
c2a0: 61 73 65 20 69 73 20 69 6e 20 75 73 65 2c 20 69  ase is in use, i
c2b0: 74 73 20 6c 6f 63 61 74 69 6f 6e 20 63 61 6e 6e  ts location cann
c2c0: 6f 74 20 62 65 20 63 68 61 6e 67 65 64 2e 3c 2f  ot be changed.</
c2d0: 70 3e 0a 0a 20 20 20 20 3c 70 3e 54 68 69 73 20  p>..    <p>This 
c2e0: 70 72 61 67 6d 61 20 63 68 61 6e 67 65 73 20 74  pragma changes t
c2f0: 68 65 20 74 65 6d 70 5f 73 74 6f 72 65 20 6d 6f  he temp_store mo
c300: 64 65 20 70 65 72 73 69 73 74 65 6e 74 6c 79 2e  de persistently.
c310: 20 20 4f 6e 63 65 20 63 68 61 6e 67 65 64 2c 0a    Once changed,.
c320: 20 20 20 20 74 68 65 20 6d 6f 64 65 20 73 74 61      the mode sta
c330: 79 73 20 61 73 20 73 65 74 20 65 76 65 6e 20 69  ys as set even i
c340: 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69  f the database i
c350: 73 20 63 6c 6f 73 65 64 20 61 6e 64 20 72 65 6f  s closed and reo
c360: 70 65 6e 65 64 2e 20 20 54 68 65 0a 20 20 20 20  pened.  The.    
c370: 3c 61 20 68 72 65 66 3d 22 23 70 72 61 67 6d 61  <a href="#pragma
c380: 5f 74 65 6d 70 5f 73 74 6f 72 65 22 3e 3c 62 3e  _temp_store"><b>
c390: 74 65 6d 70 5f 73 74 6f 72 65 3c 2f 62 3e 3c 2f  temp_store</b></
c3a0: 61 3e 20 70 72 61 67 6d 61 20 64 6f 65 73 20 74  a> pragma does t
c3b0: 68 65 20 73 61 6d 65 20 0a 20 20 20 20 74 68 69  he same .    thi
c3c0: 6e 67 20 62 75 74 20 6f 6e 6c 79 20 61 70 70 6c  ng but only appl
c3d0: 69 65 73 20 74 68 65 20 73 65 74 74 69 6e 67 20  ies the setting 
c3e0: 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 73  to the current s
c3f0: 65 73 73 69 6f 6e 2e 3c 2f 70 3e 3c 2f 6c 69 3e  ession.</p></li>
c400: 0a 0a 3c 61 20 6e 61 6d 65 3d 22 70 72 61 67 6d  ..<a name="pragm
c410: 61 5f 65 6d 70 74 79 5f 72 65 73 75 6c 74 5f 63  a_empty_result_c
c420: 61 6c 6c 62 61 63 6b 73 22 3e 3c 2f 61 3e 0a 3c  allbacks"></a>.<
c430: 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20  li><p><b>PRAGMA 
c440: 65 6d 70 74 79 5f 72 65 73 75 6c 74 5f 63 61 6c  empty_result_cal
c450: 6c 62 61 63 6b 73 20 3d 20 4f 4e 3b 0a 20 20 20  lbacks = ON;.   
c460: 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 65      <br>PRAGMA e
c470: 6d 70 74 79 5f 72 65 73 75 6c 74 5f 63 61 6c 6c  mpty_result_call
c480: 62 61 63 6b 73 20 3d 20 4f 46 46 3b 3c 2f 62 3e  backs = OFF;</b>
c490: 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 57 68 65 6e  </p>.    <p>When
c4a0: 20 6f 6e 2c 20 74 68 65 20 45 4d 50 54 59 5f 52   on, the EMPTY_R
c4b0: 45 53 55 4c 54 5f 43 41 4c 4c 42 41 43 4b 53 20  ESULT_CALLBACKS 
c4c0: 70 72 61 67 6d 61 20 63 61 75 73 65 73 20 74 68  pragma causes th
c4d0: 65 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20 20 66  e callback.    f
c4e0: 75 6e 63 74 69 6f 6e 20 74 6f 20 62 65 20 69 6e  unction to be in
c4f0: 76 6f 6b 65 64 20 6f 6e 63 65 20 66 6f 72 20 65  voked once for e
c500: 61 63 68 20 71 75 65 72 79 20 74 68 61 74 20 68  ach query that h
c510: 61 73 20 61 6e 20 65 6d 70 74 79 20 72 65 73 75  as an empty resu
c520: 6c 74 0a 20 20 20 20 73 65 74 2e 20 20 54 68 65  lt.    set.  The
c530: 20 74 68 69 72 64 20 22 3c 62 3e 61 72 67 76 3c   third "<b>argv<
c540: 2f 62 3e 22 20 70 61 72 61 6d 65 74 65 72 20 74  /b>" parameter t
c550: 6f 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 69  o the callback i
c560: 73 20 73 65 74 20 74 6f 20 4e 55 4c 4c 0a 20 20  s set to NULL.  
c570: 20 20 62 65 63 61 75 73 65 20 74 68 65 72 65 20    because there 
c580: 69 73 20 6e 6f 20 64 61 74 61 20 74 6f 20 72 65  is no data to re
c590: 70 6f 72 74 2e 20 20 42 75 74 20 74 68 65 20 73  port.  But the s
c5a0: 65 63 6f 6e 64 20 22 3c 62 3e 61 72 67 63 3c 2f  econd "<b>argc</
c5b0: 62 3e 22 20 61 6e 64 0a 20 20 20 20 66 6f 75 72  b>" and.    four
c5c0: 74 68 20 22 3c 62 3e 63 6f 6c 75 6d 6e 4e 61 6d  th "<b>columnNam
c5d0: 65 73 3c 2f 62 3e 22 20 70 61 72 61 6d 65 74 65  es</b>" paramete
c5e0: 72 73 20 61 72 65 20 76 61 6c 69 64 20 61 6e 64  rs are valid and
c5f0: 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 0a   can be used to.
c600: 20 20 20 20 64 65 74 65 72 6d 69 6e 65 20 74 68      determine th
c610: 65 20 6e 75 6d 62 65 72 20 61 6e 64 20 6e 61 6d  e number and nam
c620: 65 73 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e  es of the column
c630: 73 20 74 68 61 74 20 77 6f 75 6c 64 20 68 61 76  s that would hav
c640: 65 20 62 65 65 6e 20 69 6e 0a 20 20 20 20 74 68  e been in.    th
c650: 65 20 72 65 73 75 6c 74 20 73 65 74 20 68 61 64  e result set had
c660: 20 74 68 65 20 73 65 74 20 6e 6f 74 20 62 65 65   the set not bee
c670: 6e 20 65 6d 70 74 79 2e 3c 2f 70 3e 3c 2f 6c 69  n empty.</p></li
c680: 3e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41  >..<li><p><b>PRA
c690: 47 4d 41 20 66 75 6c 6c 5f 63 6f 6c 75 6d 6e 5f  GMA full_column_
c6a0: 6e 61 6d 65 73 20 3d 20 4f 4e 3b 0a 20 20 20 20  names = ON;.    
c6b0: 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 66 75     <br>PRAGMA fu
c6c0: 6c 6c 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 73 20  ll_column_names 
c6d0: 3d 20 4f 46 46 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20  = OFF;</b></p>. 
c6e0: 20 20 20 3c 70 3e 54 68 65 20 63 6f 6c 75 6d 6e     <p>The column
c6f0: 20 6e 61 6d 65 73 20 72 65 70 6f 72 74 65 64 20   names reported 
c700: 69 6e 20 61 6e 20 53 51 4c 69 74 65 20 63 61 6c  in an SQLite cal
c710: 6c 62 61 63 6b 20 61 72 65 20 6e 6f 72 6d 61 6c  lback are normal
c720: 6c 79 20 6a 75 73 74 0a 20 20 20 20 74 68 65 20  ly just.    the 
c730: 6e 61 6d 65 20 6f 66 20 74 68 65 20 63 6f 6c 75  name of the colu
c740: 6d 6e 20 69 74 73 65 6c 66 2c 20 65 78 63 65 70  mn itself, excep
c750: 74 20 66 6f 72 20 6a 6f 69 6e 73 20 77 68 65 6e  t for joins when
c760: 20 22 54 41 42 4c 45 2e 43 4f 4c 55 4d 4e 22 0a   "TABLE.COLUMN".
c770: 20 20 20 20 69 73 20 75 73 65 64 2e 20 20 42 75      is used.  Bu
c780: 74 20 77 68 65 6e 20 66 75 6c 6c 5f 63 6f 6c 75  t when full_colu
c790: 6d 6e 5f 6e 61 6d 65 73 20 69 73 20 74 75 72 6e  mn_names is turn
c7a0: 65 64 20 6f 6e 2c 20 63 6f 6c 75 6d 6e 20 6e 61  ed on, column na
c7b0: 6d 65 73 20 61 72 65 0a 20 20 20 20 61 6c 77 61  mes are.    alwa
c7c0: 79 73 20 72 65 70 6f 72 74 65 64 20 61 73 20 22  ys reported as "
c7d0: 54 41 42 4c 45 2e 43 4f 4c 55 4d 4e 22 20 65 76  TABLE.COLUMN" ev
c7e0: 65 6e 20 66 6f 72 20 73 69 6d 70 6c 65 20 71 75  en for simple qu
c7f0: 65 72 69 65 73 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a  eries.</p></li>.
c800: 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d  .<li><p><b>PRAGM
c810: 41 20 69 6e 64 65 78 5f 69 6e 66 6f 28 3c 2f 62  A index_info(</b
c820: 3e 3c 69 3e 69 6e 64 65 78 2d 6e 61 6d 65 3c 2f  ><i>index-name</
c830: 69 3e 3c 62 3e 29 3b 3c 2f 62 3e 3c 2f 70 3e 0a  i><b>);</b></p>.
c840: 20 20 20 20 3c 70 3e 46 6f 72 20 65 61 63 68 20      <p>For each 
c850: 63 6f 6c 75 6d 6e 20 74 68 61 74 20 74 68 65 20  column that the 
c860: 6e 61 6d 65 64 20 69 6e 64 65 78 20 72 65 66 65  named index refe
c870: 72 65 6e 63 65 73 2c 20 69 6e 76 6f 6b 65 20 74  rences, invoke t
c880: 68 65 20 0a 20 20 20 20 63 61 6c 6c 62 61 63 6b  he .    callback
c890: 20 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 6f 6e   function.    on
c8a0: 63 65 20 77 69 74 68 20 69 6e 66 6f 72 6d 61 74  ce with informat
c8b0: 69 6f 6e 20 61 62 6f 75 74 20 74 68 61 74 20 63  ion about that c
c8c0: 6f 6c 75 6d 6e 2c 20 69 6e 63 6c 75 64 69 6e 67  olumn, including
c8d0: 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65   the column name
c8e0: 2c 0a 20 20 20 20 61 6e 64 20 74 68 65 20 63 6f  ,.    and the co
c8f0: 6c 75 6d 6e 20 6e 75 6d 62 65 72 2e 3c 2f 70 3e  lumn number.</p>
c900: 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62  </li>..<li><p><b
c910: 3e 50 52 41 47 4d 41 20 69 6e 64 65 78 5f 6c 69  >PRAGMA index_li
c920: 73 74 28 3c 2f 62 3e 3c 69 3e 74 61 62 6c 65 2d  st(</b><i>table-
c930: 6e 61 6d 65 3c 2f 69 3e 3c 62 3e 29 3b 3c 2f 62  name</i><b>);</b
c940: 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 46 6f 72  ></p>.    <p>For
c950: 20 65 61 63 68 20 69 6e 64 65 78 20 6f 6e 20 74   each index on t
c960: 68 65 20 6e 61 6d 65 64 20 74 61 62 6c 65 2c 20  he named table, 
c970: 69 6e 76 6f 6b 65 20 74 68 65 20 63 61 6c 6c 62  invoke the callb
c980: 61 63 6b 20 66 75 6e 63 74 69 6f 6e 0a 20 20 20  ack function.   
c990: 20 6f 6e 63 65 20 77 69 74 68 20 69 6e 66 6f 72   once with infor
c9a0: 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 61  mation about tha
c9b0: 74 20 69 6e 64 65 78 2e 20 20 41 72 67 75 6d 65  t index.  Argume
c9c0: 6e 74 73 20 69 6e 63 6c 75 64 65 20 74 68 65 0a  nts include the.
c9d0: 20 20 20 20 69 6e 64 65 78 20 6e 61 6d 65 20 61      index name a
c9e0: 6e 64 20 61 20 66 6c 61 67 20 74 6f 20 69 6e 64  nd a flag to ind
c9f0: 69 63 61 74 65 20 77 68 65 74 68 65 72 20 6f 72  icate whether or
ca00: 20 6e 6f 74 20 74 68 65 20 69 6e 64 65 78 20 6d   not the index m
ca10: 75 73 74 20 62 65 0a 20 20 20 20 75 6e 69 71 75  ust be.    uniqu
ca20: 65 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69  e.</p></li>..<li
ca30: 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 69 6e  ><p><b>PRAGMA in
ca40: 74 65 67 72 69 74 79 5f 63 68 65 63 6b 3b 3c 2f  tegrity_check;</
ca50: 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 54 68  b></p>.    <p>Th
ca60: 65 20 63 6f 6d 6d 61 6e 64 20 64 6f 65 73 20 61  e command does a
ca70: 6e 20 69 6e 74 65 67 72 69 74 79 20 63 68 65 63  n integrity chec
ca80: 6b 20 6f 66 20 74 68 65 20 65 6e 74 69 72 65 20  k of the entire 
ca90: 64 61 74 61 62 61 73 65 2e 20 20 49 74 0a 20 20  database.  It.  
caa0: 20 20 6c 6f 6f 6b 73 20 66 6f 72 20 6f 75 74 2d    looks for out-
cab0: 6f 66 2d 6f 72 64 65 72 20 72 65 63 6f 72 64 73  of-order records
cac0: 2c 20 6d 69 73 73 69 6e 67 20 70 61 67 65 73 2c  , missing pages,
cad0: 20 61 6e 64 20 6d 61 6c 66 6f 72 6d 65 64 20 72   and malformed r
cae0: 65 63 6f 72 64 73 2e 0a 20 20 20 20 49 66 20 61  ecords..    If a
caf0: 6e 79 20 70 72 6f 62 6c 65 6d 73 20 61 72 65 20  ny problems are 
cb00: 66 6f 75 6e 64 2c 20 74 68 65 6e 20 61 20 73 69  found, then a si
cb10: 6e 67 6c 65 20 73 74 72 69 6e 67 20 69 73 20 72  ngle string is r
cb20: 65 74 75 72 6e 65 64 20 77 68 69 63 68 20 69 73  eturned which is
cb30: 0a 20 20 20 20 61 20 64 65 73 63 72 69 70 74 69  .    a descripti
cb40: 6f 6e 20 6f 66 20 61 6c 6c 20 70 72 6f 62 6c 65  on of all proble
cb50: 6d 73 2e 20 20 49 66 20 65 76 65 72 79 74 68 69  ms.  If everythi
cb60: 6e 67 20 69 73 20 69 6e 20 6f 72 64 65 72 2c 20  ng is in order, 
cb70: 22 6f 6b 22 20 69 73 0a 20 20 20 20 72 65 74 75  "ok" is.    retu
cb80: 72 6e 65 64 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a  rned.</p></li>..
cb90: 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41  <li><p><b>PRAGMA
cba0: 20 70 61 72 73 65 72 5f 74 72 61 63 65 20 3d 20   parser_trace = 
cbb0: 4f 4e 3b 3c 62 72 3e 50 52 41 47 4d 41 20 70 61  ON;<br>PRAGMA pa
cbc0: 72 73 65 72 5f 74 72 61 63 65 20 3d 20 4f 46 46  rser_trace = OFF
cbd0: 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70  ;</b></p>.    <p
cbe0: 3e 54 75 72 6e 20 74 72 61 63 69 6e 67 20 6f 66  >Turn tracing of
cbf0: 20 74 68 65 20 53 51 4c 20 70 61 72 73 65 72 20   the SQL parser 
cc00: 69 6e 73 69 64 65 20 6f 66 20 74 68 65 0a 20 20  inside of the.  
cc10: 20 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79    SQLite library
cc20: 20 6f 6e 20 61 6e 64 20 6f 66 66 2e 20 20 54 68   on and off.  Th
cc30: 69 73 20 69 73 20 75 73 65 64 20 66 6f 72 20 64  is is used for d
cc40: 65 62 75 67 67 69 6e 67 2e 0a 20 20 20 20 54 68  ebugging..    Th
cc50: 69 73 20 6f 6e 6c 79 20 77 6f 72 6b 73 20 69 66  is only works if
cc60: 20 74 68 65 20 6c 69 62 72 61 72 79 20 69 73 20   the library is 
cc70: 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 6f 75 74  compiled without
cc80: 20 74 68 65 20 4e 44 45 42 55 47 20 6d 61 63 72   the NDEBUG macr
cc90: 6f 2e 0a 20 20 20 20 3c 2f 70 3e 3c 2f 6c 69 3e  o..    </p></li>
cca0: 0a 0a 3c 61 20 6e 61 6d 65 3d 22 70 72 61 67 6d  ..<a name="pragm
ccb0: 61 5f 73 68 6f 77 5f 64 61 74 61 74 79 70 65 73  a_show_datatypes
ccc0: 22 3e 3c 2f 61 3e 0a 3c 6c 69 3e 3c 70 3e 3c 62  "></a>.<li><p><b
ccd0: 3e 50 52 41 47 4d 41 20 73 68 6f 77 5f 64 61 74  >PRAGMA show_dat
cce0: 61 74 79 70 65 73 20 3d 20 4f 4e 3b 3c 62 72 3e  atypes = ON;<br>
ccf0: 50 52 41 47 4d 41 20 73 68 6f 77 5f 64 61 74 61  PRAGMA show_data
cd00: 74 79 70 65 73 20 3d 20 4f 46 46 3b 3c 2f 62 3e  types = OFF;</b>
cd10: 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 57 68 65 6e  </p>.    <p>When
cd20: 20 74 75 72 6e 65 64 20 6f 6e 2c 20 74 68 65 20   turned on, the 
cd30: 53 48 4f 57 5f 44 41 54 41 54 59 50 45 53 20 70  SHOW_DATATYPES p
cd40: 72 61 67 6d 61 20 63 61 75 73 65 73 20 65 78 74  ragma causes ext
cd50: 72 61 20 65 6e 74 72 69 65 73 20 63 6f 6e 74 61  ra entries conta
cd60: 69 6e 69 6e 67 0a 20 20 20 20 74 68 65 20 6e 61  ining.    the na
cd70: 6d 65 73 20 6f 66 20 3c 61 20 68 72 65 66 3d 22  mes of <a href="
cd80: 64 61 74 61 74 79 70 65 73 2e 68 74 6d 6c 22 3e  datatypes.html">
cd90: 64 61 74 61 74 79 70 65 73 3c 2f 61 3e 20 6f 66  datatypes</a> of
cda0: 20 63 6f 6c 75 6d 6e 73 20 74 6f 20 62 65 0a 20   columns to be. 
cdb0: 20 20 20 61 70 70 65 6e 64 65 64 20 74 6f 20 74     appended to t
cdc0: 68 65 20 34 74 68 20 28 22 63 6f 6c 75 6d 6e 4e  he 4th ("columnN
cdd0: 61 6d 65 73 22 29 20 61 72 67 75 6d 65 6e 74 20  ames") argument 
cde0: 74 6f 20 3c 62 3e 73 71 6c 69 74 65 5f 65 78 65  to <b>sqlite_exe
cdf0: 63 28 29 3c 2f 62 3e 0a 20 20 20 20 63 61 6c 6c  c()</b>.    call
ce00: 62 61 63 6b 73 2e 20 20 57 68 65 6e 0a 20 20 20  backs.  When.   
ce10: 20 74 75 72 6e 65 64 20 6f 66 66 2c 20 74 68 65   turned off, the
ce20: 20 34 74 68 20 61 72 67 75 6d 65 6e 74 20 74 6f   4th argument to
ce30: 20 63 61 6c 6c 62 61 63 6b 73 20 63 6f 6e 74 61   callbacks conta
ce40: 69 6e 73 20 6f 6e 6c 79 20 74 68 65 20 63 6f 6c  ins only the col
ce50: 75 6d 6e 20 6e 61 6d 65 73 2e 0a 20 20 20 20 54  umn names..    T
ce60: 68 65 20 64 61 74 61 74 79 70 65 20 66 6f 72 20  he datatype for 
ce70: 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 73 20 69 73  table columns is
ce80: 20 74 61 6b 65 6e 20 66 72 6f 6d 20 74 68 65 20   taken from the 
ce90: 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 74 61  CREATE TABLE sta
cea0: 74 65 6d 65 6e 74 0a 20 20 20 20 74 68 61 74 20  tement.    that 
ceb0: 64 65 66 69 6e 65 73 20 74 68 65 20 74 61 62 6c  defines the tabl
cec0: 65 2e 20 20 43 6f 6c 75 6d 6e 73 20 77 69 74 68  e.  Columns with
ced0: 20 61 6e 20 75 6e 73 70 65 63 69 66 69 65 64 20   an unspecified 
cee0: 64 61 74 61 74 79 70 65 20 68 61 76 65 20 61 0a  datatype have a.
cef0: 20 20 20 20 64 61 74 61 74 79 70 65 20 6f 66 20      datatype of 
cf00: 22 4e 55 4d 45 52 49 43 22 20 61 6e 64 20 74 68  "NUMERIC" and th
cf10: 65 20 72 65 73 75 6c 74 73 20 6f 66 20 65 78 70  e results of exp
cf20: 72 65 73 73 69 6f 6e 20 68 61 76 65 20 61 20 64  ression have a d
cf30: 61 74 61 74 79 70 65 20 6f 66 0a 20 20 20 20 65  atatype of.    e
cf40: 69 74 68 65 72 20 22 54 45 58 54 22 20 6f 72 20  ither "TEXT" or 
cf50: 22 4e 55 4d 45 52 49 43 22 20 64 65 70 65 6e 64  "NUMERIC" depend
cf60: 69 6e 67 20 6f 6e 20 74 68 65 20 65 78 70 72 65  ing on the expre
cf70: 73 73 69 6f 6e 2e 0a 20 20 20 20 54 68 65 20 66  ssion..    The f
cf80: 6f 6c 6c 6f 77 69 6e 67 20 63 68 61 72 74 20 69  ollowing chart i
cf90: 6c 6c 75 73 74 72 61 74 65 73 20 74 68 65 20 64  llustrates the d
cfa0: 69 66 66 65 72 65 6e 63 65 20 66 6f 72 20 74 68  ifference for th
cfb0: 65 20 71 75 65 72 79 0a 20 20 20 20 22 53 45 4c  e query.    "SEL
cfc0: 45 43 54 20 27 78 79 7a 7a 79 27 2c 20 35 2c 20  ECT 'xyzzy', 5, 
cfd0: 4e 55 4c 4c 20 41 53 20 65 6d 70 74 79 20 22 3a  NULL AS empty ":
cfe0: 3c 2f 70 3e 0a 0a 20 20 20 20 3c 62 6c 6f 63 6b  </p>..    <block
cff0: 71 75 6f 74 65 3e 3c 74 61 62 6c 65 20 62 6f 72  quote><table bor
d000: 64 65 72 3d 30 3e 0a 20 20 20 20 3c 74 72 3e 3c  der=0>.    <tr><
d010: 74 68 3e 73 68 6f 77 5f 64 61 74 61 74 79 70 65  th>show_datatype
d020: 73 3d 4f 46 46 3c 2f 74 68 3e 3c 74 68 20 77 69  s=OFF</th><th wi
d030: 64 74 68 3d 33 30 3e 3c 2f 74 68 3e 0a 20 20 20  dth=30></th>.   
d040: 20 20 20 20 20 3c 74 68 3e 73 68 6f 77 5f 64 61       <th>show_da
d050: 74 61 74 79 70 65 73 3d 4f 4e 3c 2f 74 68 3e 3c  tatypes=ON</th><
d060: 2f 74 72 3e 0a 20 20 20 20 3c 74 72 3e 3c 74 64  /tr>.    <tr><td
d070: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 0a 20   valign="top">. 
d080: 20 20 20 20 20 20 61 7a 43 6f 6c 5b 30 5d 20 3d        azCol[0] =
d090: 20 22 78 79 7a 7a 79 22 3b 3c 62 72 3e 0a 20 20   "xyzzy";<br>.  
d0a0: 20 20 20 20 20 61 7a 43 6f 6c 5b 31 5d 20 3d 20       azCol[1] = 
d0b0: 22 35 22 3b 3c 62 72 3e 0a 20 20 20 20 20 20 20  "5";<br>.       
d0c0: 61 7a 43 6f 6c 5b 32 5d 20 3d 20 22 65 6d 70 74  azCol[2] = "empt
d0d0: 79 22 3b 3c 62 72 3e 0a 20 20 20 20 20 20 20 61  y";<br>.       a
d0e0: 7a 43 6f 6c 5b 33 5d 20 3d 20 30 3b 0a 20 20 20  zCol[3] = 0;.   
d0f0: 20 3c 2f 74 64 3e 3c 74 64 3e 3c 2f 74 64 3e 3c   </td><td></td><
d100: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
d110: 0a 20 20 20 20 20 20 20 61 7a 43 6f 6c 5b 30 5d  .       azCol[0]
d120: 20 3d 20 22 78 79 7a 7a 79 22 3b 3c 62 72 3e 0a   = "xyzzy";<br>.
d130: 20 20 20 20 20 20 20 61 7a 43 6f 6c 5b 31 5d 20         azCol[1] 
d140: 3d 20 22 35 22 3b 3c 62 72 3e 0a 20 20 20 20 20  = "5";<br>.     
d150: 20 20 61 7a 43 6f 6c 5b 32 5d 20 3d 20 22 65 6d    azCol[2] = "em
d160: 70 74 79 22 3b 3c 62 72 3e 0a 20 20 20 20 20 20  pty";<br>.      
d170: 20 61 7a 43 6f 6c 5b 33 5d 20 3d 20 22 54 45 58   azCol[3] = "TEX
d180: 54 22 3b 3c 62 72 3e 0a 20 20 20 20 20 20 20 61  T";<br>.       a
d190: 7a 43 6f 6c 5b 34 5d 20 3d 20 22 4e 55 4d 45 52  zCol[4] = "NUMER
d1a0: 49 43 22 3b 3c 62 72 3e 0a 20 20 20 20 20 20 20  IC";<br>.       
d1b0: 61 7a 43 6f 6c 5b 35 5d 20 3d 20 22 54 45 58 54  azCol[5] = "TEXT
d1c0: 22 3b 3c 62 72 3e 0a 20 20 20 20 20 20 20 61 7a  ";<br>.       az
d1d0: 43 6f 6c 5b 36 5d 20 3d 20 30 3b 0a 20 20 20 20  Col[6] = 0;.    
d1e0: 3c 2f 74 64 3e 3c 2f 74 61 62 6c 65 3e 3c 2f 62  </td></table></b
d1f0: 6c 6f 63 6b 71 75 6f 74 65 3e 3c 2f 6c 69 3e 0a  lockquote></li>.
d200: 0a 3c 61 20 6e 61 6d 65 3d 22 70 72 61 67 6d 61  .<a name="pragma
d210: 5f 73 79 6e 63 68 72 6f 6e 6f 75 73 22 3e 3c 2f  _synchronous"></
d220: 61 3e 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41  a>.<li><p><b>PRA
d230: 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 3b  GMA synchronous;
d240: 0a 20 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47  .       <br>PRAG
d250: 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 3d  MA synchronous =
d260: 20 46 55 4c 4c 3b 0a 20 20 20 20 20 20 20 3c 62   FULL;.       <b
d270: 72 3e 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f  r>PRAGMA synchro
d280: 6e 6f 75 73 20 3d 20 4e 4f 52 4d 41 4c 3b 0a 20  nous = NORMAL;. 
d290: 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41        <br>PRAGMA
d2a0: 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 3d 20 4f   synchronous = O
d2b0: 46 46 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20  FF;</b></p>.    
d2c0: 3c 70 3e 51 75 65 72 79 20 6f 72 20 63 68 61 6e  <p>Query or chan
d2d0: 67 65 20 74 68 65 20 73 65 74 74 69 6e 67 20 6f  ge the setting o
d2e0: 66 20 74 68 65 20 22 73 79 6e 63 68 72 6f 6e 6f  f the "synchrono
d2f0: 75 73 22 20 66 6c 61 67 20 61 66 66 65 63 74 69  us" flag affecti
d300: 6e 67 0a 20 20 20 20 74 68 65 20 64 61 74 61 62  ng.    the datab
d310: 61 73 65 20 66 6f 72 20 74 68 65 20 64 75 72 61  ase for the dura
d320: 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 75 72 72  tion of the curr
d330: 65 6e 74 20 64 61 74 61 62 61 73 65 20 63 6f 6e  ent database con
d340: 6e 65 63 74 69 6f 6e 2e 0a 20 20 20 20 54 68 65  nection..    The
d350: 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 66 6c 61   synchronous fla
d360: 67 20 72 65 76 65 72 74 73 20 74 6f 20 69 74 73  g reverts to its
d370: 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 77   default value w
d380: 68 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65  hen the database
d390: 0a 20 20 20 20 69 73 20 63 6c 6f 73 65 64 20 61  .    is closed a
d3a0: 6e 64 20 72 65 6f 70 65 6e 65 64 2e 20 20 46 6f  nd reopened.  Fo
d3b0: 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66  r additional inf
d3c0: 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 74 68 65 20  ormation on the 
d3d0: 73 79 6e 63 68 72 6f 6e 6f 75 73 0a 20 20 20 20  synchronous.    
d3e0: 66 6c 61 67 2c 20 73 65 65 20 74 68 65 20 64 65  flag, see the de
d3f0: 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 74 68 65  scription of the
d400: 20 3c 61 20 68 72 65 66 3d 22 23 70 72 61 67 6d   <a href="#pragm
d410: 61 5f 64 65 66 61 75 6c 74 5f 73 79 6e 63 68 72  a_default_synchr
d420: 6f 6e 6f 75 73 22 3e 0a 20 20 20 20 3c 62 3e 64  onous">.    <b>d
d430: 65 66 61 75 6c 74 5f 73 79 6e 63 68 72 6f 6e 6f  efault_synchrono
d440: 75 73 3c 2f 62 3e 3c 2f 61 3e 20 70 72 61 67 6d  us</b></a> pragm
d450: 61 2e 3c 2f 70 3e 0a 20 20 20 20 3c 2f 6c 69 3e  a.</p>.    </li>
d460: 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47  ..<li><p><b>PRAG
d470: 4d 41 20 74 61 62 6c 65 5f 69 6e 66 6f 28 3c 2f  MA table_info(</
d480: 62 3e 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c  b><i>table-name<
d490: 2f 69 3e 3c 62 3e 29 3b 3c 2f 62 3e 3c 2f 70 3e  /i><b>);</b></p>
d4a0: 0a 20 20 20 20 3c 70 3e 46 6f 72 20 65 61 63 68  .    <p>For each
d4b0: 20 63 6f 6c 75 6d 6e 20 69 6e 20 74 68 65 20 6e   column in the n
d4c0: 61 6d 65 64 20 74 61 62 6c 65 2c 20 69 6e 76 6f  amed table, invo
d4d0: 6b 65 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20  ke the callback 
d4e0: 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 6f 6e 63  function.    onc
d4f0: 65 20 77 69 74 68 20 69 6e 66 6f 72 6d 61 74 69  e with informati
d500: 6f 6e 20 61 62 6f 75 74 20 74 68 61 74 20 63 6f  on about that co
d510: 6c 75 6d 6e 2c 20 69 6e 63 6c 75 64 69 6e 67 20  lumn, including 
d520: 74 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 2c  the column name,
d530: 0a 20 20 20 20 64 61 74 61 20 74 79 70 65 2c 20  .    data type, 
d540: 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74  whether or not t
d550: 68 65 20 63 6f 6c 75 6d 6e 20 63 61 6e 20 62 65  he column can be
d560: 20 4e 55 4c 4c 2c 20 61 6e 64 20 74 68 65 20 64   NULL, and the d
d570: 65 66 61 75 6c 74 0a 20 20 20 20 76 61 6c 75 65  efault.    value
d580: 20 66 6f 72 20 74 68 65 20 63 6f 6c 75 6d 6e 2e   for the column.
d590: 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 61 20 6e 61  </p></li>..<a na
d5a0: 6d 65 3d 22 70 72 61 67 6d 61 5f 74 65 6d 70 5f  me="pragma_temp_
d5b0: 73 74 6f 72 65 22 3e 3c 2f 61 3e 0a 3c 6c 69 3e  store"></a>.<li>
d5c0: 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 74 65 6d  <p><b>PRAGMA tem
d5d0: 70 5f 73 74 6f 72 65 3b 0a 20 20 20 20 20 20 20  p_store;.       
d5e0: 3c 62 72 3e 50 52 41 47 4d 41 20 74 65 6d 70 5f  <br>PRAGMA temp_
d5f0: 73 74 6f 72 65 20 3d 20 44 45 46 41 55 4c 54 3b  store = DEFAULT;
d600: 0a 20 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47  .       <br>PRAG
d610: 4d 41 20 74 65 6d 70 5f 73 74 6f 72 65 20 3d 20  MA temp_store = 
d620: 4d 45 4d 4f 52 59 3b 0a 20 20 20 20 20 20 20 3c  MEMORY;.       <
d630: 62 72 3e 50 52 41 47 4d 41 20 74 65 6d 70 5f 73  br>PRAGMA temp_s
d640: 74 6f 72 65 20 3d 20 46 49 4c 45 3b 3c 2f 62 3e  tore = FILE;</b>
d650: 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 51 75 65 72  </p>.    <p>Quer
d660: 79 20 6f 72 20 63 68 61 6e 67 65 20 74 68 65 20  y or change the 
d670: 73 65 74 74 69 6e 67 20 6f 66 20 74 68 65 20 22  setting of the "
d680: 74 65 6d 70 5f 73 74 6f 72 65 22 20 66 6c 61 67  temp_store" flag
d690: 20 61 66 66 65 63 74 69 6e 67 0a 20 20 20 20 74   affecting.    t
d6a0: 68 65 20 64 61 74 61 62 61 73 65 20 66 6f 72 20  he database for 
d6b0: 74 68 65 20 64 75 72 61 74 69 6f 6e 20 6f 66 20  the duration of 
d6c0: 74 68 65 20 63 75 72 72 65 6e 74 20 64 61 74 61  the current data
d6d0: 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e  base connection.
d6e0: 0a 20 20 20 20 54 68 65 20 74 65 6d 70 5f 73 74  .    The temp_st
d6f0: 6f 72 65 20 66 6c 61 67 20 72 65 76 65 72 74 73  ore flag reverts
d700: 20 74 6f 20 69 74 73 20 64 65 66 61 75 6c 74 20   to its default 
d710: 76 61 6c 75 65 20 77 68 65 6e 20 74 68 65 20 64  value when the d
d720: 61 74 61 62 61 73 65 0a 20 20 20 20 69 73 20 63  atabase.    is c
d730: 6c 6f 73 65 64 20 61 6e 64 20 72 65 6f 70 65 6e  losed and reopen
d740: 65 64 2e 20 20 46 6f 72 20 61 64 64 69 74 69 6f  ed.  For additio
d750: 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  nal information 
d760: 6f 6e 20 74 68 65 20 74 65 6d 70 5f 73 74 6f 72  on the temp_stor
d770: 65 0a 20 20 20 20 66 6c 61 67 2c 20 73 65 65 20  e.    flag, see 
d780: 74 68 65 20 64 65 73 63 72 69 70 74 69 6f 6e 20  the description 
d790: 6f 66 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22  of the <a href="
d7a0: 23 70 72 61 67 6d 61 5f 64 65 66 61 75 6c 74 5f  #pragma_default_
d7b0: 74 65 6d 70 5f 73 74 6f 72 65 22 3e 0a 20 20 20  temp_store">.   
d7c0: 20 3c 62 3e 64 65 66 61 75 6c 74 5f 74 65 6d 70   <b>default_temp
d7d0: 5f 73 74 6f 72 65 3c 2f 62 3e 3c 2f 61 3e 20 70  _store</b></a> p
d7e0: 72 61 67 6d 61 2e 20 20 4e 6f 74 65 20 74 68 61  ragma.  Note tha
d7f0: 74 20 69 74 20 69 73 20 70 6f 73 73 69 62 6c 65  t it is possible
d800: 20 66 6f 72 20 0a 20 20 20 20 74 68 65 20 6c 69   for .    the li
d810: 62 72 61 72 79 20 63 6f 6d 70 69 6c 65 2d 74 69  brary compile-ti
d820: 6d 65 20 6f 70 74 69 6f 6e 73 20 74 6f 20 6f 76  me options to ov
d830: 65 72 72 69 64 65 20 74 68 69 73 20 73 65 74 74  erride this sett
d840: 69 6e 67 2e 20 3c 2f 70 3e 0a 20 20 20 20 3c 2f  ing. </p>.    </
d850: 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50  li>..<li><p><b>P
d860: 52 41 47 4d 41 20 76 64 62 65 5f 74 72 61 63 65  RAGMA vdbe_trace
d870: 20 3d 20 4f 4e 3b 3c 62 72 3e 50 52 41 47 4d 41   = ON;<br>PRAGMA
d880: 20 76 64 62 65 5f 74 72 61 63 65 20 3d 20 4f 46   vdbe_trace = OF
d890: 46 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c  F;</b></p>.    <
d8a0: 70 3e 54 75 72 6e 20 74 72 61 63 69 6e 67 20 6f  p>Turn tracing o
d8b0: 66 20 74 68 65 20 76 69 72 74 75 61 6c 20 64 61  f the virtual da
d8c0: 74 61 62 61 73 65 20 65 6e 67 69 6e 65 20 69 6e  tabase engine in
d8d0: 73 69 64 65 20 6f 66 20 74 68 65 0a 20 20 20 20  side of the.    
d8e0: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 6f  SQLite library o
d8f0: 6e 20 61 6e 64 20 6f 66 66 2e 20 20 54 68 69 73  n and off.  This
d900: 20 69 73 20 75 73 65 64 20 66 6f 72 20 64 65 62   is used for deb
d910: 75 67 67 69 6e 67 2e 3c 2f 70 3e 3c 2f 6c 69 3e  ugging.</p></li>
d920: 0a 3c 2f 75 6c 3e 0a 0a 3c 70 3e 4e 6f 20 65 72  .</ul>..<p>No er
d930: 72 6f 72 20 6d 65 73 73 61 67 65 20 69 73 20 67  ror message is g
d940: 65 6e 65 72 61 74 65 64 20 69 66 20 61 6e 20 75  enerated if an u
d950: 6e 6b 6e 6f 77 6e 20 70 72 61 67 6d 61 20 69 73  nknown pragma is
d960: 20 69 73 73 75 65 64 2e 0a 55 6e 6b 6e 6f 77 6e   issued..Unknown
d970: 20 70 72 61 67 6d 61 73 20 61 72 65 20 69 67 6e   pragmas are ign
d980: 6f 72 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65  ored.</p>.}...Se
d990: 63 74 69 6f 6e 20 52 45 50 4c 41 43 45 20 72 65  ction REPLACE re
d9a0: 70 6c 61 63 65 0a 0a 53 79 6e 74 61 78 20 7b 73  place..Syntax {s
d9b0: 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a  ql-statement} {.
d9c0: 52 45 50 4c 41 43 45 20 49 4e 54 4f 20 5b 3c 64  REPLACE INTO [<d
d9d0: 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d  atabase-name> .]
d9e0: 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 28   <table-name> [(
d9f0: 20 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 20 29   <column-list> )
da00: 5d 20 56 41 4c 55 45 53 20 28 20 3c 76 61 6c 75  ] VALUES ( <valu
da10: 65 2d 6c 69 73 74 3e 20 29 20 7c 0a 52 45 50 4c  e-list> ) |.REPL
da20: 41 43 45 20 49 4e 54 4f 20 5b 3c 64 61 74 61 62  ACE INTO [<datab
da30: 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61  ase-name> .] <ta
da40: 62 6c 65 2d 6e 61 6d 65 3e 20 5b 28 20 3c 63 6f  ble-name> [( <co
da50: 6c 75 6d 6e 2d 6c 69 73 74 3e 20 29 5d 20 3c 73  lumn-list> )] <s
da60: 65 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e  elect-statement>
da70: 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68  .}..puts {.<p>Th
da80: 65 20 52 45 50 4c 41 43 45 20 63 6f 6d 6d 61 6e  e REPLACE comman
da90: 64 20 69 73 20 61 6e 20 61 6c 69 61 73 20 66 6f  d is an alias fo
daa0: 72 20 74 68 65 20 22 49 4e 53 45 52 54 20 4f 52  r the "INSERT OR
dab0: 20 52 45 50 4c 41 43 45 22 20 76 61 72 69 61 6e   REPLACE" varian
dac0: 74 0a 6f 66 20 74 68 65 20 3c 61 20 68 72 65 66  t.of the <a href
dad0: 3d 22 23 69 6e 73 65 72 74 22 3e 49 4e 53 45 52  ="#insert">INSER
dae0: 54 3c 2f 61 3e 20 63 6f 6d 6d 61 6e 64 2e 20 20  T</a> command.  
daf0: 54 68 69 73 20 61 6c 69 61 73 20 69 73 20 70 72  This alias is pr
db00: 6f 76 69 64 65 64 20 66 6f 72 0a 63 6f 6d 70 61  ovided for.compa
db10: 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 4d 79  tibility with My
db20: 53 51 4c 2e 20 20 53 65 65 20 74 68 65 20 0a 3c  SQL.  See the .<
db30: 61 20 68 72 65 66 3d 22 23 69 6e 73 65 72 74 22  a href="#insert"
db40: 3e 49 4e 53 45 52 54 3c 2f 61 3e 20 63 6f 6d 6d  >INSERT</a> comm
db50: 61 6e 64 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  and documentatio
db60: 6e 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c  n for additional
db70: 0a 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70  .information.</p
db80: 3e 20 20 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20  >  .}...Section 
db90: 53 45 4c 45 43 54 20 73 65 6c 65 63 74 0a 0a 53  SELECT select..S
dba0: 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65  yntax {sql-state
dbb0: 6d 65 6e 74 7d 20 7b 0a 53 45 4c 45 43 54 20 5b  ment} {.SELECT [
dbc0: 41 4c 4c 20 7c 20 44 49 53 54 49 4e 43 54 5d 20  ALL | DISTINCT] 
dbd0: 3c 72 65 73 75 6c 74 3e 20 5b 46 52 4f 4d 20 3c  <result> [FROM <
dbe0: 74 61 62 6c 65 2d 6c 69 73 74 3e 5d 0a 5b 57 48  table-list>].[WH
dbf0: 45 52 45 20 3c 65 78 70 72 3e 5d 0a 5b 47 52 4f  ERE <expr>].[GRO
dc00: 55 50 20 42 59 20 3c 65 78 70 72 2d 6c 69 73 74  UP BY <expr-list
dc10: 3e 5d 0a 5b 48 41 56 49 4e 47 20 3c 65 78 70 72  >].[HAVING <expr
dc20: 3e 5d 0a 5b 3c 63 6f 6d 70 6f 75 6e 64 2d 6f 70  >].[<compound-op
dc30: 3e 20 3c 73 65 6c 65 63 74 3e 5d 2a 0a 5b 4f 52  > <select>]*.[OR
dc40: 44 45 52 20 42 59 20 3c 73 6f 72 74 2d 65 78 70  DER BY <sort-exp
dc50: 72 2d 6c 69 73 74 3e 5d 0a 5b 4c 49 4d 49 54 20  r-list>].[LIMIT 
dc60: 3c 69 6e 74 65 67 65 72 3e 20 5b 4c 50 20 4f 46  <integer> [LP OF
dc70: 46 53 45 54 20 7c 20 2c 20 52 50 20 3c 69 6e 74  FSET | , RP <int
dc80: 65 67 65 72 3e 5d 5d 0a 7d 20 7b 72 65 73 75 6c  eger>]].} {resul
dc90: 74 7d 20 7b 0a 3c 72 65 73 75 6c 74 2d 63 6f 6c  t} {.<result-col
dca0: 75 6d 6e 3e 20 5b 2c 20 3c 72 65 73 75 6c 74 2d  umn> [, <result-
dcb0: 63 6f 6c 75 6d 6e 3e 5d 2a 0a 7d 20 7b 72 65 73  column>]*.} {res
dcc0: 75 6c 74 2d 63 6f 6c 75 6d 6e 7d 20 7b 0a 53 54  ult-column} {.ST
dcd0: 41 52 20 7c 20 3c 74 61 62 6c 65 2d 6e 61 6d 65  AR | <table-name
dce0: 3e 20 2e 20 53 54 41 52 20 7c 20 3c 65 78 70 72  > . STAR | <expr
dcf0: 3e 20 5b 20 5b 41 53 5d 20 3c 73 74 72 69 6e 67  > [ [AS] <string
dd00: 3e 20 5d 0a 7d 20 7b 74 61 62 6c 65 2d 6c 69 73  > ].} {table-lis
dd10: 74 7d 20 7b 0a 3c 74 61 62 6c 65 3e 20 5b 3c 6a  t} {.<table> [<j
dd20: 6f 69 6e 2d 6f 70 3e 20 3c 74 61 62 6c 65 3e 20  oin-op> <table> 
dd30: 3c 6a 6f 69 6e 2d 61 72 67 73 3e 5d 2a 0a 7d 20  <join-args>]*.} 
dd40: 7b 74 61 62 6c 65 7d 20 7b 0a 3c 74 61 62 6c 65  {table} {.<table
dd50: 2d 6e 61 6d 65 3e 20 5b 41 53 20 3c 61 6c 69 61  -name> [AS <alia
dd60: 73 3e 5d 20 7c 0a 28 20 3c 73 65 6c 65 63 74 3e  s>] |.( <select>
dd70: 20 29 20 5b 41 53 20 3c 61 6c 69 61 73 3e 5d 0a   ) [AS <alias>].
dd80: 7d 20 7b 6a 6f 69 6e 2d 6f 70 7d 20 7b 0a 2c 20  } {join-op} {., 
dd90: 7c 20 5b 4e 41 54 55 52 41 4c 5d 20 5b 4c 45 46  | [NATURAL] [LEF
dda0: 54 20 7c 20 52 49 47 48 54 20 7c 20 46 55 4c 4c  T | RIGHT | FULL
ddb0: 5d 20 5b 4f 55 54 45 52 20 7c 20 49 4e 4e 45 52  ] [OUTER | INNER
ddc0: 20 7c 20 43 52 4f 53 53 5d 20 4a 4f 49 4e 0a 7d   | CROSS] JOIN.}
ddd0: 20 7b 6a 6f 69 6e 2d 61 72 67 73 7d 20 7b 0a 5b   {join-args} {.[
dde0: 4f 4e 20 3c 65 78 70 72 3e 5d 20 5b 55 53 49 4e  ON <expr>] [USIN
ddf0: 47 20 28 20 3c 69 64 2d 6c 69 73 74 3e 20 29 5d  G ( <id-list> )]
de00: 0a 7d 20 7b 73 6f 72 74 2d 65 78 70 72 2d 6c 69  .} {sort-expr-li
de10: 73 74 7d 20 7b 0a 3c 65 78 70 72 3e 20 5b 3c 73  st} {.<expr> [<s
de20: 6f 72 74 2d 6f 72 64 65 72 3e 5d 20 5b 2c 20 3c  ort-order>] [, <
de30: 65 78 70 72 3e 20 5b 3c 73 6f 72 74 2d 6f 72 64  expr> [<sort-ord
de40: 65 72 3e 5d 5d 2a 0a 7d 20 7b 73 6f 72 74 2d 6f  er>]]*.} {sort-o
de50: 72 64 65 72 7d 20 7b 0a 41 53 43 20 7c 20 44 45  rder} {.ASC | DE
de60: 53 43 0a 7d 20 7b 63 6f 6d 70 6f 75 6e 64 5f 6f  SC.} {compound_o
de70: 70 7d 20 7b 0a 55 4e 49 4f 4e 20 7c 20 55 4e 49  p} {.UNION | UNI
de80: 4f 4e 20 41 4c 4c 20 7c 20 49 4e 54 45 52 53 45  ON ALL | INTERSE
de90: 43 54 20 7c 20 45 58 43 45 50 54 0a 7d 0a 0a 70  CT | EXCEPT.}..p
dea0: 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 53 45 4c  uts {.<p>The SEL
deb0: 45 43 54 20 73 74 61 74 65 6d 65 6e 74 20 69 73  ECT statement is
dec0: 20 75 73 65 64 20 74 6f 20 71 75 65 72 79 20 74   used to query t
ded0: 68 65 20 64 61 74 61 62 61 73 65 2e 20 20 54 68  he database.  Th
dee0: 65 0a 72 65 73 75 6c 74 20 6f 66 20 61 20 53 45  e.result of a SE
def0: 4c 45 43 54 20 69 73 20 7a 65 72 6f 20 6f 72 20  LECT is zero or 
df00: 6d 6f 72 65 20 72 6f 77 73 20 6f 66 20 64 61 74  more rows of dat
df10: 61 20 77 68 65 72 65 20 65 61 63 68 20 72 6f 77  a where each row
df20: 0a 68 61 73 20 61 20 66 69 78 65 64 20 6e 75 6d  .has a fixed num
df30: 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 2e 20  ber of columns. 
df40: 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63   The number of c
df50: 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 0a 72 65  olumns in the.re
df60: 73 75 6c 74 20 69 73 20 73 70 65 63 69 66 69 65  sult is specifie
df70: 64 20 62 79 20 74 68 65 20 65 78 70 72 65 73 73  d by the express
df80: 69 6f 6e 20 6c 69 73 74 20 69 6e 20 62 65 74 77  ion list in betw
df90: 65 65 6e 20 74 68 65 0a 53 45 4c 45 43 54 20 61  een the.SELECT a
dfa0: 6e 64 20 46 52 4f 4d 20 6b 65 79 77 6f 72 64 73  nd FROM keywords
dfb0: 2e 20 20 41 6e 79 20 61 72 62 69 74 72 61 72 79  .  Any arbitrary
dfc0: 20 65 78 70 72 65 73 73 69 6f 6e 20 63 61 6e 20   expression can 
dfd0: 62 65 20 75 73 65 64 0a 61 73 20 61 20 72 65 73  be used.as a res
dfe0: 75 6c 74 2e 20 20 49 66 20 61 20 72 65 73 75 6c  ult.  If a resul
dff0: 74 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20  t expression is 
e000: 7d 0a 70 75 74 73 20 22 5b 4f 70 65 72 61 74 6f  }.puts "[Operato
e010: 72 20 2a 5d 20 74 68 65 6e 20 61 6c 6c 20 63 6f  r *] then all co
e020: 6c 75 6d 6e 73 20 6f 66 20 61 6c 6c 20 74 61 62  lumns of all tab
e030: 6c 65 73 20 61 72 65 20 73 75 62 73 74 69 74 75  les are substitu
e040: 74 65 64 22 0a 70 75 74 73 20 7b 66 6f 72 20 74  ted".puts {for t
e050: 68 61 74 20 6f 6e 65 20 65 78 70 72 65 73 73 69  hat one expressi
e060: 6f 6e 2e 20 20 49 66 20 74 68 65 20 65 78 70 72  on.  If the expr
e070: 65 73 73 69 6f 6e 20 69 73 20 74 68 65 20 6e 61  ession is the na
e080: 6d 65 20 6f 66 7d 0a 70 75 74 73 20 22 61 20 74  me of}.puts "a t
e090: 61 62 6c 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79  able followed by
e0a0: 20 5b 4f 70 65 72 61 74 6f 72 20 2e 2a 5d 20 74   [Operator .*] t
e0b0: 68 65 6e 20 74 68 65 20 72 65 73 75 6c 74 20 69  hen the result i
e0c0: 73 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73 22 0a 70  s all columns".p
e0d0: 75 74 73 20 7b 69 6e 20 74 68 61 74 20 6f 6e 65  uts {in that one
e0e0: 20 74 61 62 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e   table.</p>..<p>
e0f0: 54 68 65 20 44 49 53 54 49 4e 43 54 20 6b 65 79  The DISTINCT key
e100: 77 6f 72 64 20 63 61 75 73 65 73 20 61 20 73 75  word causes a su
e110: 62 73 65 74 20 6f 66 20 72 65 73 75 6c 74 20 72  bset of result r
e120: 6f 77 73 20 74 6f 20 62 65 20 72 65 74 75 72 6e  ows to be return
e130: 65 64 2c 20 0a 69 6e 20 77 68 69 63 68 20 65 61  ed, .in which ea
e140: 63 68 20 72 65 73 75 6c 74 20 72 6f 77 20 69 73  ch result row is
e150: 20 64 69 66 66 65 72 65 6e 74 2e 20 20 4e 55 4c   different.  NUL
e160: 4c 20 76 61 6c 75 65 73 20 61 72 65 20 6e 6f 74  L values are not
e170: 20 74 72 65 61 74 65 64 20 61 73 20 0a 64 69 73   treated as .dis
e180: 74 69 6e 63 74 20 66 72 6f 6d 20 65 61 63 68 6f  tinct from eacho
e190: 74 68 65 72 2e 20 20 54 68 65 20 64 65 66 61 75  ther.  The defau
e1a0: 6c 74 20 62 65 68 61 76 69 6f 72 20 69 73 20 74  lt behavior is t
e1b0: 68 61 74 20 61 6c 6c 20 72 65 73 75 6c 74 20 72  hat all result r
e1c0: 6f 77 73 20 0a 62 65 20 72 65 74 75 72 6e 65 64  ows .be returned
e1d0: 2c 20 77 68 69 63 68 20 63 61 6e 20 62 65 20 6d  , which can be m
e1e0: 61 64 65 20 65 78 70 6c 69 63 69 74 20 77 69 74  ade explicit wit
e1f0: 68 20 74 68 65 20 6b 65 79 77 6f 72 64 20 41 4c  h the keyword AL
e200: 4c 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 71  L.</p>..<p>The q
e210: 75 65 72 79 20 69 73 20 65 78 65 63 75 74 65 64  uery is executed
e220: 20 61 67 61 69 6e 73 74 20 6f 6e 65 20 6f 72 20   against one or 
e230: 6d 6f 72 65 20 74 61 62 6c 65 73 20 73 70 65 63  more tables spec
e240: 69 66 69 65 64 20 61 66 74 65 72 0a 74 68 65 20  ified after.the 
e250: 46 52 4f 4d 20 6b 65 79 77 6f 72 64 2e 20 20 49  FROM keyword.  I
e260: 66 20 6d 75 6c 74 69 70 6c 65 20 74 61 62 6c 65  f multiple table
e270: 73 20 6e 61 6d 65 73 20 61 72 65 20 73 65 70 61  s names are sepa
e280: 72 61 74 65 64 20 62 79 20 63 6f 6d 6d 61 73 2c  rated by commas,
e290: 0a 74 68 65 6e 20 74 68 65 20 71 75 65 72 79 20  .then the query 
e2a0: 69 73 20 61 67 61 69 6e 73 74 20 74 68 65 20 63  is against the c
e2b0: 72 6f 73 73 20 6a 6f 69 6e 20 6f 66 20 74 68 65  ross join of the
e2c0: 20 76 61 72 69 6f 75 73 20 74 61 62 6c 65 73 2e   various tables.
e2d0: 0a 54 68 65 20 66 75 6c 6c 20 53 51 4c 2d 39 32  .The full SQL-92
e2e0: 20 6a 6f 69 6e 20 73 79 6e 74 61 78 20 63 61 6e   join syntax can
e2f0: 20 61 6c 73 6f 20 62 65 20 75 73 65 64 20 74 6f   also be used to
e300: 20 73 70 65 63 69 66 79 20 6a 6f 69 6e 73 2e 0a   specify joins..
e310: 41 20 73 75 62 2d 71 75 65 72 79 0a 69 6e 20 70  A sub-query.in p
e320: 61 72 65 6e 74 68 65 73 65 73 20 6d 61 79 20 62  arentheses may b
e330: 65 20 73 75 62 73 74 69 74 75 74 65 64 20 66 6f  e substituted fo
e340: 72 20 61 6e 79 20 74 61 62 6c 65 20 6e 61 6d 65  r any table name
e350: 20 69 6e 20 74 68 65 20 46 52 4f 4d 20 63 6c 61   in the FROM cla
e360: 75 73 65 2e 0a 54 68 65 20 65 6e 74 69 72 65 20  use..The entire 
e370: 46 52 4f 4d 20 63 6c 61 75 73 65 20 6d 61 79 20  FROM clause may 
e380: 62 65 20 6f 6d 69 74 74 65 64 2c 20 69 6e 20 77  be omitted, in w
e390: 68 69 63 68 20 63 61 73 65 20 74 68 65 20 72 65  hich case the re
e3a0: 73 75 6c 74 20 69 73 20 61 0a 73 69 6e 67 6c 65  sult is a.single
e3b0: 20 72 6f 77 20 63 6f 6e 73 69 73 74 69 6e 67 20   row consisting 
e3c0: 6f 66 20 74 68 65 20 76 61 6c 75 65 73 20 6f 66  of the values of
e3d0: 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20   the expression 
e3e0: 6c 69 73 74 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54  list..</p>..<p>T
e3f0: 68 65 20 57 48 45 52 45 20 63 6c 61 75 73 65 20  he WHERE clause 
e400: 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 6c  can be used to l
e410: 69 6d 69 74 20 74 68 65 20 6e 75 6d 62 65 72 20  imit the number 
e420: 6f 66 20 72 6f 77 73 20 6f 76 65 72 0a 77 68 69  of rows over.whi
e430: 63 68 20 74 68 65 20 71 75 65 72 79 20 6f 70 65  ch the query ope
e440: 72 61 74 65 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  rates.</p>..<p>T
e450: 68 65 20 47 52 4f 55 50 20 42 59 20 63 6c 61 75  he GROUP BY clau
e460: 73 65 73 20 63 61 75 73 65 73 20 6f 6e 65 20 6f  ses causes one o
e470: 72 20 6d 6f 72 65 20 72 6f 77 73 20 6f 66 20 74  r more rows of t
e480: 68 65 20 72 65 73 75 6c 74 20 74 6f 0a 62 65 20  he result to.be 
e490: 63 6f 6d 62 69 6e 65 64 20 69 6e 74 6f 20 61 20  combined into a 
e4a0: 73 69 6e 67 6c 65 20 72 6f 77 20 6f 66 20 6f 75  single row of ou
e4b0: 74 70 75 74 2e 20 20 54 68 69 73 20 69 73 20 65  tput.  This is e
e4c0: 73 70 65 63 69 61 6c 6c 79 20 75 73 65 66 75 6c  specially useful
e4d0: 0a 77 68 65 6e 20 74 68 65 20 72 65 73 75 6c 74  .when the result
e4e0: 20 63 6f 6e 74 61 69 6e 73 20 61 67 67 72 65 67   contains aggreg
e4f0: 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 2e 20 20  ate functions.  
e500: 54 68 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20  The expressions 
e510: 69 6e 0a 74 68 65 20 47 52 4f 55 50 20 42 59 20  in.the GROUP BY 
e520: 63 6c 61 75 73 65 20 64 6f 20 3c 65 6d 3e 6e 6f  clause do <em>no
e530: 74 3c 2f 65 6d 3e 20 68 61 76 65 20 74 6f 20 62  t</em> have to b
e540: 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74 68  e expressions th
e550: 61 74 0a 61 70 70 65 61 72 20 69 6e 20 74 68 65  at.appear in the
e560: 20 72 65 73 75 6c 74 2e 20 20 54 68 65 20 48 41   result.  The HA
e570: 56 49 4e 47 20 63 6c 61 75 73 65 20 69 73 20 73  VING clause is s
e580: 69 6d 69 6c 61 72 20 74 6f 20 57 48 45 52 45 20  imilar to WHERE 
e590: 65 78 63 65 70 74 0a 74 68 61 74 20 48 41 56 49  except.that HAVI
e5a0: 4e 47 20 61 70 70 6c 69 65 73 20 61 66 74 65 72  NG applies after
e5b0: 20 67 72 6f 75 70 69 6e 67 20 68 61 73 20 6f 63   grouping has oc
e5c0: 63 75 72 72 65 64 2e 20 20 54 68 65 20 48 41 56  curred.  The HAV
e5d0: 49 4e 47 20 65 78 70 72 65 73 73 69 6f 6e 0a 6d  ING expression.m
e5e0: 61 79 20 72 65 66 65 72 20 74 6f 20 76 61 6c 75  ay refer to valu
e5f0: 65 73 2c 20 65 76 65 6e 20 61 67 67 72 65 67 61  es, even aggrega
e600: 74 65 20 66 75 6e 63 74 69 6f 6e 73 2c 20 74 68  te functions, th
e610: 61 74 20 61 72 65 20 6e 6f 74 20 69 6e 20 74 68  at are not in th
e620: 65 20 72 65 73 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c  e result.</p>..<
e630: 70 3e 54 68 65 20 4f 52 44 45 52 20 42 59 20 63  p>The ORDER BY c
e640: 6c 61 75 73 65 20 63 61 75 73 65 73 20 74 68 65  lause causes the
e650: 20 6f 75 74 70 75 74 20 72 6f 77 73 20 74 6f 20   output rows to 
e660: 62 65 20 73 6f 72 74 65 64 2e 20 20 0a 54 68 65  be sorted.  .The
e670: 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 4f 52 44   argument to ORD
e680: 45 52 20 42 59 20 69 73 20 61 20 6c 69 73 74 20  ER BY is a list 
e690: 6f 66 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74  of expressions t
e6a0: 68 61 74 20 61 72 65 20 75 73 65 64 20 61 73 20  hat are used as 
e6b0: 74 68 65 0a 6b 65 79 20 66 6f 72 20 74 68 65 20  the.key for the 
e6c0: 73 6f 72 74 2e 20 20 54 68 65 20 65 78 70 72 65  sort.  The expre
e6d0: 73 73 69 6f 6e 73 20 64 6f 20 6e 6f 74 20 68 61  ssions do not ha
e6e0: 76 65 20 74 6f 20 62 65 20 70 61 72 74 20 6f 66  ve to be part of
e6f0: 20 74 68 65 0a 72 65 73 75 6c 74 20 66 6f 72 20   the.result for 
e700: 61 20 73 69 6d 70 6c 65 20 53 45 4c 45 43 54 2c  a simple SELECT,
e710: 20 62 75 74 20 69 6e 20 61 20 63 6f 6d 70 6f 75   but in a compou
e720: 6e 64 20 53 45 4c 45 43 54 20 65 61 63 68 20 73  nd SELECT each s
e730: 6f 72 74 0a 65 78 70 72 65 73 73 69 6f 6e 20 6d  ort.expression m
e740: 75 73 74 20 65 78 61 63 74 6c 79 20 6d 61 74 63  ust exactly matc
e750: 68 20 6f 6e 65 20 6f 66 20 74 68 65 20 72 65 73  h one of the res
e760: 75 6c 74 20 63 6f 6c 75 6d 6e 73 2e 20 20 45 61  ult columns.  Ea
e770: 63 68 0a 73 6f 72 74 20 65 78 70 72 65 73 73 69  ch.sort expressi
e780: 6f 6e 20 6d 61 79 20 62 65 20 6f 70 74 69 6f 6e  on may be option
e790: 61 6c 6c 79 20 66 6f 6c 6c 6f 77 65 64 20 62 79  ally followed by
e7a0: 20 41 53 43 20 6f 72 20 44 45 53 43 20 74 6f 20   ASC or DESC to 
e7b0: 73 70 65 63 69 66 79 0a 74 68 65 20 73 6f 72 74  specify.the sort
e7c0: 20 6f 72 64 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e   order.</p>..<p>
e7d0: 54 68 65 20 4c 49 4d 49 54 20 63 6c 61 75 73 65  The LIMIT clause
e7e0: 20 70 6c 61 63 65 73 20 61 6e 20 75 70 70 65 72   places an upper
e7f0: 20 62 6f 75 6e 64 20 6f 6e 20 74 68 65 20 6e 75   bound on the nu
e800: 6d 62 65 72 20 6f 66 20 72 6f 77 73 0a 72 65 74  mber of rows.ret
e810: 75 72 6e 65 64 20 69 6e 20 74 68 65 20 72 65 73  urned in the res
e820: 75 6c 74 2e 20 20 41 20 4c 49 4d 49 54 20 6f 66  ult.  A LIMIT of
e830: 20 30 20 69 6e 64 69 63 61 74 65 73 20 6e 6f 20   0 indicates no 
e840: 75 70 70 65 72 20 62 6f 75 6e 64 2e 0a 54 68 65  upper bound..The
e850: 20 6f 70 74 69 6f 6e 61 6c 20 4f 46 46 53 45 54   optional OFFSET
e860: 20 66 6f 6c 6c 6f 77 69 6e 67 20 4c 49 4d 49 54   following LIMIT
e870: 20 73 70 65 63 69 66 69 65 73 20 68 6f 77 20 6d   specifies how m
e880: 61 6e 79 0a 72 6f 77 73 20 74 6f 20 73 6b 69 70  any.rows to skip
e890: 20 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e   at the beginnin
e8a0: 67 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20  g of the result 
e8b0: 73 65 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 63  set.</p>..<p>A c
e8c0: 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 69  ompound SELECT i
e8d0: 73 20 66 6f 72 6d 65 64 20 66 72 6f 6d 20 74 77  s formed from tw
e8e0: 6f 20 6f 72 20 6d 6f 72 65 20 73 69 6d 70 6c 65  o or more simple
e8f0: 20 53 45 4c 45 43 54 73 20 63 6f 6e 6e 65 63 74   SELECTs connect
e900: 65 64 0a 62 79 20 6f 6e 65 20 6f 66 20 74 68 65  ed.by one of the
e910: 20 6f 70 65 72 61 74 6f 72 73 20 55 4e 49 4f 4e   operators UNION
e920: 2c 20 55 4e 49 4f 4e 20 41 4c 4c 2c 20 49 4e 54  , UNION ALL, INT
e930: 45 52 53 45 43 54 2c 20 6f 72 20 45 58 43 45 50  ERSECT, or EXCEP
e940: 54 2e 20 20 49 6e 0a 61 20 63 6f 6d 70 6f 75 6e  T.  In.a compoun
e950: 64 20 53 45 4c 45 43 54 2c 20 61 6c 6c 20 74 68  d SELECT, all th
e960: 65 20 63 6f 6e 73 74 69 74 75 65 6e 74 20 53 45  e constituent SE
e970: 4c 45 43 54 73 20 6d 75 73 74 20 73 70 65 63 69  LECTs must speci
e980: 66 79 20 74 68 65 0a 73 61 6d 65 20 6e 75 6d 62  fy the.same numb
e990: 65 72 20 6f 66 20 72 65 73 75 6c 74 20 63 6f 6c  er of result col
e9a0: 75 6d 6e 73 2e 20 20 54 68 65 72 65 20 6d 61 79  umns.  There may
e9b0: 20 62 65 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c   be only a singl
e9c0: 65 20 4f 52 44 45 52 20 42 59 0a 63 6c 61 75 73  e ORDER BY.claus
e9d0: 65 20 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20  e at the end of 
e9e0: 74 68 65 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c  the compound SEL
e9f0: 45 43 54 2e 20 20 54 68 65 20 55 4e 49 4f 4e 20  ECT.  The UNION 
ea00: 61 6e 64 20 55 4e 49 4f 4e 20 41 4c 4c 0a 6f 70  and UNION ALL.op
ea10: 65 72 61 74 6f 72 73 20 63 6f 6d 62 69 6e 65 20  erators combine 
ea20: 74 68 65 20 72 65 73 75 6c 74 73 20 6f 66 20 74  the results of t
ea30: 68 65 20 53 45 4c 45 43 54 73 20 74 6f 20 74 68  he SELECTs to th
ea40: 65 20 72 69 67 68 74 20 61 6e 64 20 6c 65 66 74  e right and left
ea50: 20 69 6e 74 6f 0a 61 20 73 69 6e 67 6c 65 20 62   into.a single b
ea60: 69 67 20 74 61 62 6c 65 2e 20 20 54 68 65 20 64  ig table.  The d
ea70: 69 66 66 65 72 65 6e 63 65 20 69 73 20 74 68 61  ifference is tha
ea80: 74 20 69 6e 20 55 4e 49 4f 4e 20 61 6c 6c 20 72  t in UNION all r
ea90: 65 73 75 6c 74 20 72 6f 77 73 0a 61 72 65 20 64  esult rows.are d
eaa0: 69 73 74 69 6e 63 74 20 77 68 65 72 65 20 69 6e  istinct where in
eab0: 20 55 4e 49 4f 4e 20 41 4c 4c 20 74 68 65 72 65   UNION ALL there
eac0: 20 6d 61 79 20 62 65 20 64 75 70 6c 69 63 61 74   may be duplicat
ead0: 65 73 2e 0a 54 68 65 20 49 4e 54 45 52 53 45 43  es..The INTERSEC
eae0: 54 20 6f 70 65 72 61 74 6f 72 20 74 61 6b 65 73  T operator takes
eaf0: 20 74 68 65 20 69 6e 74 65 72 73 65 63 74 69 6f   the intersectio
eb00: 6e 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 73  n of the results
eb10: 20 6f 66 20 74 68 65 0a 6c 65 66 74 20 61 6e 64   of the.left and
eb20: 20 72 69 67 68 74 20 53 45 4c 45 43 54 73 2e 20   right SELECTs. 
eb30: 20 45 58 43 45 50 54 20 74 61 6b 65 73 20 74 68   EXCEPT takes th
eb40: 65 20 72 65 73 75 6c 74 20 6f 66 20 6c 65 66 74  e result of left
eb50: 20 53 45 4c 45 43 54 20 61 66 74 65 72 0a 72 65   SELECT after.re
eb60: 6d 6f 76 69 6e 67 20 74 68 65 20 72 65 73 75 6c  moving the resul
eb70: 74 73 20 6f 66 20 74 68 65 20 72 69 67 68 74 20  ts of the right 
eb80: 53 45 4c 45 43 54 2e 20 20 57 68 65 6e 20 74 68  SELECT.  When th
eb90: 72 65 65 20 61 72 65 20 6d 6f 72 65 20 53 45 4c  ree are more SEL
eba0: 45 43 54 73 0a 61 72 65 20 63 6f 6e 6e 65 63 74  ECTs.are connect
ebb0: 65 64 20 69 6e 74 6f 20 61 20 63 6f 6d 70 6f 75  ed into a compou
ebc0: 6e 64 2c 20 74 68 65 79 20 67 72 6f 75 70 20 66  nd, they group f
ebd0: 72 6f 6d 20 6c 65 66 74 20 74 6f 20 72 69 67 68  rom left to righ
ebe0: 74 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69  t.</p>.}...Secti
ebf0: 6f 6e 20 55 50 44 41 54 45 20 75 70 64 61 74 65  on UPDATE update
ec00: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74  ..Syntax {sql-st
ec10: 61 74 65 6d 65 6e 74 7d 20 7b 0a 55 50 44 41 54  atement} {.UPDAT
ec20: 45 20 5b 20 4f 52 20 3c 63 6f 6e 66 6c 69 63 74  E [ OR <conflict
ec30: 2d 61 6c 67 6f 72 69 74 68 6d 3e 20 5d 20 5b 3c  -algorithm> ] [<
ec40: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e  database-name> .
ec50: 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 0a 53  ] <table-name>.S
ec60: 45 54 20 3c 61 73 73 69 67 6e 6d 65 6e 74 3e 20  ET <assignment> 
ec70: 5b 2c 20 3c 61 73 73 69 67 6e 6d 65 6e 74 3e 5d  [, <assignment>]
ec80: 2a 0a 5b 57 48 45 52 45 20 3c 65 78 70 72 3e 5d  *.[WHERE <expr>]
ec90: 0a 7d 20 7b 61 73 73 69 67 6e 6d 65 6e 74 7d 20  .} {assignment} 
eca0: 7b 0a 3c 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20  {.<column-name> 
ecb0: 3d 20 3c 65 78 70 72 3e 0a 7d 0a 0a 70 75 74 73  = <expr>.}..puts
ecc0: 20 7b 0a 3c 70 3e 54 68 65 20 55 50 44 41 54 45   {.<p>The UPDATE
ecd0: 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 75 73   statement is us
ece0: 65 64 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65  ed to change the
ecf0: 20 76 61 6c 75 65 20 6f 66 20 63 6f 6c 75 6d 6e   value of column
ed00: 73 20 69 6e 20 0a 73 65 6c 65 63 74 65 64 20 72  s in .selected r
ed10: 6f 77 73 20 6f 66 20 61 20 74 61 62 6c 65 2e 20  ows of a table. 
ed20: 20 45 61 63 68 20 61 73 73 69 67 6e 6d 65 6e 74   Each assignment
ed30: 20 69 6e 20 61 6e 20 55 50 44 41 54 45 20 73 70   in an UPDATE sp
ed40: 65 63 69 66 69 65 73 0a 61 20 63 6f 6c 75 6d 6e  ecifies.a column
ed50: 20 6e 61 6d 65 20 74 6f 20 74 68 65 20 6c 65 66   name to the lef
ed60: 74 20 6f 66 20 74 68 65 20 65 71 75 61 6c 73 20  t of the equals 
ed70: 73 69 67 6e 20 61 6e 64 20 61 6e 20 61 72 62 69  sign and an arbi
ed80: 74 72 61 72 79 20 65 78 70 72 65 73 73 69 6f 6e  trary expression
ed90: 0a 74 6f 20 74 68 65 20 72 69 67 68 74 2e 20 20  .to the right.  
eda0: 54 68 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20  The expressions 
edb0: 6d 61 79 20 75 73 65 20 74 68 65 20 76 61 6c 75  may use the valu
edc0: 65 73 20 6f 66 20 6f 74 68 65 72 20 63 6f 6c 75  es of other colu
edd0: 6d 6e 73 2e 0a 41 6c 6c 20 65 78 70 72 65 73 73  mns..All express
ede0: 69 6f 6e 73 20 61 72 65 20 65 76 61 6c 75 61 74  ions are evaluat
edf0: 65 64 20 62 65 66 6f 72 65 20 61 6e 79 20 61 73  ed before any as
ee00: 73 69 67 6e 6d 65 6e 74 73 20 61 72 65 20 6d 61  signments are ma
ee10: 64 65 2e 0a 41 20 57 48 45 52 45 20 63 6c 61 75  de..A WHERE clau
ee20: 73 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  se can be used t
ee30: 6f 20 72 65 73 74 72 69 63 74 20 77 68 69 63 68  o restrict which
ee40: 20 72 6f 77 73 20 61 72 65 20 75 70 64 61 74 65   rows are update
ee50: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f  d.</p>..<p>The o
ee60: 70 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74  ptional conflict
ee70: 2d 63 6c 61 75 73 65 20 61 6c 6c 6f 77 73 20 74  -clause allows t
ee80: 68 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e  he specification
ee90: 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69   of an alternati
eea0: 76 65 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f  ve.constraint co
eeb0: 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f  nflict resolutio
eec0: 6e 20 61 6c 67 6f 72 69 74 68 6d 20 74 6f 20 75  n algorithm to u
eed0: 73 65 20 64 75 72 69 6e 67 20 74 68 69 73 20 6f  se during this o
eee0: 6e 65 20 63 6f 6d 6d 61 6e 64 2e 0a 53 65 65 20  ne command..See 
eef0: 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69 74 6c  the section titl
ef00: 65 64 0a 3c 61 20 68 72 65 66 3d 22 23 63 6f 6e  ed.<a href="#con
ef10: 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49  flict">ON CONFLI
ef20: 43 54 3c 2f 61 3e 20 66 6f 72 20 61 64 64 69 74  CT</a> for addit
ef30: 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f  ional informatio
ef40: 6e 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69  n.</p>.}...Secti
ef50: 6f 6e 20 56 41 43 55 55 4d 20 76 61 63 75 75 6d  on VACUUM vacuum
ef60: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74  ..Syntax {sql-st
ef70: 61 74 65 6d 65 6e 74 7d 20 7b 0a 56 41 43 55 55  atement} {.VACUU
ef80: 4d 20 5b 3c 69 6e 64 65 78 2d 6f 72 2d 74 61 62  M [<index-or-tab
ef90: 6c 65 2d 6e 61 6d 65 3e 5d 0a 7d 0a 0a 70 75 74  le-name>].}..put
efa0: 73 20 7b 0a 3c 70 3e 54 68 65 20 56 41 43 55 55  s {.<p>The VACUU
efb0: 4d 20 63 6f 6d 6d 61 6e 64 20 69 73 20 61 6e 20  M command is an 
efc0: 53 51 4c 69 74 65 20 65 78 74 65 6e 73 69 6f 6e  SQLite extension
efd0: 20 6d 6f 64 65 6c 6c 65 64 20 61 66 74 65 72 20   modelled after 
efe0: 61 20 73 69 6d 69 6c 61 72 0a 63 6f 6d 6d 61 6e  a similar.comman
eff0: 64 20 66 6f 75 6e 64 20 69 6e 20 50 6f 73 74 67  d found in Postg
f000: 72 65 53 51 4c 2e 20 20 49 66 20 56 41 43 55 55  reSQL.  If VACUU
f010: 4d 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 69 74  M is invoked wit
f020: 68 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 0a  h the name of a.
f030: 74 61 62 6c 65 20 6f 72 20 69 6e 64 65 78 20 74  table or index t
f040: 68 65 6e 20 69 74 20 69 73 20 73 75 70 70 6f 73  hen it is suppos
f050: 65 20 74 6f 20 63 6c 65 61 6e 20 75 70 20 74 68  e to clean up th
f060: 65 20 6e 61 6d 65 64 20 74 61 62 6c 65 20 6f 72  e named table or
f070: 20 69 6e 64 65 78 2e 0a 49 6e 20 76 65 72 73 69   index..In versi
f080: 6f 6e 20 31 2e 30 20 6f 66 20 53 51 4c 69 74 65  on 1.0 of SQLite
f090: 2c 20 74 68 65 20 56 41 43 55 55 4d 20 63 6f 6d  , the VACUUM com
f0a0: 6d 61 6e 64 20 77 6f 75 6c 64 20 69 6e 76 6f 6b  mand would invok
f0b0: 65 20 0a 3c 62 3e 67 64 62 6d 5f 72 65 6f 72 67  e .<b>gdbm_reorg
f0c0: 61 6e 69 7a 65 28 29 3c 2f 62 3e 20 74 6f 20 63  anize()</b> to c
f0d0: 6c 65 61 6e 20 75 70 20 74 68 65 20 62 61 63 6b  lean up the back
f0e0: 65 6e 64 20 64 61 74 61 62 61 73 65 20 66 69 6c  end database fil
f0f0: 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 56 41 43 55  e.</p>..<p>.VACU
f100: 55 4d 20 62 65 63 61 6d 65 20 61 20 6e 6f 2d 6f  UM became a no-o
f110: 70 20 66 6f 72 20 76 65 72 73 69 6f 6e 20 32 2e  p for version 2.
f120: 30 2e 30 20 6f 66 20 53 51 4c 69 74 65 2e 20 0a  0.0 of SQLite. .
f130: 54 68 65 20 63 6f 6d 6d 61 6e 64 20 77 61 73 20  The command was 
f140: 72 65 61 63 74 69 76 61 74 65 64 20 77 69 74 68  reactivated with
f150: 20 76 65 72 73 69 6f 6e 20 32 2e 38 2e 31 2e 20   version 2.8.1. 
f160: 20 49 74 20 6e 6f 77 20 63 6c 65 61 6e 73 0a 74   It now cleans.t
f170: 68 65 20 64 61 74 61 62 61 73 65 20 62 79 20 63  he database by c
f180: 6f 70 79 69 6e 67 20 69 74 73 20 63 6f 6e 74 65  opying its conte
f190: 6e 74 73 20 74 6f 20 61 20 74 65 6d 70 6f 72 61  nts to a tempora
f1a0: 72 79 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  ry database file
f1b0: 2c 20 61 6e 64 20 0a 72 65 6c 6f 61 64 69 6e 67  , and .reloading
f1c0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69   the database fi
f1d0: 6c 65 20 66 72 6f 6d 20 69 74 2e 20 20 54 68 69  le from it.  Thi
f1e0: 73 20 77 69 6c 6c 20 65 6c 69 6d 69 6e 61 74 65  s will eliminate
f1f0: 20 66 72 65 65 20 70 61 67 65 73 2c 20 0a 61 6c   free pages, .al
f200: 69 67 6e 20 74 61 62 6c 65 20 64 61 74 61 20 74  ign table data t
f210: 6f 20 62 65 20 63 6f 6e 74 69 67 75 6f 75 73 2c  o be contiguous,
f220: 20 61 6e 64 20 6f 74 68 65 72 77 69 73 65 20 63   and otherwise c
f230: 6c 65 61 6e 20 75 70 20 74 68 65 20 64 61 74 61  lean up the data
f240: 62 61 73 65 20 0a 66 69 6c 65 20 73 74 72 75 63  base .file struc
f250: 74 75 72 65 2e 20 20 54 68 65 20 69 6e 64 65 78  ture.  The index
f260: 20 6f 72 20 74 61 62 6c 65 20 6e 61 6d 65 20 61   or table name a
f270: 72 67 75 6d 65 6e 74 20 69 73 20 6e 6f 77 20 69  rgument is now i
f280: 67 6e 6f 72 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e  gnored.</p>..<p>
f290: 54 68 69 73 20 63 6f 6d 6d 61 6e 64 20 77 69 6c  This command wil
f2a0: 6c 20 66 61 69 6c 20 69 66 20 74 68 65 72 65 20  l fail if there 
f2b0: 69 73 20 61 6e 20 61 63 74 69 76 65 20 74 72 61  is an active tra
f2c0: 6e 73 61 63 74 69 6f 6e 2e 20 20 54 68 69 73 20  nsaction.  This 
f2d0: 0a 63 6f 6d 6d 61 6e 64 20 68 61 73 20 6e 6f 20  .command has no 
f2e0: 65 66 66 65 63 74 20 6f 6e 20 61 6e 20 69 6e 2d  effect on an in-
f2f0: 6d 65 6d 6f 72 79 20 64 61 74 61 62 61 73 65 2e  memory database.
f300: 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e  </p>.}...Section
f310: 20 7b 53 51 4c 69 74 65 20 6b 65 79 77 6f 72 64   {SQLite keyword
f320: 73 7d 20 6b 65 79 77 6f 72 64 73 0a 0a 70 75 74  s} keywords..put
f330: 73 20 7b 0a 3c 70 3e 54 68 65 20 66 6f 6c 6c 6f  s {.<p>The follo
f340: 77 69 6e 67 20 6b 65 79 77 6f 72 64 73 20 61 72  wing keywords ar
f350: 65 20 75 73 65 64 20 62 79 20 53 51 4c 69 74 65  e used by SQLite
f360: 2e 20 4d 6f 73 74 20 61 72 65 20 65 69 74 68 65  . Most are eithe
f370: 72 20 72 65 73 65 72 76 65 64 20 0a 77 6f 72 64  r reserved .word
f380: 73 20 69 6e 20 53 51 4c 2d 39 32 20 6f 72 20 77  s in SQL-92 or w
f390: 65 72 65 20 6c 69 73 74 65 64 20 61 73 20 70 6f  ere listed as po
f3a0: 74 65 6e 74 69 61 6c 20 72 65 73 65 72 76 65 64  tential reserved
f3b0: 20 77 6f 72 64 73 2e 20 20 54 68 6f 73 65 20 77   words.  Those w
f3c0: 68 69 63 68 20 0a 61 72 65 6e 27 74 20 61 72 65  hich .aren't are
f3d0: 20 73 68 6f 77 6e 20 69 6e 20 69 74 61 6c 69 63   shown in italic
f3e0: 73 2e 20 20 4e 6f 74 20 61 6c 6c 20 6f 66 20 74  s.  Not all of t
f3f0: 68 65 73 65 20 77 6f 72 64 73 20 61 72 65 20 61  hese words are a
f400: 63 74 75 61 6c 6c 79 20 75 73 65 64 0a 62 79 20  ctually used.by 
f410: 53 51 4c 69 74 65 2e 20 20 4b 65 79 77 6f 72 64  SQLite.  Keyword
f420: 73 20 61 72 65 20 6e 6f 74 20 72 65 73 65 72 76  s are not reserv
f430: 65 64 20 69 6e 20 53 51 4c 69 74 65 2e 20 20 41  ed in SQLite.  A
f440: 6e 79 20 6b 65 79 77 6f 72 64 20 63 61 6e 20 62  ny keyword can b
f450: 65 20 75 73 65 64 20 0a 61 73 20 61 6e 20 69 64  e used .as an id
f460: 65 6e 74 69 66 69 65 72 20 66 6f 72 20 53 51 4c  entifier for SQL
f470: 69 74 65 20 6f 62 6a 65 63 74 73 20 28 63 6f 6c  ite objects (col
f480: 75 6d 6e 73 2c 20 64 61 74 61 62 61 73 65 73 2c  umns, databases,
f490: 20 69 6e 64 65 78 65 73 2c 20 74 61 62 6c 65 73   indexes, tables
f4a0: 2c 20 0a 74 72 69 67 67 65 72 73 2c 20 76 69 65  , .triggers, vie
f4b0: 77 73 2c 20 2e 2e 2e 29 20 62 75 74 20 6d 75 73  ws, ...) but mus
f4c0: 74 20 67 65 6e 65 72 61 6c 6c 79 20 62 65 20 65  t generally be e
f4d0: 6e 63 6c 6f 73 65 64 20 62 79 20 62 72 61 63 6b  nclosed by brack
f4e0: 65 74 73 20 6f 72 20 0a 71 75 6f 74 65 73 20 74  ets or .quotes t
f4f0: 6f 20 61 76 6f 69 64 20 63 6f 6e 66 75 73 69 6e  o avoid confusin
f500: 67 20 74 68 65 20 70 61 72 73 65 72 2e 20 20 4b  g the parser.  K
f510: 65 79 77 6f 72 64 20 6d 61 74 63 68 69 6e 67 20  eyword matching 
f520: 69 6e 20 53 51 4c 69 74 65 20 69 73 20 0a 63 61  in SQLite is .ca
f530: 73 65 2d 69 6e 73 65 6e 73 69 74 69 76 65 2e 3c  se-insensitive.<
f540: 2f 70 3e 0a 0a 3c 70 3e 4b 65 79 77 6f 72 64 73  /p>..<p>Keywords
f550: 20 63 61 6e 20 62 65 20 75 73 65 64 20 61 73 20   can be used as 
f560: 69 64 65 6e 74 69 66 69 65 72 73 20 69 6e 20 74  identifiers in t
f570: 68 72 65 65 20 77 61 79 73 3a 3c 2f 70 3e 0a 0a  hree ways:</p>..
f580: 3c 74 61 62 6c 65 3e 0a 3c 74 72 3e 09 3c 74 64  <table>.<tr>.<td
f590: 20 77 69 64 74 68 3d 31 32 25 3e 20 27 6b 65 79   width=12%> 'key
f5a0: 77 6f 72 64 27 0a 09 3c 74 64 3e 49 6e 74 65 72  word'..<td>Inter
f5b0: 70 72 65 74 65 64 20 61 73 20 61 20 6c 69 74 65  preted as a lite
f5c0: 72 61 6c 20 73 74 72 69 6e 67 20 69 66 20 69 74  ral string if it
f5d0: 20 6f 63 63 75 72 73 20 69 6e 20 61 20 6c 65 67   occurs in a leg
f5e0: 61 6c 20 73 74 72 69 6e 67 20 0a 09 63 6f 6e 74  al string ..cont
f5f0: 65 78 74 2c 20 6f 74 68 65 72 77 69 73 65 20 61  ext, otherwise a
f600: 73 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 2e  s an identifier.
f610: 0a 3c 74 72 3e 09 3c 74 64 3e 20 22 6b 65 79 77  .<tr>.<td> "keyw
f620: 6f 72 64 22 0a 09 3c 74 64 3e 49 6e 74 65 72 70  ord"..<td>Interp
f630: 72 65 74 65 64 20 61 73 20 61 6e 20 69 64 65 6e  reted as an iden
f640: 74 69 66 69 65 72 20 69 66 20 69 74 20 6d 61 74  tifier if it mat
f650: 63 68 65 73 20 61 20 6b 6e 6f 77 6e 20 69 64 65  ches a known ide
f660: 6e 74 69 66 69 65 72 20 0a 09 61 6e 64 20 6f 63  ntifier ..and oc
f670: 63 75 72 73 20 69 6e 20 61 20 6c 65 67 61 6c 20  curs in a legal 
f680: 69 64 65 6e 74 69 66 69 65 72 20 63 6f 6e 74 65  identifier conte
f690: 78 74 2c 20 6f 74 68 65 72 77 69 73 65 20 61 73  xt, otherwise as
f6a0: 20 61 20 73 74 72 69 6e 67 2e 20 0a 3c 74 72 3e   a string. .<tr>
f6b0: 09 3c 74 64 3e 20 5b 6b 65 79 77 6f 72 64 5d 0a  .<td> [keyword].
f6c0: 09 3c 74 64 3e 20 41 6c 77 61 79 73 20 69 6e 74  .<td> Always int
f6d0: 65 72 70 72 65 74 65 64 20 61 73 20 61 6e 20 69  erpreted as an i
f6e0: 64 65 6e 74 69 66 65 72 2e 20 28 54 68 69 73 20  dentifer. (This 
f6f0: 6e 6f 74 61 74 69 6f 6e 20 69 73 20 75 73 65 64  notation is used
f700: 20 0a 09 62 79 20 4d 53 20 41 63 63 65 73 73 20   ..by MS Access 
f710: 61 6e 64 20 53 51 4c 20 53 65 72 76 65 72 2e 29  and SQL Server.)
f720: 0a 3c 2f 74 61 62 6c 65 3e 0a 0a 3c 68 32 3e 46  .</table>..<h2>F
f730: 61 6c 6c 62 61 63 6b 20 4b 65 79 77 6f 72 64 73  allback Keywords
f740: 3c 2f 68 32 3e 0a 0a 3c 70 3e 54 68 65 73 65 20  </h2>..<p>These 
f750: 6b 65 79 77 6f 72 64 73 20 63 61 6e 20 62 65 20  keywords can be 
f760: 75 73 65 64 20 61 73 20 69 64 65 6e 74 69 66 69  used as identifi
f770: 65 72 73 20 66 6f 72 20 53 51 4c 69 74 65 20 6f  ers for SQLite o
f780: 62 6a 65 63 74 73 20 77 69 74 68 6f 75 74 20 0a  bjects without .
f790: 64 65 6c 69 6d 69 74 65 72 73 2e 3c 2f 70 3e 0a  delimiters.</p>.
f7a0: 7d 0a 0a 70 72 6f 63 20 6b 65 79 77 6f 72 64 5f  }..proc keyword_
f7b0: 6c 69 73 74 20 7b 78 7d 20 7b 0a 20 20 70 75 74  list {x} {.  put
f7c0: 73 20 22 3c 70 3e 22 0a 20 20 66 6f 72 65 61 63  s "<p>".  foreac
f7d0: 68 20 6b 20 24 78 20 7b 0a 20 20 20 20 69 66 20  h k $x {.    if 
f7e0: 7b 5b 73 74 72 69 6e 67 20 69 6e 64 65 78 20 24  {[string index $
f7f0: 6b 20 30 5d 3d 3d 22 2a 22 7d 20 7b 0a 20 20 20  k 0]=="*"} {.   
f800: 20 20 20 73 65 74 20 6e 6f 6e 73 74 61 6e 64 61     set nonstanda
f810: 72 64 20 31 0a 20 20 20 20 20 20 73 65 74 20 6b  rd 1.      set k
f820: 20 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20 24   [string range $
f830: 6b 20 31 20 65 6e 64 5d 0a 20 20 20 20 7d 20 65  k 1 end].    } e
f840: 6c 73 65 20 7b 0a 20 20 20 20 20 20 73 65 74 20  lse {.      set 
f850: 6e 6f 6e 73 74 61 6e 64 61 72 64 20 30 0a 20 20  nonstandard 0.  
f860: 20 20 7d 0a 20 20 20 20 69 66 20 7b 24 6e 6f 6e    }.    if {$non
f870: 73 74 61 6e 64 61 72 64 7d 20 7b 0a 20 20 20 20  standard} {.    
f880: 20 20 70 75 74 73 20 22 3c 69 3e 24 6b 3c 2f 69    puts "<i>$k</i
f890: 3e 20 26 6e 62 73 70 3b 26 6e 62 73 70 3b 22 0a  > &nbsp;&nbsp;".
f8a0: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20      } else {.   
f8b0: 20 20 20 70 75 74 73 20 22 24 6b 20 26 6e 62 73     puts "$k &nbs
f8c0: 70 3b 26 6e 62 73 70 3b 22 0a 20 20 20 20 7d 0a  p;&nbsp;".    }.
f8d0: 20 20 7d 0a 20 20 70 75 74 73 20 22 3c 2f 70 3e    }.  puts "</p>
f8e0: 5c 6e 22 0a 7d 0a 0a 6b 65 79 77 6f 72 64 5f 6c  \n".}..keyword_l
f8f0: 69 73 74 20 7b 0a 20 20 2a 41 42 4f 52 54 0a 20  ist {.  *ABORT. 
f900: 20 41 46 54 45 52 0a 20 20 41 53 43 0a 20 20 2a   AFTER.  ASC.  *
f910: 41 54 54 41 43 48 0a 20 20 42 45 46 4f 52 45 0a  ATTACH.  BEFORE.
f920: 20 20 42 45 47 49 4e 0a 20 20 44 45 46 45 52 52    BEGIN.  DEFERR
f930: 45 44 0a 20 20 43 41 53 43 41 44 45 20 0a 20 20  ED.  CASCADE .  
f940: 2a 43 4c 55 53 54 45 52 20 0a 20 20 2a 43 4f 4e  *CLUSTER .  *CON
f950: 46 4c 49 43 54 0a 20 20 2a 43 4f 50 59 0a 20 20  FLICT.  *COPY.  
f960: 43 52 4f 53 53 0a 20 20 2a 44 41 54 41 42 41 53  CROSS.  *DATABAS
f970: 45 0a 20 20 2a 44 45 4c 49 4d 49 54 45 52 53 0a  E.  *DELIMITERS.
f980: 20 20 44 45 53 43 0a 20 20 2a 44 45 54 41 43 48    DESC.  *DETACH
f990: 0a 20 20 45 41 43 48 0a 20 20 45 4e 44 0a 20 20  .  EACH.  END.  
f9a0: 2a 45 58 50 4c 41 49 4e 0a 20 20 2a 46 41 49 4c  *EXPLAIN.  *FAIL
f9b0: 0a 20 20 46 4f 52 0a 20 20 46 55 4c 4c 0a 20 20  .  FOR.  FULL.  
f9c0: 49 47 4e 4f 52 45 0a 20 20 49 4d 4d 45 44 49 41  IGNORE.  IMMEDIA
f9d0: 54 45 0a 20 20 49 4e 49 54 49 41 4c 4c 59 0a 20  TE.  INITIALLY. 
f9e0: 20 49 4e 4e 45 52 0a 20 20 2a 49 4e 53 54 45 41   INNER.  *INSTEA
f9f0: 44 0a 20 20 4b 45 59 0a 20 20 4c 45 46 54 0a 20  D.  KEY.  LEFT. 
fa00: 20 4d 41 54 43 48 20 0a 20 20 4e 41 54 55 52 41   MATCH .  NATURA
fa10: 4c 0a 20 20 4f 46 0a 20 20 2a 4f 46 46 53 45 54  L.  OF.  *OFFSET
fa20: 0a 20 20 4f 55 54 45 52 0a 20 20 2a 50 52 41 47  .  OUTER.  *PRAG
fa30: 4d 41 0a 20 20 2a 52 41 49 53 45 0a 20 20 2a 52  MA.  *RAISE.  *R
fa40: 45 50 4c 41 43 45 0a 20 20 52 45 53 54 52 49 43  EPLACE.  RESTRIC
fa50: 54 0a 20 20 52 49 47 48 54 0a 20 20 2a 52 4f 57  T.  RIGHT.  *ROW
fa60: 0a 20 20 2a 53 54 41 54 45 4d 45 4e 54 0a 20 20  .  *STATEMENT.  
fa70: 2a 54 45 4d 50 0a 20 20 54 45 4d 50 4f 52 41 52  *TEMP.  TEMPORAR
fa80: 59 0a 20 20 54 52 49 47 47 45 52 20 0a 20 20 2a  Y.  TRIGGER .  *
fa90: 56 41 43 55 55 4d 0a 20 20 56 49 45 57 0a 7d 0a  VACUUM.  VIEW.}.
faa0: 70 75 74 73 20 7b 0a 0a 3c 68 32 3e 4e 6f 72 6d  puts {..<h2>Norm
fab0: 61 6c 20 6b 65 79 77 6f 72 64 73 3c 2f 68 32 3e  al keywords</h2>
fac0: 0a 0a 3c 70 3e 54 68 65 73 65 20 6b 65 79 77 6f  ..<p>These keywo
fad0: 72 64 73 20 63 61 6e 20 62 65 20 75 73 65 64 20  rds can be used 
fae0: 61 73 20 69 64 65 6e 74 69 66 69 65 72 73 20 66  as identifiers f
faf0: 6f 72 20 53 51 4c 69 74 65 20 6f 62 6a 65 63 74  or SQLite object
fb00: 73 2c 20 62 75 74 20 0a 6d 75 73 74 20 62 65 20  s, but .must be 
fb10: 65 6e 63 6c 6f 73 65 64 20 69 6e 20 62 72 61 63  enclosed in brac
fb20: 6b 65 74 73 20 6f 72 20 71 75 6f 74 65 73 20 66  kets or quotes f
fb30: 6f 72 20 53 51 4c 69 74 65 20 74 6f 20 72 65 63  or SQLite to rec
fb40: 6f 67 6e 69 7a 65 20 74 68 65 6d 20 61 73 20 0a  ognize them as .
fb50: 61 6e 20 69 64 65 6e 74 69 66 69 65 72 2e 3c 2f  an identifier.</
fb60: 70 3e 0a 7d 0a 0a 6b 65 79 77 6f 72 64 5f 6c 69  p>.}..keyword_li
fb70: 73 74 20 7b 0a 20 20 41 4c 4c 0a 20 20 41 4e 44  st {.  ALL.  AND
fb80: 0a 20 20 41 53 0a 20 20 42 45 54 57 45 45 4e 0a  .  AS.  BETWEEN.
fb90: 20 20 42 59 0a 20 20 43 41 53 45 0a 20 20 43 48    BY.  CASE.  CH
fba0: 45 43 4b 0a 20 20 43 4f 4c 4c 41 54 45 0a 20 20  ECK.  COLLATE.  
fbb0: 43 4f 4d 4d 49 54 0a 20 20 43 4f 4e 53 54 52 41  COMMIT.  CONSTRA
fbc0: 49 4e 54 0a 20 20 43 52 45 41 54 45 20 0a 20 20  INT.  CREATE .  
fbd0: 44 45 46 41 55 4c 54 0a 20 20 44 45 46 45 52 52  DEFAULT.  DEFERR
fbe0: 41 42 4c 45 0a 20 20 44 45 4c 45 54 45 0a 20 20  ABLE.  DELETE.  
fbf0: 44 49 53 54 49 4e 43 54 0a 20 20 44 52 4f 50 0a  DISTINCT.  DROP.
fc00: 20 20 45 4c 53 45 0a 20 20 45 58 43 45 50 54 0a    ELSE.  EXCEPT.
fc10: 20 20 46 4f 52 45 49 47 4e 0a 20 20 46 52 4f 4d    FOREIGN.  FROM
fc20: 20 0a 20 20 2a 47 4c 4f 42 0a 20 20 47 52 4f 55   .  *GLOB.  GROU
fc30: 50 0a 20 20 48 41 56 49 4e 47 0a 20 20 49 4e 0a  P.  HAVING.  IN.
fc40: 20 20 2a 49 4e 44 45 58 0a 20 20 49 4e 53 45 52    *INDEX.  INSER
fc50: 54 0a 20 20 49 4e 54 45 52 53 45 43 54 0a 20 20  T.  INTERSECT.  
fc60: 49 4e 54 4f 0a 20 20 49 53 20 0a 20 20 2a 49 53  INTO.  IS .  *IS
fc70: 4e 55 4c 4c 0a 20 20 4a 4f 49 4e 0a 20 20 4c 49  NULL.  JOIN.  LI
fc80: 4b 45 0a 20 20 4c 49 4d 49 54 0a 20 20 4e 4f 54  KE.  LIMIT.  NOT
fc90: 0a 20 20 2a 4e 4f 54 4e 55 4c 4c 0a 20 20 4e 55  .  *NOTNULL.  NU
fca0: 4c 4c 0a 20 20 4f 4e 0a 20 20 4f 52 0a 20 20 4f  LL.  ON.  OR.  O
fcb0: 52 44 45 52 20 0a 20 20 50 52 49 4d 41 52 59 0a  RDER .  PRIMARY.
fcc0: 20 20 52 45 46 45 52 45 4e 43 45 53 0a 20 20 52    REFERENCES.  R
fcd0: 4f 4c 4c 42 41 43 4b 0a 20 20 53 45 4c 45 43 54  OLLBACK.  SELECT
fce0: 0a 20 20 53 45 54 0a 20 20 54 41 42 4c 45 0a 20  .  SET.  TABLE. 
fcf0: 20 54 48 45 4e 0a 20 20 54 52 41 4e 53 41 43 54   THEN.  TRANSACT
fd00: 49 4f 4e 0a 20 20 55 4e 49 4f 4e 20 0a 20 20 55  ION.  UNION .  U
fd10: 4e 49 51 55 45 0a 20 20 55 50 44 41 54 45 0a 20  NIQUE.  UPDATE. 
fd20: 20 55 53 49 4e 47 0a 20 20 56 41 4c 55 45 53 0a   USING.  VALUES.
fd30: 20 20 57 48 45 4e 0a 20 20 57 48 45 52 45 0a 7d    WHEN.  WHERE.}
fd40: 0a 0a 70 75 74 73 20 7b 0a 3c 68 32 3e 53 70 65  ..puts {.<h2>Spe
fd50: 63 69 61 6c 20 77 6f 72 64 73 3c 2f 68 32 3e 0a  cial words</h2>.
fd60: 0a 3c 70 3e 54 68 65 20 66 6f 6c 6c 6f 77 69 6e  .<p>The followin
fd70: 67 20 61 72 65 20 6e 6f 74 20 6b 65 79 77 6f 72  g are not keywor
fd80: 64 73 20 69 6e 20 53 51 4c 69 74 65 2c 20 62 75  ds in SQLite, bu
fd90: 74 20 61 72 65 20 75 73 65 64 20 61 73 20 6e 61  t are used as na
fda0: 6d 65 73 20 6f 66 20 0a 73 79 73 74 65 6d 20 6f  mes of .system o
fdb0: 62 6a 65 63 74 73 2e 20 20 54 68 65 79 20 63 61  bjects.  They ca
fdc0: 6e 20 62 65 20 75 73 65 64 20 61 73 20 61 6e 20  n be used as an 
fdd0: 69 64 65 6e 74 69 66 69 65 72 20 66 6f 72 20 61  identifier for a
fde0: 20 64 69 66 66 65 72 65 6e 74 20 0a 74 79 70 65   different .type
fdf0: 20 6f 66 20 6f 62 6a 65 63 74 2e 3c 2f 70 3e 0a   of object.</p>.
fe00: 7d 0a 0a 6b 65 79 77 6f 72 64 5f 6c 69 73 74 20  }..keyword_list 
fe10: 7b 0a 20 20 2a 5f 52 4f 57 49 44 5f 0a 20 20 2a  {.  *_ROWID_.  *
fe20: 4d 41 49 4e 0a 20 20 4f 49 44 0a 20 20 2a 52 4f  MAIN.  OID.  *RO
fe30: 57 49 44 0a 20 20 2a 53 51 4c 49 54 45 5f 4d 41  WID.  *SQLITE_MA
fe40: 53 54 45 52 0a 20 20 2a 53 51 4c 49 54 45 5f 54  STER.  *SQLITE_T
fe50: 45 4d 50 5f 4d 41 53 54 45 52 0a 7d 0a 0a 70 75  EMP_MASTER.}..pu
fe60: 74 73 20 7b 0a 3c 70 3e 3c 68 72 20 2f 3e 3c 2f  ts {.<p><hr /></
fe70: 70 3e 0a 3c 70 3e 3c 61 20 68 72 65 66 3d 22 69  p>.<p><a href="i
fe80: 6e 64 65 78 2e 68 74 6d 6c 22 3e 3c 69 6d 67 20  ndex.html"><img 
fe90: 73 72 63 3d 22 2f 67 6f 62 61 63 6b 2e 6a 70 67  src="/goback.jpg
fea0: 22 20 62 6f 72 64 65 72 3d 30 20 2f 3e 0a 42 61  " border=0 />.Ba
feb0: 63 6b 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65  ck to the SQLite
fec0: 20 48 6f 6d 65 20 50 61 67 65 3c 2f 61 3e 0a 3c   Home Page</a>.<
fed0: 2f 70 3e 0a 0a 3c 2f 62 6f 64 79 3e 3c 2f 68 74  /p>..</body></ht
fee0: 6d 6c 3e 7d 0a                                   ml>}.