Documentation Source Text

Hex Artifact Content
Login

Artifact 7cbdd326e64382074fb25e2cee58aea2e32635d2:


0000: 3c 74 69 74 6c 65 3e 51 75 65 72 79 20 4c 61 6e  <title>Query Lan
0010: 67 75 61 67 65 20 55 6e 64 65 72 73 74 6f 6f 64  guage Understood
0020: 20 62 79 20 53 51 4c 69 74 65 3c 2f 74 69 74 6c   by SQLite</titl
0030: 65 3e 0a 0a 3c 68 32 3e 53 51 4c 20 41 73 20 55  e>..<h2>SQL As U
0040: 6e 64 65 72 73 74 6f 6f 64 20 42 79 20 53 51 4c  nderstood By SQL
0050: 69 74 65 3c 2f 68 32 3e 0a 0a 3c 70 3e 53 51 4c  ite</h2>..<p>SQL
0060: 69 74 65 20 75 6e 64 65 72 73 74 61 6e 64 73 20  ite understands 
0070: 6d 6f 73 74 20 6f 66 20 74 68 65 20 73 74 61 6e  most of the stan
0080: 64 61 72 64 20 53 51 4c 0a 6c 61 6e 67 75 61 67  dard SQL.languag
0090: 65 2e 20 20 42 75 74 20 69 74 20 64 6f 65 73 20  e.  But it does 
00a0: 3c 61 20 68 72 65 66 3d 22 6f 6d 69 74 74 65 64  <a href="omitted
00b0: 2e 68 74 6d 6c 22 3e 6f 6d 69 74 20 73 6f 6d 65  .html">omit some
00c0: 20 66 65 61 74 75 72 65 73 3c 2f 61 3e 0a 77 68   features</a>.wh
00d0: 69 6c 65 20 61 74 20 74 68 65 20 73 61 6d 65 20  ile at the same 
00e0: 74 69 6d 65 0a 61 64 64 69 6e 67 20 61 20 66 65  time.adding a fe
00f0: 77 20 66 65 61 74 75 72 65 73 20 6f 66 20 69 74  w features of it
0100: 73 20 6f 77 6e 2e 20 20 54 68 69 73 20 64 6f 63  s own.  This doc
0110: 75 6d 65 6e 74 20 61 74 74 65 6d 70 74 73 20 74  ument attempts t
0120: 6f 0a 64 65 73 63 72 69 62 65 20 70 72 65 63 69  o.describe preci
0130: 73 65 6c 79 20 77 68 61 74 20 70 61 72 74 73 20  sely what parts 
0140: 6f 66 20 74 68 65 20 53 51 4c 20 6c 61 6e 67 75  of the SQL langu
0150: 61 67 65 20 53 51 4c 69 74 65 20 64 6f 65 73 0a  age SQLite does.
0160: 61 6e 64 20 64 6f 65 73 20 6e 6f 74 20 73 75 70  and does not sup
0170: 70 6f 72 74 2e 20 20 41 20 6c 69 73 74 20 6f 66  port.  A list of
0180: 20 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67 5f 6b   <a href="lang_k
0190: 65 79 77 6f 72 64 73 2e 68 74 6d 6c 22 3e 6b 65  eywords.html">ke
01a0: 79 77 6f 72 64 73 3c 2f 61 3e 20 69 73 20 0a 61  ywords</a> is .a
01b0: 6c 73 6f 20 70 72 6f 76 69 64 65 64 2e 20 20 54  lso provided.  T
01c0: 68 65 20 53 51 4c 20 6c 61 6e 67 75 61 67 65 20  he SQL language 
01d0: 73 79 6e 74 61 78 20 69 73 20 64 65 73 63 72 69  syntax is descri
01e0: 62 65 64 20 62 79 0a 3c 61 20 68 72 65 66 3d 22  bed by.<a href="
01f0: 73 79 6e 74 61 78 64 69 61 67 72 61 6d 73 2e 68  syntaxdiagrams.h
0200: 74 6d 6c 22 3e 73 79 6e 74 61 78 20 64 69 61 67  tml">syntax diag
0210: 72 61 6d 73 3c 2f 61 3e 2e 3c 2f 70 3e 0a 0a 3c  rams</a>.</p>..<
0220: 70 3e 49 6e 20 61 6c 6c 20 6f 66 20 74 68 65 20  p>In all of the 
0230: 73 79 6e 74 61 78 20 64 69 61 67 72 61 6d 73 20  syntax diagrams 
0240: 74 68 61 74 20 66 6f 6c 6c 6f 77 2c 20 6c 69 74  that follow, lit
0250: 65 72 61 6c 20 74 65 78 74 20 69 73 20 73 68 6f  eral text is sho
0260: 77 6e 20 69 6e 0a 62 6f 6c 64 20 62 6c 75 65 2e  wn in.bold blue.
0270: 20 20 4e 6f 6e 2d 74 65 72 6d 69 6e 61 6c 20 73    Non-terminal s
0280: 79 6d 62 6f 6c 73 20 61 72 65 20 73 68 6f 77 6e  ymbols are shown
0290: 20 69 6e 20 69 74 61 6c 69 63 20 72 65 64 2e 20   in italic red. 
02a0: 20 4f 70 65 72 61 74 6f 72 73 0a 74 68 61 74 20   Operators.that 
02b0: 61 72 65 20 70 61 72 74 20 6f 66 20 74 68 65 20  are part of the 
02c0: 73 79 6e 74 61 63 74 69 63 20 6d 61 72 6b 75 70  syntactic markup
02d0: 20 69 74 73 65 6c 66 20 61 72 65 20 73 68 6f 77   itself are show
02e0: 6e 20 69 6e 20 62 6c 61 63 6b 20 72 6f 6d 61 6e  n in black roman
02f0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 69 73 20 64  .</p>..<p>This d
0300: 6f 63 75 6d 65 6e 74 20 69 73 20 6a 75 73 74 20  ocument is just 
0310: 61 6e 20 6f 76 65 72 76 69 65 77 20 6f 66 20 74  an overview of t
0320: 68 65 20 53 51 4c 20 73 79 6e 74 61 78 20 69 6d  he SQL syntax im
0330: 70 6c 65 6d 65 6e 74 65 64 0a 62 79 20 53 51 4c  plemented.by SQL
0340: 69 74 65 2e 20 20 4d 61 6e 79 20 6c 6f 77 2d 6c  ite.  Many low-l
0350: 65 76 65 6c 20 70 72 6f 64 75 63 74 69 6f 6e 73  evel productions
0360: 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 20 20 46   are omitted.  F
0370: 6f 72 20 64 65 74 61 69 6c 65 64 20 69 6e 66 6f  or detailed info
0380: 72 6d 61 74 69 6f 6e 0a 6f 6e 20 74 68 65 20 6c  rmation.on the l
0390: 61 6e 67 75 61 67 65 20 74 68 61 74 20 53 51 4c  anguage that SQL
03a0: 69 74 65 20 75 6e 64 65 72 73 74 61 6e 64 73 2c  ite understands,
03b0: 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 73 6f   refer to the so
03c0: 75 72 63 65 20 63 6f 64 65 20 61 6e 64 0a 74 68  urce code and.th
03d0: 65 20 67 72 61 6d 6d 61 72 20 66 69 6c 65 20 22  e grammar file "
03e0: 70 61 72 73 65 2e 79 22 2e 3c 2f 70 3e 0a 0a 3c  parse.y".</p>..<
03f0: 70 3e 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  p>The following 
0400: 73 79 6e 74 61 78 20 64 6f 63 75 6d 65 6e 74 61  syntax documenta
0410: 74 69 6f 6e 20 74 6f 70 69 63 73 20 61 72 65 20  tion topics are 
0420: 61 76 61 69 6c 61 62 6c 65 3a 3c 2f 70 3e 0a 0a  available:</p>..
0430: 3c 74 61 62 6c 65 20 77 69 64 74 68 3d 22 31 30  <table width="10
0440: 30 25 22 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d  0%" cellpadding=
0450: 22 35 22 20 62 6f 72 64 65 72 3d 22 30 22 3e 0a  "5" border="0">.
0460: 3c 74 72 3e 3c 74 64 20 76 61 6c 69 67 6e 3d 22  <tr><td valign="
0470: 74 6f 70 22 3e 3c 75 6c 3e 0a 0a 3c 74 63 6c 3e  top"><ul>..<tcl>
0480: 0a 73 65 74 20 69 20 30 0a 73 65 74 20 6c 61 6e  .set i 0.set lan
0490: 67 5f 73 65 63 74 69 6f 6e 5f 6c 69 73 74 20 7b  g_section_list {
04a0: 0a 20 20 7b 7b 43 52 45 41 54 45 20 54 41 42 4c  .  {{CREATE TABL
04b0: 45 7d 20 63 72 65 61 74 65 74 61 62 6c 65 7d 0a  E} createtable}.
04c0: 20 20 7b 7b 43 52 45 41 54 45 20 56 49 52 54 55    {{CREATE VIRTU
04d0: 41 4c 20 54 41 42 4c 45 7d 20 63 72 65 61 74 65  AL TABLE} create
04e0: 76 74 61 62 7d 0a 20 20 7b 7b 43 52 45 41 54 45  vtab}.  {{CREATE
04f0: 20 49 4e 44 45 58 7d 20 63 72 65 61 74 65 69 6e   INDEX} createin
0500: 64 65 78 7d 0a 20 20 7b 56 41 43 55 55 4d 20 76  dex}.  {VACUUM v
0510: 61 63 75 75 6d 7d 0a 20 20 7b 7b 44 52 4f 50 20  acuum}.  {{DROP 
0520: 54 41 42 4c 45 7d 20 64 72 6f 70 74 61 62 6c 65  TABLE} droptable
0530: 7d 0a 20 20 7b 7b 44 52 4f 50 20 49 4e 44 45 58  }.  {{DROP INDEX
0540: 7d 20 64 72 6f 70 69 6e 64 65 78 7d 0a 20 20 7b  } dropindex}.  {
0550: 49 4e 53 45 52 54 20 69 6e 73 65 72 74 7d 0a 20  INSERT insert}. 
0560: 20 7b 52 45 50 4c 41 43 45 20 72 65 70 6c 61 63   {REPLACE replac
0570: 65 7d 0a 20 20 7b 44 45 4c 45 54 45 20 64 65 6c  e}.  {DELETE del
0580: 65 74 65 7d 0a 20 20 7b 55 50 44 41 54 45 20 75  ete}.  {UPDATE u
0590: 70 64 61 74 65 7d 0a 20 20 7b 53 45 4c 45 43 54  pdate}.  {SELECT
05a0: 20 73 65 6c 65 63 74 7d 0a 20 20 7b 63 6f 6d 6d   select}.  {comm
05b0: 65 6e 74 20 63 6f 6d 6d 65 6e 74 7d 0a 20 20 7b  ent comment}.  {
05c0: 45 58 50 4c 41 49 4e 20 65 78 70 6c 61 69 6e 7d  EXPLAIN explain}
05d0: 0a 20 20 7b 65 78 70 72 65 73 73 69 6f 6e 20 65  .  {expression e
05e0: 78 70 72 7d 0a 20 20 7b 7b 42 45 47 49 4e 20 54  xpr}.  {{BEGIN T
05f0: 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72 61 6e  RANSACTION} tran
0600: 73 61 63 74 69 6f 6e 7d 0a 20 20 7b 7b 43 4f 4d  saction}.  {{COM
0610: 4d 49 54 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d  MIT TRANSACTION}
0620: 20 74 72 61 6e 73 61 63 74 69 6f 6e 7d 0a 20 20   transaction}.  
0630: 7b 7b 45 4e 44 20 54 52 41 4e 53 41 43 54 49 4f  {{END TRANSACTIO
0640: 4e 7d 20 74 72 61 6e 73 61 63 74 69 6f 6e 7d 0a  N} transaction}.
0650: 20 20 7b 7b 52 4f 4c 4c 42 41 43 4b 20 54 52 41    {{ROLLBACK TRA
0660: 4e 53 41 43 54 49 4f 4e 7d 20 74 72 61 6e 73 61  NSACTION} transa
0670: 63 74 69 6f 6e 7d 0a 20 20 7b 50 52 41 47 4d 41  ction}.  {PRAGMA
0680: 20 70 72 61 67 6d 61 2e 68 74 6d 6c 7d 0a 20 20   pragma.html}.  
0690: 7b 7b 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c  {{ON CONFLICT cl
06a0: 61 75 73 65 7d 20 63 6f 6e 66 6c 69 63 74 7d 0a  ause} conflict}.
06b0: 20 20 7b 7b 43 52 45 41 54 45 20 56 49 45 57 7d    {{CREATE VIEW}
06c0: 20 63 72 65 61 74 65 76 69 65 77 7d 0a 20 20 7b   createview}.  {
06d0: 7b 44 52 4f 50 20 56 49 45 57 7d 20 64 72 6f 70  {DROP VIEW} drop
06e0: 76 69 65 77 7d 0a 20 20 7b 7b 43 52 45 41 54 45  view}.  {{CREATE
06f0: 20 54 52 49 47 47 45 52 7d 20 63 72 65 61 74 65   TRIGGER} create
0700: 74 72 69 67 67 65 72 7d 0a 20 20 7b 7b 44 52 4f  trigger}.  {{DRO
0710: 50 20 54 52 49 47 47 45 52 7d 20 64 72 6f 70 74  P TRIGGER} dropt
0720: 72 69 67 67 65 72 7d 0a 20 20 7b 7b 41 54 54 41  rigger}.  {{ATTA
0730: 43 48 20 44 41 54 41 42 41 53 45 7d 20 61 74 74  CH DATABASE} att
0740: 61 63 68 7d 0a 20 20 7b 7b 44 45 54 41 43 48 20  ach}.  {{DETACH 
0750: 44 41 54 41 42 41 53 45 7d 20 64 65 74 61 63 68  DATABASE} detach
0760: 7d 0a 20 20 7b 52 45 49 4e 44 45 58 20 72 65 69  }.  {REINDEX rei
0770: 6e 64 65 78 7d 0a 20 20 7b 7b 41 4c 54 45 52 20  ndex}.  {{ALTER 
0780: 54 41 42 4c 45 7d 20 61 6c 74 65 72 74 61 62 6c  TABLE} altertabl
0790: 65 7d 0a 20 20 7b 7b 41 4e 41 4c 59 5a 45 7d 20  e}.  {{ANALYZE} 
07a0: 61 6e 61 6c 79 7a 65 7d 0a 20 20 7b 7b 49 4e 44  analyze}.  {{IND
07b0: 45 58 45 44 20 42 59 7d 20 69 6e 64 65 78 65 64  EXED BY} indexed
07c0: 62 79 7d 0a 20 20 7b 7b 61 67 67 72 65 67 61 74  by}.  {{aggregat
07d0: 65 20 66 75 6e 63 74 69 6f 6e 73 7d 20 61 67 67  e functions} agg
07e0: 66 75 6e 63 7d 0a 20 20 7b 7b 63 6f 72 65 20 66  func}.  {{core f
07f0: 75 6e 63 74 69 6f 6e 73 7d 20 63 6f 72 65 66 75  unctions} corefu
0800: 6e 63 7d 0a 20 20 7b 7b 64 61 74 65 20 61 6e 64  nc}.  {{date and
0810: 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 7d   time functions}
0820: 20 64 61 74 65 66 75 6e 63 7d 0a 20 20 7b 6b 65   datefunc}.  {ke
0830: 79 77 6f 72 64 73 20 6b 65 79 77 6f 72 64 73 7d  ywords keywords}
0840: 0a 7d 0a 73 65 74 20 6c 61 6e 67 5f 73 65 63 74  .}.set lang_sect
0850: 69 6f 6e 5f 62 72 65 61 6b 20 5b 65 78 70 72 20  ion_break [expr 
0860: 7b 28 5b 6c 6c 65 6e 67 74 68 20 24 6c 61 6e 67  {([llength $lang
0870: 5f 73 65 63 74 69 6f 6e 5f 6c 69 73 74 5d 2b 32  _section_list]+2
0880: 29 2f 33 7d 5d 0a 66 6f 72 65 61 63 68 20 7b 73  )/3}].foreach {s
0890: 65 63 74 69 6f 6e 7d 20 5b 6c 73 6f 72 74 20 2d  ection} [lsort -
08a0: 69 6e 64 65 78 20 30 20 2d 64 69 63 74 69 6f 6e  index 0 -diction
08b0: 61 72 79 20 24 6c 61 6e 67 5f 73 65 63 74 69 6f  ary $lang_sectio
08c0: 6e 5f 6c 69 73 74 5d 20 7b 0a 20 20 66 6f 72 65  n_list] {.  fore
08d0: 61 63 68 20 7b 73 5f 74 69 74 6c 65 20 73 5f 74  ach {s_title s_t
08e0: 61 67 7d 20 24 73 65 63 74 69 6f 6e 20 7b 7d 0a  ag} $section {}.
08f0: 20 20 69 66 20 7b 24 73 5f 74 61 67 3d 3d 22 70    if {$s_tag=="p
0900: 72 61 67 6d 61 2e 68 74 6d 6c 22 7d 20 7b 0a 20  ragma.html"} {. 
0910: 20 20 20 73 65 74 20 75 72 6c 20 24 73 5f 74 61     set url $s_ta
0920: 67 0a 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20  g.  } else {.   
0930: 20 73 65 74 20 75 72 6c 20 6c 61 6e 67 5f 24 73   set url lang_$s
0940: 5f 74 61 67 2e 68 74 6d 6c 0a 20 20 7d 0a 20 20  _tag.html.  }.  
0950: 68 64 5f 70 75 74 73 20 22 3c 6c 69 3e 3c 61 20  hd_puts "<li><a 
0960: 68 72 65 66 3d 5c 22 24 75 72 6c 5c 22 3e 24 73  href=\"$url\">$s
0970: 5f 74 69 74 6c 65 3c 2f 61 3e 3c 2f 6c 69 3e 22  _title</a></li>"
0980: 0a 20 20 69 6e 63 72 20 69 0a 20 20 69 66 20 7b  .  incr i.  if {
0990: 24 69 3d 3d 24 6c 61 6e 67 5f 73 65 63 74 69 6f  $i==$lang_sectio
09a0: 6e 5f 62 72 65 61 6b 20 7c 7c 20 24 69 3d 3d 32  n_break || $i==2
09b0: 2a 24 6c 61 6e 67 5f 73 65 63 74 69 6f 6e 5f 62  *$lang_section_b
09c0: 72 65 61 6b 7d 20 7b 0a 20 20 20 20 68 64 5f 70  reak} {.    hd_p
09d0: 75 74 73 20 22 3c 2f 75 6c 3e 3c 2f 74 64 3e 3c  uts "</ul></td><
09e0: 74 64 20 76 61 6c 69 67 6e 3d 5c 22 74 6f 70 5c  td valign=\"top\
09f0: 22 3e 3c 75 6c 3e 22 0a 20 20 7d 0a 7d 0a 3c 2f  "><ul>".  }.}.</
0a00: 74 63 6c 3e 0a 3c 2f 75 6c 3e 3c 2f 74 64 3e 3c  tcl>.</ul></td><
0a10: 2f 74 72 3e 3c 2f 74 61 62 6c 65 3e 0a 0a 3c 70  /tr></table>..<p
0a20: 3e 54 68 65 20 72 6f 75 74 69 6e 65 73 20 5b 73  >The routines [s
0a30: 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
0a40: 32 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 70  2()], [sqlite3_p
0a50: 72 65 70 61 72 65 28 29 5d 2c 0a 5b 73 71 6c 69  repare()],.[sqli
0a60: 74 65 33 5f 70 72 65 70 61 72 65 31 36 28 29 5d  te3_prepare16()]
0a70: 2c 20 5b 73 71 6c 69 74 65 33 5f 65 78 65 63 28  , [sqlite3_exec(
0a80: 29 5d 2c 20 61 6e 64 20 5b 73 71 6c 69 74 65 33  )], and [sqlite3
0a90: 5f 67 65 74 5f 74 61 62 6c 65 28 29 5d 20 61 63  _get_table()] ac
0aa0: 63 65 70 74 0a 61 6e 20 53 51 4c 20 73 74 61 74  cept.an SQL stat
0ab0: 65 6d 65 6e 74 20 6c 69 73 74 20 28 73 71 6c 2d  ement list (sql-
0ac0: 73 74 6d 74 2d 6c 69 73 74 29 20 77 68 69 63 68  stmt-list) which
0ad0: 20 69 73 20 61 20 73 65 6d 69 63 6f 6c 6f 6e 2d   is a semicolon-
0ae0: 73 65 70 61 72 61 74 65 64 0a 6c 69 73 74 20 6f  separated.list o
0af0: 66 20 73 74 61 74 65 6d 65 6e 74 73 2e 3c 2f 70  f statements.</p
0b00: 3e 0a 0a 3c 74 63 6c 3e 42 75 62 62 6c 65 44 69  >..<tcl>BubbleDi
0b10: 61 67 72 61 6d 20 73 71 6c 2d 73 74 6d 74 2d 6c  agram sql-stmt-l
0b20: 69 73 74 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 45 61  ist</tcl>..<p>Ea
0b30: 63 68 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  ch SQL statement
0b40: 20 69 6e 20 74 68 65 20 73 74 61 74 65 6d 65 6e   in the statemen
0b50: 74 20 6c 69 73 74 20 69 73 20 61 6e 20 69 6e 73  t list is an ins
0b60: 74 61 6e 63 65 20 6f 66 20 74 68 65 0a 66 6f 6c  tance of the.fol
0b70: 6c 6f 77 69 6e 67 3a 3c 2f 70 3e 0a 0a 3c 74 63  lowing:</p>..<tc
0b80: 6c 3e 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  l>BubbleDiagram 
0b90: 73 71 6c 2d 73 74 6d 74 3c 2f 74 63 6c 3e 0a 0a  sql-stmt</tcl>..
0ba0: 3c 74 63 6c 3e 0a 70 72 6f 63 20 4f 70 65 72 61  <tcl>.proc Opera
0bb0: 74 6f 72 20 7b 6e 61 6d 65 7d 20 7b 0a 20 20 72  tor {name} {.  r
0bc0: 65 74 75 72 6e 20 22 3c 66 6f 6e 74 20 63 6f 6c  eturn "<font col
0bd0: 6f 72 3d 5c 22 23 32 63 32 63 66 30 5c 22 3e 3c  or=\"#2c2cf0\"><
0be0: 62 69 67 3e 24 6e 61 6d 65 3c 2f 62 69 67 3e 3c  big>$name</big><
0bf0: 2f 66 6f 6e 74 3e 22 0a 7d 0a 70 72 6f 63 20 4e  /font>".}.proc N
0c00: 6f 6e 74 65 72 6d 69 6e 61 6c 20 7b 6e 61 6d 65  onterminal {name
0c10: 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20 22 3c 69  } {.  return "<i
0c20: 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23  ><font color=\"#
0c30: 66 66 33 34 33 34 5c 22 3e 24 6e 61 6d 65 3c 2f  ff3434\">$name</
0c40: 66 6f 6e 74 3e 3c 2f 69 3e 22 0a 7d 0a 70 72 6f  font></i>".}.pro
0c50: 63 20 4b 65 79 77 6f 72 64 20 7b 6e 61 6d 65 7d  c Keyword {name}
0c60: 20 7b 0a 20 20 72 65 74 75 72 6e 20 22 3c 66 6f   {.  return "<fo
0c70: 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 32 63 32 63  nt color=\"#2c2c
0c80: 66 30 5c 22 3e 24 6e 61 6d 65 3c 2f 66 6f 6e 74  f0\">$name</font
0c90: 3e 22 0a 7d 0a 70 72 6f 63 20 45 78 61 6d 70 6c  >".}.proc Exampl
0ca0: 65 20 7b 74 65 78 74 7d 20 7b 0a 20 20 68 64 5f  e {text} {.  hd_
0cb0: 70 75 74 73 20 22 3c 62 6c 6f 63 6b 71 75 6f 74  puts "<blockquot
0cc0: 65 3e 3c 70 72 65 3e 24 74 65 78 74 3c 2f 70 72  e><pre>$text</pr
0cd0: 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 22  e></blockquote>"
0ce0: 0a 7d 0a 0a 70 72 6f 63 20 53 65 63 74 69 6f 6e  .}..proc Section
0cf0: 20 7b 6e 61 6d 65 20 6c 61 62 65 6c 20 6b 65 79   {name label key
0d00: 77 6f 72 64 73 7d 20 7b 0a 20 20 67 6c 6f 62 61  words} {.  globa
0d10: 6c 20 44 4f 43 0a 20 20 68 64 5f 63 6c 6f 73 65  l DOC.  hd_close
0d20: 5f 6d 61 69 6e 0a 20 20 68 64 5f 6f 70 65 6e 5f  _main.  hd_open_
0d30: 6d 61 69 6e 20 6c 61 6e 67 5f 24 6c 61 62 65 6c  main lang_$label
0d40: 2e 68 74 6d 6c 0a 20 20 68 64 5f 68 65 61 64 65  .html.  hd_heade
0d50: 72 20 22 53 51 4c 69 74 65 20 51 75 65 72 79 20  r "SQLite Query 
0d60: 4c 61 6e 67 75 61 67 65 3a 20 24 6e 61 6d 65 22  Language: $name"
0d70: 20 24 44 4f 43 2f 70 61 67 65 73 2f 6c 61 6e 67   $DOC/pages/lang
0d80: 2e 69 6e 0a 20 20 65 76 61 6c 20 68 64 5f 6b 65  .in.  eval hd_ke
0d90: 79 77 6f 72 64 73 20 24 6b 65 79 77 6f 72 64 73  ywords $keywords
0da0: 0a 20 20 68 64 5f 70 75 74 73 20 7b 3c 61 20 68  .  hd_puts {<a h
0db0: 72 65 66 3d 22 6c 61 6e 67 2e 68 74 6d 6c 22 3e  ref="lang.html">
0dc0: 3c 68 32 3e 53 51 4c 20 41 73 20 55 6e 64 65 72  <h2>SQL As Under
0dd0: 73 74 6f 6f 64 20 42 79 20 53 51 4c 69 74 65 3c  stood By SQLite<
0de0: 2f 68 32 3e 3c 2f 61 3e 7d 0a 20 20 68 64 5f 70  /h2></a>}.  hd_p
0df0: 75 74 73 20 22 3c 68 33 3e 24 6e 61 6d 65 3c 2f  uts "<h3>$name</
0e00: 68 33 3e 22 0a 7d 0a 0a 23 23 23 23 23 23 23 23  h3>".}..########
0e10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0e20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0e30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0e40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0e50: 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20  #######.Section 
0e60: 7b 41 4c 54 45 52 20 54 41 42 4c 45 7d 20 61 6c  {ALTER TABLE} al
0e70: 74 65 72 74 61 62 6c 65 20 7b 7b 41 4c 54 45 52  tertable {{ALTER
0e80: 20 54 41 42 4c 45 7d 20 7b 41 4c 54 45 52 7d 7d   TABLE} {ALTER}}
0e90: 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  ..BubbleDiagram 
0ea0: 61 6c 74 65 72 2d 74 61 62 6c 65 2d 73 74 6d 74  alter-table-stmt
0eb0: 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 53 51   1.</tcl>..<p>SQ
0ec0: 4c 69 74 65 20 73 75 70 70 6f 72 74 73 20 61 20  Lite supports a 
0ed0: 6c 69 6d 69 74 65 64 20 73 75 62 73 65 74 20 6f  limited subset o
0ee0: 66 20 41 4c 54 45 52 20 54 41 42 4c 45 2e 0a 54  f ALTER TABLE..T
0ef0: 68 65 20 41 4c 54 45 52 20 54 41 42 4c 45 20 63  he ALTER TABLE c
0f00: 6f 6d 6d 61 6e 64 20 69 6e 20 53 51 4c 69 74 65  ommand in SQLite
0f10: 20 61 6c 6c 6f 77 73 20 74 68 65 20 75 73 65 72   allows the user
0f20: 20 74 6f 20 72 65 6e 61 6d 65 20 61 20 74 61 62   to rename a tab
0f30: 6c 65 0a 6f 72 20 74 6f 20 61 64 64 20 61 20 6e  le.or to add a n
0f40: 65 77 20 63 6f 6c 75 6d 6e 20 74 6f 20 61 6e 20  ew column to an 
0f50: 65 78 69 73 74 69 6e 67 20 74 61 62 6c 65 2e 20  existing table. 
0f60: 49 74 20 69 73 20 6e 6f 74 20 70 6f 73 73 69 62  It is not possib
0f70: 6c 65 0a 74 6f 20 72 65 6e 61 6d 65 20 61 20 63  le.to rename a c
0f80: 6f 6c 75 6d 2c 20 72 65 6d 6f 76 65 20 61 20 63  olum, remove a c
0f90: 6f 6c 75 6d 6e 2c 20 6f 72 20 61 64 64 20 6f 72  olumn, or add or
0fa0: 20 72 65 6d 6f 76 65 20 63 6f 6e 73 74 72 61 69   remove constrai
0fb0: 6e 74 73 20 66 72 6f 6d 20 61 20 74 61 62 6c 65  nts from a table
0fc0: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 52  ..</p>..<p>The R
0fd0: 45 4e 41 4d 45 20 54 4f 20 73 79 6e 74 61 78 20  ENAME TO syntax 
0fe0: 69 73 20 75 73 65 64 20 74 6f 20 72 65 6e 61 6d  is used to renam
0ff0: 65 20 74 68 65 20 74 61 62 6c 65 20 69 64 65 6e  e the table iden
1000: 74 69 66 69 65 64 20 62 79 20 0a 3c 69 3e 26 23  tified by .<i>&#
1010: 39 31 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65  91;database-name
1020: 2e 26 23 39 33 3b 74 61 62 6c 65 2d 6e 61 6d 65  .&#93;table-name
1030: 3c 2f 69 3e 20 74 6f 20 3c 69 3e 6e 65 77 2d 74  </i> to <i>new-t
1040: 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 2e 0a 54  able-name</i>..T
1050: 68 69 73 20 63 6f 6d 6d 61 6e 64 20 0a 63 61 6e  his command .can
1060: 6e 6f 74 20 62 65 20 75 73 65 64 20 74 6f 20 6d  not be used to m
1070: 6f 76 65 20 61 20 74 61 62 6c 65 20 62 65 74 77  ove a table betw
1080: 65 65 6e 20 61 74 74 61 63 68 65 64 20 64 61 74  een attached dat
1090: 61 62 61 73 65 73 2c 20 6f 6e 6c 79 20 74 6f 20  abases, only to 
10a0: 72 65 6e 61 6d 65 20 0a 61 20 74 61 62 6c 65 20  rename .a table 
10b0: 77 69 74 68 69 6e 20 74 68 65 20 73 61 6d 65 20  within the same 
10c0: 64 61 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c  database.</p>..<
10d0: 70 3e 49 66 20 74 68 65 20 74 61 62 6c 65 20 62  p>If the table b
10e0: 65 69 6e 67 20 72 65 6e 61 6d 65 64 20 68 61 73  eing renamed has
10f0: 20 74 72 69 67 67 65 72 73 20 6f 72 20 69 6e 64   triggers or ind
1100: 69 63 65 73 2c 20 74 68 65 6e 20 74 68 65 73 65  ices, then these
1110: 20 72 65 6d 61 69 6e 0a 61 74 74 61 63 68 65 64   remain.attached
1120: 20 74 6f 20 74 68 65 20 74 61 62 6c 65 20 61 66   to the table af
1130: 74 65 72 20 69 74 20 68 61 73 20 62 65 65 6e 20  ter it has been 
1140: 72 65 6e 61 6d 65 64 2e 20 48 6f 77 65 76 65 72  renamed. However
1150: 2c 20 69 66 20 74 68 65 72 65 20 61 72 65 0a 61  , if there are.a
1160: 6e 79 20 76 69 65 77 20 64 65 66 69 6e 69 74 69  ny view definiti
1170: 6f 6e 73 2c 20 6f 72 20 73 74 61 74 65 6d 65 6e  ons, or statemen
1180: 74 73 20 65 78 65 63 75 74 65 64 20 62 79 20 74  ts executed by t
1190: 72 69 67 67 65 72 73 20 74 68 61 74 20 72 65 66  riggers that ref
11a0: 65 72 20 74 6f 0a 74 68 65 20 74 61 62 6c 65 20  er to.the table 
11b0: 62 65 69 6e 67 20 72 65 6e 61 6d 65 64 2c 20 74  being renamed, t
11c0: 68 65 73 65 20 61 72 65 20 6e 6f 74 20 61 75 74  hese are not aut
11d0: 6f 6d 61 74 69 63 61 6c 6c 79 20 6d 6f 64 69 66  omatically modif
11e0: 69 65 64 20 74 6f 20 75 73 65 20 74 68 65 20 6e  ied to use the n
11f0: 65 77 0a 74 61 62 6c 65 20 6e 61 6d 65 2e 20 49  ew.table name. I
1200: 66 20 74 68 69 73 20 69 73 20 72 65 71 75 69 72  f this is requir
1210: 65 64 2c 20 74 68 65 20 74 72 69 67 67 65 72 73  ed, the triggers
1220: 20 6f 72 20 76 69 65 77 20 64 65 66 69 6e 69 74   or view definit
1230: 69 6f 6e 73 20 6d 75 73 74 20 62 65 0a 64 72 6f  ions must be.dro
1240: 70 70 65 64 20 61 6e 64 20 72 65 63 72 65 61 74  pped and recreat
1250: 65 64 20 74 6f 20 75 73 65 20 74 68 65 20 6e 65  ed to use the ne
1260: 77 20 74 61 62 6c 65 20 6e 61 6d 65 20 62 79 20  w table name by 
1270: 68 61 6e 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54  hand..</p>..<p>T
1280: 68 65 20 41 44 44 20 43 4f 4c 55 4d 4e 20 73 79  he ADD COLUMN sy
1290: 6e 74 61 78 0a 69 73 20 75 73 65 64 20 74 6f 20  ntax.is used to 
12a0: 61 64 64 20 61 20 6e 65 77 20 63 6f 6c 75 6d 6e  add a new column
12b0: 20 74 6f 20 61 6e 20 65 78 69 73 74 69 6e 67 20   to an existing 
12c0: 74 61 62 6c 65 2e 0a 54 68 65 20 6e 65 77 20 63  table..The new c
12d0: 6f 6c 75 6d 6e 20 69 73 20 61 6c 77 61 79 73 20  olumn is always 
12e0: 61 70 70 65 6e 64 65 64 20 74 6f 20 74 68 65 20  appended to the 
12f0: 65 6e 64 20 6f 66 20 74 68 65 20 6c 69 73 74 20  end of the list 
1300: 6f 66 20 65 78 69 73 74 69 6e 67 20 63 6f 6c 75  of existing colu
1310: 6d 6e 73 2e 0a 54 68 65 20 5b 63 6f 6c 75 6d 6e  mns..The [column
1320: 2d 64 65 66 5d 20 72 75 6c 65 20 64 65 66 69 6e  -def] rule defin
1330: 65 73 20 74 68 65 20 63 68 61 72 61 63 74 65 72  es the character
1340: 69 73 74 69 63 73 20 6f 66 20 74 68 65 20 6e 65  istics of the ne
1350: 77 20 63 6f 6c 75 6d 6e 2e 0a 54 68 65 20 6e 65  w column..The ne
1360: 77 20 63 6f 6c 75 6d 6e 20 6d 61 79 20 74 61 6b  w column may tak
1370: 65 20 61 6e 79 20 6f 66 20 74 68 65 20 66 6f 72  e any of the for
1380: 6d 73 20 70 65 72 6d 69 73 73 61 62 6c 65 20 69  ms permissable i
1390: 6e 20 61 20 5b 43 52 45 41 54 45 20 54 41 42 4c  n a [CREATE TABL
13a0: 45 5d 0a 73 74 61 74 65 6d 65 6e 74 2c 20 77 69  E].statement, wi
13b0: 74 68 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  th the following
13c0: 20 72 65 73 74 72 69 63 74 69 6f 6e 73 3a 0a 3c   restrictions:.<
13d0: 75 6c 3e 0a 3c 6c 69 3e 54 68 65 20 63 6f 6c 75  ul>.<li>The colu
13e0: 6d 6e 20 6d 61 79 20 6e 6f 74 20 68 61 76 65 20  mn may not have 
13f0: 61 20 50 52 49 4d 41 52 59 20 4b 45 59 20 6f 72  a PRIMARY KEY or
1400: 20 55 4e 49 51 55 45 20 63 6f 6e 73 74 72 61 69   UNIQUE constrai
1410: 6e 74 2e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 54 68 65  nt.</li>.<li>The
1420: 20 63 6f 6c 75 6d 6e 20 6d 61 79 20 6e 6f 74 20   column may not 
1430: 68 61 76 65 20 61 20 64 65 66 61 75 6c 74 20 76  have a default v
1440: 61 6c 75 65 20 6f 66 20 43 55 52 52 45 4e 54 5f  alue of CURRENT_
1450: 54 49 4d 45 2c 20 43 55 52 52 45 4e 54 5f 44 41  TIME, CURRENT_DA
1460: 54 45 20 0a 20 20 20 20 6f 72 20 43 55 52 52 45  TE .    or CURRE
1470: 4e 54 5f 54 49 4d 45 53 54 41 4d 50 2e 3c 2f 6c  NT_TIMESTAMP.</l
1480: 69 3e 0a 3c 6c 69 3e 49 66 20 61 20 4e 4f 54 20  i>.<li>If a NOT 
1490: 4e 55 4c 4c 20 63 6f 6e 73 74 72 61 69 6e 74 20  NULL constraint 
14a0: 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 74 68  is specified, th
14b0: 65 6e 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6d 75  en the column mu
14c0: 73 74 20 68 61 76 65 20 61 0a 20 20 20 20 64 65  st have a.    de
14d0: 66 61 75 6c 74 20 76 61 6c 75 65 20 6f 74 68 65  fault value othe
14e0: 72 20 74 68 61 6e 20 4e 55 4c 4c 2e 0a 3c 2f 75  r than NULL..</u
14f0: 6c 3e 0a 0a 3c 70 3e 54 68 65 20 65 78 65 63 75  l>..<p>The execu
1500: 74 69 6f 6e 20 74 69 6d 65 20 6f 66 20 74 68 65  tion time of the
1510: 20 41 4c 54 45 52 20 54 41 42 4c 45 20 63 6f 6d   ALTER TABLE com
1520: 6d 61 6e 64 20 69 73 20 69 6e 64 65 70 65 6e 64  mand is independ
1530: 65 6e 74 20 6f 66 0a 74 68 65 20 61 6d 6f 75 6e  ent of.the amoun
1540: 74 20 6f 66 20 64 61 74 61 20 69 6e 20 74 68 65  t of data in the
1550: 20 74 61 62 6c 65 2e 20 20 54 68 65 20 41 4c 54   table.  The ALT
1560: 45 52 20 54 41 42 4c 45 20 63 6f 6d 6d 61 6e 64  ER TABLE command
1570: 20 72 75 6e 73 20 61 73 20 71 75 69 63 6b 6c 79   runs as quickly
1580: 0a 6f 6e 20 61 20 74 61 62 6c 65 20 77 69 74 68  .on a table with
1590: 20 31 30 20 6d 69 6c 6c 69 6f 6e 20 72 6f 77 73   10 million rows
15a0: 20 61 73 20 69 74 20 64 6f 65 73 20 6f 6e 20 61   as it does on a
15b0: 20 74 61 62 6c 65 20 77 69 74 68 20 31 20 72 6f   table with 1 ro
15c0: 77 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 41 66 74 65  w..</p>..<p>Afte
15d0: 72 20 41 44 44 20 43 4f 4c 55 4d 4e 20 68 61 73  r ADD COLUMN has
15e0: 20 62 65 65 6e 20 72 75 6e 20 6f 6e 20 61 20 64   been run on a d
15f0: 61 74 61 62 61 73 65 2c 20 74 68 61 74 20 64 61  atabase, that da
1600: 74 61 62 61 73 65 20 77 69 6c 6c 20 6e 6f 74 0a  tabase will not.
1610: 62 65 20 72 65 61 64 61 62 6c 65 20 62 79 20 53  be readable by S
1620: 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e  QLite version 3.
1630: 31 2e 33 20 61 6e 64 20 65 61 72 6c 69 65 72 2e  1.3 and earlier.
1640: 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23  </p>..<tcl>.####
1650: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1660: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1670: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1680: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1690: 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69  ##########.Secti
16a0: 6f 6e 20 7b 41 4e 41 4c 59 5a 45 7d 20 61 6e 61  on {ANALYZE} ana
16b0: 6c 79 7a 65 20 41 4e 41 4c 59 5a 45 0a 0a 42 75  lyze ANALYZE..Bu
16c0: 62 62 6c 65 44 69 61 67 72 61 6d 20 61 6e 61 6c  bbleDiagram anal
16d0: 79 7a 65 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c  yze-stmt 1.</tcl
16e0: 3e 0a 0a 3c 70 3e 54 68 65 20 41 4e 41 4c 59 5a  >..<p>The ANALYZ
16f0: 45 20 63 6f 6d 6d 61 6e 64 20 67 61 74 68 65 72  E command gather
1700: 73 20 73 74 61 74 69 73 74 69 63 73 20 61 62 6f  s statistics abo
1710: 75 74 20 69 6e 64 69 63 65 73 20 61 6e 64 20 73  ut indices and s
1720: 74 6f 72 65 73 20 74 68 65 6d 0a 69 6e 20 61 20  tores them.in a 
1730: 73 70 65 63 69 61 6c 20 74 61 62 6c 65 73 20 69  special tables i
1740: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 77  n the database w
1750: 68 65 72 65 20 74 68 65 20 71 75 65 72 79 20 6f  here the query o
1760: 70 74 69 6d 69 7a 65 72 20 63 61 6e 20 75 73 65  ptimizer can use
1770: 0a 74 68 65 6d 20 74 6f 20 68 65 6c 70 20 6d 61  .them to help ma
1780: 6b 65 20 62 65 74 74 65 72 20 69 6e 64 65 78 20  ke better index 
1790: 63 68 6f 69 63 65 73 2e 0a 49 66 20 6e 6f 20 61  choices..If no a
17a0: 72 67 75 6d 65 6e 74 73 20 61 72 65 20 67 69 76  rguments are giv
17b0: 65 6e 2c 20 61 6c 6c 20 69 6e 64 69 63 65 73 20  en, all indices 
17c0: 69 6e 20 61 6c 6c 20 61 74 74 61 63 68 65 64 20  in all attached 
17d0: 64 61 74 61 62 61 73 65 73 20 61 72 65 0a 61 6e  databases are.an
17e0: 61 6c 79 7a 65 64 2e 20 20 49 66 20 61 20 64 61  alyzed.  If a da
17f0: 74 61 62 61 73 65 20 6e 61 6d 65 20 69 73 20 67  tabase name is g
1800: 69 76 65 6e 20 61 73 20 74 68 65 20 61 72 67 75  iven as the argu
1810: 6d 65 6e 74 2c 20 61 6c 6c 20 69 6e 64 69 63 65  ment, all indice
1820: 73 0a 69 6e 20 74 68 61 74 20 6f 6e 65 20 64 61  s.in that one da
1830: 74 61 62 61 73 65 20 61 72 65 20 61 6e 61 6c 79  tabase are analy
1840: 7a 65 64 2e 20 20 49 66 20 74 68 65 20 61 72 67  zed.  If the arg
1850: 75 6d 65 6e 74 20 69 73 20 61 20 74 61 62 6c 65  ument is a table
1860: 20 6e 61 6d 65 2c 0a 74 68 65 6e 20 6f 6e 6c 79   name,.then only
1870: 20 69 6e 64 69 63 65 73 20 61 73 73 6f 63 69 61   indices associa
1880: 74 65 64 20 77 69 74 68 20 74 68 61 74 20 6f 6e  ted with that on
1890: 65 20 74 61 62 6c 65 20 61 72 65 20 61 6e 61 6c  e table are anal
18a0: 79 7a 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  yzed.</p>..<p>Th
18b0: 65 20 69 6e 69 74 69 61 6c 20 69 6d 70 6c 65 6d  e initial implem
18c0: 65 6e 74 61 74 69 6f 6e 20 73 74 6f 72 65 73 20  entation stores 
18d0: 61 6c 6c 20 73 74 61 74 69 73 74 69 63 73 20 69  all statistics i
18e0: 6e 20 61 20 73 69 6e 67 6c 65 0a 74 61 62 6c 65  n a single.table
18f0: 20 6e 61 6d 65 64 20 3c 62 3e 73 71 6c 69 74 65   named <b>sqlite
1900: 5f 73 74 61 74 31 3c 2f 62 3e 2e 20 20 46 75 74  _stat1</b>.  Fut
1910: 75 72 65 20 65 6e 68 61 6e 63 65 6d 65 6e 74 73  ure enhancements
1920: 20 6d 61 79 20 63 72 65 61 74 65 0a 61 64 64 69   may create.addi
1930: 74 69 6f 6e 61 6c 20 74 61 62 6c 65 73 20 77 69  tional tables wi
1940: 74 68 20 74 68 65 20 73 61 6d 65 20 6e 61 6d 65  th the same name
1950: 20 70 61 74 74 65 72 6e 20 65 78 63 65 70 74 20   pattern except 
1960: 77 69 74 68 20 74 68 65 20 22 31 22 0a 63 68 61  with the "1".cha
1970: 6e 67 65 64 20 74 6f 20 61 20 64 69 66 66 65 72  nged to a differ
1980: 65 6e 74 20 64 69 67 69 74 2e 20 20 54 68 65 20  ent digit.  The 
1990: 5b 44 52 4f 50 20 54 41 42 4c 45 5d 20 63 6f 6d  [DROP TABLE] com
19a0: 6d 61 6e 64 20 64 6f 65 73 0a 6e 6f 74 20 77 6f  mand does.not wo
19b0: 72 6b 20 6f 6e 20 74 68 65 20 3c 62 3e 73 71 6c  rk on the <b>sql
19c0: 69 74 65 5f 73 74 61 74 31 3c 2f 62 3e 20 74 61  ite_stat1</b> ta
19d0: 62 6c 65 2c 0a 62 75 74 20 61 6c 6c 20 74 68 65  ble,.but all the
19e0: 20 63 6f 6e 74 65 6e 74 20 63 61 6e 20 62 65 20   content can be 
19f0: 72 65 6d 6f 76 65 64 20 75 73 69 6e 67 20 74 68  removed using th
1a00: 65 20 5b 44 45 4c 45 54 45 5d 20 63 6f 6d 6d 61  e [DELETE] comma
1a10: 6e 64 2c 0a 77 68 69 63 68 20 68 61 73 20 74 68  nd,.which has th
1a20: 65 20 73 61 6d 65 20 65 66 66 65 63 74 2e 3c 2f  e same effect.</
1a30: 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  p>..<tcl>.######
1a40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a80: 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
1a90: 20 7b 41 54 54 41 43 48 20 44 41 54 41 42 41 53   {ATTACH DATABAS
1aa0: 45 7d 20 61 74 74 61 63 68 20 41 54 54 41 43 48  E} attach ATTACH
1ab0: 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  ..BubbleDiagram 
1ac0: 61 74 74 61 63 68 2d 73 74 6d 74 20 31 0a 3c 2f  attach-stmt 1.</
1ad0: 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 41 54 54  tcl>..<p>The ATT
1ae0: 41 43 48 20 44 41 54 41 42 41 53 45 20 73 74 61  ACH DATABASE sta
1af0: 74 65 6d 65 6e 74 20 61 64 64 73 20 61 6e 6f 74  tement adds anot
1b00: 68 65 72 20 64 61 74 61 62 61 73 65 20 0a 66 69  her database .fi
1b10: 6c 65 20 74 6f 20 74 68 65 20 63 75 72 72 65 6e  le to the curren
1b20: 74 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  t database conne
1b30: 63 74 69 6f 6e 2e 20 20 49 66 20 74 68 65 20 66  ction.  If the f
1b40: 69 6c 65 6e 61 6d 65 20 63 6f 6e 74 61 69 6e 73  ilename contains
1b50: 20 0a 70 75 6e 63 74 75 61 74 69 6f 6e 20 63 68   .punctuation ch
1b60: 61 72 61 63 74 65 72 73 20 69 74 20 6d 75 73 74  aracters it must
1b70: 20 62 65 20 71 75 6f 74 65 64 2e 20 20 54 68 65   be quoted.  The
1b80: 20 6e 61 6d 65 73 20 27 6d 61 69 6e 27 20 61 6e   names 'main' an
1b90: 64 20 0a 27 74 65 6d 70 27 20 72 65 66 65 72 20  d .'temp' refer 
1ba0: 74 6f 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61  to the main data
1bb0: 62 61 73 65 20 61 6e 64 20 74 68 65 20 64 61 74  base and the dat
1bc0: 61 62 61 73 65 20 75 73 65 64 20 66 6f 72 20 0a  abase used for .
1bd0: 74 65 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 73  temporary tables
1be0: 2e 20 20 54 68 65 73 65 20 63 61 6e 6e 6f 74 20  .  These cannot 
1bf0: 62 65 20 64 65 74 61 63 68 65 64 2e 20 20 41 74  be detached.  At
1c00: 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65 73  tached databases
1c10: 20 0a 61 72 65 20 72 65 6d 6f 76 65 64 20 75 73   .are removed us
1c20: 69 6e 67 20 74 68 65 20 5b 44 45 54 41 43 48 5d  ing the [DETACH]
1c30: 20 73 74 61 74 65 6d 65 6e 74 2e 3c 2f 70 3e 0a   statement.</p>.
1c40: 0a 3c 70 3e 59 6f 75 20 63 61 6e 6e 6f 74 20 63  .<p>You cannot c
1c50: 72 65 61 74 65 20 61 20 6e 65 77 20 74 61 62 6c  reate a new tabl
1c60: 65 20 77 69 74 68 20 74 68 65 20 73 61 6d 65 20  e with the same 
1c70: 6e 61 6d 65 20 61 73 20 61 20 74 61 62 6c 65 20  name as a table 
1c80: 69 6e 20 0a 61 6e 20 61 74 74 61 63 68 65 64 20  in .an attached 
1c90: 64 61 74 61 62 61 73 65 2c 20 62 75 74 20 79 6f  database, but yo
1ca0: 75 20 63 61 6e 20 61 74 74 61 63 68 20 61 20 64  u can attach a d
1cb0: 61 74 61 62 61 73 65 20 77 68 69 63 68 20 63 6f  atabase which co
1cc0: 6e 74 61 69 6e 73 0a 74 61 62 6c 65 73 20 77 68  ntains.tables wh
1cd0: 6f 73 65 20 6e 61 6d 65 73 20 61 72 65 20 64 75  ose names are du
1ce0: 70 6c 69 63 61 74 65 73 20 6f 66 20 74 61 62 6c  plicates of tabl
1cf0: 65 73 20 69 6e 20 74 68 65 20 6d 61 69 6e 20 64  es in the main d
1d00: 61 74 61 62 61 73 65 2e 20 20 49 74 20 69 73 20  atabase.  It is 
1d10: 0a 61 6c 73 6f 20 70 65 72 6d 69 73 73 69 62 6c  .also permissibl
1d20: 65 20 74 6f 20 61 74 74 61 63 68 20 74 68 65 20  e to attach the 
1d30: 73 61 6d 65 20 64 61 74 61 62 61 73 65 20 66 69  same database fi
1d40: 6c 65 20 6d 75 6c 74 69 70 6c 65 20 74 69 6d 65  le multiple time
1d50: 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 61 62 6c 65  s.</p>..<p>Table
1d60: 73 20 69 6e 20 61 6e 20 61 74 74 61 63 68 65 64  s in an attached
1d70: 20 64 61 74 61 62 61 73 65 20 63 61 6e 20 62 65   database can be
1d80: 20 72 65 66 65 72 72 65 64 20 74 6f 20 75 73 69   referred to usi
1d90: 6e 67 20 74 68 65 20 73 79 6e 74 61 78 20 0a 3c  ng the syntax .<
1da0: 69 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 2e  i>database-name.
1db0: 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 2e 20  table-name</i>. 
1dc0: 20 49 66 20 61 6e 20 61 74 74 61 63 68 65 64 20   If an attached 
1dd0: 74 61 62 6c 65 20 64 6f 65 73 6e 27 74 20 68 61  table doesn't ha
1de0: 76 65 20 0a 61 20 64 75 70 6c 69 63 61 74 65 20  ve .a duplicate 
1df0: 74 61 62 6c 65 20 6e 61 6d 65 20 69 6e 20 74 68  table name in th
1e00: 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 2c  e main database,
1e10: 20 69 74 20 64 6f 65 73 6e 27 74 20 72 65 71 75   it doesn't requ
1e20: 69 72 65 20 61 20 0a 64 61 74 61 62 61 73 65 20  ire a .database 
1e30: 6e 61 6d 65 20 70 72 65 66 69 78 2e 20 20 57 68  name prefix.  Wh
1e40: 65 6e 20 61 20 64 61 74 61 62 61 73 65 20 69 73  en a database is
1e50: 20 61 74 74 61 63 68 65 64 2c 20 61 6c 6c 20 6f   attached, all o
1e60: 66 20 69 74 73 20 0a 74 61 62 6c 65 73 20 77 68  f its .tables wh
1e70: 69 63 68 20 64 6f 6e 27 74 20 68 61 76 65 20 64  ich don't have d
1e80: 75 70 6c 69 63 61 74 65 20 6e 61 6d 65 73 20 62  uplicate names b
1e90: 65 63 6f 6d 65 20 74 68 65 20 64 65 66 61 75 6c  ecome the defaul
1ea0: 74 20 74 61 62 6c 65 0a 6f 66 20 74 68 61 74 20  t table.of that 
1eb0: 6e 61 6d 65 2e 20 20 41 6e 79 20 74 61 62 6c 65  name.  Any table
1ec0: 73 20 6f 66 20 74 68 61 74 20 6e 61 6d 65 20 61  s of that name a
1ed0: 74 74 61 63 68 65 64 20 61 66 74 65 72 77 61 72  ttached afterwar
1ee0: 64 73 20 72 65 71 75 69 72 65 20 74 68 65 0a 64  ds require the.d
1ef0: 61 74 61 62 61 73 65 20 70 72 65 66 69 78 2e 20  atabase prefix. 
1f00: 49 66 20 74 68 65 20 64 65 66 61 75 6c 74 20 74  If the default t
1f10: 61 62 6c 65 20 6f 66 20 61 20 67 69 76 65 6e 20  able of a given 
1f20: 6e 61 6d 65 20 69 73 20 64 65 74 61 63 68 65 64  name is detached
1f30: 2c 20 74 68 65 6e 0a 74 68 65 20 6c 61 73 74 20  , then.the last 
1f40: 74 61 62 6c 65 20 6f 66 20 74 68 61 74 20 6e 61  table of that na
1f50: 6d 65 20 61 74 74 61 63 68 65 64 20 62 65 63 6f  me attached beco
1f60: 6d 65 73 20 74 68 65 20 6e 65 77 20 64 65 66 61  mes the new defa
1f70: 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 72  ult.</p>..<p>.Tr
1f80: 61 6e 73 61 63 74 69 6f 6e 73 20 69 6e 76 6f 6c  ansactions invol
1f90: 76 69 6e 67 20 6d 75 6c 74 69 70 6c 65 20 61 74  ving multiple at
1fa0: 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65 73  tached databases
1fb0: 20 61 72 65 20 61 74 6f 6d 69 63 2c 0a 61 73 73   are atomic,.ass
1fc0: 75 6d 69 6e 67 20 74 68 61 74 20 74 68 65 20 6d  uming that the m
1fd0: 61 69 6e 20 64 61 74 61 62 61 73 65 20 69 73 20  ain database is 
1fe0: 6e 6f 74 20 22 3a 6d 65 6d 6f 72 79 3a 22 2e 20  not ":memory:". 
1ff0: 20 49 66 20 74 68 65 20 6d 61 69 6e 0a 64 61 74   If the main.dat
2000: 61 62 61 73 65 20 69 73 20 22 3a 6d 65 6d 6f 72  abase is ":memor
2010: 79 3a 22 20 74 68 65 6e 20 0a 74 72 61 6e 73 61  y:" then .transa
2020: 63 74 69 6f 6e 73 20 63 6f 6e 74 69 6e 75 65 20  ctions continue 
2030: 74 6f 20 62 65 20 61 74 6f 6d 69 63 20 77 69 74  to be atomic wit
2040: 68 69 6e 20 65 61 63 68 20 69 6e 64 69 76 69 64  hin each individ
2050: 75 61 6c 0a 64 61 74 61 62 61 73 65 20 66 69 6c  ual.database fil
2060: 65 2e 20 42 75 74 20 69 66 20 74 68 65 20 68 6f  e. But if the ho
2070: 73 74 20 63 6f 6d 70 75 74 65 72 20 63 72 61 73  st computer cras
2080: 68 65 73 20 69 6e 20 74 68 65 20 6d 69 64 64 6c  hes in the middl
2090: 65 0a 6f 66 20 61 20 5b 43 4f 4d 4d 49 54 5d 20  e.of a [COMMIT] 
20a0: 77 68 65 72 65 20 74 77 6f 20 6f 72 20 6d 6f 72  where two or mor
20b0: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 73  e database files
20c0: 20 61 72 65 20 75 70 64 61 74 65 64 2c 0a 73 6f   are updated,.so
20d0: 6d 65 20 6f 66 20 74 68 6f 73 65 20 66 69 6c 65  me of those file
20e0: 73 20 6d 69 67 68 74 20 67 65 74 20 74 68 65 20  s might get the 
20f0: 63 68 61 6e 67 65 73 20 77 68 65 72 65 20 6f 74  changes where ot
2100: 68 65 72 73 0a 6d 69 67 68 74 20 6e 6f 74 2e 0a  hers.might not..
2110: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 69  </p>..<p>There i
2120: 73 20 61 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  s a compile-time
2130: 20 6c 69 6d 69 74 20 6f 66 20 5b 53 51 4c 49 54   limit of [SQLIT
2140: 45 5f 4d 41 58 5f 41 54 54 41 43 48 45 44 5d 0a  E_MAX_ATTACHED].
2150: 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73  attached databas
2160: 65 20 66 69 6c 65 73 2e 3c 2f 70 3e 0a 0a 3c 74  e files.</p>..<t
2170: 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23  cl>.############
2180: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2190: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
21a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
21b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
21c0: 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 42 45 47  ###.Section {BEG
21d0: 49 4e 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20  IN TRANSACTION} 
21e0: 74 72 61 6e 73 61 63 74 69 6f 6e 20 7b 42 45 47  transaction {BEG
21f0: 49 4e 20 43 4f 4d 4d 49 54 20 52 4f 4c 4c 42 41  IN COMMIT ROLLBA
2200: 43 4b 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72  CK}..BubbleDiagr
2210: 61 6d 20 62 65 67 69 6e 2d 73 74 6d 74 0a 42 75  am begin-stmt.Bu
2220: 62 62 6c 65 44 69 61 67 72 61 6d 20 63 6f 6d 6d  bbleDiagram comm
2230: 69 74 2d 73 74 6d 74 0a 42 75 62 62 6c 65 44 69  it-stmt.BubbleDi
2240: 61 67 72 61 6d 20 72 6f 6c 6c 62 61 63 6b 2d 73  agram rollback-s
2250: 74 6d 74 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 0a  tmt.</tcl>..<p>.
2260: 4e 6f 20 63 68 61 6e 67 65 73 20 63 61 6e 20 62  No changes can b
2270: 65 20 6d 61 64 65 20 74 6f 20 74 68 65 20 64 61  e made to the da
2280: 74 61 62 61 73 65 20 65 78 63 65 70 74 20 77 69  tabase except wi
2290: 74 68 69 6e 20 61 20 74 72 61 6e 73 61 63 74 69  thin a transacti
22a0: 6f 6e 2e 0a 41 6e 79 20 63 6f 6d 6d 61 6e 64 20  on..Any command 
22b0: 74 68 61 74 20 63 68 61 6e 67 65 73 20 74 68 65  that changes the
22c0: 20 64 61 74 61 62 61 73 65 20 28 62 61 73 69 63   database (basic
22d0: 61 6c 6c 79 2c 20 61 6e 79 20 53 51 4c 20 63 6f  ally, any SQL co
22e0: 6d 6d 61 6e 64 0a 6f 74 68 65 72 20 74 68 61 6e  mmand.other than
22f0: 20 5b 53 45 4c 45 43 54 5d 29 20 77 69 6c 6c 20   [SELECT]) will 
2300: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 73 74  automatically st
2310: 61 72 74 20 61 20 74 72 61 6e 73 61 63 74 69 6f  art a transactio
2320: 6e 20 69 66 0a 6f 6e 65 20 69 73 20 6e 6f 74 20  n if.one is not 
2330: 61 6c 72 65 61 64 79 20 69 6e 20 65 66 66 65 63  already in effec
2340: 74 2e 20 20 41 75 74 6f 6d 61 74 69 63 61 6c 6c  t.  Automaticall
2350: 79 20 73 74 61 72 74 65 64 20 74 72 61 6e 73 61  y started transa
2360: 63 74 69 6f 6e 73 0a 61 72 65 20 63 6f 6d 6d 69  ctions.are commi
2370: 74 74 65 64 20 77 68 65 6e 20 74 68 65 20 6c 61  tted when the la
2380: 73 74 20 71 75 65 72 79 20 66 69 6e 69 73 68 65  st query finishe
2390: 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 72 61  s..</p>..<p>.Tra
23a0: 6e 73 61 63 74 69 6f 6e 73 20 63 61 6e 20 62 65  nsactions can be
23b0: 20 73 74 61 72 74 65 64 20 6d 61 6e 75 61 6c 6c   started manuall
23c0: 79 20 75 73 69 6e 67 20 74 68 65 20 42 45 47 49  y using the BEGI
23d0: 4e 0a 63 6f 6d 6d 61 6e 64 2e 20 20 53 75 63 68  N.command.  Such
23e0: 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 75 73   transactions us
23f0: 75 61 6c 6c 79 20 70 65 72 73 69 73 74 20 75 6e  ually persist un
2400: 74 69 6c 20 74 68 65 20 6e 65 78 74 0a 43 4f 4d  til the next.COM
2410: 4d 49 54 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 20  MIT or ROLLBACK 
2420: 63 6f 6d 6d 61 6e 64 2e 20 20 42 75 74 20 61 20  command.  But a 
2430: 74 72 61 6e 73 61 63 74 69 6f 6e 20 77 69 6c 6c  transaction will
2440: 20 61 6c 73 6f 20 0a 52 4f 4c 4c 42 41 43 4b 20   also .ROLLBACK 
2450: 69 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  if the database 
2460: 69 73 20 63 6c 6f 73 65 64 20 6f 72 20 69 66 20  is closed or if 
2470: 61 6e 20 65 72 72 6f 72 20 6f 63 63 75 72 73 0a  an error occurs.
2480: 61 6e 64 20 74 68 65 20 52 4f 4c 4c 42 41 43 4b  and the ROLLBACK
2490: 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75   conflict resolu
24a0: 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 69  tion algorithm i
24b0: 73 20 73 70 65 63 69 66 69 65 64 2e 0a 53 65 65  s specified..See
24c0: 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69   the documentati
24d0: 6f 6e 20 6f 6e 20 74 68 65 20 5b 4f 4e 20 43 4f  on on the [ON CO
24e0: 4e 46 4c 49 43 54 5d 0a 63 6c 61 75 73 65 20 66  NFLICT].clause f
24f0: 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e  or additional in
2500: 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20  formation about 
2510: 74 68 65 20 52 4f 4c 4c 42 41 43 4b 0a 63 6f 6e  the ROLLBACK.con
2520: 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e  flict resolution
2530: 20 61 6c 67 6f 72 69 74 68 6d 2e 0a 3c 2f 70 3e   algorithm..</p>
2540: 0a 0a 3c 70 3e 0a 45 4e 44 20 54 52 41 4e 53 41  ..<p>.END TRANSA
2550: 43 54 49 4f 4e 20 69 73 20 61 6e 20 61 6c 69 61  CTION is an alia
2560: 73 20 66 6f 72 20 43 4f 4d 4d 49 54 2e 0a 3c 2f  s for COMMIT..</
2570: 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f  p>..<p>The optio
2580: 6e 61 6c 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  nal transaction 
2590: 6e 61 6d 65 20 69 73 20 69 67 6e 6f 72 65 64 2e  name is ignored.
25a0: 20 53 51 4c 69 74 65 20 0a 64 6f 65 73 20 6e 6f   SQLite .does no
25b0: 74 20 72 65 63 6f 67 6e 69 7a 65 20 6e 65 73 74  t recognize nest
25c0: 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 20  ed transactions 
25d0: 61 74 20 74 68 69 73 20 74 69 6d 65 2e 0a 48 6f  at this time..Ho
25e0: 77 65 76 65 72 2c 20 66 75 74 75 72 65 20 76 65  wever, future ve
25f0: 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65  rsions of SQLite
2600: 20 6d 61 79 20 62 65 20 65 6e 68 61 6e 63 65 64   may be enhanced
2610: 20 74 6f 20 73 75 70 70 6f 72 74 20 6e 65 73 74   to support nest
2620: 65 64 0a 74 72 61 6e 73 61 63 74 69 6f 6e 73 20  ed.transactions 
2630: 61 6e 64 20 74 68 65 20 74 72 61 6e 73 61 63 74  and the transact
2640: 69 6f 6e 20 6e 61 6d 65 20 77 6f 75 6c 64 20 74  ion name would t
2650: 68 65 6e 20 62 65 63 6f 6d 65 20 73 69 67 6e 69  hen become signi
2660: 66 69 63 61 6e 74 2e 0a 41 70 70 6c 69 63 61 74  ficant..Applicat
2670: 69 6f 6e 20 61 72 65 20 61 64 76 69 73 65 64 20  ion are advised 
2680: 6e 6f 74 20 74 6f 20 75 73 65 20 74 68 65 20 74  not to use the t
2690: 72 61 6e 73 61 63 74 69 6f 6e 20 6e 61 6d 65 20  ransaction name 
26a0: 69 6e 20 6f 72 64 65 72 0a 74 6f 20 61 76 6f 69  in order.to avoi
26b0: 64 20 66 75 74 75 72 65 20 63 6f 6d 70 61 74 69  d future compati
26c0: 62 69 6c 69 74 79 20 70 72 6f 62 6c 65 6d 73 2e  bility problems.
26d0: 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 72 61 6e 73 61  </p>..<p>.Transa
26e0: 63 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 64 65  ctions can be de
26f0: 66 65 72 72 65 64 2c 20 69 6d 6d 65 64 69 61 74  ferred, immediat
2700: 65 2c 20 6f 72 20 65 78 63 6c 75 73 69 76 65 2e  e, or exclusive.
2710: 20 20 0a 54 68 65 20 64 65 66 61 75 6c 74 20 74    .The default t
2720: 72 61 6e 73 61 63 74 69 6f 6e 20 62 65 68 61 76  ransaction behav
2730: 69 6f 72 20 69 73 20 64 65 66 65 72 72 65 64 2e  ior is deferred.
2740: 0a 44 65 66 65 72 72 65 64 20 6d 65 61 6e 73 20  .Deferred means 
2750: 74 68 61 74 20 6e 6f 20 6c 6f 63 6b 73 20 61 72  that no locks ar
2760: 65 20 61 63 71 75 69 72 65 64 0a 6f 6e 20 74 68  e acquired.on th
2770: 65 20 64 61 74 61 62 61 73 65 20 75 6e 74 69 6c  e database until
2780: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73   the database is
2790: 20 66 69 72 73 74 20 61 63 63 65 73 73 65 64 2e   first accessed.
27a0: 20 20 54 68 75 73 20 77 69 74 68 20 61 0a 64 65    Thus with a.de
27b0: 66 65 72 72 65 64 20 74 72 61 6e 73 61 63 74 69  ferred transacti
27c0: 6f 6e 2c 20 74 68 65 20 42 45 47 49 4e 20 73 74  on, the BEGIN st
27d0: 61 74 65 6d 65 6e 74 20 69 74 73 65 6c 66 20 64  atement itself d
27e0: 6f 65 73 20 6e 6f 74 68 69 6e 67 2e 20 20 4c 6f  oes nothing.  Lo
27f0: 63 6b 73 0a 61 72 65 20 6e 6f 74 20 61 63 71 75  cks.are not acqu
2800: 69 72 65 64 20 75 6e 74 69 6c 20 74 68 65 20 66  ired until the f
2810: 69 72 73 74 20 72 65 61 64 20 6f 72 20 77 72 69  irst read or wri
2820: 74 65 20 6f 70 65 72 61 74 69 6f 6e 2e 20 20 54  te operation.  T
2830: 68 65 20 66 69 72 73 74 20 72 65 61 64 0a 6f 70  he first read.op
2840: 65 72 61 74 69 6f 6e 20 61 67 61 69 6e 73 74 20  eration against 
2850: 61 20 64 61 74 61 62 61 73 65 20 63 72 65 61 74  a database creat
2860: 65 73 20 61 20 5b 53 48 41 52 45 44 5d 20 6c 6f  es a [SHARED] lo
2870: 63 6b 20 61 6e 64 20 74 68 65 20 66 69 72 73 74  ck and the first
2880: 0a 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e  .write operation
2890: 20 63 72 65 61 74 65 73 20 61 20 5b 52 45 53 45   creates a [RESE
28a0: 52 56 45 44 5d 20 6c 6f 63 6b 2e 20 20 20 42 65  RVED] lock.   Be
28b0: 63 61 75 73 65 20 74 68 65 20 61 63 71 75 69 73  cause the acquis
28c0: 69 74 69 6f 6e 20 6f 66 0a 6c 6f 63 6b 73 20 69  ition of.locks i
28d0: 73 20 64 65 66 65 72 72 65 64 20 75 6e 74 69 6c  s deferred until
28e0: 20 74 68 65 79 20 61 72 65 20 6e 65 65 64 65 64   they are needed
28f0: 2c 20 69 74 20 69 73 20 70 6f 73 73 69 62 6c 65  , it is possible
2900: 20 74 68 61 74 20 61 6e 6f 74 68 65 72 0a 74 68   that another.th
2910: 72 65 61 64 20 6f 72 20 70 72 6f 63 65 73 73 20  read or process 
2920: 63 6f 75 6c 64 20 63 72 65 61 74 65 20 61 20 73  could create a s
2930: 65 70 61 72 61 74 65 20 74 72 61 6e 73 61 63 74  eparate transact
2940: 69 6f 6e 20 61 6e 64 20 77 72 69 74 65 20 74 6f  ion and write to
2950: 0a 74 68 65 20 64 61 74 61 62 61 73 65 20 61 66  .the database af
2960: 74 65 72 20 74 68 65 20 42 45 47 49 4e 20 6f 6e  ter the BEGIN on
2970: 20 74 68 65 20 63 75 72 72 65 6e 74 20 74 68 72   the current thr
2980: 65 61 64 20 68 61 73 20 65 78 65 63 75 74 65 64  ead has executed
2990: 2e 0a 49 66 20 74 68 65 20 74 72 61 6e 73 61 63  ..If the transac
29a0: 74 69 6f 6e 20 69 73 20 69 6d 6d 65 64 69 61 74  tion is immediat
29b0: 65 2c 20 74 68 65 6e 20 5b 52 45 53 45 52 56 45  e, then [RESERVE
29c0: 44 5d 20 6c 6f 63 6b 73 0a 61 72 65 20 61 63 71  D] locks.are acq
29d0: 75 69 72 65 64 20 6f 6e 20 61 6c 6c 20 64 61 74  uired on all dat
29e0: 61 62 61 73 65 73 20 61 73 20 73 6f 6f 6e 20 61  abases as soon a
29f0: 73 20 74 68 65 20 42 45 47 49 4e 20 63 6f 6d 6d  s the BEGIN comm
2a00: 61 6e 64 20 69 73 0a 65 78 65 63 75 74 65 64 2c  and is.executed,
2a10: 20 77 69 74 68 6f 75 74 20 77 61 69 74 69 6e 67   without waiting
2a20: 20 66 6f 72 20 74 68 65 0a 64 61 74 61 62 61 73   for the.databas
2a30: 65 20 74 6f 20 62 65 20 75 73 65 64 2e 20 20 41  e to be used.  A
2a40: 66 74 65 72 20 61 20 42 45 47 49 4e 20 49 4d 4d  fter a BEGIN IMM
2a50: 45 44 49 41 54 45 2c 20 79 6f 75 20 61 72 65 20  EDIATE, you are 
2a60: 67 75 61 72 61 6e 74 65 65 64 20 74 68 61 74 0a  guaranteed that.
2a70: 6e 6f 20 6f 74 68 65 72 20 74 68 72 65 61 64 20  no other thread 
2a80: 6f 72 20 70 72 6f 63 65 73 73 20 77 69 6c 6c 20  or process will 
2a90: 62 65 20 61 62 6c 65 20 74 6f 20 77 72 69 74 65  be able to write
2aa0: 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65   to the database
2ab0: 20 6f 72 0a 64 6f 20 61 20 42 45 47 49 4e 20 49   or.do a BEGIN I
2ac0: 4d 4d 45 44 49 41 54 45 20 6f 72 20 42 45 47 49  MMEDIATE or BEGI
2ad0: 4e 20 45 58 43 4c 55 53 49 56 45 2e 20 20 4f 74  N EXCLUSIVE.  Ot
2ae0: 68 65 72 20 70 72 6f 63 65 73 73 65 73 20 63 61  her processes ca
2af0: 6e 20 63 6f 6e 74 69 6e 75 65 0a 74 6f 20 72 65  n continue.to re
2b00: 61 64 20 66 72 6f 6d 20 74 68 65 20 64 61 74 61  ad from the data
2b10: 62 61 73 65 2c 20 68 6f 77 65 76 65 72 2e 20 20  base, however.  
2b20: 41 6e 20 65 78 63 6c 75 73 69 76 65 20 74 72 61  An exclusive tra
2b30: 6e 73 61 63 74 69 6f 6e 20 63 61 75 73 65 73 0a  nsaction causes.
2b40: 5b 45 58 43 4c 55 53 49 56 45 5d 20 6c 6f 63 6b  [EXCLUSIVE] lock
2b50: 73 20 74 6f 20 62 65 20 61 63 71 75 69 72 65 64  s to be acquired
2b60: 20 6f 6e 20 61 6c 6c 20 64 61 74 61 62 61 73 65   on all database
2b70: 73 2e 20 20 41 66 74 65 72 20 61 20 42 45 47 49  s.  After a BEGI
2b80: 4e 0a 45 58 43 4c 55 53 49 56 45 2c 20 79 6f 75  N.EXCLUSIVE, you
2b90: 20 61 72 65 20 67 75 61 72 61 6e 74 65 65 64 20   are guaranteed 
2ba0: 74 68 61 74 20 6e 6f 20 6f 74 68 65 72 20 74 68  that no other th
2bb0: 72 65 61 64 20 6f 72 20 70 72 6f 63 65 73 73 20  read or process 
2bc0: 77 69 6c 6c 0a 62 65 20 61 62 6c 65 20 74 6f 20  will.be able to 
2bd0: 72 65 61 64 20 6f 72 20 77 72 69 74 65 20 74 68  read or write th
2be0: 65 20 64 61 74 61 62 61 73 65 20 75 6e 74 69 6c  e database until
2bf0: 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e   the transaction
2c00: 20 69 73 0a 63 6f 6d 70 6c 65 74 65 2e 0a 3c 2f   is.complete..</
2c10: 70 3e 0a 0a 3c 70 3e 0a 41 6e 20 69 6d 70 6c 69  p>..<p>.An impli
2c20: 63 69 74 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  cit transaction 
2c30: 28 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 74  (a transaction t
2c40: 68 61 74 20 69 73 20 73 74 61 72 74 65 64 20 61  hat is started a
2c50: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2c 0a 6e 6f  utomatically,.no
2c60: 74 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  t a transaction 
2c70: 73 74 61 72 74 65 64 20 62 79 20 42 45 47 49 4e  started by BEGIN
2c80: 29 20 69 73 20 63 6f 6d 6d 69 74 74 65 64 20 61  ) is committed a
2c90: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 77 68 65  utomatically whe
2ca0: 6e 0a 74 68 65 20 6c 61 73 74 20 61 63 74 69 76  n.the last activ
2cb0: 65 20 73 74 61 74 65 6d 65 6e 74 20 66 69 6e 69  e statement fini
2cc0: 73 68 65 73 2e 20 20 41 20 73 74 61 74 65 6d 65  shes.  A stateme
2cd0: 6e 74 20 66 69 6e 69 73 68 65 73 20 77 68 65 6e  nt finishes when
2ce0: 20 69 74 73 0a 70 72 65 70 61 72 65 64 20 73 74   its.prepared st
2cf0: 61 74 65 6d 65 6e 74 20 69 73 20 5b 73 71 6c 69  atement is [sqli
2d00: 74 65 33 5f 72 65 73 65 74 28 29 20 7c 20 72 65  te3_reset() | re
2d10: 73 65 74 5d 20 6f 72 0a 5b 73 71 6c 69 74 65 33  set] or.[sqlite3
2d20: 5f 66 69 6e 61 6c 69 7a 65 28 29 20 7c 20 66 69  _finalize() | fi
2d30: 6e 61 6c 69 7a 65 64 5d 2e 20 20 41 6e 20 6f 70  nalized].  An op
2d40: 65 6e 20 5b 73 71 6c 69 74 65 33 5f 62 6c 6f 62  en [sqlite3_blob
2d50: 5d 20 75 73 65 64 20 66 6f 72 0a 69 6e 63 72 65  ] used for.incre
2d60: 6d 65 6e 74 61 6c 20 42 4c 4f 42 20 49 2f 4f 20  mental BLOB I/O 
2d70: 63 6f 75 6e 74 73 20 61 73 20 61 6e 20 75 6e 66  counts as an unf
2d80: 69 6e 69 73 68 65 64 20 73 74 61 74 65 6d 65 6e  inished statemen
2d90: 74 2e 20 20 54 68 65 20 5b 73 71 6c 69 74 65 33  t.  The [sqlite3
2da0: 5f 62 6c 6f 62 5d 0a 66 69 6e 69 73 68 65 73 20  _blob].finishes 
2db0: 77 68 65 6e 20 69 74 20 69 73 20 5b 73 71 6c 69  when it is [sqli
2dc0: 74 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73 65 28 29  te3_blob_close()
2dd0: 20 7c 20 63 6c 6f 73 65 64 5d 2e 0a 3c 2f 70 3e   | closed]..</p>
2de0: 0a 0a 3c 70 3e 0a 54 68 65 20 65 78 70 6c 69 63  ..<p>.The explic
2df0: 69 74 20 43 4f 4d 4d 49 54 20 63 6f 6d 6d 61 6e  it COMMIT comman
2e00: 64 20 72 75 6e 73 20 69 6d 6d 65 64 69 61 74 65  d runs immediate
2e10: 6c 79 2c 20 65 76 65 6e 20 69 66 20 74 68 65 72  ly, even if ther
2e20: 65 20 61 72 65 0a 70 65 6e 64 69 6e 67 20 5b 53  e are.pending [S
2e30: 45 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e 74  ELECT] statement
2e40: 73 2e 20 20 48 6f 77 65 76 65 72 2c 20 69 66 20  s.  However, if 
2e50: 74 68 65 72 65 20 61 72 65 20 70 65 6e 64 69 6e  there are pendin
2e60: 67 0a 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f  g.write operatio
2e70: 6e 73 2c 20 74 68 65 20 43 4f 4d 4d 49 54 20 63  ns, the COMMIT c
2e80: 6f 6d 6d 61 6e 64 0a 77 69 6c 6c 20 66 61 69 6c  ommand.will fail
2e90: 20 77 69 74 68 20 61 20 65 72 72 6f 72 20 63 6f   with a error co
2ea0: 64 65 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d  de [SQLITE_BUSY]
2eb0: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 41 6e 20 61  ..</p>..<p>.An a
2ec0: 74 74 65 6d 70 74 20 74 6f 20 65 78 65 63 75 74  ttempt to execut
2ed0: 65 20 43 4f 4d 4d 49 54 20 6d 69 67 68 74 20 61  e COMMIT might a
2ee0: 6c 73 6f 20 72 65 73 75 6c 74 20 69 6e 20 61 6e  lso result in an
2ef0: 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 20 72   [SQLITE_BUSY] r
2f00: 65 74 75 72 6e 20 63 6f 64 65 0a 69 66 20 61 6e  eturn code.if an
2f10: 20 61 6e 6f 74 68 65 72 20 74 68 72 65 61 64 20   another thread 
2f20: 6f 72 20 70 72 6f 63 65 73 73 20 68 61 73 20 61  or process has a
2f30: 20 5b 73 68 61 72 65 64 20 6c 6f 63 6b 5d 20 6f   [shared lock] o
2f40: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 0a 74  n the database.t
2f50: 68 61 74 20 70 72 65 76 65 6e 74 65 64 20 74 68  hat prevented th
2f60: 65 20 64 61 74 61 62 61 73 65 20 66 72 6f 6d 20  e database from 
2f70: 62 65 69 6e 67 20 75 70 64 61 74 65 64 2e 20 20  being updated.  
2f80: 57 68 65 6e 20 43 4f 4d 4d 49 54 20 66 61 69 6c  When COMMIT fail
2f90: 73 20 69 6e 20 74 68 69 73 0a 77 61 79 2c 20 74  s in this.way, t
2fa0: 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 72  he transaction r
2fb0: 65 6d 61 69 6e 73 20 61 63 74 69 76 65 20 61 6e  emains active an
2fc0: 64 20 74 68 65 20 43 4f 4d 4d 49 54 20 63 61 6e  d the COMMIT can
2fd0: 20 62 65 20 72 65 74 72 69 65 64 20 6c 61 74 65   be retried late
2fe0: 72 0a 61 66 74 65 72 20 74 68 65 20 72 65 61 64  r.after the read
2ff0: 65 72 20 68 61 73 20 68 61 64 20 61 20 63 68 61  er has had a cha
3000: 6e 63 65 20 74 6f 20 63 6c 65 61 72 2e 0a 3c 2f  nce to clear..</
3010: 70 3e 0a 0a 3c 70 3e 0a 54 68 65 20 52 4f 4c 4c  p>..<p>.The ROLL
3020: 42 41 43 4b 20 77 69 6c 6c 20 66 61 69 6c 20 77  BACK will fail w
3030: 69 74 68 20 61 6e 20 65 72 72 6f 72 20 63 6f 64  ith an error cod
3040: 65 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 20  e [SQLITE_BUSY] 
3050: 69 66 20 74 68 65 72 65 0a 61 72 65 20 61 6e 79  if there.are any
3060: 20 70 65 6e 64 69 6e 67 20 71 75 65 72 69 65 73   pending queries
3070: 2e 20 20 42 6f 74 68 20 72 65 61 64 2d 6f 6e 6c  .  Both read-onl
3080: 79 20 61 6e 64 20 72 65 61 64 2f 77 72 69 74 65  y and read/write
3090: 20 71 75 65 72 69 65 73 20 77 69 6c 6c 0a 63 61   queries will.ca
30a0: 75 73 65 20 61 20 52 4f 4c 4c 42 41 43 4b 20 74  use a ROLLBACK t
30b0: 6f 20 66 61 69 6c 2e 20 20 41 20 52 4f 4c 4c 42  o fail.  A ROLLB
30c0: 41 43 4b 20 6d 75 73 74 20 66 61 69 6c 20 69 66  ACK must fail if
30d0: 20 74 68 65 72 65 20 61 72 65 20 70 65 6e 64 69   there are pendi
30e0: 6e 67 0a 72 65 61 64 20 6f 70 65 72 61 74 69 6f  ng.read operatio
30f0: 6e 73 20 28 75 6e 6c 69 6b 65 20 43 4f 4d 4d 49  ns (unlike COMMI
3100: 54 20 77 68 69 63 68 20 63 61 6e 20 73 75 63 63  T which can succ
3110: 65 65 64 29 20 62 65 63 61 75 73 65 20 62 61 64  eed) because bad
3120: 20 74 68 69 6e 67 73 0a 77 69 6c 6c 20 68 61 70   things.will hap
3130: 70 65 6e 20 69 66 20 6d 65 6d 6f 72 79 20 69 6d  pen if memory im
3140: 61 67 65 20 6f 66 20 74 68 65 20 64 61 74 61 62  age of the datab
3150: 61 73 65 20 69 73 20 63 68 61 6e 67 65 64 20 6f  ase is changed o
3160: 75 74 20 66 72 6f 6d 20 75 6e 64 65 72 0a 61 6e  ut from under.an
3170: 20 61 63 74 69 76 65 20 71 75 65 72 79 2e 0a 3c   active query..<
3180: 2f 70 3e 0a 0a 3c 68 33 3e 52 65 73 70 6f 6e 73  /p>..<h3>Respons
3190: 65 20 54 6f 20 45 72 72 6f 72 73 20 57 69 74 68  e To Errors With
31a0: 69 6e 20 41 20 54 72 61 6e 73 61 63 74 69 6f 6e  in A Transaction
31b0: 3c 2f 68 33 3e 0a 0a 3c 70 3e 49 66 20 63 65 72  </h3>..<p>If cer
31c0: 74 61 69 6e 20 6b 69 6e 64 73 20 6f 66 20 65 72  tain kinds of er
31d0: 72 6f 72 73 20 6f 63 63 75 72 20 77 69 74 68 69  rors occur withi
31e0: 6e 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c  n a transaction,
31f0: 20 74 68 65 0a 74 72 61 6e 73 61 63 74 69 6f 6e   the.transaction
3200: 20 6d 61 79 20 6f 72 20 6d 61 79 20 6e 6f 74 20   may or may not 
3210: 62 65 20 72 6f 6c 6c 65 64 20 62 61 63 6b 20 61  be rolled back a
3220: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 20 20 54  utomatically.  T
3230: 68 65 0a 65 72 72 6f 72 73 20 74 68 61 74 20 63  he.errors that c
3240: 61 75 73 65 20 74 68 65 20 62 65 68 61 76 69 6f  ause the behavio
3250: 72 20 69 6e 63 6c 75 64 65 3a 3c 2f 70 3e 0a 0a  r include:</p>..
3260: 3c 75 6c 3e 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54  <ul>.<li> [SQLIT
3270: 45 5f 46 55 4c 4c 5d 3a 20 64 61 74 61 62 61 73  E_FULL]: databas
3280: 65 20 6f 72 20 64 69 73 6b 20 66 75 6c 6c 0a 3c  e or disk full.<
3290: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 49 4f 45 52  li> [SQLITE_IOER
32a0: 52 5d 3a 20 64 69 73 6b 20 49 2f 4f 20 65 72 72  R]: disk I/O err
32b0: 6f 72 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  or.<li> [SQLITE_
32c0: 42 55 53 59 5d 3a 20 64 61 74 61 62 61 73 65 20  BUSY]: database 
32d0: 69 6e 20 75 73 65 20 62 79 20 61 6e 6f 74 68 65  in use by anothe
32e0: 72 20 70 72 6f 63 65 73 73 0a 3c 6c 69 3e 20 5b  r process.<li> [
32f0: 53 51 4c 49 54 45 5f 4e 4f 4d 45 4d 5d 3a 20 6f  SQLITE_NOMEM]: o
3300: 75 74 20 6f 72 20 6d 65 6d 6f 72 79 0a 3c 6c 69  ut or memory.<li
3310: 3e 20 5b 53 51 4c 49 54 45 5f 49 4e 54 45 52 52  > [SQLITE_INTERR
3320: 55 50 54 5d 3a 20 70 72 6f 63 65 73 73 69 6e 67  UPT]: processing
3330: 20 5b 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72   [sqlite3_interr
3340: 75 70 74 7c 69 6e 74 65 72 72 75 70 74 65 64 5d  upt|interrupted]
3350: 0a 20 20 20 20 20 62 79 20 61 70 70 6c 69 63 61  .     by applica
3360: 74 69 6f 6e 20 72 65 71 75 65 73 74 0a 3c 2f 75  tion request.</u
3370: 6c 3e 0a 0a 3c 70 3e 0a 46 6f 72 20 61 6c 6c 20  l>..<p>.For all 
3380: 6f 66 20 74 68 65 73 65 20 65 72 72 6f 72 73 2c  of these errors,
3390: 20 53 51 4c 69 74 65 20 61 74 74 65 6d 70 74 73   SQLite attempts
33a0: 20 74 6f 20 75 6e 64 6f 20 6a 75 73 74 20 74 68   to undo just th
33b0: 65 20 6f 6e 65 20 73 74 61 74 65 6d 65 6e 74 0a  e one statement.
33c0: 69 74 20 77 61 73 20 77 6f 72 6b 69 6e 67 20 6f  it was working o
33d0: 6e 20 61 6e 64 20 6c 65 61 76 65 20 63 68 61 6e  n and leave chan
33e0: 67 65 73 20 66 72 6f 6d 20 70 72 69 6f 72 20 73  ges from prior s
33f0: 74 61 74 65 6d 65 6e 74 73 20 77 69 74 68 69 6e  tatements within
3400: 20 74 68 65 0a 73 61 6d 65 20 74 72 61 6e 73 61   the.same transa
3410: 63 74 69 6f 6e 20 69 6e 74 61 63 74 20 61 6e 64  ction intact and
3420: 20 63 6f 6e 74 69 6e 75 65 20 77 69 74 68 20 74   continue with t
3430: 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 20  he transaction. 
3440: 20 48 6f 77 65 76 65 72 2c 20 0a 64 65 70 65 6e   However, .depen
3450: 64 69 6e 67 20 6f 6e 20 74 68 65 20 73 74 61 74  ding on the stat
3460: 65 6d 65 6e 74 20 62 65 69 6e 67 20 65 76 61 6c  ement being eval
3470: 75 61 74 65 64 20 61 6e 64 20 74 68 65 20 70 6f  uated and the po
3480: 69 6e 74 20 61 74 20 77 68 69 63 68 20 74 68 65  int at which the
3490: 0a 65 72 72 6f 72 20 6f 63 63 75 72 73 2c 20 69  .error occurs, i
34a0: 74 20 6d 69 67 68 74 20 62 65 20 6e 65 63 65 73  t might be neces
34b0: 73 61 72 79 20 66 6f 72 20 53 51 4c 69 74 65 20  sary for SQLite 
34c0: 74 6f 20 72 6f 6c 6c 62 61 63 6b 20 61 6e 64 0a  to rollback and.
34d0: 63 61 6e 63 65 6c 20 74 68 65 20 74 72 61 6e 73  cancel the trans
34e0: 61 63 74 69 6f 6e 2e 20 20 41 6e 20 61 70 70 6c  action.  An appl
34f0: 69 63 61 74 69 6f 6e 20 63 61 6e 20 74 65 6c 6c  ication can tell
3500: 20 77 68 69 63 68 0a 63 6f 75 72 73 65 20 6f 66   which.course of
3510: 20 61 63 74 69 6f 6e 20 53 51 4c 69 74 65 20 74   action SQLite t
3520: 6f 6f 6b 20 62 79 20 75 73 69 6e 67 20 74 68 65  ook by using the
3530: 0a 5b 73 71 6c 69 74 65 33 5f 67 65 74 5f 61 75  .[sqlite3_get_au
3540: 74 6f 63 6f 6d 6d 69 74 28 29 5d 20 43 2d 6c 61  tocommit()] C-la
3550: 6e 67 75 61 67 65 20 69 6e 74 65 72 66 61 63 65  nguage interface
3560: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 74 20 69 73 20  .</p>..<p>It is 
3570: 72 65 63 6f 6d 6d 65 6e 64 65 64 20 74 68 61 74  recommended that
3580: 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 72 65   applications re
3590: 73 70 6f 6e 64 20 74 6f 20 74 68 65 20 65 72 72  spond to the err
35a0: 6f 72 73 0a 6c 69 73 74 65 64 20 61 62 6f 76 65  ors.listed above
35b0: 20 62 79 20 65 78 70 6c 69 63 69 74 6c 79 20 69   by explicitly i
35c0: 73 73 75 69 6e 67 20 61 20 52 4f 4c 4c 42 41 43  ssuing a ROLLBAC
35d0: 4b 20 63 6f 6d 6d 61 6e 64 2e 20 20 49 66 20 74  K command.  If t
35e0: 68 65 20 0a 74 72 61 6e 73 61 63 74 69 6f 6e 20  he .transaction 
35f0: 68 61 73 20 61 6c 72 65 61 64 79 20 62 65 65 6e  has already been
3600: 20 72 6f 6c 6c 65 64 20 62 61 63 6b 20 61 75 74   rolled back aut
3610: 6f 6d 61 74 69 63 61 6c 6c 79 0a 62 79 20 74 68  omatically.by th
3620: 65 20 65 72 72 6f 72 20 72 65 73 70 6f 6e 73 65  e error response
3630: 2c 20 74 68 65 6e 20 74 68 65 20 52 4f 4c 4c 42  , then the ROLLB
3640: 41 43 4b 20 63 6f 6d 6d 61 6e 64 20 77 69 6c 6c  ACK command will
3650: 20 66 61 69 6c 20 77 69 74 68 20 61 6e 0a 65 72   fail with an.er
3660: 72 6f 72 2c 20 62 75 74 20 6e 6f 20 68 61 72 6d  ror, but no harm
3670: 20 69 73 20 63 61 75 73 65 64 20 62 79 20 74 68   is caused by th
3680: 69 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 46 75 74 75  is.</p>..<p>Futu
3690: 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53  re versions of S
36a0: 51 4c 69 74 65 20 6d 61 79 20 65 78 74 65 6e 64  QLite may extend
36b0: 20 74 68 65 20 6c 69 73 74 20 6f 66 20 65 72 72   the list of err
36c0: 6f 72 73 20 77 68 69 63 68 0a 6d 69 67 68 74 20  ors which.might 
36d0: 63 61 75 73 65 20 61 75 74 6f 6d 61 74 69 63 20  cause automatic 
36e0: 74 72 61 6e 73 61 63 74 69 6f 6e 20 72 6f 6c 6c  transaction roll
36f0: 62 61 63 6b 2e 20 20 46 75 74 75 72 65 20 76 65  back.  Future ve
3700: 72 73 69 6f 6e 73 20 6f 66 0a 53 51 4c 69 74 65  rsions of.SQLite
3710: 20 6d 69 67 68 74 20 63 68 61 6e 67 65 20 74 68   might change th
3720: 65 20 65 72 72 6f 72 20 72 65 73 70 6f 6e 73 65  e error response
3730: 2e 20 20 49 6e 20 70 61 72 74 69 63 75 6c 61 72  .  In particular
3740: 2c 20 77 65 20 6d 61 79 0a 63 68 6f 6f 73 65 20  , we may.choose 
3750: 74 6f 20 73 69 6d 70 6c 69 66 79 20 74 68 65 20  to simplify the 
3760: 69 6e 74 65 72 66 61 63 65 20 69 6e 20 66 75 74  interface in fut
3770: 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 20  ure versions of 
3780: 53 51 4c 69 74 65 20 62 79 0a 63 61 75 73 69 6e  SQLite by.causin
3790: 67 20 74 68 65 20 65 72 72 6f 72 73 20 61 62 6f  g the errors abo
37a0: 76 65 20 74 6f 20 66 6f 72 63 65 20 61 6e 20 75  ve to force an u
37b0: 6e 63 6f 6e 64 69 74 69 6f 6e 61 6c 20 72 6f 6c  nconditional rol
37c0: 6c 62 61 63 6b 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c  lback.</p>..<tcl
37d0: 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  >.##############
37e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
37f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3800: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3810: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3820: 23 0a 53 65 63 74 69 6f 6e 20 63 6f 6d 6d 65 6e  #.Section commen
3830: 74 20 63 6f 6d 6d 65 6e 74 20 7b 63 6f 6d 6d 65  t comment {comme
3840: 6e 74 20 63 6f 6d 6d 65 6e 74 73 7d 0a 0a 42 75  nt comments}..Bu
3850: 62 62 6c 65 44 69 61 67 72 61 6d 20 63 6f 6d 6d  bbleDiagram comm
3860: 65 6e 74 2d 73 79 6e 74 61 78 0a 3c 2f 74 63 6c  ent-syntax.</tcl
3870: 3e 0a 0a 3c 70 3e 43 6f 6d 6d 65 6e 74 73 20 61  >..<p>Comments a
3880: 72 65 6e 27 74 20 53 51 4c 20 63 6f 6d 6d 61 6e  ren't SQL comman
3890: 64 73 2c 20 62 75 74 20 63 61 6e 20 6f 63 63 75  ds, but can occu
38a0: 72 20 77 69 74 68 69 6e 20 74 68 65 20 74 65 78  r within the tex
38b0: 74 20 6f 66 0a 53 51 4c 20 71 75 65 72 69 65 73  t of.SQL queries
38c0: 20 70 61 73 73 65 64 20 74 6f 20 5b 73 71 6c 69   passed to [sqli
38d0: 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29  te3_prepare_v2()
38e0: 5d 20 61 6e 64 20 72 65 6c 61 74 65 64 20 69 6e  ] and related in
38f0: 74 65 72 66 61 63 65 73 2e 2e 0a 43 6f 6d 6d 65  terfaces...Comme
3900: 6e 74 73 20 61 72 65 20 0a 74 72 65 61 74 65 64  nts are .treated
3910: 20 61 73 20 77 68 69 74 65 73 70 61 63 65 20 62   as whitespace b
3920: 79 20 74 68 65 20 70 61 72 73 65 72 2e 20 20 54  y the parser.  T
3930: 68 65 79 20 63 61 6e 20 62 65 67 69 6e 20 61 6e  hey can begin an
3940: 79 77 68 65 72 65 20 77 68 69 74 65 73 70 61 63  ywhere whitespac
3950: 65 20 0a 63 61 6e 20 62 65 20 66 6f 75 6e 64 2c  e .can be found,
3960: 20 69 6e 63 6c 75 64 69 6e 67 20 69 6e 73 69 64   including insid
3970: 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74 68  e expressions th
3980: 61 74 20 73 70 61 6e 20 6d 75 6c 74 69 70 6c 65  at span multiple
3990: 20 6c 69 6e 65 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70   lines..</p>..<p
39a0: 3e 20 53 51 4c 20 63 6f 6d 6d 65 6e 74 73 20 62  > SQL comments b
39b0: 65 67 69 6e 20 77 69 74 68 20 74 77 6f 20 63 6f  egin with two co
39c0: 6e 73 65 63 75 74 69 76 65 20 22 2d 22 20 63 68  nsecutive "-" ch
39d0: 61 72 61 63 74 65 72 73 20 28 41 53 43 49 49 20  aracters (ASCII 
39e0: 30 78 32 64 29 0a 61 6e 64 20 65 78 74 65 6e 64  0x2d).and extend
39f0: 20 75 70 20 74 6f 20 61 6e 64 20 69 6e 63 6c 75   up to and inclu
3a00: 64 69 6e 67 20 74 68 65 20 6e 65 78 74 20 6e 65  ding the next ne
3a10: 77 6c 69 6e 65 20 63 68 61 72 61 63 74 65 72 20  wline character 
3a20: 28 41 53 43 49 49 20 30 78 30 61 29 0a 6f 72 20  (ASCII 0x0a).or 
3a30: 75 6e 74 69 6c 20 74 68 65 20 65 6e 64 20 6f 66  until the end of
3a40: 20 69 6e 70 75 74 2c 20 77 68 69 63 68 65 76 65   input, whicheve
3a50: 72 20 63 6f 6d 65 73 20 66 69 72 73 74 2e 3c 2f  r comes first.</
3a60: 70 3e 0a 0a 3c 70 3e 20 43 20 63 6f 6d 6d 65 6e  p>..<p> C commen
3a70: 74 73 20 63 61 6e 20 73 70 61 6e 20 61 6e 79 20  ts can span any 
3a80: 6e 75 6d 62 65 72 20 6f 66 20 6c 69 6e 65 73 2e  number of lines.
3a90: 20 20 43 2d 73 74 79 6c 65 20 63 6f 6d 6d 65 6e    C-style commen
3aa0: 74 73 20 62 65 67 69 6e 0a 77 69 74 68 20 22 2f  ts begin.with "/
3ab0: 2a 22 20 61 6e 64 20 65 78 74 65 6e 64 20 75 70  *" and extend up
3ac0: 20 74 6f 20 61 6e 64 20 69 6e 63 6c 75 64 69 6e   to and includin
3ad0: 67 20 74 68 65 20 6e 65 78 74 20 22 2a 2f 22 20  g the next "*/" 
3ae0: 63 68 61 72 61 63 74 65 72 20 70 61 69 72 0a 6f  character pair.o
3af0: 72 20 75 6e 74 69 6c 20 74 68 65 20 65 6e 64 20  r until the end 
3b00: 6f 66 20 69 6e 70 75 74 2c 20 77 68 69 63 68 65  of input, whiche
3b10: 76 65 72 20 63 6f 6d 65 73 20 66 69 72 73 74 2e  ver comes first.
3b20: 20 20 43 2d 73 74 79 6c 65 20 63 6f 6d 6d 65 6e    C-style commen
3b30: 74 73 0a 63 61 6e 20 73 70 61 6e 20 6d 75 6c 74  ts.can span mult
3b40: 69 70 6c 65 20 6c 69 6e 65 73 2e 20 3c 2f 70 3e  iple lines. </p>
3b50: 0a 0a 3c 70 3e 20 43 6f 6d 6d 65 6e 74 73 20 63  ..<p> Comments c
3b60: 61 6e 20 61 70 70 65 61 72 20 61 6e 79 77 68 65  an appear anywhe
3b70: 72 65 20 77 68 69 74 65 73 70 61 63 65 20 63 61  re whitespace ca
3b80: 6e 20 6f 63 63 75 72 2c 0a 69 6e 63 6c 75 64 69  n occur,.includi
3b90: 6e 67 20 69 6e 73 69 64 65 20 65 78 70 72 65 73  ng inside expres
3ba0: 73 69 6f 6e 73 20 61 6e 64 20 69 6e 20 74 68 65  sions and in the
3bb0: 20 6d 69 64 64 6c 65 20 6f 66 20 6f 74 68 65 72   middle of other
3bc0: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e   SQL statements.
3bd0: 0a 43 6f 6d 6d 65 6e 74 73 20 64 6f 20 6e 6f 74  .Comments do not
3be0: 20 6e 65 73 74 2e 0a 3c 2f 70 3e 0a 0a 0a 3c 74   nest..</p>...<t
3bf0: 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23  cl>.############
3c00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3c10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3c20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3c30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3c40: 23 23 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41  ##.Section {CREA
3c50: 54 45 20 49 4e 44 45 58 7d 20 63 72 65 61 74 65  TE INDEX} create
3c60: 69 6e 64 65 78 20 7b 7b 43 52 45 41 54 45 20 49  index {{CREATE I
3c70: 4e 44 45 58 7d 7d 0a 0a 42 75 62 62 6c 65 44 69  NDEX}}..BubbleDi
3c80: 61 67 72 61 6d 20 63 72 65 61 74 65 2d 69 6e 64  agram create-ind
3c90: 65 78 2d 73 74 6d 74 20 31 0a 42 75 62 62 6c 65  ex-stmt 1.Bubble
3ca0: 44 69 61 67 72 61 6d 20 69 6e 64 65 78 65 64 2d  Diagram indexed-
3cb0: 63 6f 6c 75 6d 6e 0a 3c 2f 74 63 6c 3e 0a 0a 3c  column.</tcl>..<
3cc0: 70 3e 54 68 65 20 43 52 45 41 54 45 20 49 4e 44  p>The CREATE IND
3cd0: 45 58 20 63 6f 6d 6d 61 6e 64 20 63 6f 6e 73 69  EX command consi
3ce0: 73 74 73 20 6f 66 20 74 68 65 20 6b 65 79 77 6f  sts of the keywo
3cf0: 72 64 73 20 22 43 52 45 41 54 45 20 49 4e 44 45  rds "CREATE INDE
3d00: 58 22 20 66 6f 6c 6c 6f 77 65 64 0a 62 79 20 74  X" followed.by t
3d10: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6e  he name of the n
3d20: 65 77 20 69 6e 64 65 78 2c 20 74 68 65 20 6b 65  ew index, the ke
3d30: 79 77 6f 72 64 20 22 4f 4e 22 2c 20 74 68 65 20  yword "ON", the 
3d40: 6e 61 6d 65 20 6f 66 20 61 20 70 72 65 76 69 6f  name of a previo
3d50: 75 73 6c 79 0a 63 72 65 61 74 65 64 20 74 61 62  usly.created tab
3d60: 6c 65 20 74 68 61 74 20 69 73 20 74 6f 20 62 65  le that is to be
3d70: 20 69 6e 64 65 78 65 64 2c 20 61 6e 64 20 61 20   indexed, and a 
3d80: 70 61 72 65 6e 74 68 65 73 69 7a 65 64 20 6c 69  parenthesized li
3d90: 73 74 20 6f 66 20 6e 61 6d 65 73 20 6f 66 0a 63  st of names of.c
3da0: 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 74 61  olumns in the ta
3db0: 62 6c 65 20 74 68 61 74 20 61 72 65 20 75 73 65  ble that are use
3dc0: 64 20 66 6f 72 20 74 68 65 20 69 6e 64 65 78 20  d for the index 
3dd0: 6b 65 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 45 61 63  key.</p>..<p>Eac
3de0: 68 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 63 61  h column name ca
3df0: 6e 20 62 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79  n be followed by
3e00: 20 6f 6e 65 20 6f 66 20 74 68 65 20 22 41 53 43   one of the "ASC
3e10: 22 20 6f 72 20 22 44 45 53 43 22 20 6b 65 79 77  " or "DESC" keyw
3e20: 6f 72 64 73 0a 74 6f 20 69 6e 64 69 63 61 74 65  ords.to indicate
3e30: 20 73 6f 72 74 20 6f 72 64 65 72 2e 20 20 54 68   sort order.  Th
3e40: 65 20 73 6f 72 74 20 6f 72 64 65 72 20 6d 61 79  e sort order may
3e50: 20 6f 72 20 6d 61 79 20 6e 6f 74 20 62 65 20 69   or may not be i
3e60: 67 6e 6f 72 65 64 20 64 65 70 65 6e 64 69 6e 67  gnored depending
3e70: 0a 6f 6e 20 74 68 65 20 64 61 74 61 62 61 73 65  .on the database
3e80: 20 66 69 6c 65 20 66 6f 72 6d 61 74 2e 20 20 54   file format.  T
3e90: 68 65 20 22 6c 65 67 61 63 79 22 20 66 69 6c 65  he "legacy" file
3ea0: 20 66 6f 72 6d 61 74 20 69 67 6e 6f 72 65 73 20   format ignores 
3eb0: 69 6e 64 65 78 0a 73 6f 72 74 20 6f 72 64 65 72  index.sort order
3ec0: 2e 20 20 54 68 65 20 64 65 73 63 65 6e 64 69 6e  .  The descendin
3ed0: 67 20 69 6e 64 65 78 20 66 69 6c 65 20 66 6f 72  g index file for
3ee0: 6d 61 74 20 74 61 6b 65 73 20 69 6e 64 65 78 20  mat takes index 
3ef0: 73 6f 72 74 20 6f 72 64 65 72 0a 69 6e 74 6f 20  sort order.into 
3f00: 61 63 63 6f 75 6e 74 2e 20 20 4f 6e 6c 79 20 63  account.  Only c
3f10: 6f 70 69 65 73 20 6f 66 20 53 51 4c 69 74 65 20  opies of SQLite 
3f20: 6e 65 77 65 72 20 74 68 61 6e 20 5b 76 65 72 73  newer than [vers
3f30: 69 6f 6e 20 33 2e 33 2e 30 5d 20 0a 28 72 65 6c  ion 3.3.0] .(rel
3f40: 65 61 73 65 64 20 6f 6e 20 32 30 30 36 2d 30 31  eased on 2006-01
3f50: 2d 31 30 29 20 61 72 65 20 61 62 6c 65 20 74 6f  -10) are able to
3f60: 20 75 6e 64 65 72 73 74 61 6e 64 20 74 68 65 20   understand the 
3f70: 6e 65 77 65 72 20 64 65 73 63 65 6e 64 69 6e 67  newer descending
3f80: 0a 69 6e 64 65 78 20 66 69 6c 65 20 66 6f 72 6d  .index file form
3f90: 61 74 20 61 6e 64 20 73 6f 20 66 6f 72 20 63 6f  at and so for co
3fa0: 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68  mpatibility with
3fb0: 20 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e 73 20   older versions 
3fc0: 6f 66 0a 53 51 4c 69 74 65 2c 20 74 68 65 20 6c  of.SQLite, the l
3fd0: 65 67 61 63 79 20 66 69 6c 65 20 66 6f 72 6d 61  egacy file forma
3fe0: 74 20 69 73 20 67 65 6e 65 72 61 74 65 64 20 62  t is generated b
3ff0: 79 20 64 65 66 61 75 6c 74 2e 20 20 55 73 65 20  y default.  Use 
4000: 74 68 65 0a 5b 6c 65 67 61 63 79 5f 66 69 6c 65  the.[legacy_file
4010: 5f 66 6f 72 6d 61 74 5d 20 70 72 61 67 6d 61 20  _format] pragma 
4020: 74 6f 20 6d 6f 64 69 66 79 20 74 68 69 73 20 62  to modify this b
4030: 65 68 61 76 69 6f 72 20 61 6e 64 20 67 65 6e 65  ehavior and gene
4040: 72 61 74 65 0a 64 61 74 61 62 61 73 65 73 20 74  rate.databases t
4050: 68 61 74 20 75 73 65 20 74 68 65 20 6e 65 77 65  hat use the newe
4060: 72 20 66 69 6c 65 20 66 6f 72 6d 61 74 2e 20 20  r file format.  
4070: 46 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20  Future versions 
4080: 6f 66 20 53 51 4c 69 74 65 0a 6d 61 79 20 62 65  of SQLite.may be
4090: 67 69 6e 20 74 6f 20 67 65 6e 65 72 61 74 65 20  gin to generate 
40a0: 74 68 65 20 6e 65 77 65 72 20 66 69 6c 65 20 66  the newer file f
40b0: 6f 72 6d 61 74 20 62 79 20 64 65 66 61 75 6c 74  ormat by default
40c0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 43 4f  .</p>..<p>The CO
40d0: 4c 4c 41 54 45 20 63 6c 61 75 73 65 20 66 6f 6c  LLATE clause fol
40e0: 6c 6f 77 69 6e 67 20 65 61 63 68 20 63 6f 6c 75  lowing each colu
40f0: 6d 6e 20 6e 61 6d 65 20 64 65 66 69 6e 65 73 20  mn name defines 
4100: 61 20 63 6f 6c 6c 61 74 69 6e 67 0a 73 65 71 75  a collating.sequ
4110: 65 6e 63 65 20 75 73 65 64 20 66 6f 72 20 74 65  ence used for te
4120: 78 74 20 65 6e 74 72 69 65 73 20 69 6e 20 74 68  xt entries in th
4130: 61 74 20 63 6f 6c 75 6d 6e 2e 20 20 54 68 65 20  at column.  The 
4140: 64 65 66 61 75 6c 74 20 63 6f 6c 6c 61 74 69 6e  default collatin
4150: 67 0a 73 65 71 75 65 6e 63 65 20 69 73 20 74 68  g.sequence is th
4160: 65 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75  e collating sequ
4170: 65 6e 63 65 20 64 65 66 69 6e 65 64 20 66 6f 72  ence defined for
4180: 20 74 68 61 74 20 63 6f 6c 75 6d 6e 20 69 6e 20   that column in 
4190: 74 68 65 0a 5b 43 52 45 41 54 45 20 54 41 42 4c  the.[CREATE TABL
41a0: 45 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 4f  E] statement.  O
41b0: 72 20 69 66 20 6e 6f 20 63 6f 6c 6c 61 74 69 6e  r if no collatin
41c0: 67 20 73 65 71 75 65 6e 63 65 20 69 73 20 6f 74  g sequence is ot
41d0: 68 65 72 77 69 73 65 20 64 65 66 69 6e 65 64 2c  herwise defined,
41e0: 0a 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 42 49  .the built-in BI
41f0: 4e 41 52 59 20 63 6f 6c 6c 61 74 69 6e 67 20 73  NARY collating s
4200: 65 71 75 65 6e 63 65 20 69 73 20 75 73 65 64 2e  equence is used.
4210: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 61  </p>..<p>There a
4220: 72 65 20 6e 6f 20 61 72 62 69 74 72 61 72 79 20  re no arbitrary 
4230: 6c 69 6d 69 74 73 20 6f 6e 20 74 68 65 20 6e 75  limits on the nu
4240: 6d 62 65 72 20 6f 66 20 69 6e 64 69 63 65 73 20  mber of indices 
4250: 74 68 61 74 20 63 61 6e 20 62 65 0a 61 74 74 61  that can be.atta
4260: 63 68 65 64 20 74 6f 20 61 20 73 69 6e 67 6c 65  ched to a single
4270: 20 74 61 62 6c 65 2e 20 20 54 68 65 20 6e 75 6d   table.  The num
4280: 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69  ber of columns i
4290: 6e 20 61 6e 20 69 6e 64 65 78 20 69 73 20 0a 6c  n an index is .l
42a0: 69 6d 69 74 65 64 20 74 6f 20 5b 53 51 4c 49 54  imited to [SQLIT
42b0: 45 5f 4d 41 58 5f 43 4f 4c 55 4d 4e 5d 2e 3c 2f  E_MAX_COLUMN].</
42c0: 70 3e 0a 0a 3c 70 3e 49 66 20 74 68 65 20 55 4e  p>..<p>If the UN
42d0: 49 51 55 45 20 6b 65 79 77 6f 72 64 20 61 70 70  IQUE keyword app
42e0: 65 61 72 73 20 62 65 74 77 65 65 6e 20 43 52 45  ears between CRE
42f0: 41 54 45 20 61 6e 64 20 49 4e 44 45 58 20 74 68  ATE and INDEX th
4300: 65 6e 20 64 75 70 6c 69 63 61 74 65 0a 69 6e 64  en duplicate.ind
4310: 65 78 20 65 6e 74 72 69 65 73 20 61 72 65 20 6e  ex entries are n
4320: 6f 74 20 61 6c 6c 6f 77 65 64 2e 20 20 41 6e 79  ot allowed.  Any
4330: 20 61 74 74 65 6d 70 74 20 74 6f 20 69 6e 73 65   attempt to inse
4340: 72 74 20 61 20 64 75 70 6c 69 63 61 74 65 20 65  rt a duplicate e
4350: 6e 74 72 79 0a 77 69 6c 6c 20 72 65 73 75 6c 74  ntry.will result
4360: 20 69 6e 20 61 6e 20 65 72 72 6f 72 2e 20 20 46   in an error.  F
4370: 6f 72 20 74 68 65 20 70 75 72 70 6f 73 65 73 20  or the purposes 
4380: 6f 66 20 75 6e 69 71 75 65 20 69 6e 64 69 63 65  of unique indice
4390: 73 2c 20 61 6c 6c 20 4e 55 4c 4c 20 76 61 6c 75  s, all NULL valu
43a0: 65 73 0a 61 72 65 20 63 6f 6e 73 69 64 65 72 65  es.are considere
43b0: 64 20 74 6f 20 64 69 66 66 65 72 65 6e 74 20 66  d to different f
43c0: 72 6f 6d 20 61 6c 6c 20 6f 74 68 65 72 20 4e 55  rom all other NU
43d0: 4c 4c 20 76 61 6c 75 65 73 20 61 6e 64 20 61 72  LL values and ar
43e0: 65 20 74 68 75 73 20 75 6e 69 71 75 65 2e 3c 2f  e thus unique.</
43f0: 70 3e 0a 0a 3c 70 3e 54 68 65 20 74 65 78 74 0a  p>..<p>The text.
4400: 6f 66 20 65 61 63 68 20 43 52 45 41 54 45 20 49  of each CREATE I
4410: 4e 44 45 58 20 73 74 61 74 65 6d 65 6e 74 20 69  NDEX statement i
4420: 73 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20  s stored in the 
4430: 3c 62 3e 73 71 6c 69 74 65 5f 6d 61 73 74 65 72  <b>sqlite_master
4440: 3c 2f 62 3e 0a 6f 72 20 3c 62 3e 73 71 6c 69 74  </b>.or <b>sqlit
4450: 65 5f 74 65 6d 70 5f 6d 61 73 74 65 72 3c 2f 62  e_temp_master</b
4460: 3e 20 74 61 62 6c 65 2c 20 64 65 70 65 6e 64 69  > table, dependi
4470: 6e 67 20 6f 6e 20 77 68 65 74 68 65 72 20 74 68  ng on whether th
4480: 65 20 74 61 62 6c 65 0a 62 65 69 6e 67 20 69 6e  e table.being in
4490: 64 65 78 65 64 20 69 73 20 74 65 6d 70 6f 72 61  dexed is tempora
44a0: 72 79 2e 20 20 45 76 65 72 79 20 74 69 6d 65 20  ry.  Every time 
44b0: 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20  the database is 
44c0: 6f 70 65 6e 65 64 2c 0a 61 6c 6c 20 43 52 45 41  opened,.all CREA
44d0: 54 45 20 49 4e 44 45 58 20 73 74 61 74 65 6d 65  TE INDEX stateme
44e0: 6e 74 73 0a 61 72 65 20 72 65 61 64 20 66 72 6f  nts.are read fro
44f0: 6d 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f  m the <b>sqlite_
4500: 6d 61 73 74 65 72 3c 2f 62 3e 20 74 61 62 6c 65  master</b> table
4510: 20 61 6e 64 20 75 73 65 64 20 74 6f 20 72 65 67   and used to reg
4520: 65 6e 65 72 61 74 65 0a 53 51 4c 69 74 65 27 73  enerate.SQLite's
4530: 20 69 6e 74 65 72 6e 61 6c 20 72 65 70 72 65 73   internal repres
4540: 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20  entation of the 
4550: 69 6e 64 65 78 20 6c 61 79 6f 75 74 2e 3c 2f 70  index layout.</p
4560: 3e 0a 0a 3c 70 3e 49 66 20 74 68 65 20 6f 70 74  >..<p>If the opt
4570: 69 6f 6e 61 6c 20 49 46 20 4e 4f 54 20 45 58 49  ional IF NOT EXI
4580: 53 54 53 20 63 6c 61 75 73 65 20 69 73 20 70 72  STS clause is pr
4590: 65 73 65 6e 74 20 61 6e 64 20 61 6e 6f 74 68 65  esent and anothe
45a0: 72 20 69 6e 64 65 78 0a 77 69 74 68 20 74 68 65  r index.with the
45b0: 20 73 61 6d 65 20 6e 61 6d 65 20 61 6c 65 61 64   same name alead
45c0: 79 20 65 78 69 73 74 73 2c 20 74 68 65 6e 20 74  y exists, then t
45d0: 68 69 73 20 63 6f 6d 6d 61 6e 64 20 62 65 63 6f  his command beco
45e0: 6d 65 73 20 61 20 6e 6f 2d 6f 70 2e 3c 2f 70 3e  mes a no-op.</p>
45f0: 0a 0a 3c 70 3e 49 6e 64 65 78 65 73 20 61 72 65  ..<p>Indexes are
4600: 20 72 65 6d 6f 76 65 64 20 77 69 74 68 20 74 68   removed with th
4610: 65 20 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67 5f  e <a href="lang_
4620: 64 72 6f 70 69 6e 64 65 78 2e 68 74 6d 6c 22 3e  dropindex.html">
4630: 44 52 4f 50 20 49 4e 44 45 58 3c 2f 61 3e 20 0a  DROP INDEX</a> .
4640: 63 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 0a 0a 3c  command.</p>...<
4650: 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23  tcl>.###########
4660: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4670: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4680: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4690: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
46a0: 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45  ###.Section {CRE
46b0: 41 54 45 20 54 41 42 4c 45 7d 20 7b 63 72 65 61  ATE TABLE} {crea
46c0: 74 65 74 61 62 6c 65 7d 20 7b 7b 43 52 45 41 54  tetable} {{CREAT
46d0: 45 20 54 41 42 4c 45 7d 7d 0a 0a 42 75 62 62 6c  E TABLE}}..Bubbl
46e0: 65 44 69 61 67 72 61 6d 20 63 72 65 61 74 65 2d  eDiagram create-
46f0: 74 61 62 6c 65 2d 73 74 6d 74 20 31 0a 42 75 62  table-stmt 1.Bub
4700: 62 6c 65 44 69 61 67 72 61 6d 20 63 6f 6c 75 6d  bleDiagram colum
4710: 6e 2d 64 65 66 0a 42 75 62 62 6c 65 44 69 61 67  n-def.BubbleDiag
4720: 72 61 6d 20 74 79 70 65 2d 6e 61 6d 65 0a 42 75  ram type-name.Bu
4730: 62 62 6c 65 44 69 61 67 72 61 6d 20 63 6f 6c 75  bbleDiagram colu
4740: 6d 6e 2d 63 6f 6e 73 74 72 61 69 6e 74 0a 42 75  mn-constraint.Bu
4750: 62 62 6c 65 44 69 61 67 72 61 6d 20 74 61 62 6c  bbleDiagram tabl
4760: 65 2d 63 6f 6e 73 74 72 61 69 6e 74 0a 42 75 62  e-constraint.Bub
4770: 62 6c 65 44 69 61 67 72 61 6d 20 66 6f 72 65 69  bleDiagram forei
4780: 67 6e 2d 6b 65 79 2d 63 6c 61 75 73 65 0a 3c 2f  gn-key-clause.</
4790: 74 63 6c 3e 0a 0a 3c 70 3e 41 20 43 52 45 41 54  tcl>..<p>A CREAT
47a0: 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e  E TABLE statemen
47b0: 74 20 69 73 20 62 61 73 69 63 61 6c 6c 79 20 74  t is basically t
47c0: 68 65 20 6b 65 79 77 6f 72 64 73 20 22 43 52 45  he keywords "CRE
47d0: 41 54 45 20 54 41 42 4c 45 22 0a 66 6f 6c 6c 6f  ATE TABLE".follo
47e0: 77 65 64 20 62 79 20 74 68 65 20 6e 61 6d 65 20  wed by the name 
47f0: 6f 66 20 61 20 6e 65 77 20 74 61 62 6c 65 20 61  of a new table a
4800: 6e 64 20 61 20 70 61 72 65 6e 74 68 65 73 69 7a  nd a parenthesiz
4810: 65 64 20 6c 69 73 74 20 6f 66 20 63 6f 6c 75 6d  ed list of colum
4820: 6e 0a 64 65 66 69 6e 69 74 69 6f 6e 73 20 61 6e  n.definitions an
4830: 64 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 20 20  d constraints.  
4840: 0a 54 61 62 6c 65 73 20 6e 61 6d 65 73 20 74 68  .Tables names th
4850: 61 74 20 62 65 67 69 6e 20 77 69 74 68 20 22 3c  at begin with "<
4860: 62 3e 73 71 6c 69 74 65 5f 3c 2f 62 3e 22 20 61  b>sqlite_</b>" a
4870: 72 65 20 72 65 73 65 72 76 65 64 0a 66 6f 72 20  re reserved.for 
4880: 75 73 65 20 62 79 20 74 68 65 20 65 6e 67 69 6e  use by the engin
4890: 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 45 61 63 68 20  e.</p>..<p>Each 
48a0: 63 6f 6c 75 6d 6e 20 64 65 66 69 6e 69 74 69 6f  column definitio
48b0: 6e 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66  n is the name of
48c0: 20 74 68 65 20 63 6f 6c 75 6d 6e 20 66 6f 6c 6c   the column foll
48d0: 6f 77 65 64 20 62 79 20 74 68 65 0a 64 61 74 61  owed by the.data
48e0: 74 79 70 65 20 66 6f 72 20 74 68 61 74 20 63 6f  type for that co
48f0: 6c 75 6d 6e 2c 20 74 68 65 6e 20 6f 6e 65 20 6f  lumn, then one o
4900: 72 20 6d 6f 72 65 20 6f 70 74 69 6f 6e 61 6c 20  r more optional 
4910: 63 6f 6c 75 6d 6e 20 63 6f 6e 73 74 72 61 69 6e  column constrain
4920: 74 73 2e 0a 54 68 65 20 64 61 74 61 74 79 70 65  ts..The datatype
4930: 20 66 6f 72 20 74 68 65 20 63 6f 6c 75 6d 6e 20   for the column 
4940: 64 6f 65 73 20 6e 6f 74 20 72 65 73 74 72 69 63  does not restric
4950: 74 20 77 68 61 74 20 64 61 74 61 20 6d 61 79 20  t what data may 
4960: 62 65 20 70 75 74 0a 69 6e 20 74 68 61 74 20 63  be put.in that c
4970: 6f 6c 75 6d 6e 2e 0a 53 65 65 20 3c 61 20 68 72  olumn..See <a hr
4980: 65 66 3d 22 64 61 74 61 74 79 70 65 33 2e 68 74  ef="datatype3.ht
4990: 6d 6c 22 3e 44 61 74 61 74 79 70 65 73 20 49 6e  ml">Datatypes In
49a0: 20 53 51 4c 69 74 65 20 56 65 72 73 69 6f 6e 20   SQLite Version 
49b0: 33 3c 2f 61 3e 20 66 6f 72 0a 61 64 64 69 74 69  3</a> for.additi
49c0: 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  onal information
49d0: 2e 0a 54 68 65 20 55 4e 49 51 55 45 20 63 6f 6e  ..The UNIQUE con
49e0: 73 74 72 61 69 6e 74 20 63 61 75 73 65 73 20 61  straint causes a
49f0: 6e 20 75 6e 69 71 75 65 20 69 6e 64 65 78 20 74  n unique index t
4a00: 6f 20 62 65 20 63 72 65 61 74 65 64 20 6f 6e 20  o be created on 
4a10: 74 68 65 20 73 70 65 63 69 66 69 65 64 0a 63 6f  the specified.co
4a20: 6c 75 6d 6e 73 2e 20 20 41 6c 6c 20 4e 55 4c 4c  lumns.  All NULL
4a30: 20 76 61 6c 75 65 73 20 61 72 65 20 63 6f 6e 73   values are cons
4a40: 69 64 65 72 65 64 20 64 69 66 66 65 72 65 6e 74  idered different
4a50: 20 66 72 6f 6d 20 65 61 63 68 20 6f 74 68 65 72   from each other
4a60: 20 61 6e 64 20 66 72 6f 6d 0a 61 6c 6c 20 6f 74   and from.all ot
4a70: 68 65 72 20 76 61 6c 75 65 73 20 66 6f 72 20 74  her values for t
4a80: 68 65 20 70 75 72 70 6f 73 65 20 6f 66 20 64 65  he purpose of de
4a90: 74 65 72 6d 69 6e 69 6e 67 20 75 6e 69 71 75 65  termining unique
4aa0: 6e 65 73 73 2c 20 68 65 6e 63 65 20 61 20 55 4e  ness, hence a UN
4ab0: 49 51 55 45 0a 63 6f 6c 75 6d 6e 20 6d 61 79 20  IQUE.column may 
4ac0: 63 6f 6e 74 61 69 6e 20 6d 75 6c 74 69 70 6c 65  contain multiple
4ad0: 20 65 6e 74 72 69 65 73 20 77 69 74 68 20 74 68   entries with th
4ae0: 65 20 76 61 6c 75 65 20 6f 66 20 4e 55 4c 4c 2e  e value of NULL.
4af0: 0a 54 68 65 20 43 4f 4c 4c 41 54 45 20 63 6c 61  .The COLLATE cla
4b00: 75 73 65 20 73 70 65 63 69 66 69 65 73 20 77 68  use specifies wh
4b10: 61 74 20 74 65 78 74 20 0a 5b 63 6f 6c 6c 61 74  at text .[collat
4b20: 69 6e 67 20 66 75 6e 63 74 69 6f 6e 5d 20 74 6f  ing function] to
4b30: 20 75 73 65 20 77 68 65 6e 20 63 6f 6d 70 61 72   use when compar
4b40: 69 6e 67 20 74 65 78 74 20 65 6e 74 72 69 65 73  ing text entries
4b50: 20 66 6f 72 20 74 68 65 20 63 6f 6c 75 6d 6e 2e   for the column.
4b60: 20 20 0a 54 68 65 20 62 75 69 6c 74 2d 69 6e 20    .The built-in 
4b70: 5b 42 49 4e 41 52 59 5d 20 63 6f 6c 6c 61 74 69  [BINARY] collati
4b80: 6e 67 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 75  ng function is u
4b90: 73 65 64 20 62 79 20 64 65 66 61 75 6c 74 2e 0a  sed by default..
4ba0: 3c 70 3e 0a 54 68 65 20 44 45 46 41 55 4c 54 20  <p>.The DEFAULT 
4bb0: 63 6f 6e 73 74 72 61 69 6e 74 20 73 70 65 63 69  constraint speci
4bc0: 66 69 65 73 20 61 20 64 65 66 61 75 6c 74 20 76  fies a default v
4bd0: 61 6c 75 65 20 74 6f 20 75 73 65 20 77 68 65 6e  alue to use when
4be0: 20 64 6f 69 6e 67 20 61 6e 20 5b 49 4e 53 45 52   doing an [INSER
4bf0: 54 5d 2e 0a 54 68 65 20 76 61 6c 75 65 20 6d 61  T]..The value ma
4c00: 79 20 62 65 20 4e 55 4c 4c 2c 20 61 20 73 74 72  y be NULL, a str
4c10: 69 6e 67 20 63 6f 6e 73 74 61 6e 74 20 6f 72 20  ing constant or 
4c20: 61 20 6e 75 6d 62 65 72 2e 20 53 74 61 72 74 69  a number. Starti
4c30: 6e 67 20 77 69 74 68 0a 5b 76 65 72 73 69 6f 6e  ng with.[version
4c40: 20 33 2e 31 2e 30 5d 2c 0a 74 68 65 20 64 65 66   3.1.0],.the def
4c50: 61 75 6c 74 20 76 61 6c 75 65 20 6d 61 79 20 61  ault value may a
4c60: 6c 73 6f 20 62 65 20 6f 6e 65 20 6f 66 20 74 68  lso be one of th
4c70: 65 20 73 70 65 63 69 61 6c 20 63 61 73 65 2d 69  e special case-i
4c80: 6e 64 65 70 65 6e 64 61 6e 74 0a 6b 65 79 77 6f  ndependant.keywo
4c90: 72 64 73 20 43 55 52 52 45 4e 54 5f 54 49 4d 45  rds CURRENT_TIME
4ca0: 2c 20 43 55 52 52 45 4e 54 5f 44 41 54 45 20 6f  , CURRENT_DATE o
4cb0: 72 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54  r CURRENT_TIMEST
4cc0: 41 4d 50 2e 20 49 66 20 74 68 65 20 76 61 6c 75  AMP. If the valu
4cd0: 65 20 69 73 0a 4e 55 4c 4c 2c 20 61 20 73 74 72  e is.NULL, a str
4ce0: 69 6e 67 20 63 6f 6e 73 74 61 6e 74 20 6f 72 20  ing constant or 
4cf0: 6e 75 6d 62 65 72 2c 20 69 74 20 69 73 20 6c 69  number, it is li
4d00: 74 65 72 61 6c 6c 79 20 69 6e 73 65 72 74 65 64  terally inserted
4d10: 20 69 6e 74 6f 20 74 68 65 20 63 6f 6c 75 6d 6e   into the column
4d20: 0a 77 68 65 6e 65 76 65 72 20 61 6e 20 49 4e 53  .whenever an INS
4d30: 45 52 54 20 73 74 61 74 65 6d 65 6e 74 20 74 68  ERT statement th
4d40: 61 74 20 64 6f 65 73 20 6e 6f 74 20 73 70 65 63  at does not spec
4d50: 69 66 79 20 61 20 76 61 6c 75 65 20 66 6f 72 20  ify a value for 
4d60: 74 68 65 20 63 6f 6c 75 6d 6e 20 69 73 0a 65 78  the column is.ex
4d70: 65 63 75 74 65 64 2e 20 49 66 20 74 68 65 20 76  ecuted. If the v
4d80: 61 6c 75 65 20 69 73 20 43 55 52 52 45 4e 54 5f  alue is CURRENT_
4d90: 54 49 4d 45 2c 20 43 55 52 52 45 4e 54 5f 44 41  TIME, CURRENT_DA
4da0: 54 45 20 6f 72 20 43 55 52 52 45 4e 54 5f 54 49  TE or CURRENT_TI
4db0: 4d 45 53 54 41 4d 50 2c 20 74 68 65 6e 0a 74 68  MESTAMP, then.th
4dc0: 65 20 63 75 72 72 65 6e 74 20 55 54 43 20 64 61  e current UTC da
4dd0: 74 65 20 61 6e 64 2f 6f 72 20 74 69 6d 65 20 69  te and/or time i
4de0: 73 20 69 6e 73 65 72 74 65 64 20 69 6e 74 6f 20  s inserted into 
4df0: 74 68 65 20 63 6f 6c 75 6d 6e 73 2e 20 46 6f 72  the columns. For
4e00: 0a 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c 20 74  .CURRENT_TIME, t
4e10: 68 65 20 66 6f 72 6d 61 74 20 69 73 20 48 48 3a  he format is HH:
4e20: 4d 4d 3a 53 53 2e 20 46 6f 72 20 43 55 52 52 45  MM:SS. For CURRE
4e30: 4e 54 5f 44 41 54 45 2c 20 59 59 59 59 2d 4d 4d  NT_DATE, YYYY-MM
4e40: 2d 44 44 2e 20 54 68 65 20 66 6f 72 6d 61 74 0a  -DD. The format.
4e50: 66 6f 72 20 43 55 52 52 45 4e 54 5f 54 49 4d 45  for CURRENT_TIME
4e60: 53 54 41 4d 50 20 69 73 20 22 59 59 59 59 2d 4d  STAMP is "YYYY-M
4e70: 4d 2d 44 44 20 48 48 3a 4d 4d 3a 53 53 22 2e 0a  M-DD HH:MM:SS"..
4e80: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 50 52 49  </p>..<p>The PRI
4e90: 4d 41 52 59 20 4b 45 59 20 61 74 74 72 69 62 75  MARY KEY attribu
4ea0: 74 65 20 6e 6f 72 6d 61 6c 6c 79 20 6a 75 73 74  te normally just
4eb0: 20 63 72 65 61 74 65 73 20 61 20 55 4e 49 51 55   creates a UNIQU
4ec0: 45 20 69 6e 64 65 78 20 6f 6e 0a 74 68 65 20 63  E index on.the c
4ed0: 6f 6c 75 6d 6e 20 6f 72 20 63 6f 6c 75 6d 6e 73  olumn or columns
4ee0: 20 74 68 61 74 20 61 72 65 20 73 70 65 63 69 66   that are specif
4ef0: 69 65 64 20 61 73 20 74 68 65 20 50 52 49 4d 41  ied as the PRIMA
4f00: 52 59 20 4b 45 59 2e 20 20 54 68 65 20 6f 6e 65  RY KEY.  The one
4f10: 0a 65 78 63 65 70 74 69 6f 6e 20 74 6f 20 74 68  .exception to th
4f20: 69 73 20 62 65 68 61 76 69 6f 72 20 69 73 20 73  is behavior is s
4f30: 70 65 63 69 61 6c 20 5b 49 4e 54 45 47 45 52 20  pecial [INTEGER 
4f40: 50 52 49 4d 41 52 59 20 4b 45 59 5d 20 63 6f 6c  PRIMARY KEY] col
4f50: 75 6d 6e 2e 0a 41 63 63 6f 72 64 69 6e 67 20 74  umn..According t
4f60: 6f 20 74 68 65 20 53 51 4c 20 73 74 61 6e 64 61  o the SQL standa
4f70: 72 64 2c 20 50 52 49 4d 41 52 59 20 4b 45 59 20  rd, PRIMARY KEY 
4f80: 73 68 6f 75 6c 64 20 69 6d 70 6c 79 20 4e 4f 54  should imply NOT
4f90: 20 4e 55 4c 4c 2e 0a 55 6e 66 6f 72 74 75 6e 61   NULL..Unfortuna
4fa0: 74 65 6c 79 2c 20 64 75 65 20 74 6f 20 61 20 6c  tely, due to a l
4fb0: 6f 6e 67 2d 73 74 61 6e 64 69 6e 67 20 63 6f 64  ong-standing cod
4fc0: 69 6e 67 20 6f 76 65 72 73 69 67 68 74 2c 20 74  ing oversight, t
4fd0: 68 69 73 20 69 73 20 6e 6f 74 20 0a 74 68 65 20  his is not .the 
4fe0: 63 61 73 65 20 69 6e 20 53 51 4c 69 74 65 2e 20  case in SQLite. 
4ff0: 20 53 51 4c 69 74 65 20 61 6c 6c 6f 77 73 20 4e   SQLite allows N
5000: 55 4c 4c 20 76 61 6c 75 65 73 0a 69 6e 20 61 20  ULL values.in a 
5010: 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75  PRIMARY KEY colu
5020: 6d 6e 2e 20 20 57 65 20 63 6f 75 6c 64 20 63 68  mn.  We could ch
5030: 61 6e 67 65 20 53 51 4c 69 74 65 20 74 6f 20 63  ange SQLite to c
5040: 6f 6e 66 6f 72 6d 20 74 6f 20 74 68 65 0a 73 74  onform to the.st
5050: 61 6e 64 61 72 64 20 28 61 6e 64 20 77 65 20 6d  andard (and we m
5060: 69 67 68 74 20 64 6f 20 73 6f 20 69 6e 20 74 68  ight do so in th
5070: 65 20 66 75 74 75 72 65 29 2c 20 62 75 74 20 62  e future), but b
5080: 79 20 74 68 65 20 74 69 6d 65 20 74 68 65 0a 6f  y the time the.o
5090: 76 65 72 73 69 67 68 74 20 77 61 73 20 64 69 73  versight was dis
50a0: 63 6f 76 65 72 65 64 2c 20 53 51 4c 69 74 65 20  covered, SQLite 
50b0: 77 61 73 20 69 6e 20 73 75 63 68 20 77 69 64 65  was in such wide
50c0: 20 75 73 65 20 74 68 61 74 20 77 65 20 66 65 61   use that we fea
50d0: 72 65 64 0a 62 72 65 61 6b 69 6e 67 20 6c 65 67  red.breaking leg
50e0: 61 63 79 20 63 6f 64 65 20 69 66 20 77 65 20 66  acy code if we f
50f0: 69 78 65 64 20 74 68 65 20 70 72 6f 62 6c 65 6d  ixed the problem
5100: 2e 20 20 53 6f 20 66 6f 72 20 6e 6f 77 20 77 65  .  So for now we
5110: 20 68 61 76 65 0a 63 68 6f 73 65 6e 20 74 6f 20   have.chosen to 
5120: 63 6f 6e 74 69 6e 75 65 20 61 6c 6c 6f 77 69 6e  continue allowin
5130: 67 20 4e 55 4c 4c 73 20 69 6e 20 50 52 49 4d 41  g NULLs in PRIMA
5140: 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 73 2e 0a  RY KEY columns..
5150: 44 65 76 65 6c 6f 70 65 72 73 20 73 68 6f 75 6c  Developers shoul
5160: 64 20 62 65 20 61 77 61 72 65 2c 20 68 6f 77 65  d be aware, howe
5170: 76 65 72 2c 20 74 68 61 74 20 77 65 20 6d 61 79  ver, that we may
5180: 20 63 68 61 6e 67 65 20 53 51 4c 69 74 65 20 74   change SQLite t
5190: 6f 0a 63 6f 6e 66 6f 72 6d 20 74 6f 20 74 68 65  o.conform to the
51a0: 20 53 51 4c 20 73 74 61 6e 64 61 72 64 20 69 6e   SQL standard in
51b0: 20 66 75 74 75 72 65 20 61 6e 64 20 73 68 6f 75   future and shou
51c0: 6c 64 20 64 65 73 69 67 6e 20 6e 65 77 20 70 72  ld design new pr
51d0: 6f 67 72 61 6d 73 0a 61 63 63 6f 72 64 69 6e 67  ograms.according
51e0: 6c 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74  ly.</p>..<p>If t
51f0: 68 65 20 22 54 45 4d 50 22 20 6f 72 20 22 54 45  he "TEMP" or "TE
5200: 4d 50 4f 52 41 52 59 22 20 6b 65 79 77 6f 72 64  MPORARY" keyword
5210: 20 6f 63 63 75 72 73 20 69 6e 20 62 65 74 77 65   occurs in betwe
5220: 65 6e 20 22 43 52 45 41 54 45 22 0a 61 6e 64 20  en "CREATE".and 
5230: 22 54 41 42 4c 45 22 20 74 68 65 6e 20 74 68 65  "TABLE" then the
5240: 20 74 61 62 6c 65 20 74 68 61 74 20 69 73 20 63   table that is c
5250: 72 65 61 74 65 64 20 69 73 20 6f 6e 6c 79 20 76  reated is only v
5260: 69 73 69 62 6c 65 0a 77 69 74 68 69 6e 20 74 68  isible.within th
5270: 61 74 20 73 61 6d 65 20 64 61 74 61 62 61 73 65  at same database
5280: 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 61 6e 64 20   connection.and 
5290: 69 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  is automatically
52a0: 20 64 65 6c 65 74 65 64 20 77 68 65 6e 0a 74 68   deleted when.th
52b0: 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
52c0: 63 74 69 6f 6e 20 69 73 20 63 6c 6f 73 65 64 2e  ction is closed.
52d0: 20 20 41 6e 79 20 69 6e 64 69 63 65 73 20 63 72    Any indices cr
52e0: 65 61 74 65 64 20 6f 6e 20 61 20 74 65 6d 70 6f  eated on a tempo
52f0: 72 61 72 79 20 74 61 62 6c 65 0a 61 72 65 20 61  rary table.are a
5300: 6c 73 6f 20 74 65 6d 70 6f 72 61 72 79 2e 20 20  lso temporary.  
5310: 54 65 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 73  Temporary tables
5320: 20 61 6e 64 20 69 6e 64 69 63 65 73 20 61 72 65   and indices are
5330: 20 73 74 6f 72 65 64 20 69 6e 20 61 0a 73 65 70   stored in a.sep
5340: 61 72 61 74 65 20 66 69 6c 65 20 64 69 73 74 69  arate file disti
5350: 6e 63 74 20 66 72 6f 6d 20 74 68 65 20 6d 61 69  nct from the mai
5360: 6e 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e  n database file.
5370: 3c 2f 70 3e 0a 0a 3c 70 3e 20 49 66 20 61 20 26  </p>..<p> If a &
5380: 6c 74 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65  lt;database-name
5390: 26 67 74 3b 20 69 73 20 73 70 65 63 69 66 69 65  &gt; is specifie
53a0: 64 2c 20 74 68 65 6e 20 74 68 65 20 74 61 62 6c  d, then the tabl
53b0: 65 20 69 73 20 63 72 65 61 74 65 64 20 69 6e 20  e is created in 
53c0: 0a 74 68 65 20 6e 61 6d 65 64 20 64 61 74 61 62  .the named datab
53d0: 61 73 65 2e 20 49 74 20 69 73 20 61 6e 20 65 72  ase. It is an er
53e0: 72 6f 72 20 74 6f 20 73 70 65 63 69 66 79 20 62  ror to specify b
53f0: 6f 74 68 20 61 20 26 6c 74 3b 64 61 74 61 62 61  oth a &lt;databa
5400: 73 65 2d 6e 61 6d 65 26 67 74 3b 0a 61 6e 64 20  se-name&gt;.and 
5410: 74 68 65 20 54 45 4d 50 20 6b 65 79 77 6f 72 64  the TEMP keyword
5420: 2c 20 75 6e 6c 65 73 73 20 74 68 65 20 26 6c 74  , unless the &lt
5430: 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 26 67  ;database-name&g
5440: 74 3b 20 69 73 20 22 74 65 6d 70 22 2e 20 49 66  t; is "temp". If
5450: 20 6e 6f 0a 64 61 74 61 62 61 73 65 20 6e 61 6d   no.database nam
5460: 65 20 69 73 20 73 70 65 63 69 66 69 65 64 2c 20  e is specified, 
5470: 61 6e 64 20 74 68 65 20 54 45 4d 50 20 6b 65 79  and the TEMP key
5480: 77 6f 72 64 20 69 73 20 6e 6f 74 20 70 72 65 73  word is not pres
5490: 65 6e 74 2c 0a 74 68 65 20 74 61 62 6c 65 20 69  ent,.the table i
54a0: 73 20 63 72 65 61 74 65 64 20 69 6e 20 74 68 65  s created in the
54b0: 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 2e 3c   main database.<
54c0: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69  /p>..<p>The opti
54d0: 6f 6e 61 6c 20 5b 63 6f 6e 66 6c 69 63 74 20 63  onal [conflict c
54e0: 6c 61 75 73 65 5d 20 66 6f 6c 6c 6f 77 69 6e 67  lause] following
54f0: 20 65 61 63 68 20 63 6f 6e 73 74 72 61 69 6e 74   each constraint
5500: 0a 61 6c 6c 6f 77 73 20 74 68 65 20 73 70 65 63  .allows the spec
5510: 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 61 6e 20  ification of an 
5520: 61 6c 74 65 72 6e 61 74 69 76 65 20 64 65 66 61  alternative defa
5530: 75 6c 74 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63  ult.constraint c
5540: 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69  onflict resoluti
5550: 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 66 6f 72  on algorithm for
5560: 20 74 68 61 74 20 63 6f 6e 73 74 72 61 69 6e 74   that constraint
5570: 2e 0a 54 68 65 20 64 65 66 61 75 6c 74 20 69 73  ..The default is
5580: 20 61 62 6f 72 74 20 41 42 4f 52 54 2e 20 20 44   abort ABORT.  D
5590: 69 66 66 65 72 65 6e 74 20 63 6f 6e 73 74 72 61  ifferent constra
55a0: 69 6e 74 73 20 77 69 74 68 69 6e 20 74 68 65 20  ints within the 
55b0: 73 61 6d 65 0a 74 61 62 6c 65 20 6d 61 79 20 68  same.table may h
55c0: 61 76 65 20 64 69 66 66 65 72 65 6e 74 20 64 65  ave different de
55d0: 66 61 75 6c 74 20 63 6f 6e 66 6c 69 63 74 20 72  fault conflict r
55e0: 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69  esolution algori
55f0: 74 68 6d 73 2e 0a 49 66 20 61 6e 20 5b 49 4e 53  thms..If an [INS
5600: 45 52 54 5d 20 6f 72 20 5b 55 50 44 41 54 45 5d  ERT] or [UPDATE]
5610: 20 73 74 61 74 65 6d 65 6e 74 20 73 70 65 63 69   statement speci
5620: 66 69 65 73 20 61 20 64 69 66 66 65 72 65 6e 74  fies a different
5630: 20 63 6f 6e 66 6c 69 63 74 0a 72 65 73 6f 6c 75   conflict.resolu
5640: 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 2c 20  tion algorithm, 
5650: 74 68 65 6e 20 74 68 61 74 20 61 6c 67 6f 72 69  then that algori
5660: 74 68 6d 20 69 73 20 75 73 65 64 20 69 6e 20 70  thm is used in p
5670: 6c 61 63 65 20 6f 66 20 74 68 65 0a 64 65 66 61  lace of the.defa
5680: 75 6c 74 20 61 6c 67 6f 72 69 74 68 6d 20 73 70  ult algorithm sp
5690: 65 63 69 66 69 65 64 20 69 6e 20 74 68 65 20 43  ecified in the C
56a0: 52 45 41 54 45 20 54 41 42 4c 45 20 73 74 61 74  REATE TABLE stat
56b0: 65 6d 65 6e 74 2e 0a 53 65 65 20 74 68 65 20 73  ement..See the s
56c0: 65 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a 5b 4f  ection titled.[O
56d0: 4e 20 43 4f 4e 46 4c 49 43 54 5d 20 66 6f 72 20  N CONFLICT] for 
56e0: 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72  additional infor
56f0: 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e  mation.</p>..<p>
5700: 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74  CHECK constraint
5710: 73 20 61 72 65 20 73 75 70 70 6f 72 74 65 64 20  s are supported 
5720: 61 73 20 6f 66 20 5b 76 65 72 73 69 6f 6e 20 33  as of [version 3
5730: 2e 33 2e 30 5d 2e 20 20 50 72 69 6f 72 0a 74 6f  .3.0].  Prior.to
5740: 20 76 65 72 73 69 6f 6e 20 33 2e 33 2e 30 2c 20   version 3.3.0, 
5750: 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74  CHECK constraint
5760: 73 20 77 65 72 65 20 70 61 72 73 65 64 20 62 75  s were parsed bu
5770: 74 20 6e 6f 74 20 65 6e 66 6f 72 63 65 64 2e 3c  t not enforced.<
5780: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6e 75 6d 62  /p>..<p>The numb
5790: 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e  er of columns in
57a0: 20 61 20 74 61 62 6c 65 20 69 73 20 6c 69 6d 69   a table is limi
57b0: 74 65 64 20 62 79 20 74 68 65 0a 5b 53 51 4c 49  ted by the.[SQLI
57c0: 54 45 5f 4d 41 58 5f 43 4f 4c 55 4d 4e 5d 20 63  TE_MAX_COLUMN] c
57d0: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 70 61 72 61  ompile-time para
57e0: 6d 65 74 65 72 2e 0a 41 20 73 69 6e 67 6c 65 20  meter..A single 
57f0: 72 6f 77 20 6f 66 20 61 20 74 61 62 6c 65 20 63  row of a table c
5800: 61 6e 6e 6f 74 20 73 74 6f 72 65 20 6d 6f 72 65  annot store more
5810: 20 74 68 61 6e 0a 5b 53 51 4c 49 54 45 5f 4d 41   than.[SQLITE_MA
5820: 58 5f 4c 45 4e 47 54 48 5d 20 62 79 74 65 73 20  X_LENGTH] bytes 
5830: 6f 66 20 64 61 74 61 2e 0a 42 6f 74 68 20 6f 66  of data..Both of
5840: 20 74 68 65 73 65 20 6c 69 6d 69 74 73 20 63 61   these limits ca
5850: 6e 20 62 65 20 6c 6f 77 65 72 65 64 20 61 74 20  n be lowered at 
5860: 72 75 6e 74 69 6d 65 20 75 73 69 6e 67 20 74 68  runtime using th
5870: 65 0a 5b 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74  e.[sqlite3_limit
5880: 28 29 5d 20 43 2f 43 2b 2b 20 69 6e 74 65 72 66  ()] C/C++ interf
5890: 61 63 65 2e 3c 2f 70 3e 0a 0a 0a 3c 70 3e 54 68  ace.</p>...<p>Th
58a0: 65 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 41  e CREATE TABLE A
58b0: 53 20 66 6f 72 6d 20 64 65 66 69 6e 65 73 20 74  S form defines t
58c0: 68 65 20 74 61 62 6c 65 20 74 6f 20 62 65 0a 74  he table to be.t
58d0: 68 65 20 72 65 73 75 6c 74 20 73 65 74 20 6f 66  he result set of
58e0: 20 61 20 71 75 65 72 79 2e 20 20 54 68 65 20 6e   a query.  The n
58f0: 61 6d 65 73 20 6f 66 20 74 68 65 20 74 61 62 6c  ames of the tabl
5900: 65 20 63 6f 6c 75 6d 6e 73 20 61 72 65 0a 74 68  e columns are.th
5910: 65 20 6e 61 6d 65 73 20 6f 66 20 74 68 65 20 63  e names of the c
5920: 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 72 65  olumns in the re
5930: 73 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  sult.</p>..<p>Th
5940: 65 20 74 65 78 74 0a 6f 66 20 65 61 63 68 20 43  e text.of each C
5950: 52 45 41 54 45 20 54 41 42 4c 45 20 73 74 61 74  REATE TABLE stat
5960: 65 6d 65 6e 74 20 69 73 20 73 74 6f 72 65 64 20  ement is stored 
5970: 69 6e 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65  in the <b>sqlite
5980: 5f 6d 61 73 74 65 72 3c 2f 62 3e 0a 74 61 62 6c  _master</b>.tabl
5990: 65 2e 20 20 45 76 65 72 79 20 74 69 6d 65 20 74  e.  Every time t
59a0: 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20 6f  he database is o
59b0: 70 65 6e 65 64 2c 20 61 6c 6c 20 43 52 45 41 54  pened, all CREAT
59c0: 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e  E TABLE statemen
59d0: 74 73 0a 61 72 65 20 72 65 61 64 20 66 72 6f 6d  ts.are read from
59e0: 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6d   the <b>sqlite_m
59f0: 61 73 74 65 72 3c 2f 62 3e 20 74 61 62 6c 65 20  aster</b> table 
5a00: 61 6e 64 20 75 73 65 64 20 74 6f 20 72 65 67 65  and used to rege
5a10: 6e 65 72 61 74 65 0a 53 51 4c 69 74 65 27 73 20  nerate.SQLite's 
5a20: 69 6e 74 65 72 6e 61 6c 20 72 65 70 72 65 73 65  internal represe
5a30: 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 74  ntation of the t
5a40: 61 62 6c 65 20 6c 61 79 6f 75 74 2e 0a 49 66 20  able layout..If 
5a50: 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 63 6f 6d  the original com
5a60: 6d 61 6e 64 20 77 61 73 20 61 20 43 52 45 41 54  mand was a CREAT
5a70: 45 20 54 41 42 4c 45 20 41 53 20 74 68 65 6e 20  E TABLE AS then 
5a80: 74 68 65 6e 20 61 6e 20 65 71 75 69 76 61 6c 65  then an equivale
5a90: 6e 74 0a 43 52 45 41 54 45 20 54 41 42 4c 45 20  nt.CREATE TABLE 
5aa0: 73 74 61 74 65 6d 65 6e 74 20 69 73 20 73 79 6e  statement is syn
5ab0: 74 68 65 73 69 7a 65 64 20 61 6e 64 20 73 74 6f  thesized and sto
5ac0: 72 65 20 69 6e 20 3c 62 3e 73 71 6c 69 74 65 5f  re in <b>sqlite_
5ad0: 6d 61 73 74 65 72 3c 2f 62 3e 0a 69 6e 20 70 6c  master</b>.in pl
5ae0: 61 63 65 20 6f 66 20 74 68 65 20 6f 72 69 67 69  ace of the origi
5af0: 6e 61 6c 20 63 6f 6d 6d 61 6e 64 2e 0a 54 68 65  nal command..The
5b00: 20 74 65 78 74 20 6f 66 20 43 52 45 41 54 45 20   text of CREATE 
5b10: 54 45 4d 50 4f 52 41 52 59 20 54 41 42 4c 45 20  TEMPORARY TABLE 
5b20: 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65 20 73  statements are s
5b30: 74 6f 72 65 64 20 69 6e 20 74 68 65 0a 3c 62 3e  tored in the.<b>
5b40: 73 71 6c 69 74 65 5f 74 65 6d 70 5f 6d 61 73 74  sqlite_temp_mast
5b50: 65 72 3c 2f 62 3e 20 74 61 62 6c 65 2e 0a 3c 2f  er</b> table..</
5b60: 70 3e 0a 0a 3c 70 3e 49 66 20 74 68 65 20 6f 70  p>..<p>If the op
5b70: 74 69 6f 6e 61 6c 20 49 46 20 4e 4f 54 20 45 58  tional IF NOT EX
5b80: 49 53 54 53 20 63 6c 61 75 73 65 20 69 73 20 70  ISTS clause is p
5b90: 72 65 73 65 6e 74 20 61 6e 64 20 61 6e 6f 74 68  resent and anoth
5ba0: 65 72 20 74 61 62 6c 65 0a 77 69 74 68 20 74 68  er table.with th
5bb0: 65 20 73 61 6d 65 20 6e 61 6d 65 20 61 6c 65 61  e same name alea
5bc0: 64 79 20 65 78 69 73 74 73 2c 20 74 68 65 6e 20  dy exists, then 
5bd0: 74 68 69 73 20 63 6f 6d 6d 61 6e 64 20 62 65 63  this command bec
5be0: 6f 6d 65 73 20 61 20 6e 6f 2d 6f 70 2e 3c 2f 70  omes a no-op.</p
5bf0: 3e 0a 0a 3c 70 3e 54 61 62 6c 65 73 20 61 72 65  >..<p>Tables are
5c00: 20 72 65 6d 6f 76 65 64 20 75 73 69 6e 67 20 74   removed using t
5c10: 68 65 20 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67  he <a href="lang
5c20: 5f 64 72 6f 70 74 61 62 6c 65 2e 68 74 6d 6c 22  _droptable.html"
5c30: 3e 44 52 4f 50 20 54 41 42 4c 45 3c 2f 61 3e 20  >DROP TABLE</a> 
5c40: 0a 73 74 61 74 65 6d 65 6e 74 2e 20 20 3c 2f 70  .statement.  </p
5c50: 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d  >..<tcl>hd_fragm
5c60: 65 6e 74 20 72 6f 77 69 64 20 7b 49 4e 54 45 47  ent rowid {INTEG
5c70: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 7d 20  ER PRIMARY KEY} 
5c80: 52 4f 57 49 44 3c 2f 74 63 6c 3e 0a 3c 68 33 3e  ROWID</tcl>.<h3>
5c90: 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20  INTEGER PRIMARY 
5ca0: 4b 45 59 3c 2f 68 33 3e 0a 0a 3c 70 3e 53 70 65  KEY</h3>..<p>Spe
5cb0: 63 69 66 79 69 6e 67 20 61 20 50 52 49 4d 41 52  cifying a PRIMAR
5cc0: 59 20 4b 45 59 20 6e 6f 72 6d 61 6c 6c 79 20 6a  Y KEY normally j
5cd0: 75 73 74 20 63 72 65 61 74 65 73 20 61 20 55 4e  ust creates a UN
5ce0: 49 51 55 45 20 69 6e 64 65 78 0a 6f 6e 20 74 68  IQUE index.on th
5cf0: 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20  e corresponding 
5d00: 63 6f 6c 75 6d 6e 73 2e 20 20 48 6f 77 65 76 65  columns.  Howeve
5d10: 72 2c 20 69 66 20 74 68 65 20 70 72 69 6d 61 72  r, if the primar
5d20: 79 20 6b 65 79 20 69 73 20 6f 6e 20 61 20 73 69  y key is on a si
5d30: 6e 67 6c 65 0a 63 6f 6c 75 6d 6e 20 74 68 61 74  ngle.column that
5d40: 20 68 61 73 20 61 20 74 79 70 65 20 6e 61 6d 65   has a type name
5d50: 20 6f 66 20 22 49 4e 54 45 47 45 52 22 2c 20 74   of "INTEGER", t
5d60: 68 65 6e 20 74 68 61 74 20 63 6f 6c 75 6d 6e 20  hen that column 
5d70: 69 73 20 75 73 65 64 20 69 6e 74 65 72 6e 61 6c  is used internal
5d80: 6c 79 0a 61 73 20 74 68 65 20 61 63 74 75 61 6c  ly.as the actual
5d90: 20 6b 65 79 20 6f 66 20 74 68 65 20 42 2d 54 72   key of the B-Tr
5da0: 65 65 20 66 6f 72 20 74 68 65 20 74 61 62 6c 65  ee for the table
5db0: 2e 20 20 54 68 69 73 20 6d 65 61 6e 73 20 74 68  .  This means th
5dc0: 61 74 20 74 68 65 20 63 6f 6c 75 6d 6e 0a 6d 61  at the column.ma
5dd0: 79 20 6f 6e 6c 79 20 68 6f 6c 64 20 75 6e 69 71  y only hold uniq
5de0: 75 65 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65  ue integer value
5df0: 73 2e 20 20 45 78 63 65 70 74 20 66 6f 72 20 74  s.  Except for t
5e00: 68 69 73 20 6f 6e 65 20 63 61 73 65 2c 0a 53 51  his one case,.SQ
5e10: 4c 69 74 65 20 61 6c 6c 6f 77 73 20 61 6e 79 20  Lite allows any 
5e20: 64 61 74 61 74 79 70 65 20 74 6f 20 62 65 20 73  datatype to be s
5e30: 74 6f 72 65 64 20 69 6e 20 61 6e 79 20 63 6f 6c  tored in any col
5e40: 75 6d 6e 2c 20 72 65 67 61 72 64 6c 65 73 73 20  umn, regardless 
5e50: 6f 66 0a 74 68 65 20 64 65 63 6c 61 72 65 64 20  of.the declared 
5e60: 74 79 70 65 20 6f 66 20 74 68 61 74 20 63 6f 6c  type of that col
5e70: 75 6d 6e 2e 20 20 54 68 65 20 64 61 74 61 74 79  umn.  The dataty
5e80: 70 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e  pe specification
5e90: 20 69 73 20 75 73 65 64 20 0a 6f 6e 6c 79 20 74   is used .only t
5ea0: 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20  o determine the 
5eb0: 5b 61 66 66 69 6e 69 74 79 20 7c 20 74 79 70 65  [affinity | type
5ec0: 20 61 66 66 69 6e 69 74 79 5d 20 6f 66 20 61 20   affinity] of a 
5ed0: 63 6f 6c 75 6d 6e 2c 20 6e 6f 74 0a 74 6f 20 72  column, not.to r
5ee0: 65 73 74 72 69 63 74 20 77 68 61 74 20 6b 69 6e  estrict what kin
5ef0: 64 73 20 6f 66 20 64 61 74 61 20 63 61 6e 20 62  ds of data can b
5f00: 65 20 73 74 6f 72 65 64 20 69 6e 20 61 20 63 6f  e stored in a co
5f10: 6c 75 6d 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 45 76  lumn.</p>..<p>Ev
5f20: 65 72 79 20 53 51 4c 69 74 65 20 74 61 62 6c 65  ery SQLite table
5f30: 20 72 6f 77 20 68 61 73 20 61 20 36 34 2d 62 69   row has a 64-bi
5f40: 74 20 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72  t signed integer
5f50: 20 6b 65 79 20 77 68 69 63 68 20 69 73 20 75 6e   key which is un
5f60: 69 71 75 65 20 66 6f 72 0a 74 68 61 74 20 74 61  ique for.that ta
5f70: 62 6c 65 2e 20 20 54 68 69 73 20 69 6e 74 65 67  ble.  This integ
5f80: 65 72 20 69 73 20 75 73 75 61 6c 6c 79 20 63 61  er is usually ca
5f90: 6c 6c 65 64 20 74 68 65 20 22 72 6f 77 69 64 22  lled the "rowid"
5fa0: 2e 20 20 54 68 65 0a 72 6f 77 69 64 20 63 61 6e  .  The.rowid can
5fb0: 20 62 65 20 61 63 63 65 73 73 65 64 20 75 73 69   be accessed usi
5fc0: 6e 67 20 6f 6e 65 20 6f 66 20 74 68 65 20 73 70  ng one of the sp
5fd0: 65 63 69 61 6c 20 6e 61 6d 65 73 0a 22 3c 62 3e  ecial names."<b>
5fe0: 52 4f 57 49 44 3c 2f 62 3e 22 2c 20 22 3c 62 3e  ROWID</b>", "<b>
5ff0: 4f 49 44 3c 2f 62 3e 22 2c 20 6f 72 20 22 3c 62  OID</b>", or "<b
6000: 3e 5f 52 4f 57 49 44 5f 3c 2f 62 3e 22 2e 0a 49  >_ROWID_</b>"..I
6010: 66 20 61 20 74 61 62 6c 65 20 68 61 73 20 61 6e  f a table has an
6020: 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59   INTEGER PRIMARY
6030: 20 4b 45 59 20 63 6f 6c 75 6d 6e 2c 20 74 68 65   KEY column, the
6040: 6e 20 74 68 61 74 20 63 6f 6c 75 6d 6e 20 69 73  n that column is
6050: 20 6e 6f 74 0a 61 20 22 72 65 61 6c 22 20 64 61   not.a "real" da
6060: 74 61 62 61 73 65 20 63 6f 6c 75 6d 6e 20 62 75  tabase column bu
6070: 74 20 69 6e 73 74 65 61 64 20 62 65 63 6f 6d 65  t instead become
6080: 73 0a 61 6e 6f 74 68 65 72 20 61 6c 69 61 73 20  s.another alias 
6090: 66 6f 72 20 74 68 65 20 72 6f 77 69 64 2e 20 20  for the rowid.  
60a0: 55 6e 6c 69 6b 65 20 6e 6f 72 6d 61 6c 20 53 51  Unlike normal SQ
60b0: 4c 69 74 65 20 63 6f 6c 75 6d 6e 73 2c 20 74 68  Lite columns, th
60c0: 65 20 72 6f 77 69 64 0a 6d 75 73 74 20 62 65 20  e rowid.must be 
60d0: 61 20 6e 6f 6e 2d 4e 55 4c 4c 20 69 6e 74 65 67  a non-NULL integ
60e0: 65 72 20 76 61 6c 75 65 2e 20 20 54 68 65 20 72  er value.  The r
60f0: 6f 77 69 64 20 69 73 20 6e 6f 74 20 61 62 6c 65  owid is not able
6100: 20 74 6f 20 68 6f 6c 64 0a 66 6c 6f 61 74 69 6e   to hold.floatin
6110: 67 20 70 6f 69 6e 74 20 76 61 6c 75 65 73 2c 20  g point values, 
6120: 73 74 72 69 6e 67 73 2c 20 42 4c 4f 42 73 2c 20  strings, BLOBs, 
6130: 6f 72 20 4e 55 4c 4c 73 2e 3c 2f 70 3e 0a 0a 3c  or NULLs.</p>..<
6140: 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 69 3e 0a 49  blockquote><i>.I
6150: 66 20 61 20 74 61 62 6c 65 20 68 61 73 20 61 6e  f a table has an
6160: 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59   INTEGER PRIMARY
6170: 20 4b 45 59 20 63 6f 6c 75 6d 6e 2c 20 74 68 65   KEY column, the
6180: 6e 20 74 68 61 74 20 63 6f 6c 75 6d 6e 20 62 65  n that column be
6190: 63 6f 6d 65 73 0a 61 6e 20 61 6c 69 61 73 20 66  comes.an alias f
61a0: 6f 72 20 74 68 65 20 72 6f 77 69 64 2e 0a 3c 2f  or the rowid..</
61b0: 69 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  i></blockquote>.
61c0: 0a 3c 70 3e 41 6e 20 49 4e 54 45 47 45 52 20 50  .<p>An INTEGER P
61d0: 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d  RIMARY KEY colum
61e0: 6e 20 63 61 6e 20 61 6c 73 6f 20 69 6e 63 6c 75  n can also inclu
61f0: 64 65 20 74 68 65 0a 6b 65 79 77 6f 72 64 20 5b  de the.keyword [
6200: 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 5d 2e 20  AUTOINCREMENT]. 
6210: 20 54 68 65 20 5b 41 55 54 4f 49 4e 43 52 45 4d   The [AUTOINCREM
6220: 45 4e 54 5d 20 6b 65 79 77 6f 72 64 20 6d 6f 64  ENT] keyword mod
6230: 69 66 69 65 64 20 74 68 65 20 77 61 79 0a 74 68  ified the way.th
6240: 61 74 20 42 2d 54 72 65 65 20 6b 65 79 73 20 61  at B-Tree keys a
6250: 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  re automatically
6260: 20 67 65 6e 65 72 61 74 65 64 2e 20 20 41 64 64   generated.  Add
6270: 69 74 69 6f 6e 61 6c 20 64 65 74 61 69 6c 0a 6f  itional detail.o
6280: 6e 20 61 75 74 6f 6d 61 74 69 63 20 42 2d 54 72  n automatic B-Tr
6290: 65 65 20 6b 65 79 20 67 65 6e 65 72 61 74 69 6f  ee key generatio
62a0: 6e 20 69 73 20 61 76 61 69 6c 61 62 6c 65 0a 3c  n is available.<
62b0: 61 20 68 72 65 66 3d 22 61 75 74 6f 69 6e 63 2e  a href="autoinc.
62c0: 68 74 6d 6c 22 3e 73 65 70 61 72 61 74 65 6c 79  html">separately
62d0: 3c 2f 61 3e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  </a>.</p>..<p>Th
62e0: 65 20 73 70 65 63 69 61 6c 20 62 65 68 61 76 69  e special behavi
62f0: 6f 72 20 6f 66 20 49 4e 54 45 47 45 52 20 50 52  or of INTEGER PR
6300: 49 4d 41 52 59 20 4b 45 59 0a 69 73 20 6f 6e 6c  IMARY KEY.is onl
6310: 79 20 61 76 61 69 6c 61 62 6c 65 20 69 66 20 74  y available if t
6320: 68 65 20 74 79 70 65 20 6e 61 6d 65 20 69 73 20  he type name is 
6330: 65 78 61 63 74 6c 79 20 22 49 4e 54 45 47 45 52  exactly "INTEGER
6340: 22 20 28 69 6e 20 61 6e 79 20 6d 69 78 74 75 72  " (in any mixtur
6350: 65 0a 6f 66 20 75 70 70 65 72 20 61 6e 64 20 6c  e.of upper and l
6360: 6f 77 65 72 20 63 61 73 65 2e 29 20 20 4f 74 68  ower case.)  Oth
6370: 65 72 20 69 6e 74 65 67 65 72 20 74 79 70 65 20  er integer type 
6380: 6e 61 6d 65 73 0a 6c 69 6b 65 20 22 49 4e 54 22  names.like "INT"
6390: 20 6f 72 20 22 42 49 47 49 4e 54 22 20 6f 72 20   or "BIGINT" or 
63a0: 22 53 48 4f 52 54 20 49 4e 54 45 47 45 52 22 20  "SHORT INTEGER" 
63b0: 6f 72 20 22 55 4e 53 49 47 4e 45 44 20 49 4e 54  or "UNSIGNED INT
63c0: 45 47 45 52 22 0a 63 61 75 73 65 73 20 74 68 65  EGER".causes the
63d0: 20 63 6f 6c 75 6d 6e 20 74 6f 20 62 65 68 61 76   column to behav
63e0: 65 20 61 73 20 61 6e 20 6f 72 64 69 6e 61 72 79  e as an ordinary
63f0: 20 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 20 77 69   table column wi
6400: 74 68 0a 69 6e 74 65 67 65 72 20 5b 61 66 66 69  th.integer [affi
6410: 6e 69 74 79 5d 2c 20 6e 6f 74 20 61 73 20 61 6e  nity], not as an
6420: 20 61 6c 69 61 73 20 66 6f 72 20 74 68 65 20 72   alias for the r
6430: 6f 77 69 64 2e 0a 54 68 65 20 73 70 65 63 69 61  owid..The specia
6440: 6c 20 62 65 68 61 76 69 6f 72 20 6f 66 20 49 4e  l behavior of IN
6450: 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45  TEGER PRIMARY KE
6460: 59 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61  Y is only availa
6470: 62 6c 65 20 69 66 20 74 68 65 0a 70 72 69 6d 61  ble if the.prima
6480: 72 79 20 6b 65 79 20 69 73 20 61 20 73 69 6e 67  ry key is a sing
6490: 6c 65 20 63 6f 6c 75 6d 6e 2e 20 20 4d 75 6c 74  le column.  Mult
64a0: 69 2d 63 6f 6c 75 6d 6e 20 70 72 69 6d 61 72 79  i-column primary
64b0: 20 6b 65 79 73 20 64 6f 20 6e 6f 74 20 62 65 63   keys do not bec
64c0: 6f 6d 65 0a 61 6c 69 61 73 65 73 20 66 6f 72 20  ome.aliases for 
64d0: 74 68 65 20 72 6f 77 69 64 2e 0a 54 68 65 20 41  the rowid..The A
64e0: 55 54 4f 49 4e 43 52 45 4d 45 4e 54 20 6b 65 79  UTOINCREMENT key
64f0: 77 6f 72 64 20 6f 6e 6c 79 20 77 6f 72 6b 73 20  word only works 
6500: 6f 6e 20 61 20 63 6f 6c 75 6d 6e 20 74 68 61 74  on a column that
6510: 20 69 73 20 61 6e 20 61 6c 69 61 73 0a 66 6f 72   is an alias.for
6520: 20 74 68 65 20 72 6f 77 69 64 2e 3c 2f 70 3e 0a   the rowid.</p>.
6530: 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23  ..<tcl>.########
6540: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6550: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6560: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6570: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6580: 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b  ######.Section {
6590: 43 52 45 41 54 45 20 54 52 49 47 47 45 52 7d 20  CREATE TRIGGER} 
65a0: 63 72 65 61 74 65 74 72 69 67 67 65 72 20 7b 7b  createtrigger {{
65b0: 43 52 45 41 54 45 20 54 52 49 47 47 45 52 7d 7d  CREATE TRIGGER}}
65c0: 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  ..BubbleDiagram 
65d0: 63 72 65 61 74 65 2d 74 72 69 67 67 65 72 2d 73  create-trigger-s
65e0: 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  tmt 1.</tcl>..<p
65f0: 3e 54 68 65 20 43 52 45 41 54 45 20 54 52 49 47  >The CREATE TRIG
6600: 47 45 52 20 73 74 61 74 65 6d 65 6e 74 20 69 73  GER statement is
6610: 20 75 73 65 64 20 74 6f 20 61 64 64 20 74 72 69   used to add tri
6620: 67 67 65 72 73 20 74 6f 20 74 68 65 20 0a 64 61  ggers to the .da
6630: 74 61 62 61 73 65 20 73 63 68 65 6d 61 2e 20 54  tabase schema. T
6640: 72 69 67 67 65 72 73 20 61 72 65 20 64 61 74 61  riggers are data
6650: 62 61 73 65 20 6f 70 65 72 61 74 69 6f 6e 73 20  base operations 
6660: 28 74 68 65 20 3c 69 3e 74 72 69 67 67 65 72 2d  (the <i>trigger-
6670: 61 63 74 69 6f 6e 3c 2f 69 3e 29 20 0a 74 68 61  action</i>) .tha
6680: 74 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61  t are automatica
6690: 6c 6c 79 20 70 65 72 66 6f 72 6d 65 64 20 77 68  lly performed wh
66a0: 65 6e 20 61 20 73 70 65 63 69 66 69 65 64 20 64  en a specified d
66b0: 61 74 61 62 61 73 65 20 65 76 65 6e 74 20 28 74  atabase event (t
66c0: 68 65 0a 3c 69 3e 64 61 74 61 62 61 73 65 2d 65  he.<i>database-e
66d0: 76 65 6e 74 3c 2f 69 3e 29 20 6f 63 63 75 72 73  vent</i>) occurs
66e0: 2e 20 20 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 74 72  .  </p>..<p>A tr
66f0: 69 67 67 65 72 20 6d 61 79 20 62 65 20 73 70 65  igger may be spe
6700: 63 69 66 69 65 64 20 74 6f 20 66 69 72 65 20 77  cified to fire w
6710: 68 65 6e 65 76 65 72 20 61 20 5b 44 45 4c 45 54  henever a [DELET
6720: 45 5d 2c 20 5b 49 4e 53 45 52 54 5d 2c 0a 6f 72  E], [INSERT],.or
6730: 20 5b 55 50 44 41 54 45 5d 20 6f 66 20 61 0a 70   [UPDATE] of a.p
6740: 61 72 74 69 63 75 6c 61 72 20 64 61 74 61 62 61  articular databa
6750: 73 65 20 74 61 62 6c 65 20 6f 63 63 75 72 73 2c  se table occurs,
6760: 20 6f 72 20 77 68 65 6e 65 76 65 72 20 61 6e 20   or whenever an 
6770: 5b 55 50 44 41 54 45 5d 20 6f 66 20 6f 6e 65 20  [UPDATE] of one 
6780: 6f 72 20 6d 6f 72 65 0a 73 70 65 63 69 66 69 65  or more.specifie
6790: 64 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 61 20 74  d columns of a t
67a0: 61 62 6c 65 20 61 72 65 20 75 70 64 61 74 65 64  able are updated
67b0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 74 20 74 68 69  .</p>..<p>At thi
67c0: 73 20 74 69 6d 65 20 53 51 4c 69 74 65 20 73 75  s time SQLite su
67d0: 70 70 6f 72 74 73 20 6f 6e 6c 79 20 46 4f 52 20  pports only FOR 
67e0: 45 41 43 48 20 52 4f 57 20 74 72 69 67 67 65 72  EACH ROW trigger
67f0: 73 2c 20 6e 6f 74 20 46 4f 52 20 45 41 43 48 0a  s, not FOR EACH.
6800: 53 54 41 54 45 4d 45 4e 54 20 74 72 69 67 67 65  STATEMENT trigge
6810: 72 73 2e 20 48 65 6e 63 65 20 65 78 70 6c 69 63  rs. Hence explic
6820: 69 74 6c 79 20 73 70 65 63 69 66 79 69 6e 67 20  itly specifying 
6830: 46 4f 52 20 45 41 43 48 20 52 4f 57 20 69 73 20  FOR EACH ROW is 
6840: 6f 70 74 69 6f 6e 61 6c 2e 20 20 46 4f 52 0a 45  optional.  FOR.E
6850: 41 43 48 20 52 4f 57 20 69 6d 70 6c 69 65 73 20  ACH ROW implies 
6860: 74 68 61 74 20 74 68 65 20 53 51 4c 20 73 74 61  that the SQL sta
6870: 74 65 6d 65 6e 74 73 20 73 70 65 63 69 66 69 65  tements specifie
6880: 64 20 61 73 20 3c 69 3e 74 72 69 67 67 65 72 2d  d as <i>trigger-
6890: 73 74 65 70 73 3c 2f 69 3e 20 0a 6d 61 79 20 62  steps</i> .may b
68a0: 65 20 65 78 65 63 75 74 65 64 20 28 64 65 70 65  e executed (depe
68b0: 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20 57 48 45  nding on the WHE
68c0: 4e 20 63 6c 61 75 73 65 29 20 66 6f 72 20 65 61  N clause) for ea
68d0: 63 68 20 64 61 74 61 62 61 73 65 20 72 6f 77 20  ch database row 
68e0: 62 65 69 6e 67 0a 69 6e 73 65 72 74 65 64 2c 20  being.inserted, 
68f0: 75 70 64 61 74 65 64 20 6f 72 20 64 65 6c 65 74  updated or delet
6900: 65 64 20 62 79 20 74 68 65 20 73 74 61 74 65 6d  ed by the statem
6910: 65 6e 74 20 63 61 75 73 69 6e 67 20 74 68 65 20  ent causing the 
6920: 74 72 69 67 67 65 72 20 74 6f 20 66 69 72 65 2e  trigger to fire.
6930: 3c 2f 70 3e 0a 0a 3c 70 3e 42 6f 74 68 20 74 68  </p>..<p>Both th
6940: 65 20 57 48 45 4e 20 63 6c 61 75 73 65 20 61 6e  e WHEN clause an
6950: 64 20 74 68 65 20 3c 69 3e 74 72 69 67 67 65 72  d the <i>trigger
6960: 2d 73 74 65 70 73 3c 2f 69 3e 20 6d 61 79 20 61  -steps</i> may a
6970: 63 63 65 73 73 20 65 6c 65 6d 65 6e 74 73 20 6f  ccess elements o
6980: 66 20 0a 74 68 65 20 72 6f 77 20 62 65 69 6e 67  f .the row being
6990: 20 69 6e 73 65 72 74 65 64 2c 20 64 65 6c 65 74   inserted, delet
69a0: 65 64 20 6f 72 20 75 70 64 61 74 65 64 20 75 73  ed or updated us
69b0: 69 6e 67 20 72 65 66 65 72 65 6e 63 65 73 20 6f  ing references o
69c0: 66 20 74 68 65 20 66 6f 72 6d 20 0a 22 4e 45 57  f the form ."NEW
69d0: 2e 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c  .<i>column-name<
69e0: 2f 69 3e 22 20 61 6e 64 20 22 4f 4c 44 2e 3c 69  /i>" and "OLD.<i
69f0: 3e 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e  >column-name</i>
6a00: 22 2c 20 77 68 65 72 65 0a 3c 69 3e 63 6f 6c 75  ", where.<i>colu
6a10: 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e 20 69 73 20 74  mn-name</i> is t
6a20: 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 63 6f 6c  he name of a col
6a30: 75 6d 6e 20 66 72 6f 6d 20 74 68 65 20 74 61 62  umn from the tab
6a40: 6c 65 20 74 68 61 74 20 74 68 65 20 74 72 69 67  le that the trig
6a50: 67 65 72 0a 69 73 20 61 73 73 6f 63 69 61 74 65  ger.is associate
6a60: 64 20 77 69 74 68 2e 20 4f 4c 44 20 61 6e 64 20  d with. OLD and 
6a70: 4e 45 57 20 72 65 66 65 72 65 6e 63 65 73 20 6d  NEW references m
6a80: 61 79 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20  ay only be used 
6a90: 69 6e 20 74 72 69 67 67 65 72 73 20 6f 6e 0a 3c  in triggers on.<
6aa0: 69 3e 74 72 69 67 67 65 72 2d 65 76 65 6e 74 3c  i>trigger-event<
6ab0: 2f 69 3e 73 20 66 6f 72 20 77 68 69 63 68 20 74  /i>s for which t
6ac0: 68 65 79 20 61 72 65 20 72 65 6c 65 76 61 6e 74  hey are relevant
6ad0: 2c 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 3c 2f 70  , as follows:</p
6ae0: 3e 0a 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65 72  >..<table border
6af0: 3d 30 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31  =0 cellpadding=1
6b00: 30 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  0>.<tr>.<td vali
6b10: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
6b20: 72 69 67 68 74 22 20 77 69 64 74 68 3d 31 32 30  right" width=120
6b30: 3e 3c 69 3e 49 4e 53 45 52 54 3c 2f 69 3e 3c 2f  ><i>INSERT</i></
6b40: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
6b50: 74 6f 70 22 3e 4e 45 57 20 72 65 66 65 72 65 6e  top">NEW referen
6b60: 63 65 73 20 61 72 65 20 76 61 6c 69 64 3c 2f 74  ces are valid</t
6b70: 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74  d>.</tr>.<tr>.<t
6b80: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61  d valign="top" a
6b90: 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 77 69 64  lign="right" wid
6ba0: 74 68 3d 31 32 30 3e 3c 69 3e 55 50 44 41 54 45  th=120><i>UPDATE
6bb0: 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  </i></td>.<td va
6bc0: 6c 69 67 6e 3d 22 74 6f 70 22 3e 4e 45 57 20 61  lign="top">NEW a
6bd0: 6e 64 20 4f 4c 44 20 72 65 66 65 72 65 6e 63 65  nd OLD reference
6be0: 73 20 61 72 65 20 76 61 6c 69 64 3c 2f 74 64 3e  s are valid</td>
6bf0: 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20  .</tr>.<tr>.<td 
6c00: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
6c10: 67 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74 68  gn="right" width
6c20: 3d 31 32 30 3e 3c 69 3e 44 45 4c 45 54 45 3c 2f  =120><i>DELETE</
6c30: 69 3e 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  i></td>.<td vali
6c40: 67 6e 3d 22 74 6f 70 22 3e 4f 4c 44 20 72 65 66  gn="top">OLD ref
6c50: 65 72 65 6e 63 65 73 20 61 72 65 20 76 61 6c 69  erences are vali
6c60: 64 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74  d</td>.</tr>.</t
6c70: 61 62 6c 65 3e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49  able>.</p>..<p>I
6c80: 66 20 61 20 57 48 45 4e 20 63 6c 61 75 73 65 20  f a WHEN clause 
6c90: 69 73 20 73 75 70 70 6c 69 65 64 2c 20 74 68 65  is supplied, the
6ca0: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20   SQL statements 
6cb0: 73 70 65 63 69 66 69 65 64 20 61 73 20 0a 3c 69  specified as .<i
6cc0: 3e 74 72 69 67 67 65 72 2d 73 74 65 70 73 3c 2f  >trigger-steps</
6cd0: 69 3e 20 61 72 65 20 6f 6e 6c 79 20 65 78 65 63  i> are only exec
6ce0: 75 74 65 64 20 66 6f 72 20 72 6f 77 73 20 66 6f  uted for rows fo
6cf0: 72 20 77 68 69 63 68 20 74 68 65 20 57 48 45 4e  r which the WHEN
6d00: 0a 63 6c 61 75 73 65 20 69 73 20 74 72 75 65 2e  .clause is true.
6d10: 20 49 66 20 6e 6f 20 57 48 45 4e 20 63 6c 61 75   If no WHEN clau
6d20: 73 65 20 69 73 20 73 75 70 70 6c 69 65 64 2c 20  se is supplied, 
6d30: 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  the SQL statemen
6d40: 74 73 0a 61 72 65 20 65 78 65 63 75 74 65 64 20  ts.are executed 
6d50: 66 6f 72 20 61 6c 6c 20 72 6f 77 73 2e 3c 2f 70  for all rows.</p
6d60: 3e 0a 0a 3c 70 3e 54 68 65 20 73 70 65 63 69 66  >..<p>The specif
6d70: 69 65 64 20 3c 69 3e 74 72 69 67 67 65 72 2d 74  ied <i>trigger-t
6d80: 69 6d 65 3c 2f 69 3e 20 64 65 74 65 72 6d 69 6e  ime</i> determin
6d90: 65 73 20 77 68 65 6e 20 74 68 65 20 3c 69 3e 74  es when the <i>t
6da0: 72 69 67 67 65 72 2d 73 74 65 70 73 3c 2f 69 3e  rigger-steps</i>
6db0: 0a 77 69 6c 6c 20 62 65 20 65 78 65 63 75 74 65  .will be execute
6dc0: 64 20 72 65 6c 61 74 69 76 65 20 74 6f 20 74 68  d relative to th
6dd0: 65 20 69 6e 73 65 72 74 69 6f 6e 2c 20 6d 6f 64  e insertion, mod
6de0: 69 66 69 63 61 74 69 6f 6e 20 6f 72 20 72 65 6d  ification or rem
6df0: 6f 76 61 6c 20 6f 66 20 74 68 65 0a 61 73 73 6f  oval of the.asso
6e00: 63 69 61 74 65 64 20 72 6f 77 2e 3c 2f 70 3e 0a  ciated row.</p>.
6e10: 0a 3c 70 3e 41 6e 20 5b 4f 4e 20 43 4f 4e 46 4c  .<p>An [ON CONFL
6e20: 49 43 54 5d 20 63 6c 61 75 73 65 20 6d 61 79 20  ICT] clause may 
6e30: 62 65 20 73 70 65 63 69 66 69 65 64 20 61 73 20  be specified as 
6e40: 70 61 72 74 20 6f 66 20 61 6e 20 5b 55 50 44 41  part of an [UPDA
6e50: 54 45 5d 20 6f 72 20 5b 49 4e 53 45 52 54 5d 0a  TE] or [INSERT].
6e60: 3c 69 3e 74 72 69 67 67 65 72 2d 73 74 65 70 3c  <i>trigger-step<
6e70: 2f 69 3e 2e 20 48 6f 77 65 76 65 72 20 69 66 20  /i>. However if 
6e80: 61 6e 20 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d  an [ON CONFLICT]
6e90: 20 63 6c 61 75 73 65 20 69 73 20 73 70 65 63 69   clause is speci
6ea0: 66 69 65 64 20 61 73 20 70 61 72 74 20 6f 66 20  fied as part of 
6eb0: 0a 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 63  .the statement c
6ec0: 61 75 73 69 6e 67 20 74 68 65 20 74 72 69 67 67  ausing the trigg
6ed0: 65 72 20 74 6f 20 66 69 72 65 2c 20 74 68 65 6e  er to fire, then
6ee0: 20 74 68 69 73 20 63 6f 6e 66 6c 69 63 74 20 68   this conflict h
6ef0: 61 6e 64 6c 69 6e 67 0a 70 6f 6c 69 63 79 20 69  andling.policy i
6f00: 73 20 75 73 65 64 20 69 6e 73 74 65 61 64 2e 3c  s used instead.<
6f10: 2f 70 3e 0a 0a 3c 70 3e 54 72 69 67 67 65 72 73  /p>..<p>Triggers
6f20: 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c   are automatical
6f30: 6c 79 20 64 72 6f 70 70 65 64 20 77 68 65 6e 20  ly dropped when 
6f40: 74 68 65 20 74 61 62 6c 65 20 74 68 61 74 20 74  the table that t
6f50: 68 65 79 20 61 72 65 20 0a 61 73 73 6f 63 69 61  hey are .associa
6f60: 74 65 64 20 77 69 74 68 20 69 73 20 64 72 6f 70  ted with is drop
6f70: 70 65 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68  ped.</p>..<tcl>h
6f80: 64 5f 66 72 61 67 6d 65 6e 74 20 69 6e 73 74 65  d_fragment inste
6f90: 61 64 5f 6f 66 5f 74 72 69 67 67 65 72 20 7b 49  ad_of_trigger {I
6fa0: 4e 53 54 45 41 44 20 4f 46 7d 20 7b 49 4e 53 54  NSTEAD OF} {INST
6fb0: 45 41 44 20 4f 46 20 74 72 69 67 67 65 72 7d 3c  EAD OF trigger}<
6fc0: 2f 74 63 6c 3e 0a 3c 70 3e 54 72 69 67 67 65 72  /tcl>.<p>Trigger
6fd0: 73 20 6d 61 79 20 62 65 20 63 72 65 61 74 65 64  s may be created
6fe0: 20 6f 6e 20 5b 76 69 65 77 73 5d 2c 20 61 73 20   on [views], as 
6ff0: 77 65 6c 6c 20 61 73 20 6f 72 64 69 6e 61 72 79  well as ordinary
7000: 20 74 61 62 6c 65 73 2c 20 62 79 0a 73 70 65 63   tables, by.spec
7010: 69 66 79 69 6e 67 20 49 4e 53 54 45 41 44 20 4f  ifying INSTEAD O
7020: 46 20 69 6e 20 74 68 65 20 43 52 45 41 54 45 20  F in the CREATE 
7030: 54 52 49 47 47 45 52 20 73 74 61 74 65 6d 65 6e  TRIGGER statemen
7040: 74 2e 20 0a 49 66 20 6f 6e 65 20 6f 72 20 6d 6f  t. .If one or mo
7050: 72 65 20 4f 4e 20 49 4e 53 45 52 54 2c 20 4f 4e  re ON INSERT, ON
7060: 20 44 45 4c 45 54 45 0a 6f 72 20 4f 4e 20 55 50   DELETE.or ON UP
7070: 44 41 54 45 20 74 72 69 67 67 65 72 73 20 61 72  DATE triggers ar
7080: 65 20 64 65 66 69 6e 65 64 20 6f 6e 20 61 20 76  e defined on a v
7090: 69 65 77 2c 20 74 68 65 6e 20 69 74 20 69 73 20  iew, then it is 
70a0: 6e 6f 74 20 61 6e 0a 65 72 72 6f 72 20 74 6f 20  not an.error to 
70b0: 65 78 65 63 75 74 65 20 61 6e 20 49 4e 53 45 52  execute an INSER
70c0: 54 2c 20 44 45 4c 45 54 45 20 6f 72 20 55 50 44  T, DELETE or UPD
70d0: 41 54 45 20 73 74 61 74 65 6d 65 6e 74 20 6f 6e  ATE statement on
70e0: 20 74 68 65 20 76 69 65 77 2c 20 0a 72 65 73 70   the view, .resp
70f0: 65 63 74 69 76 65 6c 79 2e 20 54 68 65 72 65 61  ectively. Therea
7100: 66 74 65 72 2c 0a 65 78 65 63 75 74 69 6e 67 20  fter,.executing 
7110: 61 6e 20 49 4e 53 45 52 54 2c 20 44 45 4c 45 54  an INSERT, DELET
7120: 45 20 6f 72 20 55 50 44 41 54 45 20 6f 6e 20 74  E or UPDATE on t
7130: 68 65 20 76 69 65 77 20 63 61 75 73 65 73 20 74  he view causes t
7140: 68 65 20 61 73 73 6f 63 69 61 74 65 64 0a 74 72  he associated.tr
7150: 69 67 67 65 72 73 20 74 6f 20 66 69 72 65 2e 20  iggers to fire. 
7160: 54 68 65 20 72 65 61 6c 20 74 61 62 6c 65 73 20  The real tables 
7170: 75 6e 64 65 72 6c 79 69 6e 67 20 74 68 65 20 76  underlying the v
7180: 69 65 77 20 61 72 65 20 6e 6f 74 20 6d 6f 64 69  iew are not modi
7190: 66 69 65 64 0a 28 65 78 63 65 70 74 20 70 6f 73  fied.(except pos
71a0: 73 69 62 6c 79 20 65 78 70 6c 69 63 69 74 6c 79  sibly explicitly
71b0: 2c 20 62 79 20 61 20 74 72 69 67 67 65 72 20 70  , by a trigger p
71c0: 72 6f 67 72 61 6d 29 2e 3c 2f 70 3e 0a 0a 3c 70  rogram).</p>..<p
71d0: 3e 3c 62 3e 45 78 61 6d 70 6c 65 3a 3c 2f 62 3e  ><b>Example:</b>
71e0: 3c 2f 70 3e 0a 0a 3c 70 3e 41 73 73 75 6d 69 6e  </p>..<p>Assumin
71f0: 67 20 74 68 61 74 20 63 75 73 74 6f 6d 65 72 20  g that customer 
7200: 72 65 63 6f 72 64 73 20 61 72 65 20 73 74 6f 72  records are stor
7210: 65 64 20 69 6e 20 74 68 65 20 22 63 75 73 74 6f  ed in the "custo
7220: 6d 65 72 73 22 20 74 61 62 6c 65 2c 20 61 6e 64  mers" table, and
7230: 0a 74 68 61 74 20 6f 72 64 65 72 20 72 65 63 6f  .that order reco
7240: 72 64 73 20 61 72 65 20 73 74 6f 72 65 64 20 69  rds are stored i
7250: 6e 20 74 68 65 20 22 6f 72 64 65 72 73 22 20 74  n the "orders" t
7260: 61 62 6c 65 2c 20 74 68 65 20 66 6f 6c 6c 6f 77  able, the follow
7270: 69 6e 67 20 74 72 69 67 67 65 72 0a 65 6e 73 75  ing trigger.ensu
7280: 72 65 73 20 74 68 61 74 20 61 6c 6c 20 61 73 73  res that all ass
7290: 6f 63 69 61 74 65 64 20 6f 72 64 65 72 73 20 61  ociated orders a
72a0: 72 65 20 72 65 64 69 72 65 63 74 65 64 20 77 68  re redirected wh
72b0: 65 6e 20 61 20 63 75 73 74 6f 6d 65 72 20 63 68  en a customer ch
72c0: 61 6e 67 65 73 0a 68 69 73 20 6f 72 20 68 65 72  anges.his or her
72d0: 20 61 64 64 72 65 73 73 3a 3c 2f 70 3e 0a 0a 3c   address:</p>..<
72e0: 74 63 6c 3e 45 78 61 6d 70 6c 65 20 7b 0a 43 52  tcl>Example {.CR
72f0: 45 41 54 45 20 54 52 49 47 47 45 52 20 75 70 64  EATE TRIGGER upd
7300: 61 74 65 5f 63 75 73 74 6f 6d 65 72 5f 61 64 64  ate_customer_add
7310: 72 65 73 73 20 55 50 44 41 54 45 20 4f 46 20 61  ress UPDATE OF a
7320: 64 64 72 65 73 73 20 4f 4e 20 63 75 73 74 6f 6d  ddress ON custom
7330: 65 72 73 20 0a 20 20 42 45 47 49 4e 0a 20 20 20  ers .  BEGIN.   
7340: 20 55 50 44 41 54 45 20 6f 72 64 65 72 73 20 53   UPDATE orders S
7350: 45 54 20 61 64 64 72 65 73 73 20 3d 20 6e 65 77  ET address = new
7360: 2e 61 64 64 72 65 73 73 20 57 48 45 52 45 20 63  .address WHERE c
7370: 75 73 74 6f 6d 65 72 5f 6e 61 6d 65 20 3d 20 6f  ustomer_name = o
7380: 6c 64 2e 6e 61 6d 65 3b 0a 20 20 45 4e 44 3b 0a  ld.name;.  END;.
7390: 7d 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 57 69 74 68  }</tcl>..<p>With
73a0: 20 74 68 69 73 20 74 72 69 67 67 65 72 20 69 6e   this trigger in
73b0: 73 74 61 6c 6c 65 64 2c 20 65 78 65 63 75 74 69  stalled, executi
73c0: 6e 67 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74  ng the statement
73d0: 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 45 78 61 6d  :</p>..<tcl>Exam
73e0: 70 6c 65 20 7b 0a 55 50 44 41 54 45 20 63 75 73  ple {.UPDATE cus
73f0: 74 6f 6d 65 72 73 20 53 45 54 20 61 64 64 72 65  tomers SET addre
7400: 73 73 20 3d 20 27 31 20 4d 61 69 6e 20 53 74 2e  ss = '1 Main St.
7410: 27 20 57 48 45 52 45 20 6e 61 6d 65 20 3d 20 27  ' WHERE name = '
7420: 4a 61 63 6b 20 4a 6f 6e 65 73 27 3b 0a 7d 3c 2f  Jack Jones';.}</
7430: 74 63 6c 3e 0a 0a 3c 70 3e 63 61 75 73 65 73 20  tcl>..<p>causes 
7440: 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 6f  the following to
7450: 20 62 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c   be automaticall
7460: 79 20 65 78 65 63 75 74 65 64 3a 3c 2f 70 3e 0a  y executed:</p>.
7470: 0a 3c 74 63 6c 3e 45 78 61 6d 70 6c 65 20 7b 0a  .<tcl>Example {.
7480: 55 50 44 41 54 45 20 6f 72 64 65 72 73 20 53 45  UPDATE orders SE
7490: 54 20 61 64 64 72 65 73 73 20 3d 20 27 31 20 4d  T address = '1 M
74a0: 61 69 6e 20 53 74 2e 27 20 57 48 45 52 45 20 63  ain St.' WHERE c
74b0: 75 73 74 6f 6d 65 72 5f 6e 61 6d 65 20 3d 20 27  ustomer_name = '
74c0: 4a 61 63 6b 20 4a 6f 6e 65 73 27 3b 0a 7d 3c 2f  Jack Jones';.}</
74d0: 74 63 6c 3e 0a 0a 3c 70 3e 4e 6f 74 65 20 74 68  tcl>..<p>Note th
74e0: 61 74 20 63 75 72 72 65 6e 74 6c 79 2c 20 74 72  at currently, tr
74f0: 69 67 67 65 72 73 20 6d 61 79 20 62 65 68 61 76  iggers may behav
7500: 65 20 6f 64 64 6c 79 20 77 68 65 6e 20 63 72 65  e oddly when cre
7510: 61 74 65 64 20 6f 6e 20 74 61 62 6c 65 73 0a 20  ated on tables. 
7520: 20 77 69 74 68 20 5b 49 4e 54 45 47 45 52 20 50   with [INTEGER P
7530: 52 49 4d 41 52 59 20 4b 45 59 5d 20 66 69 65 6c  RIMARY KEY] fiel
7540: 64 73 2e 20 49 66 20 61 20 42 45 46 4f 52 45 20  ds. If a BEFORE 
7550: 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 20  trigger program 
7560: 6d 6f 64 69 66 69 65 73 20 74 68 65 20 0a 20 20  modifies the .  
7570: 5b 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59  [INTEGER PRIMARY
7580: 20 4b 45 59 5d 20 66 69 65 6c 64 20 6f 66 20 61   KEY] field of a
7590: 20 72 6f 77 20 74 68 61 74 20 77 69 6c 6c 20 62   row that will b
75a0: 65 20 73 75 62 73 65 71 75 65 6e 74 6c 79 20 75  e subsequently u
75b0: 70 64 61 74 65 64 20 62 79 20 74 68 65 0a 20 20  pdated by the.  
75c0: 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20 63  statement that c
75d0: 61 75 73 65 73 20 74 68 65 20 74 72 69 67 67 65  auses the trigge
75e0: 72 20 74 6f 20 66 69 72 65 2c 20 74 68 65 6e 20  r to fire, then 
75f0: 74 68 65 20 75 70 64 61 74 65 20 6d 61 79 20 6e  the update may n
7600: 6f 74 20 6f 63 63 75 72 2e 20 0a 20 20 54 68 65  ot occur. .  The
7610: 20 77 6f 72 6b 61 72 6f 75 6e 64 20 69 73 20 74   workaround is t
7620: 6f 20 64 65 63 6c 61 72 65 20 74 68 65 20 74 61  o declare the ta
7630: 62 6c 65 20 77 69 74 68 20 61 20 50 52 49 4d 41  ble with a PRIMA
7640: 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 20 69 6e  RY KEY column in
7650: 73 74 65 61 64 0a 20 20 6f 66 20 61 6e 20 5b 49  stead.  of an [I
7660: 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
7670: 45 59 5d 20 63 6f 6c 75 6d 6e 2e 3c 2f 70 3e 0a  EY] column.</p>.
7680: 0a 3c 70 3e 41 20 73 70 65 63 69 61 6c 20 53 51  .<p>A special SQ
7690: 4c 20 66 75 6e 63 74 69 6f 6e 20 52 41 49 53 45  L function RAISE
76a0: 28 29 20 6d 61 79 20 62 65 20 75 73 65 64 20 77  () may be used w
76b0: 69 74 68 69 6e 20 61 20 74 72 69 67 67 65 72 2d  ithin a trigger-
76c0: 70 72 6f 67 72 61 6d 2c 0a 77 69 74 68 20 74 68  program,.with th
76d0: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 79 6e 74  e following synt
76e0: 61 78 3c 2f 70 3e 20 0a 0a 3c 74 63 6c 3e 42 75  ax</p> ..<tcl>Bu
76f0: 62 62 6c 65 44 69 61 67 72 61 6d 20 72 61 69 73  bbleDiagram rais
7700: 65 2d 66 75 6e 63 74 69 6f 6e 3c 2f 74 63 6c 3e  e-function</tcl>
7710: 0a 0a 3c 70 3e 57 68 65 6e 20 6f 6e 65 20 6f 66  ..<p>When one of
7720: 20 74 68 65 20 66 69 72 73 74 20 74 68 72 65 65   the first three
7730: 20 66 6f 72 6d 73 20 69 73 20 63 61 6c 6c 65 64   forms is called
7740: 20 64 75 72 69 6e 67 20 74 72 69 67 67 65 72 2d   during trigger-
7750: 70 72 6f 67 72 61 6d 0a 65 78 65 63 75 74 69 6f  program.executio
7760: 6e 2c 20 74 68 65 20 73 70 65 63 69 66 69 65 64  n, the specified
7770: 20 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d 20 70   [ON CONFLICT] p
7780: 72 6f 63 65 73 73 69 6e 67 20 69 73 20 70 65 72  rocessing is per
7790: 66 6f 72 6d 65 64 0a 28 65 69 74 68 65 72 20 41  formed.(either A
77a0: 42 4f 52 54 2c 20 46 41 49 4c 20 6f 72 20 52 4f  BORT, FAIL or RO
77b0: 4c 4c 42 41 43 4b 29 20 61 6e 64 20 74 68 65 20  LLBACK) and the 
77c0: 63 75 72 72 65 6e 74 20 71 75 65 72 79 20 74 65  current query te
77d0: 72 6d 69 6e 61 74 65 73 2e 0a 41 6e 20 65 72 72  rminates..An err
77e0: 6f 72 20 63 6f 64 65 20 6f 66 20 5b 53 51 4c 49  or code of [SQLI
77f0: 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5d 20 69  TE_CONSTRAINT] i
7800: 73 20 72 65 74 75 72 6e 65 64 20 74 6f 20 74 68  s returned to th
7810: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 2c 0a 61  e application,.a
7820: 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20 73 70  long with the sp
7830: 65 63 69 66 69 65 64 20 65 72 72 6f 72 20 6d 65  ecified error me
7840: 73 73 61 67 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57  ssage.</p>..<p>W
7850: 68 65 6e 20 52 41 49 53 45 28 49 47 4e 4f 52 45  hen RAISE(IGNORE
7860: 29 20 69 73 20 63 61 6c 6c 65 64 2c 20 74 68 65  ) is called, the
7870: 20 72 65 6d 61 69 6e 64 65 72 20 6f 66 20 74 68   remainder of th
7880: 65 20 63 75 72 72 65 6e 74 20 74 72 69 67 67 65  e current trigge
7890: 72 20 70 72 6f 67 72 61 6d 2c 0a 74 68 65 20 73  r program,.the s
78a0: 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20 63 61  tatement that ca
78b0: 75 73 65 64 20 74 68 65 20 74 72 69 67 67 65 72  used the trigger
78c0: 20 70 72 6f 67 72 61 6d 20 74 6f 20 65 78 65 63   program to exec
78d0: 75 74 65 20 61 6e 64 20 61 6e 79 20 73 75 62 73  ute and any subs
78e0: 65 71 75 65 6e 74 0a 74 72 69 67 67 65 72 20 70  equent.trigger p
78f0: 72 6f 67 72 61 6d 73 20 74 68 61 74 20 77 6f 75  rograms that wou
7900: 6c 64 20 6f 66 20 62 65 65 6e 20 65 78 65 63 75  ld of been execu
7910: 74 65 64 20 61 72 65 20 61 62 61 6e 64 6f 6e 65  ted are abandone
7920: 64 2e 20 4e 6f 20 64 61 74 61 62 61 73 65 0a 63  d. No database.c
7930: 68 61 6e 67 65 73 20 61 72 65 20 72 6f 6c 6c 65  hanges are rolle
7940: 64 20 62 61 63 6b 2e 20 20 49 66 20 74 68 65 20  d back.  If the 
7950: 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20 63  statement that c
7960: 61 75 73 65 64 20 74 68 65 20 74 72 69 67 67 65  aused the trigge
7970: 72 20 70 72 6f 67 72 61 6d 0a 74 6f 20 65 78 65  r program.to exe
7980: 63 75 74 65 20 69 73 20 69 74 73 65 6c 66 20 70  cute is itself p
7990: 61 72 74 20 6f 66 20 61 20 74 72 69 67 67 65 72  art of a trigger
79a0: 20 70 72 6f 67 72 61 6d 2c 20 74 68 65 6e 20 74   program, then t
79b0: 68 61 74 20 74 72 69 67 67 65 72 20 70 72 6f 67  hat trigger prog
79c0: 72 61 6d 0a 72 65 73 75 6d 65 73 20 65 78 65 63  ram.resumes exec
79d0: 75 74 69 6f 6e 20 61 74 20 74 68 65 20 62 65 67  ution at the beg
79e0: 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20 6e 65  inning of the ne
79f0: 78 74 20 73 74 65 70 2e 0a 3c 2f 70 3e 0a 0a 3c  xt step..</p>..<
7a00: 70 3e 54 72 69 67 67 65 72 73 20 61 72 65 20 72  p>Triggers are r
7a10: 65 6d 6f 76 65 64 20 75 73 69 6e 67 20 74 68 65  emoved using the
7a20: 20 5b 44 52 4f 50 20 54 52 49 47 47 45 52 5d 20   [DROP TRIGGER] 
7a30: 73 74 61 74 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a  statement.</p>..
7a40: 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23  .<tcl>.#########
7a50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7a60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7a70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7a80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7a90: 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b  ######.Section {
7aa0: 43 52 45 41 54 45 20 56 49 45 57 7d 20 7b 63 72  CREATE VIEW} {cr
7ab0: 65 61 74 65 76 69 65 77 7d 20 7b 7b 43 52 45 41  eateview} {{CREA
7ac0: 54 45 20 56 49 45 57 7d 20 76 69 65 77 20 76 69  TE VIEW} view vi
7ad0: 65 77 73 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67  ews}..BubbleDiag
7ae0: 72 61 6d 20 63 72 65 61 74 65 2d 76 69 65 77 2d  ram create-view-
7af0: 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c  stmt 1.</tcl>..<
7b00: 70 3e 54 68 65 20 43 52 45 41 54 45 20 56 49 45  p>The CREATE VIE
7b10: 57 20 63 6f 6d 6d 61 6e 64 20 61 73 73 69 67 6e  W command assign
7b20: 73 20 61 20 6e 61 6d 65 20 74 6f 20 61 20 70 72  s a name to a pr
7b30: 65 2d 70 61 63 6b 61 67 65 64 20 0a 3c 61 20 68  e-packaged .<a h
7b40: 72 65 66 3d 22 6c 61 6e 67 5f 73 65 6c 65 63 74  ref="lang_select
7b50: 2e 68 74 6d 6c 22 3e 53 45 4c 45 43 54 3c 2f 61  .html">SELECT</a
7b60: 3e 0a 73 74 61 74 65 6d 65 6e 74 2e 20 20 4f 6e  >.statement.  On
7b70: 63 65 20 74 68 65 20 76 69 65 77 20 69 73 20 63  ce the view is c
7b80: 72 65 61 74 65 64 2c 20 69 74 20 63 61 6e 20 62  reated, it can b
7b90: 65 20 75 73 65 64 20 69 6e 20 74 68 65 20 46 52  e used in the FR
7ba0: 4f 4d 20 63 6c 61 75 73 65 0a 6f 66 20 61 6e 6f  OM clause.of ano
7bb0: 74 68 65 72 20 5b 53 45 4c 45 43 54 5d 20 69 6e  ther [SELECT] in
7bc0: 20 70 6c 61 63 65 20 6f 66 20 61 20 74 61 62 6c   place of a tabl
7bd0: 65 20 6e 61 6d 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70  e name..</p>..<p
7be0: 3e 49 66 20 74 68 65 20 22 54 45 4d 50 22 20 6f  >If the "TEMP" o
7bf0: 72 20 22 54 45 4d 50 4f 52 41 52 59 22 20 6b 65  r "TEMPORARY" ke
7c00: 79 77 6f 72 64 20 6f 63 63 75 72 73 20 69 6e 20  yword occurs in 
7c10: 62 65 74 77 65 65 6e 20 22 43 52 45 41 54 45 22  between "CREATE"
7c20: 0a 61 6e 64 20 22 56 49 45 57 22 20 74 68 65 6e  .and "VIEW" then
7c30: 20 74 68 65 20 76 69 65 77 20 74 68 61 74 20 69   the view that i
7c40: 73 20 63 72 65 61 74 65 64 20 69 73 20 6f 6e 6c  s created is onl
7c50: 79 20 76 69 73 69 62 6c 65 20 74 6f 20 74 68 65  y visible to the
7c60: 0a 70 72 6f 63 65 73 73 20 74 68 61 74 20 6f 70  .process that op
7c70: 65 6e 65 64 20 74 68 65 20 64 61 74 61 62 61 73  ened the databas
7c80: 65 20 61 6e 64 20 69 73 20 61 75 74 6f 6d 61 74  e and is automat
7c90: 69 63 61 6c 6c 79 20 64 65 6c 65 74 65 64 20 77  ically deleted w
7ca0: 68 65 6e 0a 74 68 65 20 64 61 74 61 62 61 73 65  hen.the database
7cb0: 20 69 73 20 63 6c 6f 73 65 64 2e 3c 2f 70 3e 0a   is closed.</p>.
7cc0: 0a 3c 70 3e 20 49 66 20 61 20 26 6c 74 3b 64 61  .<p> If a &lt;da
7cd0: 74 61 62 61 73 65 2d 6e 61 6d 65 26 67 74 3b 20  tabase-name&gt; 
7ce0: 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 74 68  is specified, th
7cf0: 65 6e 20 74 68 65 20 76 69 65 77 20 69 73 20 63  en the view is c
7d00: 72 65 61 74 65 64 20 69 6e 20 0a 74 68 65 20 6e  reated in .the n
7d10: 61 6d 65 64 20 64 61 74 61 62 61 73 65 2e 20 49  amed database. I
7d20: 74 20 69 73 20 61 6e 20 65 72 72 6f 72 20 74 6f  t is an error to
7d30: 20 73 70 65 63 69 66 79 20 62 6f 74 68 20 61 20   specify both a 
7d40: 26 6c 74 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d  &lt;database-nam
7d50: 65 26 67 74 3b 0a 61 6e 64 20 74 68 65 20 54 45  e&gt;.and the TE
7d60: 4d 50 20 6b 65 79 77 6f 72 64 2c 20 75 6e 6c 65  MP keyword, unle
7d70: 73 73 20 74 68 65 20 26 6c 74 3b 64 61 74 61 62  ss the &lt;datab
7d80: 61 73 65 2d 6e 61 6d 65 26 67 74 3b 20 69 73 20  ase-name&gt; is 
7d90: 22 74 65 6d 70 22 2e 20 49 66 20 6e 6f 0a 64 61  "temp". If no.da
7da0: 74 61 62 61 73 65 20 6e 61 6d 65 20 69 73 20 73  tabase name is s
7db0: 70 65 63 69 66 69 65 64 2c 20 61 6e 64 20 74 68  pecified, and th
7dc0: 65 20 54 45 4d 50 20 6b 65 79 77 6f 72 64 20 69  e TEMP keyword i
7dd0: 73 20 6e 6f 74 20 70 72 65 73 65 6e 74 2c 0a 74  s not present,.t
7de0: 68 65 20 74 61 62 6c 65 20 69 73 20 63 72 65 61  he table is crea
7df0: 74 65 64 20 69 6e 20 74 68 65 20 6d 61 69 6e 20  ted in the main 
7e00: 64 61 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c  database.</p>..<
7e10: 70 3e 59 6f 75 20 63 61 6e 6e 6f 74 20 5b 44 45  p>You cannot [DE
7e20: 4c 45 54 45 5d 2c 20 5b 49 4e 53 45 52 54 5d 2c  LETE], [INSERT],
7e30: 20 6f 72 20 5b 55 50 44 41 54 45 5d 20 61 20 76   or [UPDATE] a v
7e40: 69 65 77 2e 20 20 56 69 65 77 73 20 61 72 65 20  iew.  Views are 
7e50: 72 65 61 64 2d 6f 6e 6c 79 20 0a 69 6e 20 53 51  read-only .in SQ
7e60: 4c 69 74 65 2e 20 20 48 6f 77 65 76 65 72 2c 20  Lite.  However, 
7e70: 69 6e 20 6d 61 6e 79 20 63 61 73 65 73 20 79 6f  in many cases yo
7e80: 75 20 63 61 6e 20 75 73 65 20 61 6e 0a 5b 49 4e  u can use an.[IN
7e90: 53 54 45 41 44 20 4f 46 20 74 72 69 67 67 65 72  STEAD OF trigger
7ea0: 5d 20 6f 6e 20 74 68 65 20 76 69 65 77 20 74 6f  ] on the view to
7eb0: 20 61 63 63 6f 6d 70 6c 69 73 68 20 0a 74 68 65   accomplish .the
7ec0: 20 73 61 6d 65 20 74 68 69 6e 67 2e 20 20 56 69   same thing.  Vi
7ed0: 65 77 73 20 61 72 65 20 72 65 6d 6f 76 65 64 20  ews are removed 
7ee0: 0a 77 69 74 68 20 74 68 65 20 5b 44 52 4f 50 20  .with the [DROP 
7ef0: 56 49 45 57 5d 20 63 6f 6d 6d 61 6e 64 2e 3c 2f  VIEW] command.</
7f00: 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  p>..<tcl>.######
7f10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7f20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7f30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7f40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7f50: 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
7f60: 20 7b 43 52 45 41 54 45 20 56 49 52 54 55 41 4c   {CREATE VIRTUAL
7f70: 20 54 41 42 4c 45 7d 20 7b 63 72 65 61 74 65 76   TABLE} {createv
7f80: 74 61 62 7d 20 7b 7b 43 52 45 41 54 45 20 56 49  tab} {{CREATE VI
7f90: 52 54 55 41 4c 5f 54 41 42 4c 45 7d 7d 0a 0a 42  RTUAL_TABLE}}..B
7fa0: 75 62 62 6c 65 44 69 61 67 72 61 6d 20 63 72 65  ubbleDiagram cre
7fb0: 61 74 65 2d 76 69 72 74 75 61 6c 2d 74 61 62 6c  ate-virtual-tabl
7fc0: 65 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a  e-stmt 1.</tcl>.
7fd0: 0a 3c 70 3e 41 20 76 69 72 74 75 61 6c 20 74 61  .<p>A virtual ta
7fe0: 62 6c 65 20 69 73 20 61 6e 20 69 6e 74 65 72 66  ble is an interf
7ff0: 61 63 65 20 74 6f 20 61 6e 20 65 78 74 65 72 6e  ace to an extern
8000: 61 6c 20 73 74 6f 72 61 67 65 20 6f 72 20 63 6f  al storage or co
8010: 6d 70 75 74 61 74 69 6f 6e 0a 65 6e 67 69 6e 65  mputation.engine
8020: 20 74 68 61 74 20 61 70 70 65 61 72 73 20 74 6f   that appears to
8030: 20 62 65 20 61 20 74 61 62 6c 65 20 62 75 74 20   be a table but 
8040: 64 6f 65 73 20 6e 6f 74 20 61 63 74 75 61 6c 6c  does not actuall
8050: 79 20 73 74 6f 72 65 20 69 6e 66 6f 72 6d 61 74  y store informat
8060: 69 6f 6e 0a 69 6e 20 74 68 65 20 64 61 74 61 62  ion.in the datab
8070: 61 73 65 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c  ase file.</p>..<
8080: 70 3e 49 6e 20 67 65 6e 65 72 61 6c 2c 20 79 6f  p>In general, yo
8090: 75 20 63 61 6e 20 64 6f 20 61 6e 79 74 68 69 6e  u can do anythin
80a0: 67 20 77 69 74 68 20 61 20 76 69 72 74 75 61 6c  g with a virtual
80b0: 20 74 61 62 6c 65 20 74 68 61 74 20 63 61 6e 20   table that can 
80c0: 62 65 20 64 6f 6e 65 0a 77 69 74 68 20 61 6e 20  be done.with an 
80d0: 6f 72 64 69 6e 61 72 79 20 74 61 62 6c 65 2c 20  ordinary table, 
80e0: 65 78 63 65 70 74 20 74 68 61 74 20 79 6f 75 20  except that you 
80f0: 63 61 6e 6e 6f 74 20 63 72 65 61 74 65 20 69 6e  cannot create in
8100: 64 69 63 65 73 20 6f 72 20 74 72 69 67 67 65 72  dices or trigger
8110: 73 20 6f 6e 20 61 0a 76 69 72 74 75 61 6c 20 74  s on a.virtual t
8120: 61 62 6c 65 2e 20 20 53 6f 6d 65 20 76 69 72 74  able.  Some virt
8130: 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d  ual table implem
8140: 65 6e 74 61 74 69 6f 6e 73 20 6d 69 67 68 74 20  entations might 
8150: 69 6d 70 6f 73 65 20 61 64 64 69 74 69 6f 6e 61  impose additiona
8160: 6c 0a 72 65 73 74 72 69 63 74 69 6f 6e 73 2e 20  l.restrictions. 
8170: 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 6d 61   For example, ma
8180: 6e 79 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  ny virtual table
8190: 73 20 61 72 65 20 72 65 61 64 2d 6f 6e 6c 79 2e  s are read-only.
81a0: 0a 56 69 72 74 75 61 6c 20 74 61 62 6c 65 73 20  .Virtual tables 
81b0: 63 61 6e 6e 6f 74 20 62 65 20 75 73 65 64 20 69  cannot be used i
81c0: 6e 0a 5b 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c  n.[sqlite3_enabl
81d0: 65 5f 73 68 61 72 65 64 5f 63 61 63 68 65 20 7c  e_shared_cache |
81e0: 20 73 68 61 72 65 64 20 63 61 63 68 65 20 6d 6f   shared cache mo
81f0: 64 65 5d 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  de].</p>..<p>The
8200: 20 26 6c 74 3b 6d 6f 64 75 6c 65 2d 6e 61 6d 65   &lt;module-name
8210: 26 67 74 3b 20 69 73 20 74 68 65 20 6e 61 6d 65  &gt; is the name
8220: 20 6f 66 20 61 6e 20 6f 62 6a 65 63 74 20 74 68   of an object th
8230: 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73 0a 74 68  at implements.th
8240: 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  e virtual table.
8250: 20 20 54 68 65 20 26 6c 74 3b 6d 6f 64 75 6c 65    The &lt;module
8260: 2d 6e 61 6d 65 26 67 74 3b 20 6d 75 73 74 20 62  -name&gt; must b
8270: 65 20 72 65 67 69 73 74 65 72 65 64 20 77 69 74  e registered wit
8280: 68 0a 74 68 65 20 53 51 4c 69 74 65 20 64 61 74  h.the SQLite dat
8290: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
82a0: 20 75 73 69 6e 67 0a 73 71 6c 69 74 65 33 5f 63   using.sqlite3_c
82b0: 72 65 61 74 65 5f 6d 6f 64 75 6c 65 28 29 0a 70  reate_module().p
82c0: 72 69 6f 72 20 74 6f 20 69 73 73 75 69 6e 67 20  rior to issuing 
82d0: 74 68 65 20 43 52 45 41 54 45 20 56 49 52 54 55  the CREATE VIRTU
82e0: 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  AL TABLE stateme
82f0: 6e 74 2e 0a 54 68 65 20 6d 6f 64 75 6c 65 20 74  nt..The module t
8300: 61 6b 65 73 20 7a 65 72 6f 20 6f 72 20 6d 6f 72  akes zero or mor
8310: 65 20 63 6f 6d 6d 61 2d 73 65 70 61 72 61 74 65  e comma-separate
8320: 64 20 61 72 67 75 6d 65 6e 74 73 2e 0a 54 68 65  d arguments..The
8330: 20 61 72 67 75 6d 65 6e 74 73 20 63 61 6e 20 62   arguments can b
8340: 65 20 6a 75 73 74 20 61 62 6f 75 74 20 61 6e 79  e just about any
8350: 20 74 65 78 74 20 61 73 20 6c 6f 6e 67 20 61 73   text as long as
8360: 20 69 74 20 68 61 73 20 62 61 6c 61 6e 63 65 64   it has balanced
8370: 0a 70 61 72 65 6e 74 68 65 73 65 73 2e 20 20 54  .parentheses.  T
8380: 68 65 20 61 72 67 75 6d 65 6e 74 20 73 79 6e 74  he argument synt
8390: 61 78 20 69 73 20 73 75 66 66 69 63 69 65 6e 74  ax is sufficient
83a0: 6c 79 20 67 65 6e 65 72 61 6c 20 74 68 61 74 20  ly general that 
83b0: 74 68 65 0a 61 72 67 75 6d 65 6e 74 73 20 63 61  the.arguments ca
83c0: 6e 20 62 65 20 6d 61 64 65 20 74 6f 20 61 70 70  n be made to app
83d0: 65 61 72 20 61 73 20 63 6f 6c 75 6d 6e 20 64 65  ear as column de
83e0: 66 69 6e 69 74 69 6f 6e 73 20 69 6e 20 61 20 74  finitions in a t
83f0: 72 61 64 69 74 69 6f 6e 61 6c 0a 5b 43 52 45 41  raditional.[CREA
8400: 54 45 20 54 41 42 4c 45 5d 20 73 74 61 74 65 6d  TE TABLE] statem
8410: 65 6e 74 2e 20 20 0a 53 51 4c 69 74 65 20 70 61  ent.  .SQLite pa
8420: 73 73 65 73 20 74 68 65 20 6d 6f 64 75 6c 65 20  sses the module 
8430: 61 72 67 75 6d 65 6e 74 73 20 64 69 72 65 63 74  arguments direct
8440: 6c 79 0a 74 6f 20 74 68 65 20 6d 6f 64 75 6c 65  ly.to the module
8450: 20 77 69 74 68 6f 75 74 20 61 6e 79 20 69 6e 74   without any int
8460: 65 72 70 72 65 74 61 74 69 6f 6e 2e 20 20 49 74  erpretation.  It
8470: 20 69 73 20 74 68 65 20 72 65 73 70 6f 6e 73 69   is the responsi
8480: 62 69 6c 69 74 79 0a 6f 66 20 74 68 65 20 6d 6f  bility.of the mo
8490: 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  dule implementat
84a0: 69 6f 6e 20 74 6f 20 70 61 72 73 65 20 61 6e 64  ion to parse and
84b0: 20 69 6e 74 65 72 70 72 65 74 20 69 74 73 20 6f   interpret its o
84c0: 77 6e 20 61 72 67 75 6d 65 6e 74 73 2e 3c 2f 70  wn arguments.</p
84d0: 3e 0a 0a 3c 70 3e 41 20 76 69 72 74 75 61 6c 20  >..<p>A virtual 
84e0: 74 61 62 6c 65 20 69 73 20 64 65 73 74 72 6f 79  table is destroy
84f0: 65 64 20 75 73 69 6e 67 20 74 68 65 20 6f 72 64  ed using the ord
8500: 69 6e 61 72 79 0a 5b 44 52 4f 50 20 54 41 42 4c  inary.[DROP TABL
8510: 45 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54  E] statement.  T
8520: 68 65 72 65 20 69 73 20 6e 6f 0a 44 52 4f 50 20  here is no.DROP 
8530: 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 73 74  VIRTUAL TABLE st
8540: 61 74 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 74  atement.</p>..<t
8550: 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23  cl>.############
8560: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8570: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8580: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8590: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
85a0: 23 23 0a 53 65 63 74 69 6f 6e 20 44 45 4c 45 54  ##.Section DELET
85b0: 45 20 64 65 6c 65 74 65 20 7b 44 45 4c 45 54 45  E delete {DELETE
85c0: 20 44 45 4c 45 54 45 73 7d 0a 0a 42 75 62 62 6c   DELETEs}..Bubbl
85d0: 65 44 69 61 67 72 61 6d 20 64 65 6c 65 74 65 2d  eDiagram delete-
85e0: 73 74 6d 74 20 31 0a 42 75 62 62 6c 65 44 69 61  stmt 1.BubbleDia
85f0: 67 72 61 6d 20 71 75 61 6c 69 66 69 65 64 2d 74  gram qualified-t
8600: 61 62 6c 65 2d 6e 61 6d 65 0a 3c 2f 74 63 6c 3e  able-name.</tcl>
8610: 0a 0a 3c 70 3e 54 68 65 20 44 45 4c 45 54 45 20  ..<p>The DELETE 
8620: 63 6f 6d 6d 61 6e 64 20 69 73 20 75 73 65 64 20  command is used 
8630: 74 6f 20 72 65 6d 6f 76 65 20 72 65 63 6f 72 64  to remove record
8640: 73 20 66 72 6f 6d 20 61 20 74 61 62 6c 65 2e 0a  s from a table..
8650: 54 68 65 20 63 6f 6d 6d 61 6e 64 20 63 6f 6e 73  The command cons
8660: 69 73 74 73 20 6f 66 20 74 68 65 20 22 44 45 4c  ists of the "DEL
8670: 45 54 45 20 46 52 4f 4d 22 20 6b 65 79 77 6f 72  ETE FROM" keywor
8680: 64 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79 0a 74  ds followed by.t
8690: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 74  he name of the t
86a0: 61 62 6c 65 20 66 72 6f 6d 20 77 68 69 63 68 20  able from which 
86b0: 72 65 63 6f 72 64 73 20 61 72 65 20 74 6f 20 62  records are to b
86c0: 65 20 72 65 6d 6f 76 65 64 2e 0a 3c 2f 70 3e 0a  e removed..</p>.
86d0: 0a 3c 70 3e 57 69 74 68 6f 75 74 20 61 20 57 48  .<p>Without a WH
86e0: 45 52 45 20 63 6c 61 75 73 65 2c 20 61 6c 6c 20  ERE clause, all 
86f0: 72 6f 77 73 20 6f 66 20 74 68 65 20 74 61 62 6c  rows of the tabl
8700: 65 20 61 72 65 20 72 65 6d 6f 76 65 64 2e 0a 49  e are removed..I
8710: 66 20 61 20 57 48 45 52 45 20 63 6c 61 75 73 65  f a WHERE clause
8720: 20 69 73 20 73 75 70 70 6c 69 65 64 2c 20 74 68   is supplied, th
8730: 65 6e 20 6f 6e 6c 79 20 74 68 6f 73 65 20 72 6f  en only those ro
8740: 77 73 20 74 68 61 74 20 6d 61 74 63 68 0a 74 68  ws that match.th
8750: 65 20 65 78 70 72 65 73 73 69 6f 6e 20 61 72 65  e expression are
8760: 20 72 65 6d 6f 76 65 64 2e 3c 2f 70 3e 0a 0a 3c   removed.</p>..<
8770: 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20  tcl>hd_fragment 
8780: 74 72 75 63 61 74 65 6f 70 74 20 7b 74 72 75 6e  trucateopt {trun
8790: 63 61 74 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f  cate optimizatio
87a0: 6e 7d 3c 2f 74 63 6c 3e 0a 3c 70 3e 57 68 65 6e  n}</tcl>.<p>When
87b0: 20 74 68 65 20 57 48 45 52 45 20 69 73 20 6f 6d   the WHERE is om
87c0: 69 74 74 65 64 20 66 72 6f 6d 20 61 20 44 45 4c  itted from a DEL
87d0: 45 54 45 20 73 74 61 74 65 6d 65 6e 74 20 61 6e  ETE statement an
87e0: 64 20 74 68 65 20 74 61 62 6c 65 0a 62 65 69 6e  d the table.bein
87f0: 67 20 64 65 6c 65 74 65 64 20 68 61 73 20 6e 6f  g deleted has no
8800: 20 74 72 69 67 67 65 72 73 2c 0a 53 51 4c 69 74   triggers,.SQLit
8810: 65 20 75 73 65 73 20 61 6e 20 6f 70 74 69 6d 69  e uses an optimi
8820: 7a 61 74 69 6f 6e 20 74 6f 20 65 72 61 73 65 20  zation to erase 
8830: 74 68 65 20 65 6e 74 69 72 65 20 74 61 62 6c 65  the entire table
8840: 20 63 6f 6e 74 65 6e 74 0a 77 69 74 68 6f 75 74   content.without
8850: 20 68 61 76 69 6e 67 20 74 6f 20 76 69 73 69 74   having to visit
8860: 20 65 61 63 68 20 72 6f 77 20 6f 66 20 74 68 65   each row of the
8870: 20 74 61 62 6c 65 20 69 6e 64 69 76 69 64 75 61   table individua
8880: 6c 2e 0a 54 68 69 73 20 22 74 72 75 6e 63 61 74  l..This "truncat
8890: 65 22 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20  e" optimization 
88a0: 6d 61 6b 65 73 20 74 68 65 20 64 65 6c 65 74 65  makes the delete
88b0: 20 72 75 6e 20 6d 75 63 68 20 66 61 73 74 65 72   run much faster
88c0: 2e 0a 50 72 69 6f 72 20 74 6f 20 53 51 4c 69 74  ..Prior to SQLit
88d0: 65 20 5b 76 65 72 73 69 6f 6e 20 33 2e 36 2e 35  e [version 3.6.5
88e0: 5d 2c 20 74 68 65 20 74 72 75 6e 63 61 74 65 20  ], the truncate 
88f0: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 0a 61 6c 73  optimization.als
8900: 6f 20 6d 65 61 6e 74 20 74 68 61 74 20 74 68 65  o meant that the
8910: 20 5b 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65   [sqlite3_change
8920: 73 28 29 5d 20 61 6e 64 0a 5b 73 71 6c 69 74 65  s()] and.[sqlite
8930: 33 5f 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28  3_total_changes(
8940: 29 5d 20 69 6e 74 65 72 66 61 63 65 73 0a 61 6e  )] interfaces.an
8950: 64 20 74 68 65 20 5b 63 6f 75 6e 74 5f 63 68 61  d the [count_cha
8960: 6e 67 65 73 20 70 72 61 67 6d 61 5d 0a 77 69 6c  nges pragma].wil
8970: 6c 20 6e 6f 74 20 61 63 74 75 61 6c 6c 79 20 72  l not actually r
8980: 65 74 75 72 6e 20 74 68 65 20 6e 75 6d 62 65 72  eturn the number
8990: 20 6f 66 20 64 65 6c 65 74 65 64 20 72 6f 77 73   of deleted rows
89a0: 2e 20 20 0a 54 68 61 74 20 70 72 6f 62 6c 65 6d  .  .That problem
89b0: 20 68 61 73 20 62 65 65 6e 20 66 69 78 65 64 20   has been fixed 
89c0: 61 73 20 6f 66 20 5b 76 65 72 73 69 6f 6e 20 33  as of [version 3
89d0: 2e 36 2e 35 5d 2e 0a 0a 3c 70 3e 54 68 65 20 74  .6.5]...<p>The t
89e0: 72 75 6e 63 61 74 65 20 6f 70 74 69 6d 69 7a 61  runcate optimiza
89f0: 74 69 6f 6e 20 63 61 6e 20 62 65 20 64 69 73 61  tion can be disa
8a00: 62 6c 65 64 20 66 6f 72 20 61 6c 6c 20 71 75 65  bled for all que
8a10: 72 69 65 73 20 62 79 20 72 65 63 6f 6d 70 69 6c  ries by recompil
8a20: 69 6e 67 0a 53 51 4c 69 74 65 20 77 69 74 68 20  ing.SQLite with 
8a30: 74 68 65 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54  the [SQLITE_OMIT
8a40: 5f 54 52 55 4e 43 41 54 45 5f 4f 50 54 49 4d 49  _TRUNCATE_OPTIMI
8a50: 5a 41 54 49 4f 4e 5d 20 63 6f 6d 70 69 6c 65 2d  ZATION] compile-
8a60: 74 69 6d 65 20 73 77 69 74 63 68 2e 3c 2f 70 3e  time switch.</p>
8a70: 0a 0a 3c 70 3e 49 66 20 53 51 4c 69 74 65 20 69  ..<p>If SQLite i
8a80: 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20  s compiled with 
8a90: 74 68 65 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42  the [SQLITE_ENAB
8aa0: 4c 45 5f 55 50 44 41 54 45 5f 44 45 4c 45 54 45  LE_UPDATE_DELETE
8ab0: 5f 4c 49 4d 49 54 5d 0a 63 6f 6d 70 69 6c 65 2d  _LIMIT].compile-
8ac0: 74 69 6d 65 20 6f 70 74 69 6f 6e 2c 20 74 68 65  time option, the
8ad0: 6e 20 74 68 65 20 73 79 6e 74 61 78 20 6f 66 20  n the syntax of 
8ae0: 74 68 65 20 44 45 4c 45 54 45 20 73 74 61 74 65  the DELETE state
8af0: 6d 65 6e 74 20 69 73 0a 65 78 74 65 6e 64 65 64  ment is.extended
8b00: 20 62 79 20 74 68 65 20 61 64 64 69 74 69 6f 6e   by the addition
8b10: 20 6f 66 20 6f 70 74 69 6f 6e 61 6c 20 4f 52 44   of optional ORD
8b20: 45 52 20 42 59 20 61 6e 64 20 4c 49 4d 49 54 20  ER BY and LIMIT 
8b30: 63 6c 61 75 73 65 73 3a 3c 2f 70 3e 0a 0a 3c 74  clauses:</p>..<t
8b40: 63 6c 3e 42 75 62 62 6c 65 44 69 61 67 72 61 6d  cl>BubbleDiagram
8b50: 20 64 65 6c 65 74 65 2d 73 74 6d 74 2d 6c 69 6d   delete-stmt-lim
8b60: 69 74 65 64 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54  ited</tcl>..<p>T
8b70: 68 65 20 6f 70 74 69 6f 6e 61 6c 20 4c 49 4d 49  he optional LIMI
8b80: 54 20 63 6c 61 75 73 65 20 63 61 6e 20 62 65 20  T clause can be 
8b90: 75 73 65 64 20 74 6f 20 6c 69 6d 69 74 20 74 68  used to limit th
8ba0: 65 20 6e 75 6d 62 65 72 20 6f 66 0a 72 6f 77 73  e number of.rows
8bb0: 20 64 65 6c 65 74 65 64 2c 20 61 6e 64 20 74 68   deleted, and th
8bc0: 65 72 65 62 79 20 6c 69 6d 69 74 20 74 68 65 20  ereby limit the 
8bd0: 73 69 7a 65 20 6f 66 20 74 68 65 20 74 72 61 6e  size of the tran
8be0: 73 61 63 74 69 6f 6e 2e 0a 54 68 65 20 4f 52 44  saction..The ORD
8bf0: 45 52 20 42 59 20 63 6c 61 75 73 65 20 69 73 20  ER BY clause is 
8c00: 75 73 65 64 20 6f 6e 6c 79 20 74 6f 20 64 65 74  used only to det
8c10: 65 72 6d 69 6e 65 20 77 68 69 63 68 20 72 6f 77  ermine which row
8c20: 73 20 66 61 6c 6c 0a 77 69 74 68 69 6e 20 74 68  s fall.within th
8c30: 65 20 4c 49 4d 49 54 2e 20 20 54 68 65 20 6f 72  e LIMIT.  The or
8c40: 64 65 72 20 69 6e 20 77 68 69 63 68 20 72 6f 77  der in which row
8c50: 73 20 61 72 65 20 64 65 6c 65 74 65 64 20 69 73  s are deleted is
8c60: 20 61 72 62 69 74 72 61 72 79 0a 61 6e 64 20 69   arbitrary.and i
8c70: 73 20 6e 6f 74 20 64 65 74 65 72 6d 69 6e 65 64  s not determined
8c80: 20 62 79 20 74 68 65 20 4f 52 44 45 52 20 42 59   by the ORDER BY
8c90: 20 63 6c 61 75 73 65 2e 3c 2f 70 3e 0a 0a 3c 70   clause.</p>..<p
8ca0: 3e 54 68 65 20 70 72 65 73 65 6e 63 65 20 6f 66  >The presence of
8cb0: 20 61 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20   a LIMIT clause 
8cc0: 64 65 66 65 61 74 73 20 74 68 65 20 74 72 75 6e  defeats the trun
8cd0: 63 61 74 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f  cate optimizatio
8ce0: 6e 0a 63 61 75 73 69 6e 67 20 61 6c 6c 20 72 6f  n.causing all ro
8cf0: 77 73 20 62 65 69 6e 67 20 64 65 6c 65 74 65 64  ws being deleted
8d00: 20 74 6f 20 62 65 20 76 69 73 69 74 65 64 2e 3c   to be visited.<
8d10: 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23  /p>..<tcl>.#####
8d20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8d30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8d40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8d50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8d60: 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69  ##########.Secti
8d70: 6f 6e 20 7b 44 45 54 41 43 48 20 44 41 54 41 42  on {DETACH DATAB
8d80: 41 53 45 7d 20 64 65 74 61 63 68 20 44 45 54 41  ASE} detach DETA
8d90: 43 48 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61  CH..BubbleDiagra
8da0: 6d 20 64 65 74 61 63 68 2d 73 74 6d 74 20 31 0a  m detach-stmt 1.
8db0: 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 69 73 20  </tcl>..<p>This 
8dc0: 73 74 61 74 65 6d 65 6e 74 20 64 65 74 61 63 68  statement detach
8dd0: 65 73 20 61 6e 20 61 64 64 69 74 69 6f 6e 61 6c  es an additional
8de0: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
8df0: 74 69 6f 6e 20 70 72 65 76 69 6f 75 73 6c 79 20  tion previously 
8e00: 0a 61 74 74 61 63 68 65 64 20 75 73 69 6e 67 20  .attached using 
8e10: 74 68 65 20 5b 41 54 54 41 43 48 5d 20 73 74 61  the [ATTACH] sta
8e20: 74 65 6d 65 6e 74 2e 20 20 0a 49 74 20 69 73 20  tement.  .It is 
8e30: 70 6f 73 73 69 62 6c 65 20 74 6f 20 68 61 76 65  possible to have
8e40: 20 74 68 65 20 73 61 6d 65 20 64 61 74 61 62 61   the same databa
8e50: 73 65 20 66 69 6c 65 20 61 74 74 61 63 68 65 64  se file attached
8e60: 20 6d 75 6c 74 69 70 6c 65 20 74 69 6d 65 73 20   multiple times 
8e70: 75 73 69 6e 67 20 0a 64 69 66 66 65 72 65 6e 74  using .different
8e80: 20 6e 61 6d 65 73 2c 20 61 6e 64 20 64 65 74 61   names, and deta
8e90: 63 68 69 6e 67 20 6f 6e 65 20 63 6f 6e 6e 65 63  ching one connec
8ea0: 74 69 6f 6e 20 74 6f 20 61 20 66 69 6c 65 20 77  tion to a file w
8eb0: 69 6c 6c 20 6c 65 61 76 65 20 74 68 65 20 0a 6f  ill leave the .o
8ec0: 74 68 65 72 73 20 69 6e 74 61 63 74 2e 3c 2f 70  thers intact.</p
8ed0: 3e 0a 0a 3c 70 3e 54 68 69 73 20 73 74 61 74 65  >..<p>This state
8ee0: 6d 65 6e 74 20 77 69 6c 6c 20 66 61 69 6c 20 69  ment will fail i
8ef0: 66 20 53 51 4c 69 74 65 20 69 73 20 69 6e 20 74  f SQLite is in t
8f00: 68 65 20 6d 69 64 64 6c 65 20 6f 66 20 61 20 74  he middle of a t
8f10: 72 61 6e 73 61 63 74 69 6f 6e 2e 3c 2f 70 3e 0a  ransaction.</p>.
8f20: 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23  ..<tcl>.########
8f30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8f40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8f50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8f60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8f70: 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b  ######.Section {
8f80: 44 52 4f 50 20 49 4e 44 45 58 7d 20 64 72 6f 70  DROP INDEX} drop
8f90: 69 6e 64 65 78 20 7b 7b 44 52 4f 50 20 49 4e 44  index {{DROP IND
8fa0: 45 58 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67  EX}}..BubbleDiag
8fb0: 72 61 6d 20 64 72 6f 70 2d 69 6e 64 65 78 2d 73  ram drop-index-s
8fc0: 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  tmt 1.</tcl>..<p
8fd0: 3e 54 68 65 20 44 52 4f 50 20 49 4e 44 45 58 20  >The DROP INDEX 
8fe0: 73 74 61 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65  statement remove
8ff0: 73 20 61 6e 20 69 6e 64 65 78 20 61 64 64 65 64  s an index added
9000: 0a 77 69 74 68 20 74 68 65 20 5b 43 52 45 41 54  .with the [CREAT
9010: 45 20 49 4e 44 45 58 5d 20 73 74 61 74 65 6d 65  E INDEX] stateme
9020: 6e 74 2e 20 20 54 68 65 20 69 6e 64 65 78 20 6e  nt.  The index n
9030: 61 6d 65 64 20 69 73 20 63 6f 6d 70 6c 65 74 65  amed is complete
9040: 6c 79 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 0a  ly removed from.
9050: 74 68 65 20 64 69 73 6b 2e 20 20 54 68 65 20 6f  the disk.  The o
9060: 6e 6c 79 20 77 61 79 20 74 6f 20 72 65 63 6f 76  nly way to recov
9070: 65 72 20 74 68 65 20 69 6e 64 65 78 20 69 73 20  er the index is 
9080: 74 6f 20 72 65 65 6e 74 65 72 20 74 68 65 0a 61  to reenter the.a
9090: 70 70 72 6f 70 72 69 61 74 65 20 5b 43 52 45 41  ppropriate [CREA
90a0: 54 45 20 49 4e 44 45 58 5d 20 63 6f 6d 6d 61 6e  TE INDEX] comman
90b0: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 44  d.</p>..<p>The D
90c0: 52 4f 50 20 49 4e 44 45 58 20 73 74 61 74 65 6d  ROP INDEX statem
90d0: 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20 72 65 64  ent does not red
90e0: 75 63 65 20 74 68 65 20 73 69 7a 65 20 6f 66 20  uce the size of 
90f0: 74 68 65 20 64 61 74 61 62 61 73 65 20 0a 66 69  the database .fi
9100: 6c 65 20 69 6e 20 74 68 65 20 64 65 66 61 75 6c  le in the defaul
9110: 74 20 6d 6f 64 65 2e 0a 45 6d 70 74 79 20 73 70  t mode..Empty sp
9120: 61 63 65 20 69 6e 20 74 68 65 20 64 61 74 61 62  ace in the datab
9130: 61 73 65 20 69 73 20 72 65 74 61 69 6e 65 64 20  ase is retained 
9140: 66 6f 72 20 6c 61 74 65 72 20 5b 49 4e 53 45 52  for later [INSER
9150: 54 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e 20 20  T] statements.  
9160: 54 6f 20 0a 72 65 6d 6f 76 65 20 66 72 65 65 20  To .remove free 
9170: 73 70 61 63 65 20 69 6e 20 74 68 65 20 64 61 74  space in the dat
9180: 61 62 61 73 65 2c 20 75 73 65 20 74 68 65 20 5b  abase, use the [
9190: 56 41 43 55 55 4d 5d 0a 63 6f 6d 6d 61 6e 64 2e  VACUUM].command.
91a0: 20 20 49 66 20 5b 61 75 74 6f 5f 76 61 63 75 75    If [auto_vacuu
91b0: 6d 5d 20 6d 6f 64 65 20 69 73 20 65 6e 61 62 6c  m] mode is enabl
91c0: 65 64 20 66 6f 72 20 61 20 64 61 74 61 62 61 73  ed for a databas
91d0: 65 20 74 68 65 6e 20 73 70 61 63 65 0a 77 69 6c  e then space.wil
91e0: 6c 20 62 65 20 66 72 65 65 64 20 61 75 74 6f 6d  l be freed autom
91f0: 61 74 69 63 61 6c 6c 79 20 62 79 20 44 52 4f 50  atically by DROP
9200: 20 49 4e 44 45 58 2e 3c 2f 70 3e 0a 0a 0a 3c 74   INDEX.</p>...<t
9210: 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23  cl>.############
9220: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9230: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9240: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9250: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9260: 23 23 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50  ##.Section {DROP
9270: 20 54 41 42 4c 45 7d 20 64 72 6f 70 74 61 62 6c   TABLE} droptabl
9280: 65 20 7b 7b 44 52 4f 50 20 54 41 42 4c 45 7d 7d  e {{DROP TABLE}}
9290: 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  ..BubbleDiagram 
92a0: 64 72 6f 70 2d 74 61 62 6c 65 2d 73 74 6d 74 20  drop-table-stmt 
92b0: 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65  1.</tcl>..<p>The
92c0: 20 44 52 4f 50 20 54 41 42 4c 45 20 73 74 61 74   DROP TABLE stat
92d0: 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61 20  ement removes a 
92e0: 74 61 62 6c 65 20 61 64 64 65 64 20 77 69 74 68  table added with
92f0: 20 74 68 65 0a 5b 43 52 45 41 54 45 20 54 41 42   the.[CREATE TAB
9300: 4c 45 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20  LE] statement.  
9310: 54 68 65 20 6e 61 6d 65 20 73 70 65 63 69 66 69  The name specifi
9320: 65 64 20 69 73 20 74 68 65 0a 74 61 62 6c 65 20  ed is the.table 
9330: 6e 61 6d 65 2e 20 20 49 74 20 69 73 20 63 6f 6d  name.  It is com
9340: 70 6c 65 74 65 6c 79 20 72 65 6d 6f 76 65 64 20  pletely removed 
9350: 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61 73  from the databas
9360: 65 20 73 63 68 65 6d 61 20 61 6e 64 20 74 68 65  e schema and the
9370: 20 0a 64 69 73 6b 20 66 69 6c 65 2e 20 20 54 68   .disk file.  Th
9380: 65 20 74 61 62 6c 65 20 63 61 6e 20 6e 6f 74 20  e table can not 
9390: 62 65 20 72 65 63 6f 76 65 72 65 64 2e 20 20 41  be recovered.  A
93a0: 6c 6c 20 69 6e 64 69 63 65 73 20 61 6e 64 20 74  ll indices and t
93b0: 72 69 67 67 65 72 73 0a 61 73 73 6f 63 69 61 74  riggers.associat
93c0: 65 64 20 77 69 74 68 20 74 68 65 20 74 61 62 6c  ed with the tabl
93d0: 65 20 61 72 65 20 61 6c 73 6f 20 64 65 6c 65 74  e are also delet
93e0: 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  ed.</p>..<p>The 
93f0: 44 52 4f 50 20 54 41 42 4c 45 20 73 74 61 74 65  DROP TABLE state
9400: 6d 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20 72 65  ment does not re
9410: 64 75 63 65 20 74 68 65 20 73 69 7a 65 20 6f 66  duce the size of
9420: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 0a 66   the database .f
9430: 69 6c 65 20 69 6e 20 74 68 65 20 64 65 66 61 75  ile in the defau
9440: 6c 74 20 6d 6f 64 65 2e 20 20 45 6d 70 74 79 20  lt mode.  Empty 
9450: 73 70 61 63 65 20 69 6e 20 74 68 65 20 64 61 74  space in the dat
9460: 61 62 61 73 65 20 69 73 20 72 65 74 61 69 6e 65  abase is retaine
9470: 64 20 66 6f 72 0a 6c 61 74 65 72 20 5b 49 4e 53  d for.later [INS
9480: 45 52 54 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e  ERT] statements.
9490: 20 20 54 6f 20 0a 72 65 6d 6f 76 65 20 66 72 65    To .remove fre
94a0: 65 20 73 70 61 63 65 20 69 6e 20 74 68 65 20 64  e space in the d
94b0: 61 74 61 62 61 73 65 2c 20 0a 75 73 65 20 74 68  atabase, .use th
94c0: 65 20 5b 56 41 43 55 55 4d 5d 20 73 74 61 74 65  e [VACUUM] state
94d0: 6d 65 6e 74 2e 0a 49 66 20 5b 61 75 74 6f 5f 76  ment..If [auto_v
94e0: 61 63 75 75 6d 5d 20 6d 6f 64 65 20 69 73 20 65  acuum] mode is e
94f0: 6e 61 62 6c 65 64 20 66 6f 72 20 61 20 64 61 74  nabled for a dat
9500: 61 62 61 73 65 20 74 68 65 6e 20 73 70 61 63 65  abase then space
9510: 0a 77 69 6c 6c 20 62 65 20 66 72 65 65 64 20 61  .will be freed a
9520: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62 79 20  utomatically by 
9530: 44 52 4f 50 20 54 41 42 4c 45 2e 3c 2f 70 3e 0a  DROP TABLE.</p>.
9540: 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c  .<p>The optional
9550: 20 49 46 20 45 58 49 53 54 53 20 63 6c 61 75 73   IF EXISTS claus
9560: 65 20 73 75 70 70 72 65 73 73 65 73 20 74 68 65  e suppresses the
9570: 20 65 72 72 6f 72 20 74 68 61 74 20 77 6f 75 6c   error that woul
9580: 64 20 6e 6f 72 6d 61 6c 6c 79 0a 72 65 73 75 6c  d normally.resul
9590: 74 20 69 66 20 74 68 65 20 74 61 62 6c 65 20 64  t if the table d
95a0: 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2e 3c 2f  oes not exist.</
95b0: 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  p>..<tcl>.######
95c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
95d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
95e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
95f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9600: 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
9610: 20 7b 44 52 4f 50 20 54 52 49 47 47 45 52 7d 20   {DROP TRIGGER} 
9620: 64 72 6f 70 74 72 69 67 67 65 72 20 7b 7b 44 52  droptrigger {{DR
9630: 4f 50 20 54 52 49 47 47 45 52 7d 7d 0a 0a 42 75  OP TRIGGER}}..Bu
9640: 62 62 6c 65 44 69 61 67 72 61 6d 20 64 72 6f 70  bbleDiagram drop
9650: 2d 74 72 69 67 67 65 72 2d 73 74 6d 74 20 31 0a  -trigger-stmt 1.
9660: 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 44  </tcl>..<p>The D
9670: 52 4f 50 20 54 52 49 47 47 45 52 20 73 74 61 74  ROP TRIGGER stat
9680: 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61 20  ement removes a 
9690: 74 72 69 67 67 65 72 20 63 72 65 61 74 65 64 20  trigger created 
96a0: 62 79 20 74 68 65 20 0a 5b 43 52 45 41 54 45 20  by the .[CREATE 
96b0: 54 52 49 47 47 45 52 5d 20 73 74 61 74 65 6d 65  TRIGGER] stateme
96c0: 6e 74 2e 20 20 54 68 65 20 74 72 69 67 67 65 72  nt.  The trigger
96d0: 20 69 73 20 0a 64 65 6c 65 74 65 64 20 66 72 6f   is .deleted fro
96e0: 6d 20 74 68 65 20 64 61 74 61 62 61 73 65 20 73  m the database s
96f0: 63 68 65 6d 61 2e 20 4e 6f 74 65 20 74 68 61 74  chema. Note that
9700: 20 74 72 69 67 67 65 72 73 20 61 72 65 20 61 75   triggers are au
9710: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 0a 64 72 6f  tomatically .dro
9720: 70 70 65 64 20 77 68 65 6e 20 74 68 65 20 61 73  pped when the as
9730: 73 6f 63 69 61 74 65 64 20 74 61 62 6c 65 20 69  sociated table i
9740: 73 20 64 72 6f 70 70 65 64 2e 3c 2f 70 3e 0a 0a  s dropped.</p>..
9750: 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
9760: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9770: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9780: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9790: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
97a0: 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 44 52  ####.Section {DR
97b0: 4f 50 20 56 49 45 57 7d 20 64 72 6f 70 76 69 65  OP VIEW} dropvie
97c0: 77 20 7b 7b 44 52 4f 50 20 56 49 45 57 7d 7d 0a  w {{DROP VIEW}}.
97d0: 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 64  .BubbleDiagram d
97e0: 72 6f 70 2d 76 69 65 77 2d 73 74 6d 74 20 31 0a  rop-view-stmt 1.
97f0: 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 44  </tcl>..<p>The D
9800: 52 4f 50 20 56 49 45 57 20 73 74 61 74 65 6d 65  ROP VIEW stateme
9810: 6e 74 20 72 65 6d 6f 76 65 73 20 61 20 76 69 65  nt removes a vie
9820: 77 20 63 72 65 61 74 65 64 20 62 79 20 74 68 65  w created by the
9830: 0a 5b 43 52 45 41 54 45 20 56 49 45 57 5d 20 73  .[CREATE VIEW] s
9840: 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 6e  tatement.  The n
9850: 61 6d 65 20 73 70 65 63 69 66 69 65 64 20 69 73  ame specified is
9860: 20 74 68 65 20 0a 76 69 65 77 20 6e 61 6d 65 2e   the .view name.
9870: 20 20 49 74 20 69 73 20 72 65 6d 6f 76 65 64 20    It is removed 
9880: 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61 73  from the databas
9890: 65 20 73 63 68 65 6d 61 2c 20 62 75 74 20 6e 6f  e schema, but no
98a0: 20 61 63 74 75 61 6c 20 64 61 74 61 20 0a 69 6e   actual data .in
98b0: 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20   the underlying 
98c0: 62 61 73 65 20 74 61 62 6c 65 73 20 69 73 20 6d  base tables is m
98d0: 6f 64 69 66 69 65 64 2e 3c 2f 70 3e 0a 0a 3c 74  odified.</p>..<t
98e0: 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23  cl>.############
98f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9900: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9910: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9920: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9930: 23 23 0a 53 65 63 74 69 6f 6e 20 45 58 50 4c 41  ##.Section EXPLA
9940: 49 4e 20 65 78 70 6c 61 69 6e 20 45 58 50 4c 41  IN explain EXPLA
9950: 49 4e 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61  IN..BubbleDiagra
9960: 6d 20 73 71 6c 2d 73 74 6d 74 0a 3c 2f 74 63 6c  m sql-stmt.</tcl
9970: 3e 0a 0a 3c 70 3e 41 6e 20 53 51 4c 20 73 74 61  >..<p>An SQL sta
9980: 74 65 6d 65 6e 74 20 63 61 6e 20 62 65 20 70 72  tement can be pr
9990: 65 63 65 64 65 64 20 62 79 20 74 68 65 20 6b 65  eceded by the ke
99a0: 79 77 6f 72 64 20 22 45 58 50 4c 41 49 4e 22 20  yword "EXPLAIN" 
99b0: 6f 72 0a 62 79 20 74 68 65 20 70 68 72 61 73 65  or.by the phrase
99c0: 20 22 45 58 50 4c 41 49 4e 20 51 55 45 52 59 20   "EXPLAIN QUERY 
99d0: 50 4c 41 4e 22 2e 20 20 45 69 74 68 65 72 20 6d  PLAN".  Either m
99e0: 6f 64 69 66 69 63 61 74 69 6f 6e 20 63 61 75 73  odification caus
99f0: 65 73 20 74 68 65 0a 53 51 4c 20 73 74 61 74 65  es the.SQL state
9a00: 6d 65 6e 74 20 74 6f 20 62 65 68 61 76 65 20 61  ment to behave a
9a10: 73 20 61 20 71 75 65 72 79 20 61 6e 64 20 74 6f  s a query and to
9a20: 20 72 65 74 75 72 6e 20 69 6e 66 6f 72 6d 61 74   return informat
9a30: 69 6f 6e 20 61 62 6f 75 74 0a 68 6f 77 20 74 68  ion about.how th
9a40: 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  e SQL statement 
9a50: 77 6f 75 6c 64 20 68 61 76 65 20 6f 70 65 72 61  would have opera
9a60: 74 65 64 20 69 66 20 74 68 65 20 45 58 50 4c 41  ted if the EXPLA
9a70: 49 4e 20 6b 65 79 77 6f 72 64 20 6f 72 0a 70 68  IN keyword or.ph
9a80: 72 61 73 65 20 68 61 64 20 62 65 65 6e 20 6f 6d  rase had been om
9a90: 69 74 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57  itted.</p>..<p>W
9aa0: 68 65 6e 20 74 68 65 20 45 58 50 4c 41 49 4e 20  hen the EXPLAIN 
9ab0: 6b 65 79 77 6f 72 64 20 61 70 70 65 61 72 73 20  keyword appears 
9ac0: 62 79 20 69 74 73 65 6c 66 20 69 74 20 63 61 75  by itself it cau
9ad0: 73 65 73 20 74 68 65 20 73 74 61 74 65 6d 65 6e  ses the statemen
9ae0: 74 0a 74 6f 20 62 65 68 61 76 65 20 61 73 20 61  t.to behave as a
9af0: 20 71 75 65 72 79 20 74 68 61 74 20 72 65 74 75   query that retu
9b00: 72 6e 73 20 74 68 65 20 73 65 71 75 65 6e 63 65  rns the sequence
9b10: 20 6f 66 20 0a 3c 61 20 68 72 65 66 3d 22 6f 70   of .<a href="op
9b20: 63 6f 64 65 2e 68 74 6d 6c 22 3e 76 69 72 74 75  code.html">virtu
9b30: 61 6c 20 6d 61 63 68 69 6e 65 20 69 6e 73 74 72  al machine instr
9b40: 75 63 74 69 6f 6e 73 3c 2f 61 3e 20 69 74 20 77  uctions</a> it w
9b50: 6f 75 6c 64 20 68 61 76 65 0a 75 73 65 64 20 74  ould have.used t
9b60: 6f 20 65 78 65 63 75 74 65 20 74 68 65 20 63 6f  o execute the co
9b70: 6d 6d 61 6e 64 20 68 61 64 20 74 68 65 20 45 58  mmand had the EX
9b80: 50 4c 41 49 4e 20 6b 65 79 77 6f 72 64 20 6e 6f  PLAIN keyword no
9b90: 74 20 62 65 65 6e 20 70 72 65 73 65 6e 74 2e 0a  t been present..
9ba0: 57 68 65 6e 20 74 68 65 20 45 58 50 4c 41 49 4e  When the EXPLAIN
9bb0: 20 51 55 45 52 59 20 50 4c 41 4e 20 70 68 72 61   QUERY PLAN phra
9bc0: 73 65 20 61 70 70 65 61 72 73 2c 20 74 68 65 20  se appears, the 
9bd0: 73 74 61 74 65 6d 65 6e 74 20 72 65 74 75 72 6e  statement return
9be0: 73 0a 68 69 67 68 2d 6c 65 76 65 6c 20 69 6e 66  s.high-level inf
9bf0: 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 77  ormation about w
9c00: 68 61 74 20 69 6e 64 69 63 65 73 20 77 6f 75 6c  hat indices woul
9c10: 64 20 68 61 76 65 20 62 65 65 6e 20 75 73 65 64  d have been used
9c20: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 75  .</p>..<p>The ou
9c30: 74 70 75 74 20 66 72 6f 6d 20 45 58 50 4c 41 49  tput from EXPLAI
9c40: 4e 20 61 6e 64 20 45 58 50 4c 41 49 4e 20 51 55  N and EXPLAIN QU
9c50: 45 52 59 20 50 4c 41 4e 20 69 73 20 69 6e 74 65  ERY PLAN is inte
9c60: 6e 64 65 64 20 66 6f 72 0a 69 6e 74 65 72 61 63  nded for.interac
9c70: 74 69 76 65 20 61 6e 61 6c 79 73 69 73 20 61 6e  tive analysis an
9c80: 64 20 74 72 6f 75 62 6c 65 73 68 6f 6f 74 69 6e  d troubleshootin
9c90: 67 20 6f 6e 6c 79 2e 20 20 54 68 65 20 64 65 74  g only.  The det
9ca0: 61 69 6c 73 20 6f 66 20 74 68 65 20 0a 6f 75 74  ails of the .out
9cb0: 70 75 74 20 66 6f 72 6d 61 74 20 61 72 65 20 73  put format are s
9cc0: 75 62 6a 65 63 74 20 74 6f 20 63 68 61 6e 67 65  ubject to change
9cd0: 20 66 72 6f 6d 20 6f 6e 65 20 72 65 6c 65 61 73   from one releas
9ce0: 65 20 6f 66 20 53 51 4c 69 74 65 20 74 6f 20 74  e of SQLite to t
9cf0: 68 65 20 6e 65 78 74 2e 0a 41 70 70 6c 69 63 61  he next..Applica
9d00: 74 69 6f 6e 73 20 73 68 6f 75 6c 64 20 6e 6f 74  tions should not
9d10: 20 75 73 65 20 45 58 50 4c 41 49 4e 20 6f 72 20   use EXPLAIN or 
9d20: 45 58 50 4c 41 49 4e 20 51 55 45 52 59 20 50 4c  EXPLAIN QUERY PL
9d30: 41 4e 20 73 69 6e 63 65 0a 74 68 65 69 72 20 62  AN since.their b
9d40: 65 68 61 76 69 6f 72 20 69 73 20 75 6e 64 6f 63  ehavior is undoc
9d50: 75 6d 65 6e 74 65 64 2c 20 75 6e 73 70 65 63 69  umented, unspeci
9d60: 66 69 65 64 2c 20 61 6e 64 20 76 61 72 69 61 62  fied, and variab
9d70: 6c 65 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23  le.</p>..<tcl>.#
9d80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9d90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9da0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9db0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9dc0: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65  #############.Se
9dd0: 63 74 69 6f 6e 20 65 78 70 72 65 73 73 69 6f 6e  ction expression
9de0: 20 65 78 70 72 20 7b 65 78 70 72 65 73 73 69 6f   expr {expressio
9df0: 6e 20 7b 65 78 70 72 65 73 73 69 6f 6e 20 73 79  n {expression sy
9e00: 6e 74 61 78 7d 7d 0a 0a 42 75 62 62 6c 65 44 69  ntax}}..BubbleDi
9e10: 61 67 72 61 6d 20 65 78 70 72 20 31 0a 42 75 62  agram expr 1.Bub
9e20: 62 6c 65 44 69 61 67 72 61 6d 20 6c 69 74 65 72  bleDiagram liter
9e30: 61 6c 2d 76 61 6c 75 65 0a 42 75 62 62 6c 65 44  al-value.BubbleD
9e40: 69 61 67 72 61 6d 20 73 69 67 6e 65 64 2d 6e 75  iagram signed-nu
9e50: 6d 62 65 72 0a 42 75 62 62 6c 65 44 69 61 67 72  mber.BubbleDiagr
9e60: 61 6d 20 72 61 69 73 65 2d 66 75 6e 63 74 69 6f  am raise-functio
9e70: 6e 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 69  n.</tcl>..<p>Thi
9e80: 73 20 73 65 63 74 69 6f 6e 20 69 73 20 64 69 66  s section is dif
9e90: 66 65 72 65 6e 74 20 66 72 6f 6d 20 74 68 65 20  ferent from the 
9ea0: 6f 74 68 65 72 73 2e 20 20 4d 6f 73 74 20 6f 74  others.  Most ot
9eb0: 68 65 72 20 73 65 63 74 69 6f 6e 73 20 6f 66 0a  her sections of.
9ec0: 74 68 69 73 20 64 6f 63 75 6d 65 6e 74 20 74 61  this document ta
9ed0: 6c 6b 73 20 61 62 6f 75 74 20 61 20 70 61 72 74  lks about a part
9ee0: 69 63 75 6c 61 72 20 53 51 4c 20 63 6f 6d 6d 61  icular SQL comma
9ef0: 6e 64 2e 20 20 54 68 69 73 20 73 65 63 74 69 6f  nd.  This sectio
9f00: 6e 20 64 6f 65 73 0a 6e 6f 74 20 74 61 6c 6b 20  n does.not talk 
9f10: 61 62 6f 75 74 20 61 20 73 74 61 6e 64 61 6c 6f  about a standalo
9f20: 6e 65 20 63 6f 6d 6d 61 6e 64 20 62 75 74 20 61  ne command but a
9f30: 62 6f 75 74 20 22 65 78 70 72 65 73 73 69 6f 6e  bout "expression
9f40: 73 22 20 77 68 69 63 68 20 61 72 65 20 0a 73 75  s" which are .su
9f50: 62 63 6f 6d 70 6f 6e 65 6e 74 73 20 6f 66 20 6d  bcomponents of m
9f60: 6f 73 74 20 6f 74 68 65 72 20 63 6f 6d 6d 61 6e  ost other comman
9f70: 64 73 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64  ds.</p>..<tcl>hd
9f80: 5f 66 72 61 67 6d 65 6e 74 20 62 69 6e 61 72 79  _fragment binary
9f90: 6f 70 73 20 7b 62 69 6e 61 72 79 20 6f 70 65 72  ops {binary oper
9fa0: 61 74 6f 72 73 7d 3c 2f 74 63 6c 3e 0a 3c 70 3e  ators}</tcl>.<p>
9fb0: 53 51 4c 69 74 65 20 75 6e 64 65 72 73 74 61 6e  SQLite understan
9fc0: 64 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  ds the following
9fd0: 20 62 69 6e 61 72 79 20 6f 70 65 72 61 74 6f 72   binary operator
9fe0: 73 2c 20 69 6e 20 6f 72 64 65 72 20 66 72 6f 6d  s, in order from
9ff0: 0a 68 69 67 68 65 73 74 20 74 6f 20 6c 6f 77 65  .highest to lowe
a000: 73 74 20 70 72 65 63 65 64 65 6e 63 65 3a 3c 2f  st precedence:</
a010: 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  p>..<blockquote>
a020: 3c 70 72 65 3e 0a 3c 66 6f 6e 74 20 63 6f 6c 6f  <pre>.<font colo
a030: 72 3d 22 23 32 63 32 63 66 30 22 3e 3c 62 69 67  r="#2c2cf0"><big
a040: 3e 7c 7c 0a 2a 20 20 20 20 2f 20 20 20 20 25 0a  >||.*    /    %.
a050: 2b 20 20 20 20 2d 0a 26 6c 74 3b 26 6c 74 3b 20  +    -.&lt;&lt; 
a060: 20 20 26 67 74 3b 26 67 74 3b 20 20 20 26 61 6d    &gt;&gt;   &am
a070: 70 3b 20 20 20 20 7c 0a 26 6c 74 3b 20 20 20 20  p;    |.&lt;    
a080: 26 6c 74 3b 3d 20 20 20 26 67 74 3b 20 20 20 20  &lt;=   &gt;    
a090: 26 67 74 3b 3d 0a 3d 20 20 20 20 3d 3d 20 20 20  &gt;=.=    ==   
a0a0: 21 3d 20 20 20 26 6c 74 3b 26 67 74 3b 20 20 20  !=   &lt;&gt;   
a0b0: 3c 2f 62 69 67 3e 49 4e 20 20 4c 49 4b 45 20 20  </big>IN  LIKE  
a0c0: 47 4c 4f 42 20 20 4d 41 54 43 48 20 20 52 45 47  GLOB  MATCH  REG
a0d0: 45 58 50 0a 41 4e 44 20 20 20 0a 4f 52 3c 2f 66  EXP.AND   .OR</f
a0e0: 6f 6e 74 3e 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f  ont>.</pre></blo
a0f0: 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 53 75 70  ckquote>..<p>Sup
a100: 70 6f 72 74 65 64 20 75 6e 61 72 79 20 70 72 65  ported unary pre
a110: 66 69 78 20 6f 70 65 72 61 74 6f 72 73 20 61 72  fix operators ar
a120: 65 20 74 68 65 73 65 3a 3c 2f 70 3e 0a 0a 3c 62  e these:</p>..<b
a130: 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a  lockquote><pre>.
a140: 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23 32 63  <font color="#2c
a150: 32 63 66 30 22 3e 3c 62 69 67 3e 2d 20 20 20 20  2cf0"><big>-    
a160: 2b 20 20 20 20 7e 20 20 20 20 4e 4f 54 3c 2f 62  +    ~    NOT</b
a170: 69 67 3e 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70 72 65  ig></font>.</pre
a180: 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a  ></blockquote>..
a190: 3c 70 3e 54 68 65 20 43 4f 4c 4c 41 54 45 20 6f  <p>The COLLATE o
a1a0: 70 65 72 61 74 6f 72 20 63 61 6e 20 62 65 20 74  perator can be t
a1b0: 68 6f 75 67 68 74 20 6f 66 20 61 73 20 61 20 75  hought of as a u
a1c0: 6e 61 72 79 20 70 6f 73 74 66 69 78 0a 6f 70 65  nary postfix.ope
a1d0: 72 61 74 6f 72 2e 20 20 54 68 65 20 43 4f 4c 4c  rator.  The COLL
a1e0: 41 54 45 20 6f 70 65 72 61 74 6f 72 20 68 61 73  ATE operator has
a1f0: 20 74 68 65 20 68 69 67 68 65 73 74 20 70 72 65   the highest pre
a200: 63 65 64 65 6e 63 65 2e 0a 49 74 20 61 6c 77 61  cedence..It alwa
a210: 79 73 20 62 69 6e 64 73 20 6d 6f 72 65 20 74 69  ys binds more ti
a220: 67 68 74 6c 79 20 74 68 61 6e 20 61 6e 79 20 70  ghtly than any p
a230: 72 65 66 69 78 20 75 6e 61 72 79 20 6f 70 65 72  refix unary oper
a240: 61 74 6f 72 20 6f 72 0a 61 6e 79 20 62 69 6e 61  ator or.any bina
a250: 72 79 20 6f 70 65 72 61 74 6f 72 2e 3c 2f 70 3e  ry operator.</p>
a260: 0a 0a 3c 74 63 6c 3e 68 64 5f 70 75 74 73 20 22  ..<tcl>hd_puts "
a270: 0a 3c 70 3e 54 68 65 20 75 6e 61 72 79 20 6f 70  .<p>The unary op
a280: 65 72 61 74 6f 72 20 5b 4f 70 65 72 61 74 6f 72  erator [Operator
a290: 20 2b 5d 20 69 73 20 61 20 6e 6f 2d 6f 70 2e 20   +] is a no-op. 
a2a0: 20 49 74 20 63 61 6e 20 62 65 20 61 70 70 6c 69   It can be appli
a2b0: 65 64 0a 74 6f 20 73 74 72 69 6e 67 73 2c 20 6e  ed.to strings, n
a2c0: 75 6d 62 65 72 73 2c 20 6f 72 20 62 6c 6f 62 73  umbers, or blobs
a2d0: 20 61 6e 64 20 69 74 20 61 6c 77 61 79 73 20 67   and it always g
a2e0: 69 76 65 73 20 61 73 20 69 74 73 20 72 65 73 75  ives as its resu
a2f0: 6c 74 20 74 68 65 0a 76 61 6c 75 65 20 6f 66 20  lt the.value of 
a300: 74 68 65 20 6f 70 65 72 61 6e 64 2e 3c 2f 70 3e  the operand.</p>
a310: 22 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 4e 6f 74 65  "</tcl>..<p>Note
a320: 20 74 68 61 74 20 74 68 65 72 65 20 61 72 65 20   that there are 
a330: 74 77 6f 20 76 61 72 69 61 74 69 6f 6e 73 20 6f  two variations o
a340: 66 20 74 68 65 20 65 71 75 61 6c 73 20 61 6e 64  f the equals and
a350: 20 6e 6f 74 20 65 71 75 61 6c 73 0a 6f 70 65 72   not equals.oper
a360: 61 74 6f 72 73 2e 20 20 45 71 75 61 6c 73 20 63  ators.  Equals c
a370: 61 6e 20 62 65 20 65 69 74 68 65 72 0a 0a 3c 74  an be either..<t
a380: 63 6c 3e 0a 68 64 5f 70 75 74 73 20 22 5b 4f 70  cl>.hd_puts "[Op
a390: 65 72 61 74 6f 72 20 3d 5d 20 6f 72 20 5b 4f 70  erator =] or [Op
a3a0: 65 72 61 74 6f 72 20 3d 3d 5d 2e 0a 54 68 65 20  erator ==]..The 
a3b0: 6e 6f 6e 2d 65 71 75 61 6c 73 20 6f 70 65 72 61  non-equals opera
a3c0: 74 6f 72 20 63 61 6e 20 62 65 20 65 69 74 68 65  tor can be eithe
a3d0: 72 0a 5b 4f 70 65 72 61 74 6f 72 20 21 3d 5d 20  r.[Operator !=] 
a3e0: 6f 72 20 5b 4f 70 65 72 61 74 6f 72 20 7b 26 6c  or [Operator {&l
a3f0: 74 3b 26 67 74 3b 7d 5d 2e 0a 54 68 65 20 5b 4f  t;&gt;}]..The [O
a400: 70 65 72 61 74 6f 72 20 7c 7c 5d 20 6f 70 65 72  perator ||] oper
a410: 61 74 6f 72 20 69 73 20 5c 22 63 6f 6e 63 61 74  ator is \"concat
a420: 65 6e 61 74 65 5c 22 20 2d 20 69 74 20 6a 6f 69  enate\" - it joi
a430: 6e 73 20 74 6f 67 65 74 68 65 72 0a 74 68 65 20  ns together.the 
a440: 74 77 6f 20 73 74 72 69 6e 67 73 20 6f 66 20 69  two strings of i
a450: 74 73 20 6f 70 65 72 61 6e 64 73 2e 0a 54 68 65  ts operands..The
a460: 20 6f 70 65 72 61 74 6f 72 20 5b 4f 70 65 72 61   operator [Opera
a470: 74 6f 72 20 25 5d 20 6f 75 74 70 75 74 73 20 74  tor %] outputs t
a480: 68 65 20 72 65 6d 61 69 6e 64 65 72 20 6f 66 20  he remainder of 
a490: 69 74 73 20 6c 65 66 74 20 0a 6f 70 65 72 61 6e  its left .operan
a4a0: 64 20 6d 6f 64 75 6c 6f 20 69 74 73 20 72 69 67  d modulo its rig
a4b0: 68 74 20 6f 70 65 72 61 6e 64 2e 3c 2f 70 3e 0a  ht operand.</p>.
a4c0: 0a 3c 70 3e 54 68 65 20 72 65 73 75 6c 74 20 6f  .<p>The result o
a4d0: 66 20 61 6e 79 20 62 69 6e 61 72 79 20 6f 70 65  f any binary ope
a4e0: 72 61 74 6f 72 20 69 73 20 61 20 6e 75 6d 65 72  rator is a numer
a4f0: 69 63 20 76 61 6c 75 65 2c 20 65 78 63 65 70 74  ic value, except
a500: 0a 66 6f 72 20 74 68 65 20 5b 4f 70 65 72 61 74  .for the [Operat
a510: 6f 72 20 7c 7c 5d 20 63 6f 6e 63 61 74 65 6e 61  or ||] concatena
a520: 74 69 6f 6e 20 6f 70 65 72 61 74 6f 72 20 77 68  tion operator wh
a530: 69 63 68 20 67 69 76 65 73 20 61 20 73 74 72 69  ich gives a stri
a540: 6e 67 0a 72 65 73 75 6c 74 2e 3c 2f 70 3e 22 3c  ng.result.</p>"<
a550: 2f 74 63 6c 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22  /tcl>..<a name="
a560: 6c 69 74 65 72 61 6c 5f 76 61 6c 75 65 22 3e 3c  literal_value"><
a570: 2f 61 3e 0a 3c 70 3e 0a 41 20 6c 69 74 65 72 61  /a>.<p>.A litera
a580: 6c 20 76 61 6c 75 65 20 69 73 20 61 6e 20 69 6e  l value is an in
a590: 74 65 67 65 72 20 6e 75 6d 62 65 72 20 6f 72 20  teger number or 
a5a0: 61 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74  a floating point
a5b0: 20 6e 75 6d 62 65 72 2e 0a 53 63 69 65 6e 74 69   number..Scienti
a5c0: 66 69 63 20 6e 6f 74 61 74 69 6f 6e 20 69 73 20  fic notation is 
a5d0: 73 75 70 70 6f 72 74 65 64 2e 20 20 54 68 65 20  supported.  The 
a5e0: 22 2e 22 20 63 68 61 72 61 63 74 65 72 20 69 73  "." character is
a5f0: 20 61 6c 77 61 79 73 20 75 73 65 64 0a 61 73 20   always used.as 
a600: 74 68 65 20 64 65 63 69 6d 61 6c 20 70 6f 69 6e  the decimal poin
a610: 74 20 65 76 65 6e 20 69 66 20 74 68 65 20 6c 6f  t even if the lo
a620: 63 61 6c 65 20 73 65 74 74 69 6e 67 20 73 70 65  cale setting spe
a630: 63 69 66 69 65 73 20 22 2c 22 20 66 6f 72 0a 74  cifies "," for.t
a640: 68 69 73 20 72 6f 6c 65 20 2d 20 74 68 65 20 75  his role - the u
a650: 73 65 20 6f 66 20 22 2c 22 20 66 6f 72 20 74 68  se of "," for th
a660: 65 20 64 65 63 69 6d 61 6c 20 70 6f 69 6e 74 20  e decimal point 
a670: 77 6f 75 6c 64 20 72 65 73 75 6c 74 20 69 6e 0a  would result in.
a680: 73 79 6e 74 61 63 74 69 63 20 61 6d 62 69 67 75  syntactic ambigu
a690: 69 74 79 2e 20 20 41 20 73 74 72 69 6e 67 20 63  ity.  A string c
a6a0: 6f 6e 73 74 61 6e 74 20 69 73 20 66 6f 72 6d 65  onstant is forme
a6b0: 64 20 62 79 20 65 6e 63 6c 6f 73 69 6e 67 20 74  d by enclosing t
a6c0: 68 65 0a 73 74 72 69 6e 67 20 69 6e 20 73 69 6e  he.string in sin
a6d0: 67 6c 65 20 71 75 6f 74 65 73 20 28 27 29 2e 20  gle quotes ('). 
a6e0: 20 41 20 73 69 6e 67 6c 65 20 71 75 6f 74 65 20   A single quote 
a6f0: 77 69 74 68 69 6e 20 74 68 65 20 73 74 72 69 6e  within the strin
a700: 67 20 63 61 6e 0a 62 65 20 65 6e 63 6f 64 65 64  g can.be encoded
a710: 20 62 79 20 70 75 74 74 69 6e 67 20 74 77 6f 20   by putting two 
a720: 73 69 6e 67 6c 65 20 71 75 6f 74 65 73 20 69 6e  single quotes in
a730: 20 61 20 72 6f 77 20 2d 20 61 73 20 69 6e 20 50   a row - as in P
a740: 61 73 63 61 6c 2e 0a 43 2d 73 74 79 6c 65 20 65  ascal..C-style e
a750: 73 63 61 70 65 73 20 75 73 69 6e 67 20 74 68 65  scapes using the
a760: 20 62 61 63 6b 73 6c 61 73 68 20 63 68 61 72 61   backslash chara
a770: 63 74 65 72 20 61 72 65 20 6e 6f 74 20 73 75 70  cter are not sup
a780: 70 6f 72 74 65 64 20 62 65 63 61 75 73 65 0a 74  ported because.t
a790: 68 65 79 20 61 72 65 20 6e 6f 74 20 73 74 61 6e  hey are not stan
a7a0: 64 61 72 64 20 53 51 4c 2e 0a 42 4c 4f 42 20 6c  dard SQL..BLOB l
a7b0: 69 74 65 72 61 6c 73 20 61 72 65 20 73 74 72 69  iterals are stri
a7c0: 6e 67 20 6c 69 74 65 72 61 6c 73 20 63 6f 6e 74  ng literals cont
a7d0: 61 69 6e 69 6e 67 20 68 65 78 61 64 65 63 69 6d  aining hexadecim
a7e0: 61 6c 20 64 61 74 61 20 61 6e 64 0a 70 72 65 63  al data and.prec
a7f0: 65 64 65 64 20 62 79 20 61 20 73 69 6e 67 6c 65  eded by a single
a800: 20 22 78 22 20 6f 72 20 22 58 22 20 63 68 61 72   "x" or "X" char
a810: 61 63 74 65 72 2e 20 20 46 6f 72 20 65 78 61 6d  acter.  For exam
a820: 70 6c 65 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b  ple:</p>..<block
a830: 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 58 27 35 33  quote><pre>.X'53
a840: 35 31 34 43 36 39 37 34 36 35 27 0a 3c 2f 70 72  514C697465'.</pr
a850: 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  e></blockquote>.
a860: 0a 3c 70 3e 0a 41 20 6c 69 74 65 72 61 6c 20 76  .<p>.A literal v
a870: 61 6c 75 65 20 63 61 6e 20 61 6c 73 6f 20 62 65  alue can also be
a880: 20 74 68 65 20 74 6f 6b 65 6e 20 22 4e 55 4c 4c   the token "NULL
a890: 22 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 41 20 70  "..</p>..<p>.A p
a8a0: 61 72 61 6d 65 74 65 72 20 73 70 65 63 69 66 69  arameter specifi
a8b0: 65 73 20 61 20 70 6c 61 63 65 68 6f 6c 64 65 72  es a placeholder
a8c0: 20 69 6e 20 74 68 65 20 65 78 70 72 65 73 73 69   in the expressi
a8d0: 6f 6e 20 66 6f 72 20 61 20 6c 69 74 65 72 61 6c  on for a literal
a8e0: 0a 76 61 6c 75 65 20 74 68 61 74 20 69 73 20 66  .value that is f
a8f0: 69 6c 6c 65 64 20 69 6e 20 61 74 20 72 75 6e 74  illed in at runt
a900: 69 6d 65 20 75 73 69 6e 67 20 74 68 65 0a 5b 73  ime using the.[s
a910: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62  qlite3_bind_blob
a920: 28 29 20 7c 20 73 71 6c 69 74 65 33 5f 62 69 6e  () | sqlite3_bin
a930: 64 28 29 5d 20 41 50 49 73 2e 0a 50 61 72 61 6d  d()] APIs..Param
a940: 65 74 65 72 73 20 63 61 6e 20 74 61 6b 65 20 73  eters can take s
a950: 65 76 65 72 61 6c 20 66 6f 72 6d 73 3a 0a 3c 2f  everal forms:.</
a960: 70 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  p..<blockquote>.
a970: 3c 74 61 62 6c 65 3e 0a 3c 74 72 3e 0a 3c 74 64  <table>.<tr>.<td
a980: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 76   align="right" v
a990: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 3f  align="top"><b>?
a9a0: 3c 2f 62 3e 3c 69 3e 4e 4e 4e 3c 2f 69 3e 3c 2f  </b><i>NNN</i></
a9b0: 74 64 3e 3c 74 64 20 77 69 64 74 68 3d 22 32 30  td><td width="20
a9c0: 22 3e 3c 2f 74 64 3e 0a 3c 74 64 3e 41 20 71 75  "></td>.<td>A qu
a9d0: 65 73 74 69 6f 6e 20 6d 61 72 6b 20 66 6f 6c 6c  estion mark foll
a9e0: 6f 77 65 64 20 62 79 20 61 20 6e 75 6d 62 65 72  owed by a number
a9f0: 20 3c 69 3e 4e 4e 4e 3c 2f 69 3e 20 68 6f 6c 64   <i>NNN</i> hold
aa00: 73 20 61 20 73 70 6f 74 20 66 6f 72 20 74 68 65  s a spot for the
aa10: 0a 4e 4e 4e 2d 74 68 20 70 61 72 61 6d 65 74 65  .NNN-th paramete
aa20: 72 2e 20 20 4e 4e 4e 20 6d 75 73 74 20 62 65 20  r.  NNN must be 
aa30: 62 65 74 77 65 65 6e 20 31 20 61 6e 64 20 5b 53  between 1 and [S
aa40: 51 4c 49 54 45 5f 4d 41 58 5f 56 41 52 49 41 42  QLITE_MAX_VARIAB
aa50: 4c 45 5f 4e 55 4d 42 45 52 5d 2e 3c 2f 74 64 3e  LE_NUMBER].</td>
aa60: 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20  .</tr>.<tr>.<td 
aa70: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 76 61  align="right" va
aa80: 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 3f 3c  lign="top"><b>?<
aa90: 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20 77 69 64 74  /b></td><td widt
aaa0: 68 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a 3c 74 64  h="20"></td>.<td
aab0: 3e 41 20 71 75 65 73 74 69 6f 6e 20 6d 61 72 6b  >A question mark
aac0: 20 74 68 61 74 20 69 73 20 6e 6f 74 20 66 6f 6c   that is not fol
aad0: 6c 6f 77 65 64 20 62 79 20 61 20 6e 75 6d 62 65  lowed by a numbe
aae0: 72 20 68 6f 6c 64 73 20 61 20 73 70 6f 74 20 66  r holds a spot f
aaf0: 6f 72 0a 74 68 65 20 6e 65 78 74 20 75 6e 75 73  or.the next unus
ab00: 65 64 20 70 61 72 61 6d 65 74 65 72 2e 3c 2f 74  ed parameter.</t
ab10: 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74  d>.</tr>.<tr>.<t
ab20: 64 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20  d align="right" 
ab30: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e  valign="top"><b>
ab40: 3a 3c 2f 62 3e 3c 69 3e 41 41 41 41 3c 2f 69 3e  :</b><i>AAAA</i>
ab50: 3c 2f 74 64 3e 3c 74 64 20 77 69 64 74 68 3d 22  </td><td width="
ab60: 32 30 22 3e 3c 2f 74 64 3e 0a 3c 74 64 3e 41 20  20"></td>.<td>A 
ab70: 63 6f 6c 6f 6e 20 66 6f 6c 6c 6f 77 65 64 20 62  colon followed b
ab80: 79 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20  y an identifier 
ab90: 6e 61 6d 65 20 68 6f 6c 64 73 20 61 20 73 70 6f  name holds a spo
aba0: 74 20 66 6f 72 20 61 20 6e 61 6d 65 64 0a 70 61  t for a named.pa
abb0: 72 61 6d 65 74 65 72 20 77 69 74 68 20 74 68 65  rameter with the
abc0: 20 6e 61 6d 65 20 41 41 41 41 2e 20 20 4e 61 6d   name AAAA.  Nam
abd0: 65 64 20 70 61 72 61 6d 65 74 65 72 73 20 61 72  ed parameters ar
abe0: 65 20 61 6c 73 6f 20 6e 75 6d 62 65 72 65 64 2e  e also numbered.
abf0: 0a 54 68 65 20 6e 75 6d 62 65 72 20 61 73 73 69  .The number assi
ac00: 67 6e 65 64 20 69 73 20 74 68 65 20 6e 65 78 74  gned is the next
ac10: 20 75 6e 75 73 65 64 20 6e 75 6d 62 65 72 2e 20   unused number. 
ac20: 20 54 6f 20 61 76 6f 69 64 20 63 6f 6e 66 75 73   To avoid confus
ac30: 69 6f 6e 2c 0a 69 74 20 69 73 20 62 65 73 74 20  ion,.it is best 
ac40: 74 6f 20 61 76 6f 69 64 20 6d 69 78 69 6e 67 20  to avoid mixing 
ac50: 6e 61 6d 65 64 20 61 6e 64 20 6e 75 6d 62 65 72  named and number
ac60: 65 64 20 70 61 72 61 6d 65 74 65 72 73 2e 3c 2f  ed parameters.</
ac70: 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c  td>.</tr>.<tr>.<
ac80: 74 64 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  td align="right"
ac90: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62   valign="top"><b
aca0: 3e 40 3c 2f 62 3e 3c 69 3e 41 41 41 41 3c 2f 69  >@</b><i>AAAA</i
acb0: 3e 3c 2f 74 64 3e 3c 74 64 20 77 69 64 74 68 3d  ></td><td width=
acc0: 22 32 30 22 3e 3c 2f 74 64 3e 0a 3c 74 64 3e 41  "20"></td>.<td>A
acd0: 6e 20 22 61 74 22 20 73 69 67 6e 20 77 6f 72 6b  n "at" sign work
ace0: 73 20 65 78 61 63 74 6c 79 20 6c 69 6b 65 20 61  s exactly like a
acf0: 20 63 6f 6c 6f 6e 2e 3c 2f 74 64 3e 0a 3c 2f 74   colon.</td>.</t
ad00: 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67  r>.<tr>.<td alig
ad10: 6e 3d 22 72 69 67 68 74 22 20 76 61 6c 69 67 6e  n="right" valign
ad20: 3d 22 74 6f 70 22 3e 3c 62 3e 24 3c 2f 62 3e 3c  ="top"><b>$</b><
ad30: 69 3e 41 41 41 41 3c 2f 69 3e 3c 2f 74 64 3e 3c  i>AAAA</i></td><
ad40: 74 64 20 77 69 64 74 68 3d 22 32 30 22 3e 3c 2f  td width="20"></
ad50: 74 64 3e 0a 3c 74 64 3e 41 20 64 6f 6c 6c 61 72  td>.<td>A dollar
ad60: 2d 73 69 67 6e 20 66 6f 6c 6c 6f 77 65 64 20 62  -sign followed b
ad70: 79 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20  y an identifier 
ad80: 6e 61 6d 65 20 61 6c 73 6f 20 68 6f 6c 64 73 20  name also holds 
ad90: 61 20 73 70 6f 74 20 66 6f 72 20 61 20 6e 61 6d  a spot for a nam
ada0: 65 64 0a 70 61 72 61 6d 65 74 65 72 20 77 69 74  ed.parameter wit
adb0: 68 20 74 68 65 20 6e 61 6d 65 20 41 41 41 41 2e  h the name AAAA.
adc0: 20 20 54 68 65 20 69 64 65 6e 74 69 66 69 65 72    The identifier
add0: 20 6e 61 6d 65 20 69 6e 20 74 68 69 73 20 63 61   name in this ca
ade0: 73 65 20 63 61 6e 20 69 6e 63 6c 75 64 65 0a 6f  se can include.o
adf0: 6e 65 20 6f 72 20 6d 6f 72 65 20 6f 63 63 75 72  ne or more occur
ae00: 61 6e 63 65 73 20 6f 66 20 22 3a 3a 22 20 61 6e  ances of "::" an
ae10: 64 20 61 20 73 75 66 66 69 78 20 65 6e 63 6c 6f  d a suffix enclo
ae20: 73 65 64 20 69 6e 20 22 28 2e 2e 2e 29 22 20 63  sed in "(...)" c
ae30: 6f 6e 74 61 69 6e 69 6e 67 0a 61 6e 79 20 74 65  ontaining.any te
ae40: 78 74 20 61 74 20 61 6c 6c 2e 20 20 54 68 69 73  xt at all.  This
ae50: 20 73 79 6e 74 61 78 20 69 73 20 74 68 65 20 66   syntax is the f
ae60: 6f 72 6d 20 6f 66 20 61 20 76 61 72 69 61 62 6c  orm of a variabl
ae70: 65 20 6e 61 6d 65 20 69 6e 20 74 68 65 20 54 63  e name in the Tc
ae80: 6c 0a 70 72 6f 67 72 61 6d 6d 69 6e 67 20 6c 61  l.programming la
ae90: 6e 67 75 61 67 65 2e 3c 2f 74 64 3e 0a 3c 2f 74  nguage.</td>.</t
aea0: 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 62 6c  r>.</table>.</bl
aeb0: 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 50 61  ockquote>..<p>Pa
aec0: 72 61 6d 65 74 65 72 73 20 74 68 61 74 20 61 72  rameters that ar
aed0: 65 20 6e 6f 74 20 61 73 73 69 67 6e 65 64 20 76  e not assigned v
aee0: 61 6c 75 65 73 20 75 73 69 6e 67 0a 5b 73 71 6c  alues using.[sql
aef0: 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 29  ite3_bind_blob()
af00: 20 7c 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 28   | sqlite3_bind(
af10: 29 5d 20 61 72 65 20 74 72 65 61 74 65 64 0a 61  )] are treated.a
af20: 73 20 4e 55 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 74 63  s NULL.</p>..<tc
af30: 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 6c 69  l>hd_fragment li
af40: 6b 65 20 4c 49 4b 45 20 45 53 43 41 50 45 3c 2f  ke LIKE ESCAPE</
af50: 74 63 6c 3e 0a 3c 70 3e 54 68 65 20 4c 49 4b 45  tcl>.<p>The LIKE
af60: 20 6f 70 65 72 61 74 6f 72 20 64 6f 65 73 20 61   operator does a
af70: 20 70 61 74 74 65 72 6e 20 6d 61 74 63 68 69 6e   pattern matchin
af80: 67 20 63 6f 6d 70 61 72 69 73 6f 6e 2e 20 54 68  g comparison. Th
af90: 65 20 6f 70 65 72 61 6e 64 0a 74 6f 20 74 68 65  e operand.to the
afa0: 20 72 69 67 68 74 20 63 6f 6e 74 61 69 6e 73 20   right contains 
afb0: 74 68 65 20 70 61 74 74 65 72 6e 2c 20 74 68 65  the pattern, the
afc0: 20 6c 65 66 74 20 68 61 6e 64 20 6f 70 65 72 61   left hand opera
afd0: 6e 64 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 0a  nd contains the.
afe0: 73 74 72 69 6e 67 20 74 6f 20 6d 61 74 63 68 20  string to match 
aff0: 61 67 61 69 6e 73 74 20 74 68 65 20 70 61 74 74  against the patt
b000: 65 72 6e 2e 0a 0a 3c 74 63 6c 3e 68 64 5f 70 75  ern...<tcl>hd_pu
b010: 74 73 20 22 41 20 70 65 72 63 65 6e 74 20 73 79  ts "A percent sy
b020: 6d 62 6f 6c 20 5b 4f 70 65 72 61 74 6f 72 20 25  mbol [Operator %
b030: 5d 20 69 6e 20 74 68 65 20 70 61 74 74 65 72 6e  ] in the pattern
b040: 20 6d 61 74 63 68 65 73 20 61 6e 79 0a 73 65 71   matches any.seq
b050: 75 65 6e 63 65 20 6f 66 20 7a 65 72 6f 20 6f 72  uence of zero or
b060: 20 6d 6f 72 65 20 63 68 61 72 61 63 74 65 72 73   more characters
b070: 20 69 6e 20 74 68 65 20 73 74 72 69 6e 67 2e 20   in the string. 
b080: 20 41 6e 20 75 6e 64 65 72 73 63 6f 72 65 0a 5b   An underscore.[
b090: 4f 70 65 72 61 74 6f 72 20 5f 5d 20 69 6e 20 74  Operator _] in t
b0a0: 68 65 20 70 61 74 74 65 72 6e 20 6d 61 74 63 68  he pattern match
b0b0: 65 73 20 61 6e 79 20 73 69 6e 67 6c 65 20 63 68  es any single ch
b0c0: 61 72 61 63 74 65 72 20 69 6e 20 74 68 65 0a 73  aracter in the.s
b0d0: 74 72 69 6e 67 2e 20 20 41 6e 79 20 6f 74 68 65  tring.  Any othe
b0e0: 72 20 63 68 61 72 61 63 74 65 72 20 6d 61 74 63  r character matc
b0f0: 68 65 73 20 69 74 73 65 6c 66 20 6f 72 20 69 74  hes itself or it
b100: 27 73 20 6c 6f 77 65 72 2f 75 70 70 65 72 20 63  's lower/upper c
b110: 61 73 65 0a 65 71 75 69 76 61 6c 65 6e 74 20 28  ase.equivalent (
b120: 69 2e 65 2e 20 63 61 73 65 2d 69 6e 73 65 6e 73  i.e. case-insens
b130: 69 74 69 76 65 20 6d 61 74 63 68 69 6e 67 29 2e  itive matching).
b140: 20 20 28 41 20 62 75 67 3a 20 53 51 4c 69 74 65    (A bug: SQLite
b150: 20 6f 6e 6c 79 0a 75 6e 64 65 72 73 74 61 6e 64   only.understand
b160: 73 20 75 70 70 65 72 2f 6c 6f 77 65 72 20 63 61  s upper/lower ca
b170: 73 65 20 66 6f 72 20 37 2d 62 69 74 20 4c 61 74  se for 7-bit Lat
b180: 69 6e 20 63 68 61 72 61 63 74 65 72 73 2e 20 20  in characters.  
b190: 48 65 6e 63 65 20 74 68 65 0a 4c 49 4b 45 20 6f  Hence the.LIKE o
b1a0: 70 65 72 61 74 6f 72 20 69 73 20 63 61 73 65 20  perator is case 
b1b0: 73 65 6e 73 69 74 69 76 65 20 66 6f 72 20 38 2d  sensitive for 8-
b1c0: 62 69 74 20 69 73 6f 38 38 35 39 20 63 68 61 72  bit iso8859 char
b1d0: 61 63 74 65 72 73 20 6f 72 20 55 54 46 2d 38 0a  acters or UTF-8.
b1e0: 63 68 61 72 61 63 74 65 72 73 2e 20 20 46 6f 72  characters.  For
b1f0: 20 65 78 61 6d 70 6c 65 2c 20 74 68 65 20 65 78   example, the ex
b200: 70 72 65 73 73 69 6f 6e 20 3c 62 3e 27 61 27 26  pression <b>'a'&
b210: 6e 62 73 70 3b 4c 49 4b 45 26 6e 62 73 70 3b 27  nbsp;LIKE&nbsp;'
b220: 41 27 3c 2f 62 3e 0a 69 73 20 54 52 55 45 20 62  A'</b>.is TRUE b
b230: 75 74 20 3c 62 3e 27 26 61 65 6c 69 67 3b 27 26  ut <b>'&aelig;'&
b240: 6e 62 73 70 3b 4c 49 4b 45 26 6e 62 73 70 3b 27  nbsp;LIKE&nbsp;'
b250: 26 41 45 6c 69 67 3b 27 3c 2f 62 3e 20 69 73 20  &AElig;'</b> is 
b260: 46 41 4c 53 45 2e 29 2e 3c 2f 70 3e 22 3c 2f 74  FALSE.).</p>"</t
b270: 63 6c 3e 0a 0a 3c 70 3e 49 66 20 74 68 65 20 6f  cl>..<p>If the o
b280: 70 74 69 6f 6e 61 6c 20 45 53 43 41 50 45 20 63  ptional ESCAPE c
b290: 6c 61 75 73 65 20 69 73 20 70 72 65 73 65 6e 74  lause is present
b2a0: 2c 20 74 68 65 6e 20 74 68 65 20 65 78 70 72 65  , then the expre
b2b0: 73 73 69 6f 6e 0a 66 6f 6c 6c 6f 77 69 6e 67 20  ssion.following 
b2c0: 74 68 65 20 45 53 43 41 50 45 20 6b 65 79 77 6f  the ESCAPE keywo
b2d0: 72 64 20 6d 75 73 74 20 65 76 61 6c 75 61 74 65  rd must evaluate
b2e0: 20 74 6f 20 61 20 73 74 72 69 6e 67 20 63 6f 6e   to a string con
b2f0: 73 69 73 74 69 6e 67 20 6f 66 0a 61 20 73 69 6e  sisting of.a sin
b300: 67 6c 65 20 63 68 61 72 61 63 74 65 72 2e 20 54  gle character. T
b310: 68 69 73 20 63 68 61 72 61 63 74 65 72 20 6d 61  his character ma
b320: 79 20 62 65 20 75 73 65 64 20 69 6e 20 74 68 65  y be used in the
b330: 20 4c 49 4b 45 20 70 61 74 74 65 72 6e 0a 74 6f   LIKE pattern.to
b340: 20 69 6e 63 6c 75 64 65 20 6c 69 74 65 72 61 6c   include literal
b350: 20 70 65 72 63 65 6e 74 20 6f 72 20 75 6e 64 65   percent or unde
b360: 72 73 63 6f 72 65 20 63 68 61 72 61 63 74 65 72  rscore character
b370: 73 2e 20 54 68 65 20 65 73 63 61 70 65 0a 63 68  s. The escape.ch
b380: 61 72 61 63 74 65 72 20 66 6f 6c 6c 6f 77 65 64  aracter followed
b390: 20 62 79 20 61 20 70 65 72 63 65 6e 74 20 73 79   by a percent sy
b3a0: 6d 62 6f 6c 2c 20 75 6e 64 65 72 73 63 6f 72 65  mbol, underscore
b3b0: 20 6f 72 20 69 74 73 65 6c 66 20 6d 61 74 63 68   or itself match
b3c0: 65 73 20 61 0a 6c 69 74 65 72 61 6c 20 70 65 72  es a.literal per
b3d0: 63 65 6e 74 20 73 79 6d 62 6f 6c 2c 20 75 6e 64  cent symbol, und
b3e0: 65 72 73 63 6f 72 65 20 6f 72 20 65 73 63 61 70  erscore or escap
b3f0: 65 20 63 68 61 72 61 63 74 65 72 20 69 6e 20 74  e character in t
b400: 68 65 20 73 74 72 69 6e 67 2c 0a 72 65 73 70 65  he string,.respe
b410: 63 74 69 76 65 6c 79 2e 20 54 68 65 20 69 6e 66  ctively. The inf
b420: 69 78 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72  ix LIKE operator
b430: 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20   is implemented 
b440: 62 79 20 63 61 6c 6c 69 6e 67 20 74 68 65 0a 61  by calling the.a
b450: 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e  pplication-defin
b460: 65 64 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73  ed SQL functions
b470: 20 5b 6c 69 6b 65 28 3c 69 3e 59 3c 2f 69 3e 2c   [like(<i>Y</i>,
b480: 3c 69 3e 58 3c 2f 69 3e 29 5d 20 6f 72 0a 5b 6c  <i>X</i>)] or.[l
b490: 69 6b 65 28 3c 69 3e 59 3c 2f 69 3e 2c 3c 69 3e  ike(<i>Y</i>,<i>
b4a0: 58 3c 2f 69 3e 2c 3c 69 3e 5a 3c 2f 69 3e 29 5d  X</i>,<i>Z</i>)]
b4b0: 3c 2f 61 3e 2e 3c 2f 70 3e 0a 0a 54 68 65 20 4c  </a>.</p>..The L
b4c0: 49 4b 45 20 6f 70 65 72 61 74 6f 72 20 69 73 20  IKE operator is 
b4d0: 6e 6f 74 20 63 61 73 65 20 73 65 6e 73 69 74 69  not case sensiti
b4e0: 76 65 20 61 6e 64 20 77 69 6c 6c 20 6d 61 74 63  ve and will matc
b4f0: 68 20 75 70 70 65 72 20 63 61 73 65 0a 63 68 61  h upper case.cha
b500: 72 61 63 74 65 72 73 20 6f 6e 20 6f 6e 65 20 73  racters on one s
b510: 69 64 65 20 61 67 61 69 6e 73 74 20 6c 6f 77 65  ide against lowe
b520: 72 20 63 61 73 65 20 63 68 61 72 61 63 74 65 72  r case character
b530: 73 20 6f 6e 20 74 68 65 20 6f 74 68 65 72 2e 20  s on the other. 
b540: 20 0a 28 41 20 62 75 67 3a 20 53 51 4c 69 74 65   .(A bug: SQLite
b550: 20 6f 6e 6c 79 20 75 6e 64 65 72 73 74 61 6e 64   only understand
b560: 73 20 75 70 70 65 72 2f 6c 6f 77 65 72 20 63 61  s upper/lower ca
b570: 73 65 20 66 6f 72 20 37 2d 62 69 74 20 4c 61 74  se for 7-bit Lat
b580: 69 6e 0a 63 68 61 72 61 63 74 65 72 73 2e 20 20  in.characters.  
b590: 48 65 6e 63 65 20 74 68 65 20 4c 49 4b 45 20 6f  Hence the LIKE o
b5a0: 70 65 72 61 74 6f 72 20 69 73 20 63 61 73 65 20  perator is case 
b5b0: 73 65 6e 73 69 74 69 76 65 20 66 6f 72 20 38 2d  sensitive for 8-
b5c0: 62 69 74 0a 69 73 6f 38 38 35 39 20 63 68 61 72  bit.iso8859 char
b5d0: 61 63 74 65 72 73 20 6f 72 20 55 54 46 2d 38 20  acters or UTF-8 
b5e0: 63 68 61 72 61 63 74 65 72 73 2e 20 20 46 6f 72  characters.  For
b5f0: 20 65 78 61 6d 70 6c 65 2c 20 74 68 65 20 65 78   example, the ex
b600: 70 72 65 73 73 69 6f 6e 0a 3c 62 3e 27 61 27 26  pression.<b>'a'&
b610: 6e 62 73 70 3b 4c 49 4b 45 26 6e 62 73 70 3b 27  nbsp;LIKE&nbsp;'
b620: 41 27 3c 2f 62 3e 20 69 73 20 54 52 55 45 20 62  A'</b> is TRUE b
b630: 75 74 0a 3c 62 3e 27 26 61 65 6c 69 67 3b 27 26  ut.<b>'&aelig;'&
b640: 6e 62 73 70 3b 4c 49 4b 45 26 6e 62 73 70 3b 27  nbsp;LIKE&nbsp;'
b650: 26 41 45 6c 69 67 3b 27 3c 2f 62 3e 20 69 73 20  &AElig;'</b> is 
b660: 46 41 4c 53 45 2e 29 2e 3c 2f 70 3e 0a 0a 3c 70  FALSE.).</p>..<p
b670: 3e 54 68 65 20 69 6e 66 69 78 20 4c 49 4b 45 0a  >The infix LIKE.
b680: 6f 70 65 72 61 74 6f 72 20 69 73 20 69 6d 70 6c  operator is impl
b690: 65 6d 65 6e 74 65 64 20 62 79 20 63 61 6c 6c 69  emented by calli
b6a0: 6e 67 20 74 68 65 20 75 73 65 72 20 66 75 6e 63  ng the user func
b6b0: 74 69 6f 6e 20 3c 61 20 68 72 65 66 3d 22 23 6c  tion <a href="#l
b6c0: 69 6b 65 46 75 6e 63 22 3e 0a 6c 69 6b 65 28 3c  ikeFunc">.like(<
b6d0: 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e  i>X</i>,<i>Y</i>
b6e0: 29 3c 2f 61 3e 2e 20 20 49 66 20 61 6e 20 45 53  )</a>.  If an ES
b6f0: 43 41 50 45 20 63 6c 61 75 73 65 20 69 73 20 70  CAPE clause is p
b700: 72 65 73 65 6e 74 2c 20 69 74 20 61 64 64 73 0a  resent, it adds.
b710: 61 20 74 68 69 72 64 20 70 61 72 61 6d 65 74 65  a third paramete
b720: 72 20 74 6f 20 74 68 65 20 66 75 6e 63 74 69 6f  r to the functio
b730: 6e 20 63 61 6c 6c 2e 20 49 66 20 74 68 65 20 66  n call. If the f
b740: 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 6f 66 20  unctionality of 
b750: 4c 49 4b 45 20 63 61 6e 20 62 65 0a 6f 76 65 72  LIKE can be.over
b760: 72 69 64 64 65 6e 20 62 79 20 64 65 66 69 6e 69  ridden by defini
b770: 6e 67 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76  ng an alternativ
b780: 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
b790: 20 6f 66 20 74 68 65 0a 6c 69 6b 65 28 29 20 53   of the.like() S
b7a0: 51 4c 20 66 75 6e 63 74 69 6f 6e 2e 3c 2f 70 3e  QL function.</p>
b7b0: 0a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66  .</p>..<tcl>hd_f
b7c0: 72 61 67 6d 65 6e 74 20 67 6c 6f 62 20 47 4c 4f  ragment glob GLO
b7d0: 42 3c 2f 74 63 6c 3e 0a 3c 70 3e 54 68 65 20 47  B</tcl>.<p>The G
b7e0: 4c 4f 42 20 6f 70 65 72 61 74 6f 72 20 69 73 20  LOB operator is 
b7f0: 73 69 6d 69 6c 61 72 20 74 6f 20 4c 49 4b 45 20  similar to LIKE 
b800: 62 75 74 20 75 73 65 73 20 74 68 65 20 55 6e 69  but uses the Uni
b810: 78 0a 66 69 6c 65 20 67 6c 6f 62 62 69 6e 67 20  x.file globbing 
b820: 73 79 6e 74 61 78 20 66 6f 72 20 69 74 73 20 77  syntax for its w
b830: 69 6c 64 63 61 72 64 73 2e 20 20 41 6c 73 6f 2c  ildcards.  Also,
b840: 20 47 4c 4f 42 20 69 73 20 63 61 73 65 0a 73 65   GLOB is case.se
b850: 6e 73 69 74 69 76 65 2c 20 75 6e 6c 69 6b 65 20  nsitive, unlike 
b860: 4c 49 4b 45 2e 20 20 42 6f 74 68 20 47 4c 4f 42  LIKE.  Both GLOB
b870: 20 61 6e 64 20 4c 49 4b 45 20 6d 61 79 20 62 65   and LIKE may be
b880: 20 70 72 65 63 65 64 65 64 20 62 79 0a 74 68 65   preceded by.the
b890: 20 4e 4f 54 20 6b 65 79 77 6f 72 64 20 74 6f 20   NOT keyword to 
b8a0: 69 6e 76 65 72 74 20 74 68 65 20 73 65 6e 73 65  invert the sense
b8b0: 20 6f 66 20 74 68 65 20 74 65 73 74 2e 20 20 54   of the test.  T
b8c0: 68 65 20 69 6e 66 69 78 20 47 4c 4f 42 20 0a 6f  he infix GLOB .o
b8d0: 70 65 72 61 74 6f 72 20 69 73 20 69 6d 70 6c 65  perator is imple
b8e0: 6d 65 6e 74 65 64 20 62 79 20 63 61 6c 6c 69 6e  mented by callin
b8f0: 67 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 0a 5b  g the function.[
b900: 67 6c 6f 62 28 3c 69 3e 59 3c 2f 69 3e 2c 3c 69  glob(<i>Y</i>,<i
b910: 3e 58 3c 2f 69 3e 29 5d 20 61 6e 64 20 63 61 6e  >X</i>)] and can
b920: 20 62 65 20 6d 6f 64 69 66 69 65 64 20 62 79 20   be modified by 
b930: 6f 76 65 72 72 69 64 69 6e 67 0a 74 68 61 74 20  overriding.that 
b940: 66 75 6e 63 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c  function.</p>..<
b950: 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20  tcl>hd_fragment 
b960: 72 65 67 65 78 70 20 52 45 47 45 58 50 3c 2f 74  regexp REGEXP</t
b970: 63 6c 3e 0a 3c 70 3e 54 68 65 20 52 45 47 45 58  cl>.<p>The REGEX
b980: 50 20 6f 70 65 72 61 74 6f 72 20 69 73 20 61 20  P operator is a 
b990: 73 70 65 63 69 61 6c 20 73 79 6e 74 61 78 20 66  special syntax f
b9a0: 6f 72 20 74 68 65 20 72 65 67 65 78 70 28 29 0a  or the regexp().
b9b0: 75 73 65 72 20 66 75 6e 63 74 69 6f 6e 2e 20 20  user function.  
b9c0: 4e 6f 20 72 65 67 65 78 70 28 29 20 75 73 65 72  No regexp() user
b9d0: 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 64 65 66   function is def
b9e0: 69 6e 65 64 20 62 79 20 64 65 66 61 75 6c 74 0a  ined by default.
b9f0: 61 6e 64 20 73 6f 20 75 73 65 20 6f 66 20 74 68  and so use of th
ba00: 65 20 52 45 47 45 58 50 20 6f 70 65 72 61 74 6f  e REGEXP operato
ba10: 72 20 77 69 6c 6c 20 6e 6f 72 6d 61 6c 6c 79 20  r will normally 
ba20: 72 65 73 75 6c 74 20 69 6e 20 61 6e 0a 65 72 72  result in an.err
ba30: 6f 72 20 6d 65 73 73 61 67 65 2e 20 20 49 66 20  or message.  If 
ba40: 61 20 75 73 65 72 2d 64 65 66 69 6e 65 64 20 66  a user-defined f
ba50: 75 6e 63 74 69 6f 6e 20 6e 61 6d 65 64 20 22 72  unction named "r
ba60: 65 67 65 78 70 22 0a 69 73 20 61 64 64 65 64 20  egexp".is added 
ba70: 61 74 20 72 75 6e 2d 74 69 6d 65 2c 20 74 68 61  at run-time, tha
ba80: 74 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20  t function will 
ba90: 62 65 20 63 61 6c 6c 65 64 20 69 6e 20 6f 72 64  be called in ord
baa0: 65 72 0a 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20  er.to implement 
bab0: 74 68 65 20 52 45 47 45 58 50 20 6f 70 65 72 61  the REGEXP opera
bac0: 74 6f 72 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68  tor.</p>..<tcl>h
bad0: 64 5f 66 72 61 67 6d 65 6e 74 20 6d 61 74 63 68  d_fragment match
bae0: 20 4d 41 54 43 48 3c 2f 74 63 6c 3e 0a 3c 70 3e   MATCH</tcl>.<p>
baf0: 54 68 65 20 4d 41 54 43 48 20 6f 70 65 72 61 74  The MATCH operat
bb00: 6f 72 20 69 73 20 61 20 73 70 65 63 69 61 6c 20  or is a special 
bb10: 73 79 6e 74 61 78 20 66 6f 72 20 74 68 65 20 6d  syntax for the m
bb20: 61 74 63 68 28 29 0a 75 73 65 72 20 66 75 6e 63  atch().user func
bb30: 74 69 6f 6e 2e 20 20 54 68 65 20 64 65 66 61 75  tion.  The defau
bb40: 6c 74 20 6d 61 74 63 68 28 29 20 66 75 6e 63 74  lt match() funct
bb50: 69 6f 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  ion implementati
bb60: 6f 6e 0a 72 61 69 73 65 73 20 61 6e 64 20 65 78  on.raises and ex
bb70: 63 65 70 74 69 6f 6e 20 61 6e 64 20 69 73 20 6e  ception and is n
bb80: 6f 74 20 72 65 61 6c 6c 79 20 75 73 65 66 75 6c  ot really useful
bb90: 20 66 6f 72 20 61 6e 79 74 68 69 6e 67 2e 0a 42   for anything..B
bba0: 75 74 20 65 78 74 65 6e 73 69 6f 6e 73 20 63 61  ut extensions ca
bbb0: 6e 20 6f 76 65 72 72 69 64 65 20 74 68 65 20 6d  n override the m
bbc0: 61 74 63 68 28 29 20 66 75 6e 63 74 69 6f 6e 20  atch() function 
bbd0: 77 69 74 68 20 6d 6f 72 65 0a 68 65 6c 70 66 75  with more.helpfu
bbe0: 6c 20 6c 6f 67 69 63 2e 3c 2f 70 3e 0a 0a 3c 74  l logic.</p>..<t
bbf0: 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 62  cl>hd_fragment b
bc00: 65 74 77 65 65 6e 20 42 45 54 57 45 45 4e 3c 2f  etween BETWEEN</
bc10: 74 63 6c 3e 0a 3c 70 3e 54 68 65 20 42 45 54 57  tcl>.<p>The BETW
bc20: 45 45 4e 20 6f 70 65 72 61 74 6f 72 20 69 73 20  EEN operator is 
bc30: 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 61 20  equivalent to a 
bc40: 70 61 69 72 20 6f 66 20 63 6f 6d 70 61 72 69 73  pair of comparis
bc50: 6f 6e 73 2e 0a 22 3c 69 3e 61 3c 2f 69 3e 20 3c  ons.."<i>a</i> <
bc60: 62 3e 42 45 54 57 45 45 4e 3c 2f 62 3e 20 3c 69  b>BETWEEN</b> <i
bc70: 3e 62 3c 2f 69 3e 20 3c 62 3e 41 4e 44 3c 2f 62  >b</i> <b>AND</b
bc80: 3e 20 3c 69 3e 63 3c 2f 69 3e 22 20 69 73 20 0a  > <i>c</i>" is .
bc90: 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 0a 22  equivalent to ."
bca0: 3c 69 3e 61 3c 2f 69 3e 3c 62 3e 26 67 74 3b 3d  <i>a</i><b>&gt;=
bcb0: 3c 2f 62 3e 3c 69 3e 62 3c 2f 69 3e 20 3c 62 3e  </b><i>b</i> <b>
bcc0: 41 4e 44 3c 2f 62 3e 20 3c 69 3e 61 3c 2f 69 3e  AND</b> <i>a</i>
bcd0: 3c 62 3e 26 6c 74 3b 3d 3c 2f 62 3e 3c 69 3e 63  <b>&lt;=</b><i>c
bce0: 3c 2f 69 3e 22 2e 0a 54 68 65 20 70 72 65 63 65  </i>"..The prece
bcf0: 64 65 6e 63 65 20 6f 66 20 74 68 65 20 42 45 54  dence of the BET
bd00: 57 45 45 4e 20 6f 70 65 72 61 74 6f 72 20 69 73  WEEN operator is
bd10: 20 74 68 65 20 73 61 6d 65 20 61 73 20 74 68 65   the same as the
bd20: 20 70 72 65 63 65 64 65 6e 63 65 0a 61 73 20 6f   precedence.as o
bd30: 70 65 72 61 74 6f 72 73 20 3c 62 3e 3d 3d 3c 2f  perators <b>==</
bd40: 62 3e 20 61 6e 64 20 3c 62 3e 21 3d 3c 2f 62 3e  b> and <b>!=</b>
bd50: 20 61 6e 64 20 3c 62 3e 4c 49 4b 45 3c 2f 62 3e   and <b>LIKE</b>
bd60: 20 61 6e 64 20 67 72 6f 75 70 73 20 6c 65 66 74   and groups left
bd70: 20 74 6f 20 72 69 67 68 74 2e 0a 0a 3c 70 3e 41   to right...<p>A
bd80: 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 63 61 6e   column name can
bd90: 20 62 65 20 61 6e 79 20 6f 66 20 74 68 65 20 6e   be any of the n
bda0: 61 6d 65 73 20 64 65 66 69 6e 65 64 20 69 6e 20  ames defined in 
bdb0: 74 68 65 20 5b 43 52 45 41 54 45 20 54 41 42 4c  the [CREATE TABL
bdc0: 45 5d 0a 73 74 61 74 65 6d 65 6e 74 20 6f 72 20  E].statement or 
bdd0: 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f  one of the follo
bde0: 77 69 6e 67 20 73 70 65 63 69 61 6c 20 69 64 65  wing special ide
bdf0: 6e 74 69 66 69 65 72 73 3a 20 22 3c 62 3e 52 4f  ntifiers: "<b>RO
be00: 57 49 44 3c 2f 62 3e 22 2c 0a 22 3c 62 3e 4f 49  WID</b>",."<b>OI
be10: 44 3c 2f 62 3e 22 2c 20 6f 72 20 22 3c 62 3e 5f  D</b>", or "<b>_
be20: 52 4f 57 49 44 5f 3c 2f 62 3e 22 2e 0a 54 68 65  ROWID_</b>"..The
be30: 73 65 20 73 70 65 63 69 61 6c 20 69 64 65 6e 74  se special ident
be40: 69 66 69 65 72 73 20 61 6c 6c 20 64 65 73 63 72  ifiers all descr
be50: 69 62 65 20 74 68 65 0a 75 6e 69 71 75 65 20 69  ibe the.unique i
be60: 6e 74 65 67 65 72 20 6b 65 79 20 28 74 68 65 20  nteger key (the 
be70: 22 72 6f 77 20 6b 65 79 22 29 20 61 73 73 6f 63  "row key") assoc
be80: 69 61 74 65 64 20 77 69 74 68 20 65 76 65 72 79  iated with every
be90: 20 0a 72 6f 77 20 6f 66 20 65 76 65 72 79 20 74   .row of every t
bea0: 61 62 6c 65 2e 0a 54 68 65 20 73 70 65 63 69 61  able..The specia
beb0: 6c 20 69 64 65 6e 74 69 66 69 65 72 73 20 6f 6e  l identifiers on
bec0: 6c 79 20 72 65 66 65 72 20 74 6f 20 74 68 65 20  ly refer to the 
bed0: 72 6f 77 20 6b 65 79 20 69 66 20 74 68 65 20 5b  row key if the [
bee0: 43 52 45 41 54 45 20 54 41 42 4c 45 5d 0a 73 74  CREATE TABLE].st
bef0: 61 74 65 6d 65 6e 74 20 64 6f 65 73 20 6e 6f 74  atement does not
bf00: 20 64 65 66 69 6e 65 20 61 20 72 65 61 6c 20 63   define a real c
bf10: 6f 6c 75 6d 6e 20 77 69 74 68 20 74 68 65 20 73  olumn with the s
bf20: 61 6d 65 20 6e 61 6d 65 2e 20 20 52 6f 77 20 6b  ame name.  Row k
bf30: 65 79 73 0a 61 63 74 20 6c 69 6b 65 20 72 65 61  eys.act like rea
bf40: 64 2d 6f 6e 6c 79 20 63 6f 6c 75 6d 6e 73 2e 20  d-only columns. 
bf50: 20 41 20 72 6f 77 20 6b 65 79 20 63 61 6e 20 62   A row key can b
bf60: 65 20 75 73 65 64 20 61 6e 79 77 68 65 72 65 20  e used anywhere 
bf70: 61 20 72 65 67 75 6c 61 72 0a 63 6f 6c 75 6d 6e  a regular.column
bf80: 20 63 61 6e 20 62 65 20 75 73 65 64 2c 20 65 78   can be used, ex
bf90: 63 65 70 74 20 74 68 61 74 20 79 6f 75 20 63 61  cept that you ca
bfa0: 6e 6e 6f 74 20 63 68 61 6e 67 65 20 74 68 65 20  nnot change the 
bfb0: 76 61 6c 75 65 0a 6f 66 20 61 20 72 6f 77 20 6b  value.of a row k
bfc0: 65 79 20 69 6e 20 61 6e 20 5b 55 50 44 41 54 45  ey in an [UPDATE
bfd0: 5d 20 6f 72 20 5b 49 4e 53 45 52 54 5d 20 73 74  ] or [INSERT] st
bfe0: 61 74 65 6d 65 6e 74 2e 0a 22 53 45 4c 45 43 54  atement.."SELECT
bff0: 20 2a 20 2e 2e 2e 22 20 64 6f 65 73 20 6e 6f 74   * ..." does not
c000: 20 72 65 74 75 72 6e 20 74 68 65 20 72 6f 77 20   return the row 
c010: 6b 65 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5b 53 45  key.</p>..<p>[SE
c020: 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e 74 73  LECT] statements
c030: 20 63 61 6e 20 61 70 70 65 61 72 20 69 6e 20 65   can appear in e
c040: 78 70 72 65 73 73 69 6f 6e 73 20 61 73 20 65 69  xpressions as ei
c050: 74 68 65 72 20 74 68 65 0a 72 69 67 68 74 2d 68  ther the.right-h
c060: 61 6e 64 20 6f 70 65 72 61 6e 64 20 6f 66 20 74  and operand of t
c070: 68 65 20 49 4e 20 6f 70 65 72 61 74 6f 72 2c 20  he IN operator, 
c080: 61 73 20 61 20 73 63 61 6c 61 72 20 71 75 61 6e  as a scalar quan
c090: 74 69 74 79 2c 20 6f 72 0a 61 73 20 74 68 65 20  tity, or.as the 
c0a0: 6f 70 65 72 61 6e 64 20 6f 66 20 61 6e 20 45 58  operand of an EX
c0b0: 49 53 54 53 20 6f 70 65 72 61 74 6f 72 2e 0a 41  ISTS operator..A
c0c0: 73 20 61 20 73 63 61 6c 61 72 20 71 75 61 6e 74  s a scalar quant
c0d0: 69 74 79 20 6f 72 20 74 68 65 20 6f 70 65 72 61  ity or the opera
c0e0: 6e 64 20 6f 66 20 61 6e 20 49 4e 20 6f 70 65 72  nd of an IN oper
c0f0: 61 74 6f 72 2c 0a 74 68 65 20 53 45 4c 45 43 54  ator,.the SELECT
c100: 20 73 68 6f 75 6c 64 20 68 61 76 65 20 6f 6e 6c   should have onl
c110: 79 20 61 20 73 69 6e 67 6c 65 20 63 6f 6c 75 6d  y a single colum
c120: 6e 20 69 6e 20 69 74 73 0a 72 65 73 75 6c 74 2e  n in its.result.
c130: 20 20 43 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43    Compound SELEC
c140: 54 73 20 28 63 6f 6e 6e 65 63 74 65 64 20 77 69  Ts (connected wi
c150: 74 68 20 6b 65 79 77 6f 72 64 73 20 6c 69 6b 65  th keywords like
c160: 20 55 4e 49 4f 4e 20 6f 72 0a 45 58 43 45 50 54   UNION or.EXCEPT
c170: 29 20 61 72 65 20 61 6c 6c 6f 77 65 64 2e 0a 57  ) are allowed..W
c180: 69 74 68 20 74 68 65 20 45 58 49 53 54 53 20 6f  ith the EXISTS o
c190: 70 65 72 61 74 6f 72 2c 20 74 68 65 20 63 6f 6c  perator, the col
c1a0: 75 6d 6e 73 20 69 6e 20 74 68 65 20 72 65 73 75  umns in the resu
c1b0: 6c 74 20 73 65 74 20 6f 66 20 74 68 65 20 5b 53  lt set of the [S
c1c0: 45 4c 45 43 54 5d 20 61 72 65 0a 69 67 6e 6f 72  ELECT] are.ignor
c1d0: 65 64 20 61 6e 64 20 74 68 65 20 65 78 70 72 65  ed and the expre
c1e0: 73 73 69 6f 6e 20 72 65 74 75 72 6e 73 20 54 52  ssion returns TR
c1f0: 55 45 20 69 66 20 6f 6e 65 20 6f 72 20 6d 6f 72  UE if one or mor
c200: 65 20 72 6f 77 73 20 65 78 69 73 74 0a 61 6e 64  e rows exist.and
c210: 20 46 41 4c 53 45 20 69 66 20 74 68 65 20 72 65   FALSE if the re
c220: 73 75 6c 74 20 73 65 74 20 69 73 20 65 6d 70 74  sult set is empt
c230: 79 2e 0a 49 66 20 6e 6f 20 74 65 72 6d 73 20 69  y..If no terms i
c240: 6e 20 74 68 65 20 5b 53 45 4c 45 43 54 5d 20 65  n the [SELECT] e
c250: 78 70 72 65 73 73 69 6f 6e 20 72 65 66 65 72 20  xpression refer 
c260: 74 6f 20 76 61 6c 75 65 20 69 6e 20 74 68 65 20  to value in the 
c270: 63 6f 6e 74 61 69 6e 69 6e 67 0a 71 75 65 72 79  containing.query
c280: 2c 20 74 68 65 6e 20 74 68 65 20 65 78 70 72 65  , then the expre
c290: 73 73 69 6f 6e 20 69 73 20 65 76 61 6c 75 61 74  ssion is evaluat
c2a0: 65 64 20 6f 6e 63 65 20 70 72 69 6f 72 20 74 6f  ed once prior to
c2b0: 20 61 6e 79 20 6f 74 68 65 72 0a 70 72 6f 63 65   any other.proce
c2c0: 73 73 69 6e 67 20 61 6e 64 20 74 68 65 20 72 65  ssing and the re
c2d0: 73 75 6c 74 20 69 73 20 72 65 75 73 65 64 20 61  sult is reused a
c2e0: 73 20 6e 65 63 65 73 73 61 72 79 2e 20 20 49 66  s necessary.  If
c2f0: 20 74 68 65 20 5b 53 45 4c 45 43 54 5d 20 65 78   the [SELECT] ex
c300: 70 72 65 73 73 69 6f 6e 0a 64 6f 65 73 20 63 6f  pression.does co
c310: 6e 74 61 69 6e 20 76 61 72 69 61 62 6c 65 73 20  ntain variables 
c320: 66 72 6f 6d 20 74 68 65 20 6f 75 74 65 72 20 71  from the outer q
c330: 75 65 72 79 2c 20 74 68 65 6e 20 74 68 65 20 5b  uery, then the [
c340: 53 45 4c 45 43 54 5d 20 69 73 20 72 65 65 76 61  SELECT] is reeva
c350: 6c 75 61 74 65 64 0a 65 76 65 72 79 20 74 69 6d  luated.every tim
c360: 65 20 69 74 20 69 73 20 6e 65 65 64 65 64 2e 3c  e it is needed.<
c370: 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20 61 20 53  /p>..<p>When a S
c380: 45 4c 45 43 54 20 69 73 20 74 68 65 20 72 69 67  ELECT is the rig
c390: 68 74 20 6f 70 65 72 61 6e 64 20 6f 66 20 74 68  ht operand of th
c3a0: 65 20 49 4e 20 6f 70 65 72 61 74 6f 72 2c 20 74  e IN operator, t
c3b0: 68 65 20 49 4e 0a 6f 70 65 72 61 74 6f 72 20 72  he IN.operator r
c3c0: 65 74 75 72 6e 73 20 54 52 55 45 20 69 66 20 74  eturns TRUE if t
c3d0: 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65  he result of the
c3e0: 20 6c 65 66 74 20 6f 70 65 72 61 6e 64 20 69 73   left operand is
c3f0: 20 61 6e 79 20 6f 66 0a 74 68 65 20 76 61 6c 75   any of.the valu
c400: 65 73 20 67 65 6e 65 72 61 74 65 64 20 62 79 20  es generated by 
c410: 74 68 65 20 73 65 6c 65 63 74 2e 20 20 54 68 65  the select.  The
c420: 20 49 4e 20 6f 70 65 72 61 74 6f 72 20 6d 61 79   IN operator may
c430: 20 62 65 20 70 72 65 63 65 64 65 64 0a 62 79 20   be preceded.by 
c440: 74 68 65 20 4e 4f 54 20 6b 65 79 77 6f 72 64 20  the NOT keyword 
c450: 74 6f 20 69 6e 76 65 72 74 20 74 68 65 20 73 65  to invert the se
c460: 6e 73 65 20 6f 66 20 74 68 65 20 74 65 73 74 2e  nse of the test.
c470: 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20 61 20  </p>..<p>When a 
c480: 53 45 4c 45 43 54 20 61 70 70 65 61 72 73 20 77  SELECT appears w
c490: 69 74 68 69 6e 20 61 6e 20 65 78 70 72 65 73 73  ithin an express
c4a0: 69 6f 6e 20 62 75 74 20 69 73 20 6e 6f 74 20 74  ion but is not t
c4b0: 68 65 20 72 69 67 68 74 0a 6f 70 65 72 61 6e 64  he right.operand
c4c0: 20 6f 66 20 61 6e 20 49 4e 20 6f 70 65 72 61 74   of an IN operat
c4d0: 6f 72 2c 20 74 68 65 6e 20 74 68 65 20 66 69 72  or, then the fir
c4e0: 73 74 20 72 6f 77 20 6f 66 20 74 68 65 20 72 65  st row of the re
c4f0: 73 75 6c 74 20 6f 66 20 74 68 65 0a 53 45 4c 45  sult of the.SELE
c500: 43 54 20 62 65 63 6f 6d 65 73 20 74 68 65 20 76  CT becomes the v
c510: 61 6c 75 65 20 75 73 65 64 20 69 6e 20 74 68 65  alue used in the
c520: 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 20 49 66   expression.  If
c530: 20 74 68 65 20 53 45 4c 45 43 54 20 79 69 65 6c   the SELECT yiel
c540: 64 73 0a 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65  ds.more than one
c550: 20 72 65 73 75 6c 74 20 72 6f 77 2c 20 61 6c 6c   result row, all
c560: 20 72 6f 77 73 20 61 66 74 65 72 20 74 68 65 20   rows after the 
c570: 66 69 72 73 74 20 61 72 65 20 69 67 6e 6f 72 65  first are ignore
c580: 64 2e 20 20 49 66 0a 74 68 65 20 53 45 4c 45 43  d.  If.the SELEC
c590: 54 20 79 69 65 6c 64 73 20 6e 6f 20 72 6f 77 73  T yields no rows
c5a0: 2c 20 74 68 65 6e 20 74 68 65 20 76 61 6c 75 65  , then the value
c5b0: 20 6f 66 20 74 68 65 20 53 45 4c 45 43 54 20 69   of the SELECT i
c5c0: 73 20 4e 55 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 70 3e  s NULL.</p>..<p>
c5d0: 41 20 43 41 53 54 20 65 78 70 72 65 73 73 69 6f  A CAST expressio
c5e0: 6e 20 63 68 61 6e 67 65 73 20 74 68 65 20 64 61  n changes the da
c5f0: 74 61 74 79 70 65 20 6f 66 20 74 68 65 20 3c 65  tatype of the <e
c600: 78 70 72 3e 20 69 6e 74 6f 20 74 68 65 0a 74 79  xpr> into the.ty
c610: 70 65 20 73 70 65 63 69 66 69 65 64 20 62 79 20  pe specified by 
c620: 26 6c 74 3b 74 79 70 65 26 67 74 3b 2e 20 0a 26  &lt;type&gt;. .&
c630: 6c 74 3b 74 79 70 65 26 67 74 3b 20 63 61 6e 20  lt;type&gt; can 
c640: 62 65 20 61 6e 79 20 6e 6f 6e 2d 65 6d 70 74 79  be any non-empty
c650: 20 74 79 70 65 20 6e 61 6d 65 20 74 68 61 74 20   type name that 
c660: 69 73 20 76 61 6c 69 64 0a 66 6f 72 20 74 68 65  is valid.for the
c670: 20 74 79 70 65 20 69 6e 20 61 20 63 6f 6c 75 6d   type in a colum
c680: 6e 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f 66 20  n definition of 
c690: 61 20 5b 43 52 45 41 54 45 20 54 41 42 4c 45 5d  a [CREATE TABLE]
c6a0: 20 73 74 61 74 65 6d 65 6e 74 2e 3c 2f 70 3e 0a   statement.</p>.
c6b0: 0a 3c 70 3e 42 6f 74 68 20 5b 63 6f 72 65 66 75  .<p>Both [corefu
c6c0: 6e 63 7c 73 69 6d 70 6c 65 5d 20 61 6e 64 20 5b  nc|simple] and [
c6d0: 61 67 67 66 75 6e 63 7c 61 67 67 72 65 67 61 74  aggfunc|aggregat
c6e0: 65 5d 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65  e] functions are
c6f0: 20 73 75 70 70 6f 72 74 65 64 2e 0a 28 46 6f 72   supported..(For
c700: 20 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 70 75   presentation pu
c710: 72 70 6f 73 65 73 2c 20 73 69 6d 70 6c 65 20 66  rposes, simple f
c720: 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 66 75 72  unctions are fur
c730: 74 68 65 72 20 73 75 62 64 69 76 69 64 65 64 20  ther subdivided 
c740: 69 6e 74 6f 0a 5b 63 6f 72 65 66 75 6e 63 20 7c  into.[corefunc |
c750: 20 63 6f 72 65 20 66 75 6e 63 74 69 6f 6e 73 5d   core functions]
c760: 20 61 6e 64 20 5b 64 61 74 65 66 75 6e 63 20 7c   and [datefunc |
c770: 20 64 61 74 65 2d 74 69 6d 65 20 66 75 6e 63 74   date-time funct
c780: 69 6f 6e 73 5d 2e 29 0a 41 20 73 69 6d 70 6c 65  ions].).A simple
c790: 20 66 75 6e 63 74 69 6f 6e 20 63 61 6e 20 62 65   function can be
c7a0: 20 75 73 65 64 20 69 6e 20 61 6e 79 20 65 78 70   used in any exp
c7b0: 72 65 73 73 69 6f 6e 2e 20 20 53 69 6d 70 6c 65  ression.  Simple
c7c0: 20 66 75 6e 63 74 69 6f 6e 73 20 72 65 74 75 72   functions retur
c7d0: 6e 0a 61 20 72 65 73 75 6c 74 20 69 6d 6d 65 64  n.a result immed
c7e0: 69 61 74 65 6c 79 20 62 61 73 65 64 20 6f 6e 20  iately based on 
c7f0: 74 68 65 69 72 20 69 6e 70 75 74 73 2e 20 20 41  their inputs.  A
c800: 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f  ggregate functio
c810: 6e 73 0a 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75  ns.may only be u
c820: 73 65 64 20 69 6e 20 61 20 53 45 4c 45 43 54 20  sed in a SELECT 
c830: 73 74 61 74 65 6d 65 6e 74 2e 20 20 41 67 67 72  statement.  Aggr
c840: 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 20  egate functions 
c850: 63 6f 6d 70 75 74 65 0a 74 68 65 69 72 20 72 65  compute.their re
c860: 73 75 6c 74 20 61 63 72 6f 73 73 20 61 6c 6c 20  sult across all 
c870: 72 6f 77 73 20 6f 66 20 74 68 65 20 72 65 73 75  rows of the resu
c880: 6c 74 20 73 65 74 2e 3c 2f 70 3e 0a 0a 3c 74 63  lt set.</p>..<tc
c890: 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
c8a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c8b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c8c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c8d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c8e0: 23 0a 53 65 63 74 69 6f 6e 20 7b 43 6f 72 65 20  #.Section {Core 
c8f0: 46 75 6e 63 74 69 6f 6e 73 7d 20 63 6f 72 65 66  Functions} coref
c900: 75 6e 63 20 7b 63 6f 72 65 66 75 6e 63 7d 0a 70  unc {corefunc}.p
c910: 72 6f 63 20 66 75 6e 63 64 65 66 20 7b 73 79 6e  roc funcdef {syn
c920: 74 61 78 20 6b 65 79 77 6f 72 64 73 20 64 65 73  tax keywords des
c930: 63 7d 20 7b 0a 20 20 68 64 5f 70 75 74 73 20 7b  c} {.  hd_puts {
c940: 3c 74 72 3e 7d 0a 20 20 72 65 67 73 75 62 20 2d  <tr>}.  regsub -
c950: 61 6c 6c 20 7b 5c 73 2b 7d 20 5b 73 74 72 69 6e  all {\s+} [strin
c960: 67 20 74 72 69 6d 20 24 73 79 6e 74 61 78 5d 20  g trim $syntax] 
c970: 7b 3c 62 72 3e 3c 2f 62 72 3e 7d 20 73 79 6e 74  {<br></br>} synt
c980: 61 78 0a 20 20 72 65 67 73 75 62 20 2d 61 6c 6c  ax.  regsub -all
c990: 20 7b 5c 28 28 5b 5e 2a 29 5d 2b 29 5c 29 7d 20   {\(([^*)]+)\)} 
c9a0: 24 73 79 6e 74 61 78 20 7b 28 3c 69 3e 5c 31 3c  $syntax {(<i>\1<
c9b0: 2f 69 3e 29 7d 20 73 79 6e 74 61 78 0a 20 20 72  /i>)} syntax.  r
c9c0: 65 67 73 75 62 20 2d 61 6c 6c 20 7b 2c 7d 20 24  egsub -all {,} $
c9d0: 73 79 6e 74 61 78 20 7b 3c 2f 69 3e 2c 3c 69 3e  syntax {</i>,<i>
c9e0: 7d 20 73 79 6e 74 61 78 0a 20 20 72 65 67 73 75  } syntax.  regsu
c9f0: 62 20 2d 61 6c 6c 20 7b 3c 69 3e 5c 2e 5c 2e 5c  b -all {<i>\.\.\
ca00: 2e 3c 2f 69 3e 7d 20 24 73 79 6e 74 61 78 20 7b  .</i>} $syntax {
ca10: 2e 2e 2e 7d 20 73 79 6e 74 61 78 0a 20 20 68 64  ...} syntax.  hd
ca20: 5f 70 75 74 73 20 22 3c 74 64 20 76 61 6c 69 67  _puts "<td valig
ca30: 6e 3d 5c 22 74 6f 70 5c 22 20 61 6c 69 67 6e 3d  n=\"top\" align=
ca40: 5c 22 72 69 67 68 74 5c 22 20 77 69 64 74 68 3d  \"right\" width=
ca50: 5c 22 31 32 30 5c 22 3e 24 73 79 6e 74 61 78 3c  \"120\">$syntax<
ca60: 2f 74 64 3e 22 0a 20 20 68 64 5f 70 75 74 73 20  /td>".  hd_puts 
ca70: 7b 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  {<td valign="top
ca80: 22 3e 7d 0a 20 20 69 66 20 7b 5b 6c 6c 65 6e 67  ">}.  if {[lleng
ca90: 74 68 20 24 6b 65 79 77 6f 72 64 73 5d 3d 3d 30  th $keywords]==0
caa0: 7d 20 7b 0a 20 20 20 20 72 65 67 65 78 70 20 7b  } {.    regexp {
cab0: 5b 61 2d 7a 5f 5d 2b 7d 20 24 73 79 6e 74 61 78  [a-z_]+} $syntax
cac0: 20 6e 61 6d 65 0a 20 20 20 20 68 64 5f 66 72 61   name.    hd_fra
cad0: 67 6d 65 6e 74 20 24 6e 61 6d 65 20 24 6e 61 6d  gment $name $nam
cae0: 65 0a 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20  e.  } else {.   
caf0: 20 65 76 61 6c 20 68 64 5f 66 72 61 67 6d 65 6e   eval hd_fragmen
cb00: 74 20 24 6b 65 79 77 6f 72 64 73 0a 20 20 20 20  t $keywords.    
cb10: 68 64 5f 6b 65 79 77 6f 72 64 73 20 24 6b 65 79  hd_keywords $key
cb20: 77 6f 72 64 73 0a 20 20 7d 0a 20 20 68 64 5f 72  words.  }.  hd_r
cb30: 65 73 6f 6c 76 65 20 24 64 65 73 63 0a 20 20 68  esolve $desc.  h
cb40: 64 5f 70 75 74 73 20 7b 3c 2f 74 64 3e 3c 2f 74  d_puts {</td></t
cb50: 72 3e 7d 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  r>}.}.</tcl>..<p
cb60: 3e 54 68 65 20 63 6f 72 65 20 66 75 6e 63 74 69  >The core functi
cb70: 6f 6e 73 20 73 68 6f 77 6e 20 62 65 6c 6f 77 20  ons shown below 
cb80: 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20 62 79  are available by
cb90: 20 64 65 66 61 75 6c 74 2e 20 0a 5b 64 61 74 65   default. .[date
cba0: 66 75 6e 63 20 7c 20 44 61 74 65 20 26 61 6d 70  func | Date &amp
cbb0: 3b 20 54 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73  ; Time functions
cbc0: 5d 20 61 6e 64 0a 5b 61 67 67 66 75 6e 63 20 7c  ] and.[aggfunc |
cbd0: 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74   aggregate funct
cbe0: 69 6f 6e 73 5d 20 61 72 65 20 64 6f 63 75 6d 65  ions] are docume
cbf0: 6e 74 65 64 20 73 65 70 61 72 61 74 65 6c 79 2e  nted separately.
cc00: 20 20 41 6e 0a 61 70 70 6c 69 63 61 74 69 6f 6e    An.application
cc10: 20 6d 61 79 20 64 65 66 69 6e 65 20 61 64 64 69   may define addi
cc20: 74 69 6f 6e 61 6c 0a 66 75 6e 63 74 69 6f 6e 73  tional.functions
cc30: 20 77 72 69 74 74 65 6e 20 69 6e 20 43 20 61 6e   written in C an
cc40: 64 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 64  d added to the d
cc50: 61 74 61 62 61 73 65 20 65 6e 67 69 6e 65 20 75  atabase engine u
cc60: 73 69 6e 67 0a 74 68 65 20 5b 73 71 6c 69 74 65  sing.the [sqlite
cc70: 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f  3_create_functio
cc80: 6e 28 29 5d 20 41 50 49 2e 3c 2f 70 3e 0a 0a 3c  n()] API.</p>..<
cc90: 74 61 62 6c 65 20 62 6f 72 64 65 72 3d 30 20 63  table border=0 c
cca0: 65 6c 6c 70 61 64 64 69 6e 67 3d 31 30 3e 0a 3c  ellpadding=10>.<
ccb0: 74 63 6c 3e 0a 66 75 6e 63 64 65 66 20 7b 61 62  tcl>.funcdef {ab
ccc0: 73 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74  s(X)} {} {.  Ret
ccd0: 75 72 6e 20 74 68 65 20 61 62 73 6f 6c 75 74 65  urn the absolute
cce0: 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 6e 75   value of the nu
ccf0: 6d 65 72 69 63 0a 20 20 61 72 67 75 6d 65 6e 74  meric.  argument
cd00: 20 3c 69 3e 58 3c 2f 69 3e 2e 20 20 52 65 74 75   <i>X</i>.  Retu
cd10: 72 6e 20 4e 55 4c 4c 20 69 66 20 3c 69 3e 58 3c  rn NULL if <i>X<
cd20: 2f 69 3e 20 69 73 20 4e 55 4c 4c 2e 20 20 52 65  /i> is NULL.  Re
cd30: 74 75 72 6e 20 30 2e 30 20 69 66 0a 20 20 3c 69  turn 0.0 if.  <i
cd40: 3e 58 3c 2f 69 3e 20 69 73 20 6e 6f 74 20 61 20  >X</i> is not a 
cd50: 6e 75 6d 65 72 69 63 20 76 61 6c 75 65 2e 0a 7d  numeric value..}
cd60: 0a 0a 66 75 6e 63 64 65 66 20 7b 63 6f 61 6c 65  ..funcdef {coale
cd70: 73 63 65 28 58 2c 59 2c 2e 2e 2e 29 7d 20 7b 7d  sce(X,Y,...)} {}
cd80: 20 7b 0a 20 20 52 65 74 75 72 6e 20 61 20 63 6f   {.  Return a co
cd90: 70 79 20 6f 66 20 74 68 65 20 66 69 72 73 74 20  py of the first 
cda0: 6e 6f 6e 2d 4e 55 4c 4c 20 61 72 67 75 6d 65 6e  non-NULL argumen
cdb0: 74 2e 20 20 49 66 0a 20 20 61 6c 6c 20 61 72 67  t.  If.  all arg
cdc0: 75 6d 65 6e 74 73 20 61 72 65 20 4e 55 4c 4c 20  uments are NULL 
cdd0: 74 68 65 6e 20 4e 55 4c 4c 20 69 73 20 72 65 74  then NULL is ret
cde0: 75 72 6e 65 64 2e 20 20 54 68 65 72 65 20 6d 75  urned.  There mu
cdf0: 73 74 20 62 65 20 61 74 20 6c 65 61 73 74 20 0a  st be at least .
ce00: 20 20 32 20 61 72 67 75 6d 65 6e 74 73 2e 0a 7d    2 arguments..}
ce10: 0a 0a 66 75 6e 63 64 65 66 20 7b 67 6c 6f 62 28  ..funcdef {glob(
ce20: 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20 54 68 69  X,Y)} {} {.  Thi
ce30: 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 75 73  s function is us
ce40: 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20  ed to implement 
ce50: 74 68 65 0a 20 20 22 3c 62 3e 59 20 47 4c 4f 42  the.  "<b>Y GLOB
ce60: 20 58 3c 2f 62 3e 22 20 73 79 6e 74 61 78 20 6f   X</b>" syntax o
ce70: 66 20 53 51 4c 69 74 65 2e 0a 20 20 4e 6f 74 65  f SQLite..  Note
ce80: 20 74 68 61 74 20 74 68 65 20 58 20 61 6e 64 20   that the X and 
ce90: 59 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  Y arguments are 
cea0: 72 65 76 65 72 73 65 64 20 69 6e 20 74 68 65 20  reversed in the 
ceb0: 67 6c 6f 62 28 29 20 66 75 6e 63 74 69 6f 6e 0a  glob() function.
cec0: 20 20 72 65 6c 61 74 69 76 65 20 74 6f 20 74 68    relative to th
ced0: 65 20 69 6e 66 69 78 20 5b 47 4c 4f 42 5d 20 6f  e infix [GLOB] o
cee0: 70 65 72 61 74 6f 72 2e 0a 20 20 54 68 65 20 5b  perator..  The [
cef0: 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66  sqlite3_create_f
cf00: 75 6e 63 74 69 6f 6e 28 29 5d 0a 20 20 69 6e 74  unction()].  int
cf10: 65 72 66 61 63 65 20 63 61 6e 0a 20 20 62 65 20  erface can.  be 
cf20: 75 73 65 64 20 74 6f 20 6f 76 65 72 72 69 64 65  used to override
cf30: 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 61   this function a
cf40: 6e 64 20 74 68 65 72 65 62 79 20 63 68 61 6e 67  nd thereby chang
cf50: 65 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 0a  e the operation.
cf60: 20 20 6f 66 20 74 68 65 20 5b 47 4c 4f 42 5d 20    of the [GLOB] 
cf70: 6f 70 65 72 61 74 6f 72 2e 3c 2f 74 64 3e 0a 7d  operator.</td>.}
cf80: 0a 0a 66 75 6e 63 64 65 66 20 7b 69 66 6e 75 6c  ..funcdef {ifnul
cf90: 6c 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20 52  l(X,Y)} {} {.  R
cfa0: 65 74 75 72 6e 20 61 20 63 6f 70 79 20 6f 66 20  eturn a copy of 
cfb0: 74 68 65 20 66 69 72 73 74 20 6e 6f 6e 2d 4e 55  the first non-NU
cfc0: 4c 4c 20 61 72 67 75 6d 65 6e 74 2e 20 20 49 66  LL argument.  If
cfd0: 0a 20 20 62 6f 74 68 20 61 72 67 75 6d 65 6e 74  .  both argument
cfe0: 73 20 61 72 65 20 4e 55 4c 4c 20 74 68 65 6e 20  s are NULL then 
cff0: 4e 55 4c 4c 20 69 73 20 72 65 74 75 72 6e 65 64  NULL is returned
d000: 2e 20 54 68 69 73 20 62 65 68 61 76 65 73 20 74  . This behaves t
d010: 68 65 20 73 61 6d 65 20 61 73 20 0a 20 20 5b 63  he same as .  [c
d020: 6f 61 6c 65 73 63 65 28 29 5d 2e 3c 2f 74 64 3e  oalesce()].</td>
d030: 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 68 65 78  .}..funcdef {hex
d040: 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 54 68 65 20  (X)} {} {.  The 
d050: 61 72 67 75 6d 65 6e 74 20 69 73 20 69 6e 74 65  argument is inte
d060: 72 70 72 65 74 65 64 20 61 73 20 61 20 42 4c 4f  rpreted as a BLO
d070: 42 2e 20 20 54 68 65 20 72 65 73 75 6c 74 0a 20  B.  The result. 
d080: 20 69 73 20 61 20 68 65 78 61 64 65 63 69 6d 61   is a hexadecima
d090: 6c 20 72 65 6e 64 65 72 69 6e 67 20 6f 66 20 74  l rendering of t
d0a0: 68 65 20 63 6f 6e 74 65 6e 74 20 6f 66 20 74 68  he content of th
d0b0: 61 74 20 62 6c 6f 62 2e 0a 7d 0a 0a 66 75 6e 63  at blob..}..func
d0c0: 64 65 66 20 7b 6c 61 73 74 5f 69 6e 73 65 72 74  def {last_insert
d0d0: 5f 72 6f 77 69 64 28 29 7d 20 7b 7d 20 7b 0a 20  _rowid()} {} {. 
d0e0: 20 52 65 74 75 72 6e 20 74 68 65 20 5b 52 4f 57   Return the [ROW
d0f0: 49 44 5d 0a 20 20 6f 66 20 74 68 65 20 6c 61 73  ID].  of the las
d100: 74 20 72 6f 77 20 69 6e 73 65 72 74 20 66 72 6f  t row insert fro
d110: 6d 20 74 68 69 73 0a 20 20 63 6f 6e 6e 65 63 74  m this.  connect
d120: 69 6f 6e 20 74 6f 20 74 68 65 20 64 61 74 61 62  ion to the datab
d130: 61 73 65 2e 20 0a 20 20 54 68 69 73 20 69 73 20  ase. .  This is 
d140: 74 68 65 20 73 61 6d 65 20 76 61 6c 75 65 20 74  the same value t
d150: 68 61 74 20 77 6f 75 6c 64 20 62 65 20 72 65 74  hat would be ret
d160: 75 72 6e 65 64 0a 20 20 66 72 6f 6d 20 74 68 65  urned.  from the
d170: 20 5b 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69   [sqlite3_last_i
d180: 6e 73 65 72 74 5f 72 6f 77 69 64 28 29 5d 20 41  nsert_rowid()] A
d190: 50 49 20 66 75 6e 63 74 69 6f 6e 2e 0a 7d 0a 0a  PI function..}..
d1a0: 66 75 6e 63 64 65 66 20 7b 6c 65 6e 67 74 68 28  funcdef {length(
d1b0: 58 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72  X)} {} {.  Retur
d1c0: 6e 20 74 68 65 20 73 74 72 69 6e 67 20 6c 65 6e  n the string len
d1d0: 67 74 68 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 20  gth of <i>X</i> 
d1e0: 69 6e 20 63 68 61 72 61 63 74 65 72 73 2e 0a 20  in characters.. 
d1f0: 20 49 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f   If SQLite is co
d200: 6e 66 69 67 75 72 65 64 20 74 6f 20 73 75 70 70  nfigured to supp
d210: 6f 72 74 20 55 54 46 2d 38 2c 20 74 68 65 6e 20  ort UTF-8, then 
d220: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 55 54  the number of UT
d230: 46 2d 38 0a 20 20 63 68 61 72 61 63 74 65 72 73  F-8.  characters
d240: 20 69 73 20 72 65 74 75 72 6e 65 64 2c 20 6e 6f   is returned, no
d250: 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  t the number of 
d260: 62 79 74 65 73 2e 0a 7d 0a 0a 66 75 6e 63 64 65  bytes..}..funcde
d270: 66 20 7b 6c 69 6b 65 28 58 2c 59 29 20 6c 69 6b  f {like(X,Y) lik
d280: 65 28 58 2c 59 2c 5a 29 7d 20 7b 7d 20 7b 0a 20  e(X,Y,Z)} {} {. 
d290: 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69   This function i
d2a0: 73 20 75 73 65 64 20 74 6f 20 69 6d 70 6c 65 6d  s used to implem
d2b0: 65 6e 74 20 74 68 65 20 22 3c 62 3e 59 20 4c 49  ent the "<b>Y LI
d2c0: 4b 45 20 58 20 26 23 39 31 3b 45 53 43 41 50 45  KE X &#91;ESCAPE
d2d0: 20 5a 26 23 39 33 3b 3c 2f 62 3e 22 0a 20 20 73   Z&#93;</b>".  s
d2e0: 79 6e 74 61 78 20 6f 66 20 53 51 4c 2e 20 49 66  yntax of SQL. If
d2f0: 20 74 68 65 20 6f 70 74 69 6f 6e 61 6c 20 45 53   the optional ES
d300: 43 41 50 45 20 63 6c 61 75 73 65 20 69 73 20 70  CAPE clause is p
d310: 72 65 73 65 6e 74 2c 20 74 68 65 6e 20 74 68 65  resent, then the
d320: 0a 20 20 75 73 65 72 2d 66 75 6e 63 74 69 6f 6e  .  user-function
d330: 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 69 74 68   is invoked with
d340: 20 74 68 72 65 65 20 61 72 67 75 6d 65 6e 74 73   three arguments
d350: 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 69 74 20  . Otherwise, it 
d360: 69 73 0a 20 20 69 6e 76 6f 6b 65 64 20 77 69 74  is.  invoked wit
d370: 68 20 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 20  h two arguments 
d380: 6f 6e 6c 79 2e 20 4e 6f 74 65 20 74 68 61 74 20  only. Note that 
d390: 74 68 65 20 58 20 61 6e 64 20 59 20 70 61 72 61  the X and Y para
d3a0: 6d 65 74 65 72 73 20 61 72 65 0a 20 20 72 65 76  meters are.  rev
d3b0: 65 72 73 65 64 20 69 6e 20 74 68 65 20 6c 69 6b  ersed in the lik
d3c0: 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 6c  e() function rel
d3d0: 61 74 69 76 65 20 74 6f 20 74 68 65 20 69 6e 66  ative to the inf
d3e0: 69 78 20 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74  ix [LIKE] operat
d3f0: 6f 72 2e 0a 20 20 54 68 65 20 5b 73 71 6c 69 74  or..  The [sqlit
d400: 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69  e3_create_functi
d410: 6f 6e 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20  on()] interface 
d420: 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 6f  can be used to o
d430: 76 65 72 72 69 64 65 20 74 68 69 73 0a 20 20 66  verride this.  f
d440: 75 6e 63 74 69 6f 6e 20 61 6e 64 20 74 68 65 72  unction and ther
d450: 65 62 79 20 63 68 61 6e 67 65 20 74 68 65 20 6f  eby change the o
d460: 70 65 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 0a  peration of the.
d470: 20 20 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f    [LIKE] operato
d480: 72 2e 20 57 68 65 6e 20 64 6f 69 6e 67 20 74 68  r. When doing th
d490: 69 73 2c 20 69 74 20 6d 61 79 20 62 65 20 69 6d  is, it may be im
d4a0: 70 6f 72 74 61 6e 74 0a 20 20 74 6f 20 6f 76 65  portant.  to ove
d4b0: 72 72 69 64 65 20 62 6f 74 68 20 74 68 65 20 74  rride both the t
d4c0: 77 6f 20 61 6e 64 20 74 68 72 65 65 20 61 72 67  wo and three arg
d4d0: 75 6d 65 6e 74 20 76 65 72 73 69 6f 6e 73 20 6f  ument versions o
d4e0: 66 20 74 68 65 20 6c 69 6b 65 28 29 20 0a 20 20  f the like() .  
d4f0: 66 75 6e 63 74 69 6f 6e 2e 20 4f 74 68 65 72 77  function. Otherw
d500: 69 73 65 2c 20 64 69 66 66 65 72 65 6e 74 20 63  ise, different c
d510: 6f 64 65 20 6d 61 79 20 62 65 20 63 61 6c 6c 65  ode may be calle
d520: 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74  d to implement t
d530: 68 65 0a 20 20 5b 4c 49 4b 45 5d 20 6f 70 65 72  he.  [LIKE] oper
d540: 61 74 6f 72 20 64 65 70 65 6e 64 69 6e 67 20 6f  ator depending o
d550: 6e 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74  n whether or not
d560: 20 61 6e 20 45 53 43 41 50 45 20 63 6c 61 75 73   an ESCAPE claus
d570: 65 20 77 61 73 20 0a 20 20 73 70 65 63 69 66 69  e was .  specifi
d580: 65 64 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b  ed..}..funcdef {
d590: 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 58  load_extension(X
d5a0: 29 20 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e  ) load_extension
d5b0: 28 58 2c 59 29 7d 20 7b 6c 6f 61 64 5f 65 78 74  (X,Y)} {load_ext
d5c0: 65 6e 73 69 6f 6e 7d 20 7b 0a 20 20 4c 6f 61 64  ension} {.  Load
d5d0: 20 53 51 4c 69 74 65 20 65 78 74 65 6e 73 69 6f   SQLite extensio
d5e0: 6e 73 20 6f 75 74 20 6f 66 20 74 68 65 20 73 68  ns out of the sh
d5f0: 61 72 65 64 20 6c 69 62 72 61 72 79 0a 20 20 66  ared library.  f
d600: 69 6c 65 20 6e 61 6d 65 64 20 3c 69 3e 58 3c 2f  ile named <i>X</
d610: 69 3e 20 75 73 69 6e 67 20 74 68 65 20 65 6e 74  i> using the ent
d620: 72 79 20 70 6f 69 6e 74 20 3c 69 3e 59 3c 2f 69  ry point <i>Y</i
d630: 3e 2e 20 20 54 68 65 20 72 65 73 75 6c 74 0a 20  >.  The result. 
d640: 20 69 73 20 61 20 4e 55 4c 4c 2e 20 20 49 66 20   is a NULL.  If 
d650: 3c 69 3e 59 3c 2f 69 3e 20 69 73 20 6f 6d 69 74  <i>Y</i> is omit
d660: 74 65 64 20 74 68 65 6e 20 74 68 65 20 64 65 66  ted then the def
d670: 61 75 6c 74 20 65 6e 74 72 79 20 70 6f 69 6e 74  ault entry point
d680: 0a 20 20 6f 66 20 3c 62 3e 73 71 6c 69 74 65 33  .  of <b>sqlite3
d690: 5f 65 78 74 65 6e 73 69 6f 6e 5f 69 6e 69 74 3c  _extension_init<
d6a0: 2f 62 3e 20 69 73 20 75 73 65 64 2e 20 20 54 68  /b> is used.  Th
d6b0: 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 61 69 73  is function rais
d6c0: 65 73 0a 20 20 61 6e 20 65 78 63 65 70 74 69 6f  es.  an exceptio
d6d0: 6e 20 69 66 20 74 68 65 20 65 78 74 65 6e 73 69  n if the extensi
d6e0: 6f 6e 20 66 61 69 6c 73 20 74 6f 20 6c 6f 61 64  on fails to load
d6f0: 20 6f 72 20 69 6e 69 74 69 61 6c 69 7a 65 20 63   or initialize c
d700: 6f 72 72 65 63 74 6c 79 2e 0a 0a 20 20 3c 70 3e  orrectly...  <p>
d710: 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 77 69  This function wi
d720: 6c 6c 20 66 61 69 6c 20 69 66 20 74 68 65 20 65  ll fail if the e
d730: 78 74 65 6e 73 69 6f 6e 20 61 74 74 65 6d 70 74  xtension attempt
d740: 73 20 74 6f 20 6d 6f 64 69 66 79 0a 20 20 6f 72  s to modify.  or
d750: 20 64 65 6c 65 74 65 20 61 20 53 51 4c 20 66 75   delete a SQL fu
d760: 6e 63 74 69 6f 6e 20 6f 72 20 63 6f 6c 6c 61 74  nction or collat
d770: 69 6e 67 20 73 65 71 75 65 6e 63 65 2e 20 20 54  ing sequence.  T
d780: 68 65 0a 20 20 65 78 74 65 6e 73 69 6f 6e 20 63  he.  extension c
d790: 61 6e 20 61 64 64 20 6e 65 77 20 66 75 6e 63 74  an add new funct
d7a0: 69 6f 6e 73 20 6f 72 20 63 6f 6c 6c 61 74 69 6e  ions or collatin
d7b0: 67 20 73 65 71 75 65 6e 63 65 73 2c 20 62 75 74  g sequences, but
d7c0: 20 63 61 6e 6e 6f 74 0a 20 20 6d 6f 64 69 66 79   cannot.  modify
d7d0: 20 6f 72 20 64 65 6c 65 74 65 20 65 78 69 73 74   or delete exist
d7e0: 69 6e 67 20 66 75 6e 63 74 69 6f 6e 73 20 6f 72  ing functions or
d7f0: 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65   collating seque
d800: 6e 63 65 73 20 62 65 63 61 75 73 65 0a 20 20 74  nces because.  t
d810: 68 6f 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 61  hose functions a
d820: 6e 64 2f 6f 72 20 63 6f 6c 6c 61 74 69 6e 67 20  nd/or collating 
d830: 73 65 71 75 65 6e 63 65 73 20 6d 69 67 68 74 20  sequences might 
d840: 62 65 20 75 73 65 64 20 65 6c 73 65 77 68 65 72  be used elsewher
d850: 65 0a 20 20 69 6e 20 74 68 65 20 63 75 72 72 65  e.  in the curre
d860: 6e 74 6c 79 20 72 75 6e 6e 69 6e 67 20 53 51 4c  ntly running SQL
d870: 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 6f 20   statement.  To 
d880: 6c 6f 61 64 20 61 6e 20 65 78 74 65 6e 73 69 6f  load an extensio
d890: 6e 20 74 68 61 74 0a 20 20 63 68 61 6e 67 65 73  n that.  changes
d8a0: 20 6f 72 20 64 65 6c 65 74 65 73 20 66 75 6e 63   or deletes func
d8b0: 74 69 6f 6e 73 20 6f 72 20 63 6f 6c 6c 61 74 69  tions or collati
d8c0: 6e 67 20 73 65 71 75 65 6e 63 65 73 2c 20 75 73  ng sequences, us
d8d0: 65 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33  e the.  [sqlite3
d8e0: 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28  _load_extension(
d8f0: 29 5d 20 43 2d 6c 61 6e 67 75 61 67 65 20 41 50  )] C-language AP
d900: 49 2e 3c 2f 70 3e 0a 7d 0a 0a 66 75 6e 63 64 65  I.</p>.}..funcde
d910: 66 20 7b 6c 6f 77 65 72 28 58 29 7d 20 7b 7d 20  f {lower(X)} {} 
d920: 7b 0a 20 20 52 65 74 75 72 6e 20 61 20 63 6f 70  {.  Return a cop
d930: 79 20 6f 66 20 73 74 72 69 6e 67 20 3c 69 3e 58  y of string <i>X
d940: 3c 2f 69 3e 20 77 69 74 68 20 61 6c 6c 20 41 53  </i> with all AS
d950: 43 49 49 20 63 68 61 72 61 63 74 65 72 73 0a 20  CII characters. 
d960: 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 6c 6f   converted to lo
d970: 77 65 72 20 63 61 73 65 2e 20 20 54 68 65 20 43  wer case.  The C
d980: 20 6c 69 62 72 61 72 79 20 3c 62 3e 74 6f 6c 6f   library <b>tolo
d990: 77 65 72 28 29 3c 2f 62 3e 20 72 6f 75 74 69 6e  wer()</b> routin
d9a0: 65 20 69 73 20 75 73 65 64 0a 20 20 66 6f 72 20  e is used.  for 
d9b0: 74 68 65 20 63 6f 6e 76 65 72 73 69 6f 6e 2c 20  the conversion, 
d9c0: 77 68 69 63 68 20 6d 65 61 6e 73 20 74 68 61 74  which means that
d9d0: 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 6d   this function m
d9e0: 69 67 68 74 20 6e 6f 74 0a 20 20 77 6f 72 6b 20  ight not.  work 
d9f0: 63 6f 72 72 65 63 74 6c 79 20 6f 6e 20 6e 6f 6e  correctly on non
da00: 2d 41 53 43 49 49 20 55 54 46 2d 38 20 63 68 61  -ASCII UTF-8 cha
da10: 72 61 63 74 65 72 73 2e 0a 7d 0a 0a 66 75 6e 63  racters..}..func
da20: 64 65 66 20 7b 6c 74 72 69 6d 28 58 29 20 6c 74  def {ltrim(X) lt
da30: 72 69 6d 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20  rim(X,Y)} {} {. 
da40: 20 52 65 74 75 72 6e 20 61 20 73 74 72 69 6e 67   Return a string
da50: 20 66 6f 72 6d 65 64 20 62 79 20 72 65 6d 6f 76   formed by remov
da60: 69 6e 67 20 61 6e 79 20 61 6e 64 20 61 6c 6c 0a  ing any and all.
da70: 20 20 63 68 61 72 61 63 74 65 72 73 20 74 68 61    characters tha
da80: 74 20 61 70 70 65 61 72 20 69 6e 20 3c 69 3e 59  t appear in <i>Y
da90: 3c 2f 69 3e 20 66 72 6f 6d 20 74 68 65 20 6c 65  </i> from the le
daa0: 66 74 20 73 69 64 65 20 6f 66 20 3c 69 3e 58 3c  ft side of <i>X<
dab0: 2f 69 3e 2e 0a 20 20 49 66 20 74 68 65 20 3c 69  /i>..  If the <i
dac0: 3e 59 3c 2f 69 3e 20 61 72 67 75 6d 65 6e 74 20  >Y</i> argument 
dad0: 69 73 20 6f 6d 69 74 74 65 64 2c 20 73 70 61 63  is omitted, spac
dae0: 65 73 20 61 72 65 20 72 65 6d 6f 76 65 64 2e 0a  es are removed..
daf0: 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6d 61 78 28  }..funcdef {max(
db00: 58 2c 59 2c 2e 2e 2e 29 7d 20 7b 6d 61 78 43 6f  X,Y,...)} {maxCo
db10: 72 65 46 75 6e 63 20 6d 61 78 7d 20 7b 0a 20 20  reFunc max} {.  
db20: 52 65 74 75 72 6e 20 74 68 65 20 61 72 67 75 6d  Return the argum
db30: 65 6e 74 20 77 69 74 68 20 74 68 65 20 6d 61 78  ent with the max
db40: 69 6d 75 6d 20 76 61 6c 75 65 2e 20 20 41 72 67  imum value.  Arg
db50: 75 6d 65 6e 74 73 0a 20 20 6d 61 79 20 62 65 20  uments.  may be 
db60: 73 74 72 69 6e 67 73 20 69 6e 20 61 64 64 69 74  strings in addit
db70: 69 6f 6e 20 74 6f 20 6e 75 6d 62 65 72 73 2e 20  ion to numbers. 
db80: 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 76 61 6c   The maximum val
db90: 75 65 20 69 73 20 64 65 74 65 72 6d 69 6e 65 64  ue is determined
dba0: 0a 20 20 62 79 20 74 68 65 20 75 73 75 61 6c 20  .  by the usual 
dbb0: 73 6f 72 74 20 6f 72 64 65 72 2e 20 20 4e 6f 74  sort order.  Not
dbc0: 65 20 74 68 61 74 20 3c 62 3e 6d 61 78 28 29 3c  e that <b>max()<
dbd0: 2f 62 3e 20 69 73 20 61 20 73 69 6d 70 6c 65 20  /b> is a simple 
dbe0: 66 75 6e 63 74 69 6f 6e 20 77 68 65 6e 0a 20 20  function when.  
dbf0: 69 74 20 68 61 73 20 32 20 6f 72 20 6d 6f 72 65  it has 2 or more
dc00: 20 61 72 67 75 6d 65 6e 74 73 20 62 75 74 20 63   arguments but c
dc10: 6f 6e 76 65 72 74 73 20 74 6f 20 61 6e 20 61 67  onverts to an ag
dc20: 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e  gregate function
dc30: 20 69 66 20 67 69 76 65 6e 0a 20 20 6f 6e 6c 79   if given.  only
dc40: 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65   a single argume
dc50: 6e 74 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b  nt..}..funcdef {
dc60: 6d 69 6e 28 58 2c 59 2c 2e 2e 2e 29 7d 20 7b 6d  min(X,Y,...)} {m
dc70: 69 6e 43 6f 72 65 46 75 6e 63 20 6d 69 6e 7d 20  inCoreFunc min} 
dc80: 7b 0a 20 20 52 65 74 75 72 6e 20 74 68 65 20 61  {.  Return the a
dc90: 72 67 75 6d 65 6e 74 20 77 69 74 68 20 74 68 65  rgument with the
dca0: 20 6d 69 6e 69 6d 75 6d 20 76 61 6c 75 65 2e 20   minimum value. 
dcb0: 20 41 72 67 75 6d 65 6e 74 73 0a 20 20 6d 61 79   Arguments.  may
dcc0: 20 62 65 20 73 74 72 69 6e 67 73 20 69 6e 20 61   be strings in a
dcd0: 64 64 69 74 69 6f 6e 20 74 6f 20 6e 75 6d 62 65  ddition to numbe
dce0: 72 73 2e 20 20 54 68 65 20 6d 69 6e 69 6d 75 6d  rs.  The minimum
dcf0: 20 76 61 6c 75 65 20 69 73 20 64 65 74 65 72 6d   value is determ
dd00: 69 6e 65 64 0a 20 20 62 79 20 74 68 65 20 75 73  ined.  by the us
dd10: 75 61 6c 20 73 6f 72 74 20 6f 72 64 65 72 2e 20  ual sort order. 
dd20: 20 4e 6f 74 65 20 74 68 61 74 20 3c 62 3e 6d 69   Note that <b>mi
dd30: 6e 28 29 3c 2f 62 3e 20 69 73 20 61 20 73 69 6d  n()</b> is a sim
dd40: 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20 77 68 65  ple function whe
dd50: 6e 0a 20 20 69 74 20 68 61 73 20 32 20 6f 72 20  n.  it has 2 or 
dd60: 6d 6f 72 65 20 61 72 67 75 6d 65 6e 74 73 20 62  more arguments b
dd70: 75 74 20 63 6f 6e 76 65 72 74 73 20 74 6f 20 61  ut converts to a
dd80: 6e 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63  n aggregate func
dd90: 74 69 6f 6e 20 69 66 20 67 69 76 65 6e 0a 20 20  tion if given.  
dda0: 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 61 72  only a single ar
ddb0: 67 75 6d 65 6e 74 2e 0a 7d 0a 0a 66 75 6e 63 64  gument..}..funcd
ddc0: 65 66 20 7b 6e 75 6c 6c 69 66 28 58 2c 59 29 7d  ef {nullif(X,Y)}
ddd0: 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20 74   {} {.  Return t
dde0: 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e  he first argumen
ddf0: 74 20 69 66 20 74 68 65 20 61 72 67 75 6d 65 6e  t if the argumen
de00: 74 73 20 61 72 65 20 64 69 66 66 65 72 65 6e 74  ts are different
de10: 2c 20 0a 20 20 6f 74 68 65 72 77 69 73 65 20 72  , .  otherwise r
de20: 65 74 75 72 6e 20 4e 55 4c 4c 2e 0a 7d 0a 0a 66  eturn NULL..}..f
de30: 75 6e 63 64 65 66 20 7b 71 75 6f 74 65 28 58 29  uncdef {quote(X)
de40: 7d 20 7b 7d 20 7b 0a 20 20 54 68 69 73 20 72 6f  } {} {.  This ro
de50: 75 74 69 6e 65 20 72 65 74 75 72 6e 73 20 61 20  utine returns a 
de60: 73 74 72 69 6e 67 20 77 68 69 63 68 20 69 73 20  string which is 
de70: 74 68 65 20 76 61 6c 75 65 20 6f 66 0a 20 20 69  the value of.  i
de80: 74 73 20 61 72 67 75 6d 65 6e 74 20 73 75 69 74  ts argument suit
de90: 61 62 6c 65 20 66 6f 72 20 69 6e 63 6c 75 73 69  able for inclusi
dea0: 6f 6e 20 69 6e 74 6f 20 61 6e 6f 74 68 65 72 20  on into another 
deb0: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e 0a 20  SQL statement.. 
dec0: 20 53 74 72 69 6e 67 73 20 61 72 65 20 73 75 72   Strings are sur
ded0: 72 6f 75 6e 64 65 64 20 62 79 20 73 69 6e 67 6c  rounded by singl
dee0: 65 2d 71 75 6f 74 65 73 20 77 69 74 68 20 65 73  e-quotes with es
def0: 63 61 70 65 73 20 6f 6e 20 69 6e 74 65 72 69 6f  capes on interio
df00: 72 20 71 75 6f 74 65 73 0a 20 20 61 73 20 6e 65  r quotes.  as ne
df10: 65 64 65 64 2e 20 20 42 4c 4f 42 73 20 61 72 65  eded.  BLOBs are
df20: 20 65 6e 63 6f 64 65 64 20 61 73 20 68 65 78 61   encoded as hexa
df30: 64 65 63 69 6d 61 6c 20 6c 69 74 65 72 61 6c 73  decimal literals
df40: 2e 0a 20 20 54 68 65 20 69 6d 70 6c 65 6d 65 6e  ..  The implemen
df50: 74 61 74 69 6f 6e 20 6f 66 20 5b 56 41 43 55 55  tation of [VACUU
df60: 4d 5d 20 75 73 65 73 20 74 68 69 73 20 66 75 6e  M] uses this fun
df70: 63 74 69 6f 6e 2e 20 54 68 65 20 66 75 6e 63 74  ction. The funct
df80: 69 6f 6e 0a 20 20 69 73 20 61 6c 73 6f 20 75 73  ion.  is also us
df90: 65 66 75 6c 20 77 68 65 6e 20 77 72 69 74 69 6e  eful when writin
dfa0: 67 20 74 72 69 67 67 65 72 73 20 74 6f 20 69 6d  g triggers to im
dfb0: 70 6c 65 6d 65 6e 74 20 75 6e 64 6f 2f 72 65 64  plement undo/red
dfc0: 6f 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e  o functionality.
dfd0: 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 72 61 6e  .}..funcdef {ran
dfe0: 64 6f 6d 28 29 7d 20 7b 7d 20 7b 0a 20 20 52 65  dom()} {} {.  Re
dff0: 74 75 72 6e 20 61 20 70 73 65 75 64 6f 2d 72 61  turn a pseudo-ra
e000: 6e 64 6f 6d 20 69 6e 74 65 67 65 72 0a 20 20 62  ndom integer.  b
e010: 65 74 77 65 65 6e 20 2d 39 32 32 33 33 37 32 30  etween -92233720
e020: 33 36 38 35 34 37 37 35 38 30 38 20 61 6e 64 20  36854775808 and 
e030: 2b 39 32 32 33 33 37 32 30 33 36 38 35 34 37 37  +922337203685477
e040: 35 38 30 37 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66  5807..}..funcdef
e050: 20 7b 72 61 6e 64 6f 6d 62 6c 6f 62 28 4e 29 7d   {randomblob(N)}
e060: 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20 61   {} {.  Return a
e070: 6e 20 3c 69 3e 4e 3c 2f 69 3e 2d 62 79 74 65 20  n <i>N</i>-byte 
e080: 62 6c 6f 62 20 63 6f 6e 74 61 69 6e 69 6e 67 20  blob containing 
e090: 70 73 65 75 64 6f 2d 72 61 6e 64 6f 6d 20 62 79  pseudo-random by
e0a0: 74 65 73 2e 0a 20 20 3c 69 3e 4e 3c 2f 69 3e 20  tes..  <i>N</i> 
e0b0: 73 68 6f 75 6c 64 20 62 65 20 61 20 70 6f 73 74  should be a post
e0c0: 69 76 65 20 69 6e 74 65 67 65 72 2e 0a 0a 20 20  ive integer...  
e0d0: 3c 70 3e 48 69 6e 74 3a 20 20 61 70 70 6c 69 63  <p>Hint:  applic
e0e0: 61 74 69 6f 6e 73 20 63 61 6e 20 67 65 6e 65 72  ations can gener
e0f0: 61 74 65 20 67 6c 6f 62 61 6c 6c 79 20 75 6e 69  ate globally uni
e100: 71 75 65 20 69 64 65 6e 74 69 66 69 65 72 73 0a  que identifiers.
e110: 20 20 75 73 69 6e 67 20 74 68 69 73 20 66 75 6e    using this fun
e120: 63 74 69 6f 6e 20 74 6f 67 65 74 68 65 72 20 77  ction together w
e130: 69 74 68 20 5b 68 65 78 28 29 5d 20 61 6e 64 2f  ith [hex()] and/
e140: 6f 72 0a 20 20 5b 6c 6f 77 65 72 28 29 5d 20 6c  or.  [lower()] l
e150: 69 6b 65 20 74 68 69 73 3a 3c 2f 70 3e 0a 0a 20  ike this:</p>.. 
e160: 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20   <blockquote>.  
e170: 68 65 78 28 72 61 6e 64 6f 6d 62 6c 6f 62 28 31  hex(randomblob(1
e180: 36 29 29 3c 62 72 3e 3c 2f 62 72 3e 0a 20 20 6c  6))<br></br>.  l
e190: 6f 77 65 72 28 68 65 78 28 72 61 6e 64 6f 6d 62  ower(hex(randomb
e1a0: 6c 6f 62 28 31 36 29 29 29 0a 20 20 3c 2f 62 6c  lob(16))).  </bl
e1b0: 6f 63 6b 71 75 6f 74 65 3e 0a 7d 0a 0a 66 75 6e  ockquote>.}..fun
e1c0: 63 64 65 66 20 7b 72 65 70 6c 61 63 65 28 58 2c  cdef {replace(X,
e1d0: 59 2c 5a 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74  Y,Z)} {} {.  Ret
e1e0: 75 72 6e 20 61 20 73 74 72 69 6e 67 20 66 6f 72  urn a string for
e1f0: 6d 65 64 20 62 79 20 73 75 62 73 74 69 74 75 74  med by substitut
e200: 69 6e 67 20 73 74 72 69 6e 67 20 3c 69 3e 5a 3c  ing string <i>Z<
e210: 2f 69 3e 20 66 6f 72 0a 20 20 65 76 65 72 79 20  /i> for.  every 
e220: 6f 63 63 75 72 72 61 6e 63 65 20 6f 66 20 73 74  occurrance of st
e230: 72 69 6e 67 20 3c 69 3e 59 3c 2f 69 3e 20 69 6e  ring <i>Y</i> in
e240: 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e   string <i>X</i>
e250: 2e 20 20 54 68 65 20 5b 42 49 4e 41 52 59 5d 0a  .  The [BINARY].
e260: 20 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75    collating sequ
e270: 65 6e 63 65 20 69 73 20 75 73 65 64 20 66 6f 72  ence is used for
e280: 20 63 6f 6d 70 61 72 69 73 6f 6e 73 2e 0a 7d 0a   comparisons..}.
e290: 0a 66 75 6e 63 64 65 66 20 7b 72 6f 75 6e 64 28  .funcdef {round(
e2a0: 58 29 20 72 6f 75 6e 64 28 58 2c 59 29 7d 20 7b  X) round(X,Y)} {
e2b0: 7d 20 7b 0a 20 20 52 6f 75 6e 64 20 6f 66 66 20  } {.  Round off 
e2c0: 74 68 65 20 6e 75 6d 62 65 72 20 3c 69 3e 58 3c  the number <i>X<
e2d0: 2f 69 3e 20 74 6f 20 3c 69 3e 59 3c 2f 69 3e 20  /i> to <i>Y</i> 
e2e0: 64 69 67 69 74 73 20 74 6f 20 74 68 65 0a 20 20  digits to the.  
e2f0: 72 69 67 68 74 20 6f 66 20 74 68 65 20 64 65 63  right of the dec
e300: 69 6d 61 6c 20 70 6f 69 6e 74 2e 20 20 49 66 20  imal point.  If 
e310: 74 68 65 20 3c 69 3e 59 3c 2f 69 3e 20 61 72 67  the <i>Y</i> arg
e320: 75 6d 65 6e 74 20 69 73 20 6f 6d 69 74 74 65 64  ument is omitted
e330: 2c 20 30 20 69 73 20 0a 20 20 61 73 73 75 6d 65  , 0 is .  assume
e340: 64 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 72  d..}..funcdef {r
e350: 74 72 69 6d 28 58 29 20 72 74 72 69 6d 28 58 2c  trim(X) rtrim(X,
e360: 59 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72  Y)} {} {.  Retur
e370: 6e 20 61 20 73 74 72 69 6e 67 20 66 6f 72 6d 65  n a string forme
e380: 64 20 62 79 20 72 65 6d 6f 76 69 6e 67 20 61 6e  d by removing an
e390: 79 20 61 6e 64 20 61 6c 6c 0a 20 20 63 68 61 72  y and all.  char
e3a0: 61 63 74 65 72 73 20 74 68 61 74 20 61 70 70 65  acters that appe
e3b0: 61 72 20 69 6e 20 3c 69 3e 59 3c 2f 69 3e 20 66  ar in <i>Y</i> f
e3c0: 72 6f 6d 20 74 68 65 20 72 69 67 68 74 20 73 69  rom the right si
e3d0: 64 65 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 2e 0a  de of <i>X</i>..
e3e0: 20 20 49 66 20 74 68 65 20 3c 69 3e 59 3c 2f 69    If the <i>Y</i
e3f0: 3e 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f 6d  > argument is om
e400: 69 74 74 65 64 2c 20 73 70 61 63 65 73 20 61 72  itted, spaces ar
e410: 65 20 72 65 6d 6f 76 65 64 2e 0a 7d 0a 0a 66 75  e removed..}..fu
e420: 6e 63 64 65 66 20 7b 73 6f 75 6e 64 65 78 28 58  ncdef {soundex(X
e430: 29 7d 20 7b 7d 20 7b 0a 20 20 43 6f 6d 70 75 74  )} {} {.  Comput
e440: 65 20 74 68 65 20 73 6f 75 6e 64 65 78 20 65 6e  e the soundex en
e450: 63 6f 64 69 6e 67 20 6f 66 20 74 68 65 20 73 74  coding of the st
e460: 72 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e 2e 0a 20  ring <i>X</i>.. 
e470: 20 54 68 65 20 73 74 72 69 6e 67 20 22 3f 30 30   The string "?00
e480: 30 22 20 69 73 20 72 65 74 75 72 6e 65 64 20 69  0" is returned i
e490: 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 69  f the argument i
e4a0: 73 20 4e 55 4c 4c 2e 0a 20 20 54 68 69 73 20 66  s NULL..  This f
e4b0: 75 6e 63 74 69 6f 6e 20 69 73 20 6f 6d 69 74 74  unction is omitt
e4c0: 65 64 20 66 72 6f 6d 20 53 51 4c 69 74 65 20 62  ed from SQLite b
e4d0: 79 20 64 65 66 61 75 6c 74 2e 0a 20 20 49 74 20  y default..  It 
e4e0: 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c  is only availabl
e4f0: 65 20 74 68 65 20 2d 44 53 51 4c 49 54 45 5f 53  e the -DSQLITE_S
e500: 4f 55 4e 44 45 58 3d 31 20 63 6f 6d 70 69 6c 65  OUNDEX=1 compile
e510: 72 20 6f 70 74 69 6f 6e 0a 20 20 69 73 20 75 73  r option.  is us
e520: 65 64 20 77 68 65 6e 20 53 51 4c 69 74 65 20 69  ed when SQLite i
e530: 73 20 62 75 69 6c 74 2e 0a 7d 0a 0a 66 75 6e 63  s built..}..func
e540: 64 65 66 20 7b 73 71 6c 69 74 65 5f 76 65 72 73  def {sqlite_vers
e550: 69 6f 6e 28 58 29 7d 20 7b 73 71 6c 69 74 65 5f  ion(X)} {sqlite_
e560: 76 65 72 73 69 6f 6e 7d 20 7b 0a 20 20 52 65 74  version} {.  Ret
e570: 75 72 6e 20 74 68 65 20 76 65 72 73 69 6f 6e 20  urn the version 
e580: 73 74 72 69 6e 67 20 66 6f 72 20 74 68 65 20 53  string for the S
e590: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 0a 20 20  QLite library.  
e5a0: 74 68 61 74 20 69 73 20 72 75 6e 6e 69 6e 67 2e  that is running.
e5b0: 20 20 45 78 61 6d 70 6c 65 3a 20 20 22 33 2e 35    Example:  "3.5
e5c0: 2e 39 22 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b  .9".}..funcdef {
e5d0: 73 75 62 73 74 72 28 58 2c 59 2c 5a 29 20 73 75  substr(X,Y,Z) su
e5e0: 62 73 74 72 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a  bstr(X,Y)} {} {.
e5f0: 20 20 52 65 74 75 72 6e 20 61 20 73 75 62 73 74    Return a subst
e600: 72 69 6e 67 20 6f 66 20 69 6e 70 75 74 20 73 74  ring of input st
e610: 72 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e 20 74 68  ring <i>X</i> th
e620: 61 74 20 62 65 67 69 6e 73 0a 20 20 77 69 74 68  at begins.  with
e630: 20 74 68 65 20 3c 69 3e 59 3c 2f 69 3e 2d 74 68   the <i>Y</i>-th
e640: 20 63 68 61 72 61 63 74 65 72 20 61 6e 64 20 77   character and w
e650: 68 69 63 68 20 69 73 20 3c 69 3e 5a 3c 2f 69 3e  hich is <i>Z</i>
e660: 20 63 68 61 72 61 63 74 65 72 73 20 6c 6f 6e 67   characters long
e670: 2e 0a 20 20 49 66 20 3c 69 3e 5a 3c 2f 69 3e 20  ..  If <i>Z</i> 
e680: 69 73 20 6f 6d 69 74 74 65 64 20 74 68 65 6e 20  is omitted then 
e690: 61 6c 6c 20 63 68 61 72 61 63 74 65 72 20 74 68  all character th
e6a0: 72 6f 75 67 68 20 74 68 65 20 65 6e 64 20 6f 66  rough the end of
e6b0: 20 74 68 65 20 73 74 72 69 6e 67 0a 20 20 61 72   the string.  ar
e6c0: 65 20 72 65 74 75 72 6e 65 64 2e 0a 20 20 54 68  e returned..  Th
e6d0: 65 20 6c 65 66 74 2d 6d 6f 73 74 20 63 68 61 72  e left-most char
e6e0: 61 63 74 65 72 20 6f 66 20 3c 69 3e 58 3c 2f 69  acter of <i>X</i
e6f0: 3e 20 69 73 20 6e 75 6d 62 65 72 20 31 2e 20 20  > is number 1.  
e700: 49 66 20 3c 69 3e 59 3c 2f 69 3e 20 69 73 20 6e  If <i>Y</i> is n
e710: 65 67 61 74 69 76 65 0a 20 20 74 68 65 20 74 68  egative.  the th
e720: 65 20 66 69 72 73 74 20 63 68 61 72 61 63 74 65  e first characte
e730: 72 20 6f 66 20 74 68 65 20 73 75 62 73 74 72 69  r of the substri
e740: 6e 67 20 69 73 20 66 6f 75 6e 64 20 62 79 20 63  ng is found by c
e750: 6f 75 6e 74 69 6e 67 20 66 72 6f 6d 20 74 68 65  ounting from the
e760: 0a 20 20 72 69 67 68 74 20 72 61 74 68 65 72 20  .  right rather 
e770: 74 68 61 6e 20 74 68 65 20 6c 65 66 74 2e 20 20  than the left.  
e780: 49 66 20 3c 69 3e 58 3c 2f 69 3e 20 69 73 20 73  If <i>X</i> is s
e790: 74 72 69 6e 67 0a 20 20 74 68 65 6e 20 63 68 61  tring.  then cha
e7a0: 72 61 63 74 65 72 73 20 69 6e 64 69 63 65 73 20  racters indices 
e7b0: 72 65 66 65 72 20 74 6f 20 61 63 74 75 61 6c 20  refer to actual 
e7c0: 55 54 46 2d 38 20 63 68 61 72 61 63 74 65 72 73  UTF-8 characters
e7d0: 2e 20 20 49 66 0a 20 20 3c 69 3e 58 3c 2f 69 3e  .  If.  <i>X</i>
e7e0: 20 69 73 20 61 20 42 4c 4f 42 20 74 68 65 6e 20   is a BLOB then 
e7f0: 74 68 65 20 69 6e 64 69 63 65 73 20 72 65 66 65  the indices refe
e800: 72 20 74 6f 20 62 79 74 65 73 2e 0a 7d 0a 0a 66  r to bytes..}..f
e810: 75 6e 63 64 65 66 20 7b 74 72 69 6d 28 58 29 20  uncdef {trim(X) 
e820: 74 72 69 6d 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a  trim(X,Y)} {} {.
e830: 20 20 52 65 74 75 72 6e 20 61 20 73 74 72 69 6e    Return a strin
e840: 67 20 66 6f 72 6d 65 64 20 62 79 20 72 65 6d 6f  g formed by remo
e850: 76 69 6e 67 20 61 6e 79 20 61 6e 64 20 61 6c 6c  ving any and all
e860: 0a 20 20 63 68 61 72 61 63 74 65 72 73 20 74 68  .  characters th
e870: 61 74 20 61 70 70 65 61 72 20 69 6e 20 3c 69 3e  at appear in <i>
e880: 59 3c 2f 69 3e 20 66 72 6f 6d 20 62 6f 74 68 20  Y</i> from both 
e890: 65 6e 64 73 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e  ends of <i>X</i>
e8a0: 2e 0a 20 20 49 66 20 74 68 65 20 3c 69 3e 59 3c  ..  If the <i>Y<
e8b0: 2f 69 3e 20 61 72 67 75 6d 65 6e 74 20 69 73 20  /i> argument is 
e8c0: 6f 6d 69 74 74 65 64 2c 20 73 70 61 63 65 73 20  omitted, spaces 
e8d0: 61 72 65 20 72 65 6d 6f 76 65 64 2e 0a 7d 0a 0a  are removed..}..
e8e0: 66 75 6e 63 64 65 66 20 7b 74 79 70 65 6f 66 28  funcdef {typeof(
e8f0: 58 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72  X)} {} {.  Retur
e900: 6e 20 74 68 65 20 74 79 70 65 20 6f 66 20 74 68  n the type of th
e910: 65 20 65 78 70 72 65 73 73 69 6f 6e 20 3c 69 3e  e expression <i>
e920: 58 3c 2f 69 3e 2e 20 20 54 68 65 20 6f 6e 6c 79  X</i>.  The only
e930: 20 0a 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65   .  return value
e940: 73 20 61 72 65 20 22 6e 75 6c 6c 22 2c 20 22 69  s are "null", "i
e950: 6e 74 65 67 65 72 22 2c 20 22 72 65 61 6c 22 2c  nteger", "real",
e960: 20 22 74 65 78 74 22 2c 20 61 6e 64 20 22 62 6c   "text", and "bl
e970: 6f 62 22 2e 0a 20 20 53 51 4c 69 74 65 27 73 20  ob"..  SQLite's 
e980: 74 79 70 65 20 68 61 6e 64 6c 69 6e 67 20 69 73  type handling is
e990: 20 0a 20 20 65 78 70 6c 61 69 6e 65 64 20 69 6e   .  explained in
e9a0: 20 3c 61 20 68 72 65 66 3d 22 64 61 74 61 74 79   <a href="dataty
e9b0: 70 65 33 2e 68 74 6d 6c 22 3e 44 61 74 61 74 79  pe3.html">Dataty
e9c0: 70 65 73 20 69 6e 20 53 51 4c 69 74 65 20 56 65  pes in SQLite Ve
e9d0: 72 73 69 6f 6e 20 33 3c 2f 61 3e 2e 0a 7d 0a 0a  rsion 3</a>..}..
e9e0: 66 75 6e 63 64 65 66 20 7b 75 70 70 65 72 28 58  funcdef {upper(X
e9f0: 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72 6e  )} {} {.  Return
ea00: 20 61 20 63 6f 70 79 20 6f 66 20 69 6e 70 75 74   a copy of input
ea10: 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e   string <i>X</i>
ea20: 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 61 6c   converted to al
ea30: 6c 0a 20 20 75 70 70 65 72 2d 63 61 73 65 20 6c  l.  upper-case l
ea40: 65 74 74 65 72 73 2e 20 20 54 68 65 20 69 6d 70  etters.  The imp
ea50: 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74  lementation of t
ea60: 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 75 73 65  his function use
ea70: 73 20 74 68 65 20 43 20 6c 69 62 72 61 72 79 0a  s the C library.
ea80: 20 20 72 6f 75 74 69 6e 65 20 3c 62 3e 74 6f 75    routine <b>tou
ea90: 70 70 65 72 28 29 3c 2f 62 3e 20 77 68 69 63 68  pper()</b> which
eaa0: 20 6d 65 61 6e 73 20 69 74 20 6d 61 79 20 6e 6f   means it may no
eab0: 74 20 77 6f 72 6b 20 63 6f 72 72 65 63 74 6c 79  t work correctly
eac0: 20 6f 6e 20 0a 20 20 6e 6f 6e 2d 41 53 43 49 49   on .  non-ASCII
ead0: 20 55 54 46 2d 38 20 73 74 72 69 6e 67 73 2e 0a   UTF-8 strings..
eae0: 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 7a 65 72 6f  }..funcdef {zero
eaf0: 62 6c 6f 62 28 4e 29 7d 20 7b 7d 20 7b 0a 20 20  blob(N)} {} {.  
eb00: 52 65 74 75 72 6e 20 61 20 42 4c 4f 42 20 63 6f  Return a BLOB co
eb10: 6e 73 69 73 74 69 6e 67 20 6f 66 20 4e 20 62 79  nsisting of N by
eb20: 74 65 73 20 6f 66 20 30 78 30 30 2e 20 20 53 51  tes of 0x00.  SQ
eb30: 4c 69 74 65 0a 20 20 6d 61 6e 61 67 65 73 20 74  Lite.  manages t
eb40: 68 65 73 65 20 7a 65 72 6f 62 6c 6f 62 73 20 76  hese zeroblobs v
eb50: 65 72 79 20 65 66 66 69 63 69 65 6e 74 6c 79 2e  ery efficiently.
eb60: 20 20 5a 65 72 6f 62 6c 6f 62 73 20 63 61 6e 20    Zeroblobs can 
eb70: 62 65 20 75 73 65 64 20 74 6f 0a 20 20 72 65 73  be used to.  res
eb80: 65 72 76 65 20 73 70 61 63 65 20 66 6f 72 20 61  erve space for a
eb90: 20 42 4c 4f 42 20 74 68 61 74 20 69 73 20 6c 61   BLOB that is la
eba0: 74 65 72 20 77 72 69 74 74 65 6e 20 75 73 69 6e  ter written usin
ebb0: 67 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f 62 6c  g .  [sqlite3_bl
ebc0: 6f 62 5f 6f 70 65 6e 28 29 20 7c 20 69 6e 63 72  ob_open() | incr
ebd0: 65 6d 65 6e 74 61 6c 20 42 4c 4f 42 20 49 2f 4f  emental BLOB I/O
ebe0: 5d 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 3c 2f 74 61  ]..}.</tcl>.</ta
ebf0: 62 6c 65 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23  ble>..<tcl>.####
ec00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ec10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ec20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ec30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ec40: 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69  ##########.Secti
ec50: 6f 6e 20 7b 44 61 74 65 20 41 6e 64 20 54 69 6d  on {Date And Tim
ec60: 65 20 46 75 6e 63 74 69 6f 6e 73 7d 20 64 61 74  e Functions} dat
ec70: 65 66 75 6e 63 20 7b 64 61 74 65 66 75 6e 63 7d  efunc {datefunc}
ec80: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 0a 53 51 4c  .</tcl>..<p>.SQL
ec90: 69 74 65 20 73 75 70 70 6f 72 74 73 20 66 69 76  ite supports fiv
eca0: 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20  e date and time 
ecb0: 66 75 6e 63 74 69 6f 6e 73 20 61 73 20 66 6f 6c  functions as fol
ecc0: 6c 6f 77 73 3a 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a  lows:.</p>..<p>.
ecd0: 3c 6f 6c 3e 0a 3c 6c 69 3e 20 3c 62 3e 64 61 74  <ol>.<li> <b>dat
ece0: 65 28 3c 2f 62 3e 3c 69 3e 74 69 6d 65 73 74 72  e(</b><i>timestr
ecf0: 69 6e 67 2c 20 6d 6f 64 69 66 69 65 72 2c 20 6d  ing, modifier, m
ed00: 6f 64 69 66 69 65 72 2c 20 2e 2e 2e 3c 2f 69 3e  odifier, ...</i>
ed10: 3c 62 3e 29 3c 2f 62 3e 20 3c 2f 6c 69 3e 0a 3c  <b>)</b> </li>.<
ed20: 6c 69 3e 20 3c 62 3e 74 69 6d 65 28 3c 2f 62 3e  li> <b>time(</b>
ed30: 3c 69 3e 74 69 6d 65 73 74 72 69 6e 67 2c 20 6d  <i>timestring, m
ed40: 6f 64 69 66 69 65 72 2c 20 6d 6f 64 69 66 69 65  odifier, modifie
ed50: 72 2c 20 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f  r, ...</i><b>)</
ed60: 62 3e 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 3c 62  b> </li>.<li> <b
ed70: 3e 64 61 74 65 74 69 6d 65 28 3c 2f 62 3e 3c 69  >datetime(</b><i
ed80: 3e 74 69 6d 65 73 74 72 69 6e 67 2c 20 6d 6f 64  >timestring, mod
ed90: 69 66 69 65 72 2c 20 6d 6f 64 69 66 69 65 72 2c  ifier, modifier,
eda0: 20 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f 62 3e   ...</i><b>)</b>
edb0: 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 3c 62 3e 6a   </li>.<li> <b>j
edc0: 75 6c 69 61 6e 64 61 79 28 3c 2f 62 3e 3c 69 3e  ulianday(</b><i>
edd0: 74 69 6d 65 73 74 72 69 6e 67 2c 20 6d 6f 64 69  timestring, modi
ede0: 66 69 65 72 2c 20 6d 6f 64 69 66 69 65 72 2c 20  fier, modifier, 
edf0: 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f 62 3e 20  ...</i><b>)</b> 
ee00: 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 3c 62 3e 73 74  </li>.<li> <b>st
ee10: 72 66 74 69 6d 65 28 3c 2f 62 3e 3c 69 3e 66 6f  rftime(</b><i>fo
ee20: 72 6d 61 74 2c 20 74 69 6d 65 73 74 72 69 6e 67  rmat, timestring
ee30: 2c 20 6d 6f 64 69 66 69 65 72 2c 20 6d 6f 64 69  , modifier, modi
ee40: 66 69 65 72 2c 20 2e 2e 2e 3c 2f 69 3e 3c 62 3e  fier, ...</i><b>
ee50: 29 3c 2f 62 3e 20 3c 2f 6c 69 3e 0a 3c 2f 6f 6c  )</b> </li>.</ol
ee60: 3e 0a 0a 3c 70 3e 0a 41 6c 6c 20 66 69 76 65 20  >..<p>.All five 
ee70: 66 75 6e 63 74 69 6f 6e 73 20 74 61 6b 65 20 61  functions take a
ee80: 20 74 69 6d 65 20 73 74 72 69 6e 67 20 61 73 20   time string as 
ee90: 61 6e 20 61 72 67 75 6d 65 6e 74 2e 20 54 68 65  an argument. The
eea0: 20 74 69 6d 65 20 73 74 72 69 6e 67 0a 69 73 20   time string.is 
eeb0: 66 6f 6c 6c 6f 77 65 64 20 62 79 20 7a 65 72 6f  followed by zero
eec0: 20 6f 72 20 6d 6f 72 65 20 6d 6f 64 69 66 69 65   or more modifie
eed0: 72 73 2e 20 0a 54 68 65 20 73 74 72 66 74 69 6d  rs. .The strftim
eee0: 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 61 6c 73  e() function als
eef0: 6f 20 74 61 6b 65 73 20 61 20 66 6f 72 6d 61 74  o takes a format
ef00: 20 73 74 72 69 6e 67 20 61 73 20 69 74 73 20 66   string as its f
ef10: 69 72 73 74 20 61 72 67 75 6d 65 6e 74 2e 0a 3c  irst argument..<
ef20: 2f 70 3e 0a 0a 3c 70 3e 0a 54 68 65 20 64 61 74  /p>..<p>.The dat
ef30: 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74  e() function ret
ef40: 75 72 6e 73 20 74 68 65 20 64 61 74 65 20 69 6e  urns the date in
ef50: 20 74 68 69 73 20 66 6f 72 6d 61 74 3a 20 59 59   this format: YY
ef60: 59 59 2d 4d 4d 2d 44 44 2e 20 0a 54 68 65 20 74  YY-MM-DD. .The t
ef70: 69 6d 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 72  ime() function r
ef80: 65 74 75 72 6e 73 20 74 68 65 20 74 69 6d 65 20  eturns the time 
ef90: 61 73 20 48 48 3a 4d 4d 3a 53 53 2e 20 0a 54 68  as HH:MM:SS. .Th
efa0: 65 20 64 61 74 65 74 69 6d 65 28 29 20 66 75 6e  e datetime() fun
efb0: 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 22 59  ction returns "Y
efc0: 59 59 59 2d 4d 4d 2d 44 44 20 48 48 3a 4d 4d 3a  YYY-MM-DD HH:MM:
efd0: 53 53 22 2e 20 0a 54 68 65 20 6a 75 6c 69 61 6e  SS". .The julian
efe0: 64 61 79 28 29 20 66 75 6e 63 74 69 6f 6e 20 72  day() function r
eff0: 65 74 75 72 6e 73 20 74 68 65 20 0a 3c 61 20 68  eturns the .<a h
f000: 72 65 66 3d 22 68 74 74 70 3a 2f 2f 65 6e 2e 77  ref="http://en.w
f010: 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b  ikipedia.org/wik
f020: 69 2f 4a 75 6c 69 61 6e 5f 64 61 79 22 3e 4a 75  i/Julian_day">Ju
f030: 6c 69 61 6e 20 64 61 79 3c 2f 61 3e 20 2d 20 0a  lian day</a> - .
f040: 6e 75 6d 62 65 72 20 6f 66 20 64 61 79 73 20 73  number of days s
f050: 69 6e 63 65 20 6e 6f 6f 6e 20 69 6e 20 47 72 65  ince noon in Gre
f060: 65 6e 77 69 63 68 20 6f 6e 20 4e 6f 76 65 6d 62  enwich on Novemb
f070: 65 72 20 32 34 2c 20 34 37 31 34 20 42 2e 43 2e  er 24, 4714 B.C.
f080: 20 0a 28 3c 61 20 68 72 65 66 3d 22 68 74 74 70   .(<a href="http
f090: 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e  ://en.wikipedia.
f0a0: 6f 72 67 2f 77 69 6b 69 2f 50 72 6f 6c 65 70 74  org/wiki/Prolept
f0b0: 69 63 5f 47 72 65 67 6f 72 69 61 6e 5f 63 61 6c  ic_Gregorian_cal
f0c0: 65 6e 64 61 72 22 3e 0a 50 72 6f 6c 65 70 74 69  endar">.Prolepti
f0d0: 63 20 47 72 65 67 6f 72 69 61 6e 20 63 61 6c 65  c Gregorian cale
f0e0: 6e 64 61 72 3c 2f 61 3e 29 2e 20 0a 54 68 65 20  ndar</a>). .The 
f0f0: 73 74 72 66 74 69 6d 65 28 29 20 72 6f 75 74 69  strftime() routi
f100: 6e 65 20 72 65 74 75 72 6e 73 20 74 68 65 20 64  ne returns the d
f110: 61 74 65 20 66 6f 72 6d 61 74 74 65 64 20 61 63  ate formatted ac
f120: 63 6f 72 64 69 6e 67 20 74 6f 20 0a 74 68 65 20  cording to .the 
f130: 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 73 70  format string sp
f140: 65 63 69 66 69 65 64 20 61 73 20 74 68 65 20 66  ecified as the f
f150: 69 72 73 74 20 61 72 67 75 6d 65 6e 74 2e 0a 54  irst argument..T
f160: 68 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67  he format string
f170: 20 73 75 70 70 6f 72 74 73 20 74 68 65 20 6d 6f   supports the mo
f180: 73 74 20 63 6f 6d 6d 6f 6e 20 73 75 62 73 74 69  st common substi
f190: 74 75 74 69 6f 6e 73 20 66 6f 75 6e 64 20 69 6e  tutions found in
f1a0: 20 74 68 65 20 0a 3c 61 20 68 72 65 66 3d 22 68   the .<a href="h
f1b0: 74 74 70 3a 2f 2f 6f 70 65 6e 67 72 6f 75 70 2e  ttp://opengroup.
f1c0: 6f 72 67 2f 6f 6e 6c 69 6e 65 70 75 62 73 2f 30  org/onlinepubs/0
f1d0: 30 37 39 30 38 37 39 39 2f 78 73 68 2f 73 74 72  07908799/xsh/str
f1e0: 66 74 69 6d 65 2e 68 74 6d 6c 22 3e 0a 73 74 72  ftime.html">.str
f1f0: 66 74 69 6d 65 28 29 20 66 75 6e 63 74 69 6f 6e  ftime() function
f200: 3c 2f 61 3e 20 66 72 6f 6d 20 0a 74 68 65 20 73  </a> from .the s
f210: 74 61 6e 64 61 72 64 20 43 20 6c 69 62 72 61 72  tandard C librar
f220: 79 20 70 6c 75 73 20 74 77 6f 20 6e 65 77 20 73  y plus two new s
f230: 75 62 73 74 69 74 75 74 69 6f 6e 73 2c 20 25 66  ubstitutions, %f
f240: 20 61 6e 64 20 25 4a 2e 0a 54 68 65 20 66 6f 6c   and %J..The fol
f250: 6c 6f 77 69 6e 67 20 69 73 20 61 20 63 6f 6d 70  lowing is a comp
f260: 6c 65 74 65 20 6c 69 73 74 20 6f 66 20 76 61 6c  lete list of val
f270: 69 64 20 73 74 72 66 74 69 6d 65 28 29 20 73 75  id strftime() su
f280: 62 73 74 69 74 75 74 69 6f 6e 73 3a 0a 3c 2f 70  bstitutions:.</p
f290: 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  >..<blockquote>.
f2a0: 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3d 22 30  <table border="0
f2b0: 22 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 22 30  " cellpadding="0
f2c0: 22 20 63 65 6c 6c 73 70 61 63 69 6e 67 3d 22 30  " cellspacing="0
f2d0: 22 3e 0a 3c 74 72 3e 3c 74 64 3e 3c 74 64 20 77  ">.<tr><td><td w
f2e0: 69 64 74 68 3d 22 31 30 22 3e 3c 74 64 3e 3c 2f  idth="10"><td></
f2f0: 74 72 3e 0a 0a 3c 74 72 3e 3c 74 64 3e 20 25 64  tr>..<tr><td> %d
f300: 20 3c 74 64 3e 3c 74 64 3e 20 64 61 79 20 6f 66   <td><td> day of
f310: 20 6d 6f 6e 74 68 3a 20 30 30 0a 3c 74 72 3e 3c   month: 00.<tr><
f320: 74 64 3e 20 25 66 20 3c 74 64 3e 3c 74 64 3e 20  td> %f <td><td> 
f330: 66 72 61 63 74 69 6f 6e 61 6c 20 73 65 63 6f 6e  fractional secon
f340: 64 73 3a 20 53 53 2e 53 53 53 0a 3c 74 72 3e 3c  ds: SS.SSS.<tr><
f350: 74 64 3e 20 25 48 20 3c 74 64 3e 3c 74 64 3e 20  td> %H <td><td> 
f360: 68 6f 75 72 3a 20 30 30 2d 32 34 20 0a 3c 74 72  hour: 00-24 .<tr
f370: 3e 3c 74 64 3e 20 25 6a 20 3c 74 64 3e 3c 74 64  ><td> %j <td><td
f380: 3e 20 64 61 79 20 6f 66 20 79 65 61 72 3a 20 30  > day of year: 0
f390: 30 31 2d 33 36 36 0a 3c 74 72 3e 3c 74 64 3e 20  01-366.<tr><td> 
f3a0: 25 4a 20 3c 74 64 3e 3c 74 64 3e 20 4a 75 6c 69  %J <td><td> Juli
f3b0: 61 6e 20 64 61 79 20 6e 75 6d 62 65 72 0a 3c 74  an day number.<t
f3c0: 72 3e 3c 74 64 3e 20 25 6d 20 3c 74 64 3e 3c 74  r><td> %m <td><t
f3d0: 64 3e 20 6d 6f 6e 74 68 3a 20 30 31 2d 31 32 0a  d> month: 01-12.
f3e0: 3c 74 72 3e 3c 74 64 3e 20 25 4d 20 3c 74 64 3e  <tr><td> %M <td>
f3f0: 3c 74 64 3e 20 6d 69 6e 75 74 65 3a 20 30 30 2d  <td> minute: 00-
f400: 35 39 0a 3c 74 72 3e 3c 74 64 3e 20 25 73 20 3c  59.<tr><td> %s <
f410: 74 64 3e 3c 74 64 3e 20 73 65 63 6f 6e 64 73 20  td><td> seconds 
f420: 73 69 6e 63 65 20 31 39 37 30 2d 30 31 2d 30 31  since 1970-01-01
f430: 0a 3c 74 72 3e 3c 74 64 3e 20 25 53 20 3c 74 64  .<tr><td> %S <td
f440: 3e 3c 74 64 3e 20 73 65 63 6f 6e 64 73 3a 20 30  ><td> seconds: 0
f450: 30 2d 35 39 0a 3c 74 72 3e 3c 74 64 3e 20 25 77  0-59.<tr><td> %w
f460: 20 3c 74 64 3e 3c 74 64 3e 20 64 61 79 20 6f 66   <td><td> day of
f470: 20 77 65 65 6b 20 30 2d 36 20 77 69 74 68 20 73   week 0-6 with s
f480: 75 6e 64 61 79 3d 3d 30 0a 3c 74 72 3e 3c 74 64  unday==0.<tr><td
f490: 3e 20 25 57 20 3c 74 64 3e 3c 74 64 3e 20 77 65  > %W <td><td> we
f4a0: 65 6b 20 6f 66 20 79 65 61 72 3a 20 30 30 2d 35  ek of year: 00-5
f4b0: 33 0a 3c 74 72 3e 3c 74 64 3e 20 25 59 20 3c 74  3.<tr><td> %Y <t
f4c0: 64 3e 3c 74 64 3e 20 79 65 61 72 3a 20 30 30 30  d><td> year: 000
f4d0: 30 2d 39 39 39 39 0a 3c 74 72 3e 3c 74 64 3e 20  0-9999.<tr><td> 
f4e0: 25 25 20 3c 74 64 3e 3c 74 64 3e 20 25 0a 3c 2f  %% <td><td> %.</
f4f0: 74 61 62 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b 71 75  table>.</blockqu
f500: 6f 74 65 3e 0a 0a 3c 70 3e 0a 4e 6f 74 69 63 65  ote>..<p>.Notice
f510: 20 74 68 61 74 20 61 6c 6c 20 6f 74 68 65 72 20   that all other 
f520: 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 66 75  date and time fu
f530: 6e 63 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 65  nctions can be e
f540: 78 70 72 65 73 73 65 64 0a 69 6e 20 74 65 72 6d  xpressed.in term
f550: 73 20 6f 66 20 73 74 72 66 74 69 6d 65 28 29 3a  s of strftime():
f560: 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f  .</p>..<blockquo
f570: 74 65 3e 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65  te>.<table borde
f580: 72 3d 22 30 22 20 63 65 6c 6c 70 61 64 64 69 6e  r="0" cellpaddin
f590: 67 3d 22 30 22 20 63 65 6c 6c 73 70 61 63 69 6e  g="0" cellspacin
f5a0: 67 3d 22 30 22 3e 0a 3c 74 72 3e 3c 74 64 3e 3c  g="0">.<tr><td><
f5b0: 62 3e 46 75 6e 63 74 69 6f 6e 3c 2f 62 3e 3c 74  b>Function</b><t
f5c0: 64 20 77 69 64 74 68 3d 22 33 30 22 3e 3c 74 64  d width="30"><td
f5d0: 3e 3c 62 3e 45 71 75 69 76 61 6c 65 6e 74 20 73  ><b>Equivalent s
f5e0: 74 72 66 74 69 6d 65 28 29 3c 2f 62 3e 0a 3c 74  trftime()</b>.<t
f5f0: 72 3e 3c 74 64 3e 20 20 20 64 61 74 65 28 2e 2e  r><td>   date(..
f600: 2e 29 20 20 20 20 20 20 3c 74 64 3e 3c 74 64 3e  .)      <td><td>
f610: 20 20 73 74 72 66 74 69 6d 65 28 22 25 59 2d 25    strftime("%Y-%
f620: 6d 2d 25 64 22 2c 20 2e 2e 2e 29 0a 3c 74 72 3e  m-%d", ...).<tr>
f630: 3c 74 64 3e 20 20 20 74 69 6d 65 28 2e 2e 2e 29  <td>   time(...)
f640: 20 20 20 20 20 20 3c 74 64 3e 3c 74 64 3e 20 20        <td><td>  
f650: 73 74 72 66 74 69 6d 65 28 22 25 48 3a 25 4d 3a  strftime("%H:%M:
f660: 25 53 22 2c 20 2e 2e 2e 29 0a 3c 74 72 3e 3c 74  %S", ...).<tr><t
f670: 64 3e 20 20 20 64 61 74 65 74 69 6d 65 28 2e 2e  d>   datetime(..
f680: 2e 29 20 20 3c 74 64 3e 3c 74 64 3e 20 20 73 74  .)  <td><td>  st
f690: 72 66 74 69 6d 65 28 22 25 59 2d 25 6d 2d 25 64  rftime("%Y-%m-%d
f6a0: 20 25 48 3a 25 4d 3a 25 53 22 2c 20 2e 2e 2e 29   %H:%M:%S", ...)
f6b0: 0a 3c 74 72 3e 3c 74 64 3e 20 20 20 6a 75 6c 69  .<tr><td>   juli
f6c0: 61 6e 64 61 79 28 2e 2e 2e 29 20 3c 74 64 3e 3c  anday(...) <td><
f6d0: 74 64 3e 20 20 73 74 72 66 74 69 6d 65 28 22 25  td>  strftime("%
f6e0: 4a 22 2c 20 2e 2e 2e 29 0a 3c 2f 74 61 62 6c 65  J", ...).</table
f6f0: 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  >.</blockquote>.
f700: 0a 3c 70 3e 0a 54 68 65 20 6f 6e 6c 79 20 72 65  .<p>.The only re
f710: 61 73 6f 6e 73 20 66 6f 72 20 70 72 6f 76 69 64  asons for provid
f720: 69 6e 67 20 66 75 6e 63 74 69 6f 6e 73 20 6f 74  ing functions ot
f730: 68 65 72 20 74 68 61 6e 20 73 74 72 66 74 69 6d  her than strftim
f740: 65 28 29 20 69 73 0a 66 6f 72 20 63 6f 6e 76 65  e() is.for conve
f750: 6e 69 65 6e 63 65 20 61 6e 64 20 66 6f 72 20 65  nience and for e
f760: 66 66 69 63 69 65 6e 63 79 2e 0a 3c 2f 70 3e 0a  fficiency..</p>.
f770: 0a 3c 68 33 3e 54 69 6d 65 20 53 74 72 69 6e 67  .<h3>Time String
f780: 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 41 20 74 69 6d  s</h3>..<p>A tim
f790: 65 20 73 74 72 69 6e 67 20 63 61 6e 20 62 65 20  e string can be 
f7a0: 69 6e 20 61 6e 79 20 6f 66 20 74 68 65 20 66 6f  in any of the fo
f7b0: 6c 6c 6f 77 69 6e 67 20 66 6f 72 6d 61 74 73 3a  llowing formats:
f7c0: 3c 2f 70 3e 0a 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 20  </p>..<ol>.<li> 
f7d0: 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44 44 3c 2f 69  <i>YYYY-MM-DD</i
f7e0: 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59 59 59 2d 4d  >.<li> <i>YYYY-M
f7f0: 4d 2d 44 44 20 48 48 3a 4d 4d 3c 2f 69 3e 0a 3c  M-DD HH:MM</i>.<
f800: 6c 69 3e 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44  li> <i>YYYY-MM-D
f810: 44 20 48 48 3a 4d 4d 3a 53 53 3c 2f 69 3e 0a 3c  D HH:MM:SS</i>.<
f820: 6c 69 3e 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44  li> <i>YYYY-MM-D
f830: 44 20 48 48 3a 4d 4d 3a 53 53 2e 53 53 53 3c 2f  D HH:MM:SS.SSS</
f840: 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59 59 59 2d  i>.<li> <i>YYYY-
f850: 4d 4d 2d 44 44 3c 2f 69 3e 3c 62 3e 54 3c 2f 62  MM-DD</i><b>T</b
f860: 3e 3c 69 3e 48 48 3a 4d 4d 3c 2f 69 3e 0a 3c 6c  ><i>HH:MM</i>.<l
f870: 69 3e 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44 44  i> <i>YYYY-MM-DD
f880: 3c 2f 69 3e 3c 62 3e 54 3c 2f 62 3e 3c 69 3e 48  </i><b>T</b><i>H
f890: 48 3a 4d 4d 3a 53 53 3c 2f 69 3e 0a 3c 6c 69 3e  H:MM:SS</i>.<li>
f8a0: 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44 44 3c 2f   <i>YYYY-MM-DD</
f8b0: 69 3e 3c 62 3e 54 3c 2f 62 3e 3c 69 3e 48 48 3a  i><b>T</b><i>HH:
f8c0: 4d 4d 3a 53 53 2e 53 53 53 3c 2f 69 3e 0a 3c 6c  MM:SS.SSS</i>.<l
f8d0: 69 3e 20 3c 69 3e 48 48 3a 4d 4d 3c 2f 69 3e 0a  i> <i>HH:MM</i>.
f8e0: 3c 6c 69 3e 20 3c 69 3e 48 48 3a 4d 4d 3a 53 53  <li> <i>HH:MM:SS
f8f0: 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 48 48 3a  </i>.<li> <i>HH:
f900: 4d 4d 3a 53 53 2e 53 53 53 3c 2f 69 3e 0a 3c 6c  MM:SS.SSS</i>.<l
f910: 69 3e 20 3c 62 3e 6e 6f 77 3c 2f 62 3e 0a 3c 6c  i> <b>now</b>.<l
f920: 69 3e 20 3c 69 3e 44 44 44 44 44 44 44 44 44 44  i> <i>DDDDDDDDDD
f930: 3c 2f 69 3e 0a 3c 2f 6f 6c 3e 0a 0a 3c 70 3e 0a  </i>.</ol>..<p>.
f940: 49 6e 20 66 6f 72 6d 61 74 73 20 35 20 74 68 72  In formats 5 thr
f950: 6f 75 67 68 20 37 2c 20 74 68 65 20 22 54 22 20  ough 7, the "T" 
f960: 69 73 20 61 20 6c 69 74 65 72 61 6c 20 63 68 61  is a literal cha
f970: 72 61 63 74 65 72 20 73 65 70 61 72 61 74 69 6e  racter separatin
f980: 67 20 0a 74 68 65 20 64 61 74 65 20 61 6e 64 20  g .the date and 
f990: 74 68 65 20 74 69 6d 65 2c 20 61 73 20 72 65 71  the time, as req
f9a0: 75 69 72 65 64 20 62 79 20 0a 3c 61 20 68 72 65  uired by .<a hre
f9b0: 66 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 77 33  f="http://www.w3
f9c0: 63 2e 6f 72 67 2f 54 52 2f 4e 4f 54 45 2d 64 61  c.org/TR/NOTE-da
f9d0: 74 65 74 69 6d 65 22 3e 49 53 4f 2d 38 36 30 31  tetime">ISO-8601
f9e0: 3c 2f 61 3e 2e 20 0a 46 6f 72 6d 61 74 73 20 38  </a>. .Formats 8
f9f0: 20 74 68 72 6f 75 67 68 20 31 30 20 74 68 61 74   through 10 that
fa00: 20 73 70 65 63 69 66 79 20 6f 6e 6c 79 20 61 20   specify only a 
fa10: 74 69 6d 65 20 61 73 73 75 6d 65 20 61 20 64 61  time assume a da
fa20: 74 65 20 6f 66 20 0a 32 30 30 30 2d 30 31 2d 30  te of .2000-01-0
fa30: 31 2e 20 46 6f 72 6d 61 74 20 31 31 2c 20 74 68  1. Format 11, th
fa40: 65 20 73 74 72 69 6e 67 20 27 6e 6f 77 27 2c 20  e string 'now', 
fa50: 69 73 20 63 6f 6e 76 65 72 74 65 64 20 69 6e 74  is converted int
fa60: 6f 20 74 68 65 20 0a 63 75 72 72 65 6e 74 20 64  o the .current d
fa70: 61 74 65 20 61 6e 64 20 74 69 6d 65 20 61 73 20  ate and time as 
fa80: 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68  obtained from th
fa90: 65 20 78 43 75 72 72 65 6e 74 54 69 6d 65 20 6d  e xCurrentTime m
faa0: 65 74 68 6f 64 0a 6f 66 20 74 68 65 20 5b 73 71  ethod.of the [sq
fab0: 6c 69 74 65 33 5f 76 66 73 5d 20 6f 62 6a 65 63  lite3_vfs] objec
fac0: 74 20 69 6e 20 75 73 65 2e 0a 3c 61 20 68 72 65  t in use..<a hre
fad0: 66 3d 22 68 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b  f="http://en.wik
fae0: 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f  ipedia.org/wiki/
faf0: 43 6f 6f 72 64 69 6e 61 74 65 64 5f 55 6e 69 76  Coordinated_Univ
fb00: 65 72 73 61 6c 5f 54 69 6d 65 22 3e 0a 55 6e 69  ersal_Time">.Uni
fb10: 76 65 72 73 61 6c 20 43 6f 6f 72 64 69 6e 61 74  versal Coordinat
fb20: 65 64 20 54 69 6d 65 20 28 55 54 43 29 3c 2f 61  ed Time (UTC)</a
fb30: 3e 20 69 73 20 75 73 65 64 2e 20 0a 46 6f 72 6d  > is used. .Form
fb40: 61 74 20 31 32 20 69 73 20 74 68 65 20 0a 3c 61  at 12 is the .<a
fb50: 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 65 6e   href="http://en
fb60: 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77  .wikipedia.org/w
fb70: 69 6b 69 2f 4a 75 6c 69 61 6e 5f 64 61 79 22 3e  iki/Julian_day">
fb80: 4a 75 6c 69 61 6e 20 64 61 79 20 6e 75 6d 62 65  Julian day numbe
fb90: 72 3c 2f 61 3e 0a 65 78 70 72 65 73 73 65 64 20  r</a>.expressed 
fba0: 61 73 20 61 20 66 6c 6f 61 74 69 6e 67 20 70 6f  as a floating po
fbb0: 69 6e 74 20 76 61 6c 75 65 2e 0a 3c 2f 70 3e 0a  int value..</p>.
fbc0: 0a 3c 68 33 3e 4d 6f 64 69 66 69 65 72 73 3c 2f  .<h3>Modifiers</
fbd0: 68 33 3e 0a 0a 3c 70 3e 54 68 65 20 74 69 6d 65  h3>..<p>The time
fbe0: 20 73 74 72 69 6e 67 20 63 61 6e 20 62 65 20 66   string can be f
fbf0: 6f 6c 6c 6f 77 65 64 20 62 79 20 7a 65 72 6f 20  ollowed by zero 
fc00: 6f 72 20 6d 6f 72 65 20 6d 6f 64 69 66 69 65 72  or more modifier
fc10: 73 20 74 68 61 74 20 0a 61 6c 74 65 72 20 74 68  s that .alter th
fc20: 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20  e date and time 
fc30: 73 74 72 69 6e 67 2e 20 20 45 61 63 68 20 6d 6f  string.  Each mo
fc40: 64 69 66 69 65 72 0a 69 73 20 61 20 74 72 61 6e  difier.is a tran
fc50: 73 66 6f 72 6d 61 74 69 6f 6e 20 74 68 61 74 20  sformation that 
fc60: 69 73 20 61 70 70 6c 69 65 64 20 74 6f 20 74 68  is applied to th
fc70: 65 20 74 69 6d 65 20 73 74 72 69 6e 67 20 74 6f  e time string to
fc80: 20 69 74 73 20 6c 65 66 74 2e 0a 4d 6f 64 69 66   its left..Modif
fc90: 69 65 72 73 20 61 72 65 20 61 70 70 6c 69 65 64  iers are applied
fca0: 20 66 72 6f 6d 20 6c 65 66 74 20 74 6f 20 72 69   from left to ri
fcb0: 67 68 74 3b 20 6f 72 64 65 72 20 69 73 20 69 6d  ght; order is im
fcc0: 70 6f 72 74 61 6e 74 2e 0a 54 68 65 20 61 76 61  portant..The ava
fcd0: 69 6c 61 62 6c 65 20 6d 6f 64 69 66 69 65 72 73  ilable modifiers
fce0: 20 61 72 65 20 61 73 20 66 6f 6c 6c 6f 77 73 2e   are as follows.
fcf0: 3c 2f 70 3e 0a 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 20  </p>..<ol>.<li> 
fd00: 4e 4e 4e 20 64 61 79 73 0a 3c 6c 69 3e 20 4e 4e  NNN days.<li> NN
fd10: 4e 20 68 6f 75 72 73 0a 3c 6c 69 3e 20 4e 4e 4e  N hours.<li> NNN
fd20: 20 6d 69 6e 75 74 65 73 0a 3c 6c 69 3e 20 4e 4e   minutes.<li> NN
fd30: 4e 2e 4e 4e 4e 4e 20 73 65 63 6f 6e 64 73 0a 3c  N.NNNN seconds.<
fd40: 6c 69 3e 20 4e 4e 4e 20 6d 6f 6e 74 68 73 0a 3c  li> NNN months.<
fd50: 6c 69 3e 20 4e 4e 4e 20 79 65 61 72 73 0a 3c 6c  li> NNN years.<l
fd60: 69 3e 20 73 74 61 72 74 20 6f 66 20 6d 6f 6e 74  i> start of mont
fd70: 68 0a 3c 6c 69 3e 20 73 74 61 72 74 20 6f 66 20  h.<li> start of 
fd80: 79 65 61 72 0a 3c 6c 69 3e 20 73 74 61 72 74 20  year.<li> start 
fd90: 6f 66 20 64 61 79 0a 3c 6c 69 3e 20 77 65 65 6b  of day.<li> week
fda0: 64 61 79 20 4e 0a 3c 6c 69 3e 20 75 6e 69 78 65  day N.<li> unixe
fdb0: 70 6f 63 68 0a 3c 6c 69 3e 20 6c 6f 63 61 6c 74  poch.<li> localt
fdc0: 69 6d 65 0a 3c 6c 69 3e 20 75 74 63 20 0a 3c 2f  ime.<li> utc .</
fdd0: 6f 6c 3e 0a 0a 3c 70 3e 54 68 65 20 66 69 72 73  ol>..<p>The firs
fde0: 74 20 73 69 78 20 6d 6f 64 69 66 69 65 72 73 20  t six modifiers 
fdf0: 28 31 20 74 68 72 6f 75 67 68 20 36 29 20 0a 73  (1 through 6) .s
fe00: 69 6d 70 6c 79 20 61 64 64 20 74 68 65 20 73 70  imply add the sp
fe10: 65 63 69 66 69 65 64 20 61 6d 6f 75 6e 74 20 6f  ecified amount o
fe20: 66 20 74 69 6d 65 20 74 6f 20 74 68 65 20 64 61  f time to the da
fe30: 74 65 20 0a 73 70 65 63 69 66 69 65 64 20 62 79  te .specified by
fe40: 20 74 68 65 20 70 72 65 63 65 64 69 6e 67 20 74   the preceding t
fe50: 69 6d 65 73 74 72 69 6e 67 2e 0a 4e 6f 74 65 20  imestring..Note 
fe60: 74 68 61 74 20 22 26 70 6c 75 73 6d 6e 3b 4e 4e  that "&plusmn;NN
fe70: 4e 20 6d 6f 6e 74 68 73 22 20 77 6f 72 6b 73 20  N months" works 
fe80: 62 79 20 72 65 6e 64 65 72 69 6e 67 20 74 68 65  by rendering the
fe90: 20 6f 72 69 67 69 6e 61 6c 20 64 61 74 65 20 69   original date i
fea0: 6e 74 6f 0a 74 68 65 20 59 59 59 59 2d 4d 4d 2d  nto.the YYYY-MM-
feb0: 44 44 20 66 6f 72 6d 61 74 2c 20 61 64 64 69 6e  DD format, addin
fec0: 67 20 74 68 65 20 26 70 6c 75 73 6d 6e 3b 4e 4e  g the &plusmn;NN
fed0: 4e 20 74 6f 20 74 68 65 20 4d 4d 20 6d 6f 6e 74  N to the MM mont
fee0: 68 20 76 61 6c 75 65 2c 20 74 68 65 6e 0a 6e 6f  h value, then.no
fef0: 72 6d 61 6c 69 7a 69 6e 67 20 74 68 65 20 72 65  rmalizing the re
ff00: 73 75 6c 74 2e 20 20 54 68 75 73 2c 20 66 6f 72  sult.  Thus, for
ff10: 20 65 78 61 6d 70 6c 65 2c 20 74 68 65 20 64 61   example, the da
ff20: 74 61 20 32 30 30 31 2d 30 33 2d 33 31 20 6d 6f  ta 2001-03-31 mo
ff30: 64 69 66 69 65 64 0a 62 79 20 27 2b 31 20 6d 6f  dified.by '+1 mo
ff40: 6e 74 68 27 20 69 6e 69 74 69 61 6c 6c 79 20 79  nth' initially y
ff50: 69 65 6c 64 73 20 32 30 30 31 2d 30 34 2d 33 31  ields 2001-04-31
ff60: 2c 20 62 75 74 20 41 70 72 69 6c 20 6f 6e 6c 79  , but April only
ff70: 20 68 61 73 20 33 30 20 64 61 79 73 0a 73 6f 20   has 30 days.so 
ff80: 74 68 65 20 64 61 74 65 20 69 73 20 6e 6f 72 6d  the date is norm
ff90: 61 6c 69 7a 65 64 20 74 6f 20 32 30 30 31 2d 30  alized to 2001-0
ffa0: 35 2d 30 31 2e 20 20 41 20 73 69 6d 69 6c 61 72  5-01.  A similar
ffb0: 20 65 66 66 65 63 74 20 6f 63 63 75 72 73 20 77   effect occurs w
ffc0: 68 65 6e 0a 74 68 65 20 6f 72 69 67 69 6e 61 6c  hen.the original
ffd0: 20 64 61 74 65 20 69 73 20 46 65 62 72 75 61 72   date is Februar
ffe0: 79 20 32 39 20 6f 66 20 61 20 6c 65 61 70 79 65  y 29 of a leapye
fff0: 61 72 20 61 6e 64 20 74 68 65 20 6d 6f 64 69 66  ar and the modif
10000 69 65 72 20 69 73 0a 26 70 6c 75 73 6d 6e 3b 4e  ier is.&plusmn;N
10010 20 79 65 61 72 73 20 77 68 65 72 65 20 4e 20 69   years where N i
10020 73 20 6e 6f 74 20 61 20 6d 75 6c 74 69 70 6c 65  s not a multiple
10030 20 6f 66 20 66 6f 75 72 2e 3c 2f 70 3e 0a 0a 3c   of four.</p>..<
10040 70 3e 54 68 65 20 22 73 74 61 72 74 20 6f 66 22  p>The "start of"
10050 20 6d 6f 64 69 66 69 65 72 73 20 28 37 20 74 68   modifiers (7 th
10060 72 6f 75 67 68 20 39 29 20 73 68 69 66 74 20 74  rough 9) shift t
10070 68 65 20 64 61 74 65 20 62 61 63 6b 77 61 72 64  he date backward
10080 73 20 0a 74 6f 20 74 68 65 20 62 65 67 69 6e 6e  s .to the beginn
10090 69 6e 67 20 6f 66 20 74 68 65 20 63 75 72 72 65  ing of the curre
100a0 6e 74 20 6d 6f 6e 74 68 2c 20 79 65 61 72 20 6f  nt month, year o
100b0 72 20 64 61 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  r day.</p>..<p>T
100c0 68 65 20 22 77 65 65 6b 64 61 79 22 20 6d 6f 64  he "weekday" mod
100d0 69 66 69 65 72 20 61 64 76 61 6e 63 65 73 20 74  ifier advances t
100e0 68 65 20 64 61 74 65 20 66 6f 72 77 61 72 64 20  he date forward 
100f0 74 6f 20 74 68 65 20 6e 65 78 74 20 64 61 74 65  to the next date
10100 20 0a 77 68 65 72 65 20 74 68 65 20 77 65 65 6b   .where the week
10110 64 61 79 20 6e 75 6d 62 65 72 20 69 73 20 4e 2e  day number is N.
10120 20 53 75 6e 64 61 79 20 69 73 20 30 2c 20 4d 6f   Sunday is 0, Mo
10130 6e 64 61 79 20 69 73 20 31 2c 20 61 6e 64 20 73  nday is 1, and s
10140 6f 20 66 6f 72 74 68 2e 3c 2f 70 3e 0a 0a 3c 70  o forth.</p>..<p
10150 3e 54 68 65 20 22 75 6e 69 78 65 70 6f 63 68 22  >The "unixepoch"
10160 20 6d 6f 64 69 66 69 65 72 20 28 31 31 29 20 6f   modifier (11) o
10170 6e 6c 79 20 77 6f 72 6b 73 20 69 66 20 69 74 20  nly works if it 
10180 69 6d 6d 65 64 69 61 74 65 6c 79 20 66 6f 6c 6c  immediately foll
10190 6f 77 73 20 0a 61 20 74 69 6d 65 73 74 72 69 6e  ows .a timestrin
101a0 67 20 69 6e 20 74 68 65 20 44 44 44 44 44 44 44  g in the DDDDDDD
101b0 44 44 44 20 66 6f 72 6d 61 74 2e 20 0a 54 68 69  DDD format. .Thi
101c0 73 20 6d 6f 64 69 66 69 65 72 20 63 61 75 73 65  s modifier cause
101d0 73 20 74 68 65 20 44 44 44 44 44 44 44 44 44 44  s the DDDDDDDDDD
101e0 20 74 6f 20 62 65 20 69 6e 74 65 72 70 72 65 74   to be interpret
101f0 65 64 20 6e 6f 74 20 0a 61 73 20 61 20 4a 75 6c  ed not .as a Jul
10200 69 61 6e 20 64 61 79 20 6e 75 6d 62 65 72 20 61  ian day number a
10210 73 20 69 74 20 6e 6f 72 6d 61 6c 6c 79 20 77 6f  s it normally wo
10220 75 6c 64 20 62 65 2c 20 62 75 74 20 61 73 0a 3c  uld be, but as.<
10230 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 65  a href="http://e
10240 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f  n.wikipedia.org/
10250 77 69 6b 69 2f 55 6e 69 78 5f 74 69 6d 65 22 3e  wiki/Unix_time">
10260 55 6e 69 78 20 54 69 6d 65 3c 2f 61 3e 20 2d 20  Unix Time</a> - 
10270 74 68 65 20 0a 6e 75 6d 62 65 72 20 6f 66 20 73  the .number of s
10280 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 31 39 37  econds since 197
10290 30 2e 20 20 49 66 20 74 68 65 20 22 75 6e 69 78  0.  If the "unix
102a0 65 70 6f 63 68 22 20 6d 6f 64 69 66 69 65 72 20  epoch" modifier 
102b0 64 6f 65 73 20 6e 6f 74 0a 66 6f 6c 6c 6f 77 20  does not.follow 
102c0 61 20 74 69 6d 65 73 74 72 69 6e 67 20 6f 66 20  a timestring of 
102d0 74 68 65 20 66 6f 72 6d 20 44 44 44 44 44 44 44  the form DDDDDDD
102e0 44 44 44 20 77 68 69 63 68 20 65 78 70 72 65 73  DDD which expres
102f0 73 65 73 20 74 68 65 20 6e 75 6d 62 65 72 0a 6f  ses the number.o
10300 66 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20  f seconds since 
10310 31 39 37 30 20 6f 72 20 69 66 20 6f 74 68 65 72  1970 or if other
10320 20 6d 6f 64 69 66 69 65 72 73 0a 73 65 70 61 72   modifiers.separ
10330 61 74 65 20 74 68 65 20 22 75 6e 69 78 65 70 6f  ate the "unixepo
10340 63 68 22 20 6d 6f 64 69 66 69 65 72 20 66 72 6f  ch" modifier fro
10350 6d 20 70 72 69 6f 72 20 44 44 44 44 44 44 44 44  m prior DDDDDDDD
10360 44 44 20 74 68 65 6e 20 74 68 65 0a 62 65 68 61  DD then the.beha
10370 76 69 6f 72 20 69 73 20 75 6e 64 65 66 69 6e 65  vior is undefine
10380 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 22  d.</p>..<p>The "
10390 6c 6f 63 61 6c 74 69 6d 65 22 20 6d 6f 64 69 66  localtime" modif
103a0 69 65 72 20 28 31 32 29 20 61 73 73 75 6d 65 73  ier (12) assumes
103b0 20 74 68 65 20 74 69 6d 65 20 73 74 72 69 6e 67   the time string
103c0 20 74 6f 20 69 74 73 20 6c 65 66 74 20 69 73 20   to its left is 
103d0 69 6e 0a 55 6e 69 76 65 72 73 61 6c 20 43 6f 6f  in.Universal Coo
103e0 72 64 69 6e 61 74 65 64 20 54 69 6d 65 20 28 55  rdinated Time (U
103f0 54 43 29 20 61 6e 64 20 61 64 6a 75 73 74 73 20  TC) and adjusts 
10400 74 68 65 20 74 69 6d 65 0a 73 74 72 69 6e 67 20  the time.string 
10410 73 6f 20 74 68 61 74 20 69 74 20 64 69 73 70 6c  so that it displ
10420 61 79 73 20 6c 6f 63 61 6c 74 69 6d 65 2e 20 20  ays localtime.  
10430 49 66 20 22 6c 6f 63 61 6c 74 69 6d 65 22 0a 66  If "localtime".f
10440 6f 6c 6c 6f 77 73 20 61 20 74 69 6d 65 20 74 68  ollows a time th
10450 61 74 20 69 73 20 6e 6f 74 20 55 54 43 2c 20 74  at is not UTC, t
10460 68 65 6e 20 74 68 65 20 62 65 68 61 76 69 6f 72  hen the behavior
10470 20 69 73 20 75 6e 64 65 66 69 6e 65 64 2e 0a 54   is undefined..T
10480 68 65 20 22 75 74 63 22 20 69 73 20 74 68 65 20  he "utc" is the 
10490 6f 70 70 6f 73 69 74 65 20 6f 66 20 22 6c 6f 63  opposite of "loc
104a0 61 6c 74 69 6d 65 22 2e 20 20 22 75 74 63 22 20  altime".  "utc" 
104b0 61 73 73 75 6d 65 73 20 74 68 61 74 20 74 68 65  assumes that the
104c0 20 73 74 72 69 6e 67 0a 74 6f 20 69 74 73 20 6c   string.to its l
104d0 65 66 74 20 69 73 20 69 6e 20 74 68 65 20 6c 6f  eft is in the lo
104e0 63 61 6c 20 74 69 6d 65 7a 6f 6e 65 20 61 6e 64  cal timezone and
104f0 20 61 64 6a 75 73 74 73 20 74 68 61 74 20 73 74   adjusts that st
10500 72 69 6e 67 20 74 6f 20 62 65 20 69 6e 20 55 54  ring to be in UT
10510 43 2e 0a 49 66 20 74 68 65 20 70 72 69 6f 72 20  C..If the prior 
10520 73 74 72 69 6e 67 20 69 73 20 6e 6f 74 20 69 6e  string is not in
10530 20 6c 6f 63 61 6c 74 69 6d 65 2c 20 74 68 65 6e   localtime, then
10540 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 22   the result of "
10550 75 74 63 22 20 69 73 0a 75 6e 64 65 66 69 6e 65  utc" is.undefine
10560 64 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 45 78 61 6d  d.</p>..<h3>Exam
10570 70 6c 65 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 43 6f  ples</h3>..<p>Co
10580 6d 70 75 74 65 20 74 68 65 20 63 75 72 72 65 6e  mpute the curren
10590 74 20 64 61 74 65 2e 3c 70 3e 0a 0a 3c 62 6c 6f  t date.<p>..<blo
105a0 63 6b 71 75 6f 74 65 3e 53 45 4c 45 43 54 20 64  ckquote>SELECT d
105b0 61 74 65 28 27 6e 6f 77 27 29 3b 3c 2f 62 6c 6f  ate('now');</blo
105c0 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 43 6f 6d  ckquote>..<p>Com
105d0 70 75 74 65 20 74 68 65 20 6c 61 73 74 20 64 61  pute the last da
105e0 79 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74  y of the current
105f0 20 6d 6f 6e 74 68 2e 3c 2f 70 3e 0a 0a 3c 62 6c   month.</p>..<bl
10600 6f 63 6b 71 75 6f 74 65 3e 53 45 4c 45 43 54 20  ockquote>SELECT 
10610 64 61 74 65 28 27 6e 6f 77 27 2c 27 73 74 61 72  date('now','star
10620 74 20 6f 66 20 6d 6f 6e 74 68 27 2c 27 2b 31 20  t of month','+1 
10630 6d 6f 6e 74 68 27 2c 27 2d 31 20 64 61 79 27 29  month','-1 day')
10640 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  ;.</blockquote>.
10650 0a 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68 65 20  .<p>Compute the 
10660 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 67 69  date and time gi
10670 76 65 6e 20 61 20 75 6e 69 78 20 74 69 6d 65 73  ven a unix times
10680 74 61 6d 70 20 31 30 39 32 39 34 31 34 36 36 2e  tamp 1092941466.
10690 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
106a0 65 3e 0a 20 20 20 20 53 45 4c 45 43 54 20 64 61  e>.    SELECT da
106b0 74 65 74 69 6d 65 28 31 30 39 32 39 34 31 34 36  tetime(109294146
106c0 36 2c 20 27 75 6e 69 78 65 70 6f 63 68 27 29 3b  6, 'unixepoch');
106d0 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a  .</blockquote>..
106e0 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68 65 20 64  <p>Compute the d
106f0 61 74 65 20 61 6e 64 20 74 69 6d 65 20 67 69 76  ate and time giv
10700 65 6e 20 61 20 75 6e 69 78 20 74 69 6d 65 73 74  en a unix timest
10710 61 6d 70 20 31 30 39 32 39 34 31 34 36 36 2c 20  amp 1092941466, 
10720 61 6e 64 20 0a 63 6f 6d 70 65 6e 73 61 74 65 20  and .compensate 
10730 66 6f 72 20 79 6f 75 72 20 6c 6f 63 61 6c 20 74  for your local t
10740 69 6d 65 7a 6f 6e 65 2e 3c 2f 70 3e 0a 0a 3c 62  imezone.</p>..<b
10750 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 53 45 4c  lockquote>.  SEL
10760 45 43 54 20 64 61 74 65 74 69 6d 65 28 31 30 39  ECT datetime(109
10770 32 39 34 31 34 36 36 2c 20 27 75 6e 69 78 65 70  2941466, 'unixep
10780 6f 63 68 27 2c 20 27 6c 6f 63 61 6c 74 69 6d 65  och', 'localtime
10790 27 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  ');.</blockquote
107a0 3e 0a 0a 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68  >..<p>Compute th
107b0 65 20 63 75 72 72 65 6e 74 20 75 6e 69 78 20 74  e current unix t
107c0 69 6d 65 73 74 61 6d 70 2e 3c 2f 70 3e 0a 0a 3c  imestamp.</p>..<
107d0 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 53 45  blockquote>.  SE
107e0 4c 45 43 54 20 73 74 72 66 74 69 6d 65 28 27 25  LECT strftime('%
107f0 73 27 2c 27 6e 6f 77 27 29 3b 0a 3c 2f 62 6c 6f  s','now');.</blo
10800 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 43 6f 6d  ckquote>..<p>Com
10810 70 75 74 65 20 74 68 65 20 6e 75 6d 62 65 72 20  pute the number 
10820 6f 66 20 64 61 79 73 20 73 69 6e 63 65 20 74 68  of days since th
10830 65 20 73 69 67 6e 69 6e 67 20 6f 66 20 74 68 65  e signing of the
10840 20 55 53 20 44 65 63 6c 61 72 61 74 69 6f 6e 0a   US Declaration.
10850 6f 66 20 49 6e 64 65 70 65 6e 64 65 6e 74 2e 3c  of Independent.<
10860 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  /p>..<blockquote
10870 3e 0a 20 20 53 45 4c 45 43 54 20 6a 75 6c 69 61  >.  SELECT julia
10880 6e 64 61 79 28 27 6e 6f 77 27 29 20 2d 20 6a 75  nday('now') - ju
10890 6c 69 61 6e 64 61 79 28 27 31 37 37 36 2d 30 37  lianday('1776-07
108a0 2d 30 34 27 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75  -04');.</blockqu
108b0 6f 74 65 3e 0a 0a 3c 70 3e 43 6f 6d 70 75 74 65  ote>..<p>Compute
108c0 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73   the number of s
108d0 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 61 20 70  econds since a p
108e0 61 72 74 69 63 75 6c 61 72 20 6d 6f 6d 65 6e 74  articular moment
108f0 20 69 6e 20 32 30 30 34 3a 3c 2f 70 3e 0a 0a 3c   in 2004:</p>..<
10900 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 53 45  blockquote>.  SE
10910 4c 45 43 54 20 73 74 72 66 74 69 6d 65 28 27 25  LECT strftime('%
10920 73 27 2c 27 6e 6f 77 27 29 20 2d 20 73 74 72 66  s','now') - strf
10930 74 69 6d 65 28 27 25 73 27 2c 27 32 30 30 34 2d  time('%s','2004-
10940 30 31 2d 30 31 20 30 32 3a 33 34 3a 35 36 27 29  01-01 02:34:56')
10950 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  ;.</blockquote>.
10960 0a 3c 70 3e 0a 43 6f 6d 70 75 74 65 20 74 68 65  .<p>.Compute the
10970 20 64 61 74 65 20 6f 66 20 74 68 65 20 66 69 72   date of the fir
10980 73 74 20 54 75 65 73 64 61 79 20 69 6e 20 4f 63  st Tuesday in Oc
10990 74 6f 62 65 72 0a 66 6f 72 20 74 68 65 20 63 75  tober.for the cu
109a0 72 72 65 6e 74 20 79 65 61 72 2e 0a 3c 2f 70 3e  rrent year..</p>
109b0 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20  ..<blockquote>. 
109c0 20 53 45 4c 45 43 54 20 64 61 74 65 28 27 6e 6f   SELECT date('no
109d0 77 27 2c 27 73 74 61 72 74 20 6f 66 20 79 65 61  w','start of yea
109e0 72 27 2c 27 2b 39 20 6d 6f 6e 74 68 73 27 2c 27  r','+9 months','
109f0 77 65 65 6b 64 61 79 20 32 27 29 3b 0a 3c 2f 62  weekday 2');.</b
10a00 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 43  lockquote>..<p>C
10a10 6f 6d 70 75 74 65 20 74 68 65 20 74 69 6d 65 20  ompute the time 
10a20 73 69 6e 63 65 20 74 68 65 20 75 6e 69 78 20 65  since the unix e
10a30 70 6f 63 68 20 69 6e 20 73 65 63 6f 6e 64 73 20  poch in seconds 
10a40 0a 28 6c 69 6b 65 20 73 74 72 66 74 69 6d 65 28  .(like strftime(
10a50 27 25 73 27 2c 27 6e 6f 77 27 29 20 65 78 63 65  '%s','now') exce
10a60 70 74 20 69 6e 63 6c 75 64 65 73 20 66 72 61 63  pt includes frac
10a70 74 69 6f 6e 61 6c 20 70 61 72 74 29 3a 3c 2f 70  tional part):</p
10a80 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  >..<blockquote>.
10a90 20 20 53 45 4c 45 43 54 20 28 6a 75 6c 69 61 6e    SELECT (julian
10aa0 64 61 79 28 27 6e 6f 77 27 29 20 2d 20 32 34 34  day('now') - 244
10ab0 30 35 38 37 2e 35 29 2a 38 36 34 30 30 2e 30 3b  0587.5)*86400.0;
10ac0 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a  .</blockquote>..
10ad0 3c 68 33 3e 43 61 76 65 61 74 73 20 41 6e 64 20  <h3>Caveats And 
10ae0 42 75 67 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 54 68  Bugs</h3>..<p>Th
10af0 65 20 63 6f 6d 70 75 74 61 74 69 6f 6e 20 6f 66  e computation of
10b00 20 6c 6f 63 61 6c 20 74 69 6d 65 20 64 65 70 65   local time depe
10b10 6e 64 73 20 68 65 61 76 69 6c 79 20 6f 6e 20 74  nds heavily on t
10b20 68 65 20 77 68 69 6d 20 0a 6f 66 20 70 6f 6c 69  he whim .of poli
10b30 74 69 63 69 61 6e 73 20 61 6e 64 20 69 73 20 74  ticians and is t
10b40 68 75 73 20 64 69 66 66 69 63 75 6c 74 20 74 6f  hus difficult to
10b50 20 67 65 74 20 63 6f 72 72 65 63 74 20 66 6f 72   get correct for
10b60 20 0a 61 6c 6c 20 6c 6f 63 61 6c 65 73 2e 20 49   .all locales. I
10b70 6e 20 74 68 69 73 20 69 6d 70 6c 65 6d 65 6e 74  n this implement
10b80 61 74 69 6f 6e 2c 20 74 68 65 20 73 74 61 6e 64  ation, the stand
10b90 61 72 64 20 43 20 6c 69 62 72 61 72 79 20 0a 66  ard C library .f
10ba0 75 6e 63 74 69 6f 6e 20 6c 6f 63 61 6c 74 69 6d  unction localtim
10bb0 65 5f 72 28 29 20 69 73 20 75 73 65 64 20 74 6f  e_r() is used to
10bc0 20 61 73 73 69 73 74 20 69 6e 20 74 68 65 20 63   assist in the c
10bd0 61 6c 63 75 6c 61 74 69 6f 6e 20 6f 66 20 0a 6c  alculation of .l
10be0 6f 63 61 6c 20 74 69 6d 65 2e 20 20 54 68 65 20  ocal time.  The 
10bf0 0a 6c 6f 63 61 6c 74 69 6d 65 5f 72 28 29 20 43  .localtime_r() C
10c00 20 66 75 6e 63 74 69 6f 6e 20 6e 6f 72 6d 61 6c   function normal
10c10 6c 79 20 6f 6e 6c 79 20 77 6f 72 6b 73 20 66 6f  ly only works fo
10c20 72 20 79 65 61 72 73 0a 62 65 74 77 65 65 6e 20  r years.between 
10c30 31 39 37 30 20 61 6e 64 20 32 30 33 37 2e 20 46  1970 and 2037. F
10c40 6f 72 20 64 61 74 65 73 20 6f 75 74 73 69 64 65  or dates outside
10c50 20 74 68 69 73 20 72 61 6e 67 65 2c 20 53 51 4c   this range, SQL
10c60 69 74 65 20 0a 61 74 74 65 6d 70 74 73 20 74 6f  ite .attempts to
10c70 20 6d 61 70 20 74 68 65 20 79 65 61 72 20 69 6e   map the year in
10c80 74 6f 20 61 6e 20 65 71 75 69 76 61 6c 65 6e 74  to an equivalent
10c90 20 79 65 61 72 20 77 69 74 68 69 6e 20 0a 74 68   year within .th
10ca0 69 73 20 72 61 6e 67 65 2c 20 64 6f 20 74 68 65  is range, do the
10cb0 20 63 61 6c 63 75 6c 61 74 69 6f 6e 2c 20 74 68   calculation, th
10cc0 65 6e 20 6d 61 70 20 74 68 65 20 79 65 61 72 20  en map the year 
10cd0 62 61 63 6b 2e 3c 2f 70 3e 0a 0a 0a 3c 70 3e 44  back.</p>...<p>D
10ce0 61 74 65 20 63 6f 6d 70 75 74 61 74 69 6f 6e 73  ate computations
10cf0 20 64 6f 20 6e 6f 74 20 67 69 76 65 20 63 6f 72   do not give cor
10d00 72 65 63 74 20 72 65 73 75 6c 74 73 20 66 6f 72  rect results for
10d10 20 64 61 74 65 73 20 0a 62 65 66 6f 72 65 20 4a   dates .before J
10d20 75 6c 69 61 6e 20 64 61 79 20 6e 75 6d 62 65 72  ulian day number
10d30 20 30 20 28 2d 34 37 31 33 2d 31 31 2d 32 34 20   0 (-4713-11-24 
10d40 31 32 3a 30 30 3a 30 30 29 2e 3c 2f 70 3e 0a 0a  12:00:00).</p>..
10d50 3c 70 3e 4e 6f 6e 2d 56 69 73 74 61 20 57 69 6e  <p>Non-Vista Win
10d60 64 6f 77 73 20 70 6c 61 74 66 6f 72 6d 73 20 6f  dows platforms o
10d70 6e 6c 79 20 73 75 70 70 6f 72 74 20 6f 6e 65 20  nly support one 
10d80 73 65 74 20 6f 66 20 44 53 54 20 72 75 6c 65 73  set of DST rules
10d90 2e 20 0a 56 69 73 74 61 20 6f 6e 6c 79 20 73 75  . .Vista only su
10da0 70 70 6f 72 74 73 20 74 77 6f 2e 20 54 68 65 72  pports two. Ther
10db0 65 66 6f 72 65 2c 20 6f 6e 20 74 68 65 73 65 20  efore, on these 
10dc0 70 6c 61 74 66 6f 72 6d 73 2c 20 0a 68 69 73 74  platforms, .hist
10dd0 6f 72 69 63 61 6c 20 44 53 54 20 63 61 6c 63 75  orical DST calcu
10de0 6c 61 74 69 6f 6e 73 20 77 69 6c 6c 20 62 65 20  lations will be 
10df0 69 6e 63 6f 72 72 65 63 74 2e 20 0a 46 6f 72 20  incorrect. .For 
10e00 65 78 61 6d 70 6c 65 2c 20 69 6e 20 74 68 65 20  example, in the 
10e10 55 53 2c 20 69 6e 20 32 30 30 37 20 74 68 65 20  US, in 2007 the 
10e20 44 53 54 20 72 75 6c 65 73 20 63 68 61 6e 67 65  DST rules change
10e30 64 2e 20 0a 4e 6f 6e 2d 56 69 73 74 61 20 57 69  d. .Non-Vista Wi
10e40 6e 64 6f 77 73 20 70 6c 61 74 66 6f 72 6d 73 20  ndows platforms 
10e50 61 70 70 6c 79 20 74 68 65 20 6e 65 77 20 32 30  apply the new 20
10e60 30 37 20 44 53 54 20 72 75 6c 65 73 20 0a 74 6f  07 DST rules .to
10e70 20 61 6c 6c 20 70 72 65 76 69 6f 75 73 20 79 65   all previous ye
10e80 61 72 73 20 61 73 20 77 65 6c 6c 2e 20 56 69 73  ars as well. Vis
10e90 74 61 20 64 6f 65 73 20 73 6f 6d 65 77 68 61 74  ta does somewhat
10ea0 20 62 65 74 74 65 72 0a 67 65 74 74 69 6e 67 20   better.getting 
10eb0 72 65 73 75 6c 74 73 20 63 6f 72 72 65 63 74 20  results correct 
10ec0 62 61 63 6b 20 74 6f 20 31 39 38 36 2c 20 77 68  back to 1986, wh
10ed0 65 6e 20 74 68 65 20 72 75 6c 65 73 20 77 65 72  en the rules wer
10ee0 65 20 61 6c 73 6f 20 63 68 61 6e 67 65 64 2e 3c  e also changed.<
10ef0 2f 70 3e 0a 0a 3c 70 3e 41 6c 6c 20 69 6e 74 65  /p>..<p>All inte
10f00 72 6e 61 6c 20 63 6f 6d 70 75 74 61 74 69 6f 6e  rnal computation
10f10 73 20 61 73 73 75 6d 65 20 74 68 65 20 0a 3c 61  s assume the .<a
10f20 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 65 6e   href="http://en
10f30 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77  .wikipedia.org/w
10f40 69 6b 69 2f 47 72 65 67 6f 72 69 61 6e 5f 63 61  iki/Gregorian_ca
10f50 6c 65 6e 64 61 72 22 3e 0a 47 72 65 67 6f 72 69  lendar">.Gregori
10f60 61 6e 20 63 61 6c 65 6e 64 61 72 3c 2f 61 3e 20  an calendar</a> 
10f70 73 79 73 74 65 6d 2e 20 20 49 74 20 69 73 20 61  system.  It is a
10f80 6c 73 6f 20 61 73 73 75 6d 65 64 20 74 68 61 74  lso assumed that
10f90 20 65 76 65 72 79 0a 64 61 79 20 69 73 20 65 78   every.day is ex
10fa0 61 63 74 6c 79 20 38 36 34 30 30 20 73 65 63 6f  actly 86400 seco
10fb0 6e 64 73 20 69 6e 20 64 75 72 61 74 69 6f 6e 2e  nds in duration.
10fc0 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23  </p>..<tcl>.####
10fd0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10fe0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10ff0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11000 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11010 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69  ##########.Secti
11020 6f 6e 20 7b 41 67 67 72 65 67 61 74 65 20 46 75  on {Aggregate Fu
11030 6e 63 74 69 6f 6e 73 7d 20 61 67 67 66 75 6e 63  nctions} aggfunc
11040 20 7b 61 67 67 66 75 6e 63 7d 0a 3c 2f 74 63 6c   {aggfunc}.</tcl
11050 3e 0a 0a 3c 70 3e 0a 54 68 65 20 61 67 67 72 65  >..<p>.The aggre
11060 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 20 73  gate functions s
11070 68 6f 77 6e 20 62 65 6c 6f 77 20 61 72 65 20 61  hown below are a
11080 76 61 69 6c 61 62 6c 65 20 62 79 20 64 65 66 61  vailable by defa
11090 75 6c 74 2e 20 20 41 64 64 69 74 69 6f 6e 61 6c  ult.  Additional
110a0 0a 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74  .aggregate funct
110b0 69 6f 6e 73 20 77 72 69 74 74 65 6e 20 69 6e 20  ions written in 
110c0 43 20 6d 61 79 20 62 65 20 61 64 64 65 64 20 75  C may be added u
110d0 73 69 6e 67 20 74 68 65 20 0a 5b 73 71 6c 69 74  sing the .[sqlit
110e0 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69  e3_create_functi
110f0 6f 6e 28 29 5d 3c 2f 61 3e 0a 41 50 49 2e 3c 2f  on()]</a>.API.</
11100 70 3e 0a 0a 3c 70 3e 0a 49 6e 20 61 6e 79 20 61  p>..<p>.In any a
11110 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f  ggregate functio
11120 6e 20 74 68 61 74 20 74 61 6b 65 73 20 61 20 73  n that takes a s
11130 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 2c 20  ingle argument, 
11140 74 68 61 74 20 61 72 67 75 6d 65 6e 74 0a 63 61  that argument.ca
11150 6e 20 62 65 20 70 72 65 63 65 65 64 65 64 20 62  n be preceeded b
11160 79 20 74 68 65 20 6b 65 79 77 6f 72 64 20 44 49  y the keyword DI
11170 53 54 49 4e 43 54 2e 20 20 49 6e 20 73 75 63 68  STINCT.  In such
11180 20 63 61 73 65 73 2c 20 64 75 70 6c 69 63 61 74   cases, duplicat
11190 65 0a 65 6c 65 6d 65 6e 74 73 20 61 72 65 20 66  e.elements are f
111a0 69 6c 74 65 72 65 64 20 62 65 66 6f 72 65 20 62  iltered before b
111b0 65 69 6e 67 20 70 61 73 73 65 64 20 69 6e 74 6f  eing passed into
111c0 20 74 68 65 20 61 67 67 72 65 67 61 74 65 20 66   the aggregate f
111d0 75 6e 63 74 69 6f 6e 2e 0a 46 6f 72 20 65 78 61  unction..For exa
111e0 6d 70 6c 65 2c 20 74 68 65 20 66 75 6e 63 74 69  mple, the functi
111f0 6f 6e 20 22 63 6f 75 6e 74 28 64 69 73 74 69 6e  on "count(distin
11200 63 74 20 58 29 22 20 77 69 6c 6c 20 72 65 74 75  ct X)" will retu
11210 72 6e 20 74 68 65 20 6e 75 6d 62 65 72 0a 6f 66  rn the number.of
11220 20 64 69 73 74 69 6e 63 74 20 76 61 6c 75 65 73   distinct values
11230 20 6f 66 20 63 6f 6c 75 6d 6e 20 58 20 69 6e 73   of column X ins
11240 74 65 61 64 20 6f 66 20 74 68 65 20 74 6f 74 61  tead of the tota
11250 6c 20 6e 75 6d 62 65 72 20 6f 66 20 6e 6f 6e 2d  l number of non-
11260 6e 75 6c 6c 0a 76 61 6c 75 65 73 20 69 6e 20 63  null.values in c
11270 6f 6c 75 6d 6e 20 58 2e 0a 3c 2f 70 3e 0a 0a 3c  olumn X..</p>..<
11280 74 61 62 6c 65 20 62 6f 72 64 65 72 3d 30 20 63  table border=0 c
11290 65 6c 6c 70 61 64 64 69 6e 67 3d 31 30 3e 0a 3c  ellpadding=10>.<
112a0 74 63 6c 3e 0a 66 75 6e 63 64 65 66 20 7b 61 76  tcl>.funcdef {av
112b0 67 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74  g(X)} {} {.  Ret
112c0 75 72 6e 20 74 68 65 20 61 76 65 72 61 67 65 20  urn the average 
112d0 76 61 6c 75 65 20 6f 66 20 61 6c 6c 20 6e 6f 6e  value of all non
112e0 2d 4e 55 4c 4c 20 3c 69 3e 58 3c 2f 69 3e 20 77  -NULL <i>X</i> w
112f0 69 74 68 69 6e 20 61 0a 20 20 67 72 6f 75 70 2e  ithin a.  group.
11300 20 20 53 74 72 69 6e 67 20 61 6e 64 20 42 4c 4f    String and BLO
11310 42 20 76 61 6c 75 65 73 20 74 68 61 74 20 64 6f  B values that do
11320 20 6e 6f 74 20 6c 6f 6f 6b 20 6c 69 6b 65 20 6e   not look like n
11330 75 6d 62 65 72 73 20 61 72 65 0a 20 20 69 6e 74  umbers are.  int
11340 65 72 70 72 65 74 65 64 20 61 73 20 30 2e 0a 20  erpreted as 0.. 
11350 20 54 68 65 20 72 65 73 75 6c 74 20 6f 66 20 61   The result of a
11360 76 67 28 29 20 69 73 20 61 6c 77 61 79 73 20 61  vg() is always a
11370 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20   floating point 
11380 76 61 6c 75 65 20 65 76 65 6e 20 69 66 20 61 6c  value even if al
11390 6c 0a 20 20 69 6e 70 75 74 73 20 61 72 65 20 69  l.  inputs are i
113a0 6e 74 65 67 65 72 73 2e 0a 7d 0a 0a 66 75 6e 63  ntegers..}..func
113b0 64 65 66 20 7b 63 6f 75 6e 74 28 58 29 20 63 6f  def {count(X) co
113c0 75 6e 74 28 2a 29 7d 20 7b 7d 20 7b 0a 20 20 54  unt(*)} {} {.  T
113d0 68 65 20 66 69 72 73 74 20 66 6f 72 6d 20 72 65  he first form re
113e0 74 75 72 6e 20 61 20 63 6f 75 6e 74 20 6f 66 20  turn a count of 
113f0 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 74 69  the number of ti
11400 6d 65 73 0a 20 20 74 68 61 74 20 3c 69 3e 58 3c  mes.  that <i>X<
11410 2f 69 3e 20 69 73 20 6e 6f 74 20 4e 55 4c 4c 20  /i> is not NULL 
11420 69 6e 20 61 20 67 72 6f 75 70 2e 20 20 54 68 65  in a group.  The
11430 20 73 65 63 6f 6e 64 20 66 6f 72 6d 20 28 77 69   second form (wi
11440 74 68 20 6e 6f 20 61 72 67 75 6d 65 6e 74 29 0a  th no argument).
11450 20 20 72 65 74 75 72 6e 73 20 74 68 65 20 74 6f    returns the to
11460 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f  tal number of ro
11470 77 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e  ws in the group.
11480 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 67 72 6f  .}..funcdef {gro
11490 75 70 5f 63 6f 6e 63 61 74 28 58 29 20 67 72 6f  up_concat(X) gro
114a0 75 70 5f 63 6f 6e 63 61 74 28 58 2c 59 29 7d 20  up_concat(X,Y)} 
114b0 7b 7d 20 7b 0a 20 20 54 68 65 20 72 65 73 75 6c  {} {.  The resul
114c0 74 20 69 73 20 61 20 73 74 72 69 6e 67 20 77 68  t is a string wh
114d0 69 63 68 20 69 73 20 74 68 65 20 63 6f 6e 63 61  ich is the conca
114e0 74 65 6e 61 74 69 6f 6e 20 6f 66 0a 20 20 61 6c  tenation of.  al
114f0 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65  l non-NULL value
11500 73 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 2e 20 20  s of <i>X</i>.  
11510 49 66 20 70 61 72 61 6d 65 74 65 72 20 3c 69 3e  If parameter <i>
11520 59 3c 2f 69 3e 20 69 73 20 74 68 65 20 73 65 70  Y</i> is the sep
11530 61 72 61 74 6f 72 0a 20 20 62 65 74 77 65 65 6e  arator.  between
11540 20 69 6e 73 74 61 6e 63 65 73 20 6f 66 20 3c 69   instances of <i
11550 3e 58 3c 2f 69 3e 2e 20 20 41 20 63 6f 6d 6d 61  >X</i>.  A comma
11560 20 28 22 2c 22 29 20 69 73 20 75 73 65 64 20 61   (",") is used a
11570 73 20 74 68 65 20 73 65 70 61 72 61 74 6f 72 0a  s the separator.
11580 20 20 69 66 20 3c 69 3e 59 3c 2f 69 3e 20 69 73    if <i>Y</i> is
11590 20 6f 6d 69 74 74 65 64 2e 0a 7d 0a 0a 66 75 6e   omitted..}..fun
115a0 63 64 65 66 20 7b 6d 61 78 28 58 29 7d 20 7b 6d  cdef {max(X)} {m
115b0 61 78 41 67 67 46 75 6e 63 20 61 67 67 5f 6d 61  axAggFunc agg_ma
115c0 78 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20 74 68  x} {.  Return th
115d0 65 20 6d 61 78 69 6d 75 6d 20 76 61 6c 75 65 20  e maximum value 
115e0 6f 66 20 61 6c 6c 20 76 61 6c 75 65 73 20 69 6e  of all values in
115f0 20 74 68 65 20 67 72 6f 75 70 2e 0a 20 20 54 68   the group..  Th
11600 65 20 75 73 75 61 6c 20 73 6f 72 74 20 6f 72 64  e usual sort ord
11610 65 72 20 69 73 20 75 73 65 64 20 74 6f 20 64 65  er is used to de
11620 74 65 72 6d 69 6e 65 20 74 68 65 20 6d 61 78 69  termine the maxi
11630 6d 75 6d 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  mum..}..funcdef 
11640 7b 6d 69 6e 28 58 29 7d 20 7b 6d 69 6e 41 67 67  {min(X)} {minAgg
11650 46 75 6e 63 20 61 67 67 5f 6d 69 6e 7d 20 7b 0a  Func agg_min} {.
11660 20 20 52 65 74 75 72 6e 20 74 68 65 20 6d 69 6e    Return the min
11670 69 6d 75 6d 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61  imum non-NULL va
11680 6c 75 65 20 6f 66 20 61 6c 6c 20 76 61 6c 75 65  lue of all value
11690 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a  s in the group..
116a0 20 20 54 68 65 20 75 73 75 61 6c 20 73 6f 72 74    The usual sort
116b0 20 6f 72 64 65 72 20 69 73 20 75 73 65 64 20 74   order is used t
116c0 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20  o determine the 
116d0 6d 69 6e 69 6d 75 6d 2e 20 20 0a 20 20 4e 55 4c  minimum.  .  NUL
116e0 4c 20 69 73 20 6f 6e 6c 79 20 72 65 74 75 72 6e  L is only return
116f0 65 64 0a 20 20 69 66 20 61 6c 6c 20 76 61 6c 75  ed.  if all valu
11700 65 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70 20  es in the group 
11710 61 72 65 20 4e 55 4c 4c 2e 0a 7d 0a 0a 66 75 6e  are NULL..}..fun
11720 63 64 65 66 20 7b 73 75 6d 28 58 29 20 74 6f 74  cdef {sum(X) tot
11730 61 6c 28 58 29 7d 20 7b 73 75 6d 46 75 6e 63 20  al(X)} {sumFunc 
11740 73 75 6d 20 74 6f 74 61 6c 7d 20 7b 0a 20 20 52  sum total} {.  R
11750 65 74 75 72 6e 20 74 68 65 20 6e 75 6d 65 72 69  eturn the numeri
11760 63 20 73 75 6d 20 6f 66 20 61 6c 6c 20 6e 6f 6e  c sum of all non
11770 2d 4e 55 4c 4c 20 76 61 6c 75 65 73 20 69 6e 20  -NULL values in 
11780 74 68 65 20 67 72 6f 75 70 2e 0a 20 20 49 66 20  the group..  If 
11790 74 68 65 72 65 20 61 72 65 20 6e 6f 20 6e 6f 6e  there are no non
117a0 2d 4e 55 4c 4c 20 69 6e 70 75 74 20 72 6f 77 73  -NULL input rows
117b0 20 74 68 65 6e 20 73 75 6d 28 29 20 72 65 74 75   then sum() retu
117c0 72 6e 73 0a 20 20 4e 55 4c 4c 20 62 75 74 20 74  rns.  NULL but t
117d0 6f 74 61 6c 28 29 20 72 65 74 75 72 6e 73 20 30  otal() returns 0
117e0 2e 30 2e 0a 20 20 4e 55 4c 4c 20 69 73 20 6e 6f  .0..  NULL is no
117f0 74 20 6e 6f 72 6d 61 6c 6c 79 20 61 20 68 65 6c  t normally a hel
11800 70 66 75 6c 20 72 65 73 75 6c 74 20 66 6f 72 20  pful result for 
11810 74 68 65 20 73 75 6d 20 6f 66 20 6e 6f 20 72 6f  the sum of no ro
11820 77 73 0a 20 20 62 75 74 20 74 68 65 20 53 51 4c  ws.  but the SQL
11830 20 73 74 61 6e 64 61 72 64 20 72 65 71 75 69 72   standard requir
11840 65 73 20 69 74 20 61 6e 64 20 6d 6f 73 74 20 6f  es it and most o
11850 74 68 65 72 0a 20 20 53 51 4c 20 64 61 74 61 62  ther.  SQL datab
11860 61 73 65 20 65 6e 67 69 6e 65 73 20 69 6d 70 6c  ase engines impl
11870 65 6d 65 6e 74 20 73 75 6d 28 29 20 74 68 61 74  ement sum() that
11880 20 77 61 79 20 73 6f 20 53 51 4c 69 74 65 20 64   way so SQLite d
11890 6f 65 73 20 69 74 20 69 6e 20 74 68 65 0a 20 20  oes it in the.  
118a0 73 61 6d 65 20 77 61 79 20 69 6e 20 6f 72 64 65  same way in orde
118b0 72 20 74 6f 20 62 65 20 63 6f 6d 70 61 74 69 62  r to be compatib
118c0 6c 65 2e 20 20 20 54 68 65 20 6e 6f 6e 2d 73 74  le.   The non-st
118d0 61 6e 64 61 72 64 20 74 6f 74 61 6c 28 29 20 66  andard total() f
118e0 75 6e 63 74 69 6f 6e 0a 20 20 69 73 20 70 72 6f  unction.  is pro
118f0 76 69 64 65 64 20 61 73 20 61 20 63 6f 6e 76 65  vided as a conve
11900 6e 69 65 6e 74 20 77 61 79 20 74 6f 20 77 6f 72  nient way to wor
11910 6b 20 61 72 6f 75 6e 64 20 74 68 69 73 20 64 65  k around this de
11920 73 69 67 6e 20 70 72 6f 62 6c 65 6d 0a 20 20 69  sign problem.  i
11930 6e 20 74 68 65 20 53 51 4c 20 6c 61 6e 67 75 61  n the SQL langua
11940 67 65 2e 3c 2f 70 3e 0a 0a 20 20 3c 70 3e 54 68  ge.</p>..  <p>Th
11950 65 20 72 65 73 75 6c 74 20 6f 66 20 74 6f 74 61  e result of tota
11960 6c 28 29 20 69 73 20 61 6c 77 61 79 73 20 61 20  l() is always a 
11970 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 76  floating point v
11980 61 6c 75 65 2e 0a 20 20 54 68 65 20 72 65 73 75  alue..  The resu
11990 6c 74 20 6f 66 20 73 75 6d 28 29 20 69 73 20 61  lt of sum() is a
119a0 6e 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 20  n integer value 
119b0 69 66 20 61 6c 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20  if all non-NULL 
119c0 69 6e 70 75 74 73 20 61 72 65 20 69 6e 74 65 67  inputs are integ
119d0 65 72 73 2e 0a 20 20 49 66 20 61 6e 79 20 69 6e  ers..  If any in
119e0 70 75 74 20 74 6f 20 73 75 6d 28 29 20 69 73 20  put to sum() is 
119f0 6e 65 69 74 68 65 72 20 61 6e 20 69 6e 74 65 67  neither an integ
11a00 65 72 20 6f 72 20 61 20 4e 55 4c 4c 0a 20 20 74  er or a NULL.  t
11a10 68 65 6e 20 73 75 6d 28 29 20 72 65 74 75 72 6e  hen sum() return
11a20 73 20 61 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69  s a floating poi
11a30 6e 74 20 76 61 6c 75 65 0a 20 20 77 68 69 63 68  nt value.  which
11a40 20 6d 69 67 68 74 20 62 65 20 61 6e 20 61 70 70   might be an app
11a50 72 6f 78 69 6d 61 74 69 6f 6e 20 74 6f 20 74 68  roximation to th
11a60 65 20 74 72 75 65 20 73 75 6d 2e 3c 2f 70 3e 0a  e true sum.</p>.
11a70 0a 20 20 3c 70 3e 53 75 6d 28 29 20 77 69 6c 6c  .  <p>Sum() will
11a80 20 74 68 72 6f 77 20 61 6e 20 22 69 6e 74 65 67   throw an "integ
11a90 65 72 20 6f 76 65 72 66 6c 6f 77 22 20 65 78 63  er overflow" exc
11aa0 65 70 74 69 6f 6e 20 69 66 20 61 6c 6c 20 69 6e  eption if all in
11ab0 70 75 74 73 0a 20 20 61 72 65 20 69 6e 74 65 67  puts.  are integ
11ac0 65 72 73 20 6f 72 20 4e 55 4c 4c 0a 20 20 61 6e  ers or NULL.  an
11ad0 64 20 61 6e 20 69 6e 74 65 67 65 72 20 6f 76 65  d an integer ove
11ae0 72 66 6c 6f 77 20 6f 63 63 75 72 73 20 61 74 20  rflow occurs at 
11af0 61 6e 79 20 70 6f 69 6e 74 20 64 75 72 69 6e 67  any point during
11b00 20 74 68 65 20 63 6f 6d 70 75 74 61 74 69 6f 6e   the computation
11b10 2e 0a 20 20 54 6f 74 61 6c 28 29 20 6e 65 76 65  ..  Total() neve
11b20 72 20 74 68 72 6f 77 73 20 61 6e 20 65 78 63 65  r throws an exce
11b30 70 74 69 6f 6e 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a  ption..}.</tcl>.
11b40 3c 2f 74 61 62 6c 65 3e 0a 0a 3c 74 63 6c 3e 0a  </table>..<tcl>.
11b50 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11b60 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11b70 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11b80 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11b90 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53  ##############.S
11ba0 65 63 74 69 6f 6e 20 49 4e 53 45 52 54 20 69 6e  ection INSERT in
11bb0 73 65 72 74 20 7b 49 4e 53 45 52 54 20 49 4e 53  sert {INSERT INS
11bc0 45 52 54 73 7d 0a 0a 42 75 62 62 6c 65 44 69 61  ERTs}..BubbleDia
11bd0 67 72 61 6d 20 69 6e 73 65 72 74 2d 73 74 6d 74  gram insert-stmt
11be0 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68   1.</tcl>..<p>Th
11bf0 65 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65  e INSERT stateme
11c00 6e 74 20 63 6f 6d 65 73 20 69 6e 20 74 77 6f 20  nt comes in two 
11c10 62 61 73 69 63 20 66 6f 72 6d 73 2e 20 20 54 68  basic forms.  Th
11c20 65 20 66 69 72 73 74 20 66 6f 72 6d 0a 28 77 69  e first form.(wi
11c30 74 68 20 74 68 65 20 22 56 41 4c 55 45 53 22 20  th the "VALUES" 
11c40 6b 65 79 77 6f 72 64 29 20 63 72 65 61 74 65 73  keyword) creates
11c50 20 61 20 73 69 6e 67 6c 65 20 6e 65 77 20 72 6f   a single new ro
11c60 77 20 69 6e 20 61 6e 20 65 78 69 73 74 69 6e 67  w in an existing
11c70 20 74 61 62 6c 65 2e 0a 49 66 20 6e 6f 20 63 6f   table..If no co
11c80 6c 75 6d 6e 2d 6c 69 73 74 20 69 73 20 73 70 65  lumn-list is spe
11c90 63 69 66 69 65 64 20 74 68 65 6e 20 74 68 65 20  cified then the 
11ca0 6e 75 6d 62 65 72 20 6f 66 20 76 61 6c 75 65 73  number of values
11cb0 20 6d 75 73 74 0a 62 65 20 74 68 65 20 73 61 6d   must.be the sam
11cc0 65 20 61 73 20 74 68 65 20 6e 75 6d 62 65 72 20  e as the number 
11cd0 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68  of columns in th
11ce0 65 20 74 61 62 6c 65 2e 20 20 49 66 20 61 20 63  e table.  If a c
11cf0 6f 6c 75 6d 6e 2d 6c 69 73 74 0a 69 73 20 73 70  olumn-list.is sp
11d00 65 63 69 66 69 65 64 2c 20 74 68 65 6e 20 74 68  ecified, then th
11d10 65 20 6e 75 6d 62 65 72 20 6f 66 20 76 61 6c 75  e number of valu
11d20 65 73 20 6d 75 73 74 20 6d 61 74 63 68 20 74 68  es must match th
11d30 65 20 6e 75 6d 62 65 72 20 6f 66 0a 73 70 65 63  e number of.spec
11d40 69 66 69 65 64 20 63 6f 6c 75 6d 6e 73 2e 20 20  ified columns.  
11d50 43 6f 6c 75 6d 6e 73 20 6f 66 20 74 68 65 20 74  Columns of the t
11d60 61 62 6c 65 20 74 68 61 74 20 64 6f 20 6e 6f 74  able that do not
11d70 20 61 70 70 65 61 72 20 69 6e 20 74 68 65 0a 63   appear in the.c
11d80 6f 6c 75 6d 6e 20 6c 69 73 74 20 61 72 65 20 66  olumn list are f
11d90 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 64  illed with the d
11da0 65 66 61 75 6c 74 20 76 61 6c 75 65 2c 20 6f 72  efault value, or
11db0 20 77 69 74 68 20 4e 55 4c 4c 20 69 66 20 6e 6f   with NULL if no
11dc0 0a 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69  .default value i
11dd0 73 20 73 70 65 63 69 66 69 65 64 2e 0a 3c 2f 70  s specified..</p
11de0 3e 0a 0a 3c 70 3e 54 68 65 20 73 65 63 6f 6e 64  >..<p>The second
11df0 20 66 6f 72 6d 20 6f 66 20 74 68 65 20 49 4e 53   form of the INS
11e00 45 52 54 20 73 74 61 74 65 6d 65 6e 74 20 74 61  ERT statement ta
11e10 6b 65 73 20 69 74 20 64 61 74 61 20 66 72 6f 6d  kes it data from
11e20 20 61 0a 53 45 4c 45 43 54 20 73 74 61 74 65 6d   a.SELECT statem
11e30 65 6e 74 2e 20 20 54 68 65 20 6e 75 6d 62 65 72  ent.  The number
11e40 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74   of columns in t
11e50 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65  he result of the
11e60 0a 53 45 4c 45 43 54 20 6d 75 73 74 20 65 78 61  .SELECT must exa
11e70 63 74 6c 79 20 6d 61 74 63 68 20 74 68 65 20 6e  ctly match the n
11e80 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73  umber of columns
11e90 20 69 6e 20 74 68 65 20 74 61 62 6c 65 20 69 66   in the table if
11ea0 0a 6e 6f 20 63 6f 6c 75 6d 6e 20 6c 69 73 74 20  .no column list 
11eb0 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 6f 72  is specified, or
11ec0 20 69 74 20 6d 75 73 74 20 6d 61 74 63 68 20 74   it must match t
11ed0 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c  he number of col
11ee0 75 6d 6e 73 0a 6e 61 6d 65 20 69 6e 20 74 68 65  umns.name in the
11ef0 20 63 6f 6c 75 6d 6e 20 6c 69 73 74 2e 20 20 41   column list.  A
11f00 20 6e 65 77 20 65 6e 74 72 79 20 69 73 20 6d 61   new entry is ma
11f10 64 65 20 69 6e 20 74 68 65 20 74 61 62 6c 65 0a  de in the table.
11f20 66 6f 72 20 65 76 65 72 79 20 72 6f 77 20 6f 66  for every row of
11f30 20 74 68 65 20 53 45 4c 45 43 54 20 72 65 73 75   the SELECT resu
11f40 6c 74 2e 20 20 54 68 65 20 53 45 4c 45 43 54 20  lt.  The SELECT 
11f50 6d 61 79 20 62 65 20 73 69 6d 70 6c 65 0a 6f 72  may be simple.or
11f60 20 63 6f 6d 70 6f 75 6e 64 2e 3c 2f 70 3e 0a 0a   compound.</p>..
11f70 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20  <p>The optional 
11f80 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 20  conflict-clause 
11f90 61 6c 6c 6f 77 73 20 74 68 65 20 73 70 65 63 69  allows the speci
11fa0 66 69 63 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61  fication of an a
11fb0 6c 74 65 72 6e 61 74 69 76 65 0a 63 6f 6e 73 74  lternative.const
11fc0 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72  raint conflict r
11fd0 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69  esolution algori
11fe0 74 68 6d 20 74 6f 20 75 73 65 20 64 75 72 69 6e  thm to use durin
11ff0 67 20 74 68 69 73 20 6f 6e 65 20 63 6f 6d 6d 61  g this one comma
12000 6e 64 2e 0a 53 65 65 20 74 68 65 20 73 65 63 74  nd..See the sect
12010 69 6f 6e 20 74 69 74 6c 65 64 0a 5b 4f 4e 20 43  ion titled.[ON C
12020 4f 4e 46 4c 49 43 54 5d 20 66 6f 72 20 61 64 64  ONFLICT] for add
12030 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74  itional informat
12040 69 6f 6e 2e 0a 46 6f 72 20 63 6f 6d 70 61 74 69  ion..For compati
12050 62 69 6c 69 74 79 20 77 69 74 68 20 4d 79 53 51  bility with MySQ
12060 4c 2c 20 74 68 65 20 70 61 72 73 65 72 20 61 6c  L, the parser al
12070 6c 6f 77 73 20 74 68 65 20 75 73 65 20 6f 66 20  lows the use of 
12080 74 68 65 0a 73 69 6e 67 6c 65 20 6b 65 79 77 6f  the.single keywo
12090 72 64 20 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67  rd <a href="lang
120a0 5f 72 65 70 6c 61 63 65 2e 68 74 6d 6c 22 3e 52  _replace.html">R
120b0 45 50 4c 41 43 45 3c 2f 61 3e 20 61 73 20 61 6e  EPLACE</a> as an
120c0 20 0a 61 6c 69 61 73 20 66 6f 72 20 22 49 4e 53   .alias for "INS
120d0 45 52 54 20 4f 52 20 52 45 50 4c 41 43 45 22 2e  ERT OR REPLACE".
120e0 0a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23  .</p>..<tcl>.###
120f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12100 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12110 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12120 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12130 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74  ###########.Sect
12140 69 6f 6e 20 7b 4f 4e 20 43 4f 4e 46 4c 49 43 54  ion {ON CONFLICT
12150 20 63 6c 61 75 73 65 7d 20 63 6f 6e 66 6c 69 63   clause} conflic
12160 74 20 7b 7b 63 6f 6e 66 6c 69 63 74 20 63 6c 61  t {{conflict cla
12170 75 73 65 7d 20 7b 4f 4e 20 43 4f 4e 46 4c 49 43  use} {ON CONFLIC
12180 54 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72  T}}..BubbleDiagr
12190 61 6d 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75  am conflict-clau
121a0 73 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68  se.</tcl>..<p>Th
121b0 65 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c  e ON CONFLICT cl
121c0 61 75 73 65 20 69 73 20 6e 6f 74 20 61 20 73 65  ause is not a se
121d0 70 61 72 61 74 65 20 53 51 4c 20 63 6f 6d 6d 61  parate SQL comma
121e0 6e 64 2e 20 20 49 74 20 69 73 20 61 0a 6e 6f 6e  nd.  It is a.non
121f0 2d 73 74 61 6e 64 61 72 64 20 63 6c 61 75 73 65  -standard clause
12200 20 74 68 61 74 20 63 61 6e 20 61 70 70 65 61 72   that can appear
12210 20 69 6e 20 6d 61 6e 79 20 6f 74 68 65 72 20 53   in many other S
12220 51 4c 20 63 6f 6d 6d 61 6e 64 73 2e 0a 49 74 20  QL commands..It 
12230 69 73 20 67 69 76 65 6e 20 69 74 73 20 6f 77 6e  is given its own
12240 20 73 65 63 74 69 6f 6e 20 69 6e 20 74 68 69 73   section in this
12250 20 64 6f 63 75 6d 65 6e 74 20 62 65 63 61 75 73   document becaus
12260 65 20 69 74 20 69 73 20 6e 6f 74 0a 70 61 72 74  e it is not.part
12270 20 6f 66 20 73 74 61 6e 64 61 72 64 20 53 51 4c   of standard SQL
12280 20 61 6e 64 20 74 68 65 72 65 66 6f 72 65 20 6d   and therefore m
12290 69 67 68 74 20 6e 6f 74 20 62 65 20 66 61 6d 69  ight not be fami
122a0 6c 69 61 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  liar.</p>..<p>Th
122b0 65 20 73 79 6e 74 61 78 20 66 6f 72 20 74 68 65  e syntax for the
122c0 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61   ON CONFLICT cla
122d0 75 73 65 20 69 73 20 61 73 20 73 68 6f 77 6e 20  use is as shown 
122e0 61 62 6f 76 65 20 66 6f 72 0a 74 68 65 20 43 52  above for.the CR
122f0 45 41 54 45 20 54 41 42 4c 45 20 63 6f 6d 6d 61  EATE TABLE comma
12300 6e 64 2e 20 20 46 6f 72 20 74 68 65 20 49 4e 53  nd.  For the INS
12310 45 52 54 20 61 6e 64 0a 55 50 44 41 54 45 20 63  ERT and.UPDATE c
12320 6f 6d 6d 61 6e 64 73 2c 20 74 68 65 20 6b 65 79  ommands, the key
12330 77 6f 72 64 73 20 22 4f 4e 20 43 4f 4e 46 4c 49  words "ON CONFLI
12340 43 54 22 20 61 72 65 20 72 65 70 6c 61 63 65 64  CT" are replaced
12350 20 62 79 20 22 4f 52 22 2c 20 74 6f 20 6d 61 6b   by "OR", to mak
12360 65 0a 74 68 65 20 73 79 6e 74 61 78 20 73 65 65  e.the syntax see
12370 6d 20 6d 6f 72 65 20 6e 61 74 75 72 61 6c 2e 20  m more natural. 
12380 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 6e   For example, in
12390 73 74 65 61 64 20 6f 66 0a 22 49 4e 53 45 52 54  stead of."INSERT
123a0 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 49 47 4e   ON CONFLICT IGN
123b0 4f 52 45 22 20 77 65 20 68 61 76 65 20 22 49 4e  ORE" we have "IN
123c0 53 45 52 54 20 4f 52 20 49 47 4e 4f 52 45 22 2e  SERT OR IGNORE".
123d0 0a 54 68 65 20 6b 65 79 77 6f 72 64 73 20 63 68  .The keywords ch
123e0 61 6e 67 65 20 62 75 74 20 74 68 65 20 6d 65 61  ange but the mea
123f0 6e 69 6e 67 20 6f 66 20 74 68 65 20 63 6c 61 75  ning of the clau
12400 73 65 20 69 73 20 74 68 65 20 73 61 6d 65 0a 65  se is the same.e
12410 69 74 68 65 72 20 77 61 79 2e 3c 2f 70 3e 0a 0a  ither way.</p>..
12420 3c 70 3e 54 68 65 20 4f 4e 20 43 4f 4e 46 4c 49  <p>The ON CONFLI
12430 43 54 20 63 6c 61 75 73 65 20 73 70 65 63 69 66  CT clause specif
12440 69 65 73 20 61 6e 20 61 6c 67 6f 72 69 74 68 6d  ies an algorithm
12450 20 75 73 65 64 20 74 6f 20 72 65 73 6f 6c 76 65   used to resolve
12460 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66  .constraint conf
12470 6c 69 63 74 73 2e 20 20 54 68 65 72 65 20 61 72  licts.  There ar
12480 65 20 66 69 76 65 20 63 68 6f 69 63 65 73 3a 20  e five choices: 
12490 52 4f 4c 4c 42 41 43 4b 2c 20 41 42 4f 52 54 2c  ROLLBACK, ABORT,
124a0 0a 46 41 49 4c 2c 20 49 47 4e 4f 52 45 2c 20 61  .FAIL, IGNORE, a
124b0 6e 64 20 52 45 50 4c 41 43 45 2e 20 54 68 65 20  nd REPLACE. The 
124c0 64 65 66 61 75 6c 74 20 61 6c 67 6f 72 69 74 68  default algorith
124d0 6d 20 69 73 20 41 42 4f 52 54 2e 20 20 54 68 69  m is ABORT.  Thi
124e0 73 0a 69 73 20 77 68 61 74 20 74 68 65 79 20 6d  s.is what they m
124f0 65 61 6e 3a 3c 2f 70 3e 0a 0a 3c 64 6c 3e 0a 3c  ean:</p>..<dl>.<
12500 64 74 3e 3c 62 3e 52 4f 4c 4c 42 41 43 4b 3c 2f  dt><b>ROLLBACK</
12510 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57  b></dt>.<dd><p>W
12520 68 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74  hen a constraint
12530 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72   violation occur
12540 73 2c 20 61 6e 20 69 6d 6d 65 64 69 61 74 65 20  s, an immediate 
12550 52 4f 4c 4c 42 41 43 4b 0a 6f 63 63 75 72 73 2c  ROLLBACK.occurs,
12560 20 74 68 75 73 20 65 6e 64 69 6e 67 20 74 68 65   thus ending the
12570 20 63 75 72 72 65 6e 74 20 74 72 61 6e 73 61 63   current transac
12580 74 69 6f 6e 2c 20 61 6e 64 20 74 68 65 20 63 6f  tion, and the co
12590 6d 6d 61 6e 64 20 61 62 6f 72 74 73 0a 77 69 74  mmand aborts.wit
125a0 68 20 61 20 72 65 74 75 72 6e 20 63 6f 64 65 20  h a return code 
125b0 6f 66 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52  of SQLITE_CONSTR
125c0 41 49 4e 54 2e 20 20 49 66 20 6e 6f 20 74 72 61  AINT.  If no tra
125d0 6e 73 61 63 74 69 6f 6e 20 69 73 0a 61 63 74 69  nsaction is.acti
125e0 76 65 20 28 6f 74 68 65 72 20 74 68 61 6e 20 74  ve (other than t
125f0 68 65 20 69 6d 70 6c 69 65 64 20 74 72 61 6e 73  he implied trans
12600 61 63 74 69 6f 6e 20 74 68 61 74 20 69 73 20 63  action that is c
12610 72 65 61 74 65 64 20 6f 6e 20 65 76 65 72 79 0a  reated on every.
12620 63 6f 6d 6d 61 6e 64 29 20 74 68 65 6e 20 74 68  command) then th
12630 69 73 20 61 6c 67 6f 72 69 74 68 6d 20 77 6f 72  is algorithm wor
12640 6b 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 41  ks the same as A
12650 42 4f 52 54 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a  BORT.</p></dd>..
12660 3c 64 74 3e 3c 62 3e 41 42 4f 52 54 3c 2f 62 3e  <dt><b>ABORT</b>
12670 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65  </dt>.<dd><p>Whe
12680 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76  n a constraint v
12690 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c  iolation occurs,
126a0 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 62 61 63   the command bac
126b0 6b 73 20 6f 75 74 0a 61 6e 79 20 70 72 69 6f 72  ks out.any prior
126c0 20 63 68 61 6e 67 65 73 20 69 74 20 6d 69 67 68   changes it migh
126d0 74 20 68 61 76 65 20 6d 61 64 65 20 61 6e 64 20  t have made and 
126e0 61 62 6f 72 74 73 20 77 69 74 68 20 61 20 72 65  aborts with a re
126f0 74 75 72 6e 20 63 6f 64 65 0a 6f 66 20 53 51 4c  turn code.of SQL
12700 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 2e 20  ITE_CONSTRAINT. 
12710 20 42 75 74 20 6e 6f 20 52 4f 4c 4c 42 41 43 4b   But no ROLLBACK
12720 20 69 73 20 65 78 65 63 75 74 65 64 20 73 6f 20   is executed so 
12730 63 68 61 6e 67 65 73 0a 66 72 6f 6d 20 70 72 69  changes.from pri
12740 6f 72 20 63 6f 6d 6d 61 6e 64 73 20 77 69 74 68  or commands with
12750 69 6e 20 74 68 65 20 73 61 6d 65 20 74 72 61 6e  in the same tran
12760 73 61 63 74 69 6f 6e 0a 61 72 65 20 70 72 65 73  saction.are pres
12770 65 72 76 65 64 2e 20 20 54 68 69 73 20 69 73 20  erved.  This is 
12780 74 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61  the default beha
12790 76 69 6f 72 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a  vior.</p></dd>..
127a0 3c 64 74 3e 3c 62 3e 46 41 49 4c 3c 2f 62 3e 3c  <dt><b>FAIL</b><
127b0 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e  /dt>.<dd><p>When
127c0 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69   a constraint vi
127d0 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20  olation occurs, 
127e0 74 68 65 20 63 6f 6d 6d 61 6e 64 20 61 62 6f 72  the command abor
127f0 74 73 20 77 69 74 68 20 61 0a 72 65 74 75 72 6e  ts with a.return
12800 20 63 6f 64 65 20 53 51 4c 49 54 45 5f 43 4f 4e   code SQLITE_CON
12810 53 54 52 41 49 4e 54 2e 20 20 42 75 74 20 61 6e  STRAINT.  But an
12820 79 20 63 68 61 6e 67 65 73 20 74 6f 20 74 68 65  y changes to the
12830 20 64 61 74 61 62 61 73 65 20 74 68 61 74 0a 74   database that.t
12840 68 65 20 63 6f 6d 6d 61 6e 64 20 6d 61 64 65 20  he command made 
12850 70 72 69 6f 72 20 74 6f 20 65 6e 63 6f 75 6e 74  prior to encount
12860 65 72 69 6e 67 20 74 68 65 20 63 6f 6e 73 74 72  ering the constr
12870 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 0a 61  aint violation.a
12880 72 65 20 70 72 65 73 65 72 76 65 64 20 61 6e 64  re preserved and
12890 20 61 72 65 20 6e 6f 74 20 62 61 63 6b 65 64 20   are not backed 
128a0 6f 75 74 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c  out.  For exampl
128b0 65 2c 20 69 66 20 61 6e 20 55 50 44 41 54 45 0a  e, if an UPDATE.
128c0 73 74 61 74 65 6d 65 6e 74 20 65 6e 63 6f 75 6e  statement encoun
128d0 74 65 72 65 64 20 61 20 63 6f 6e 73 74 72 61 69  tered a constrai
128e0 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 6e 20  nt violation on 
128f0 74 68 65 20 31 30 30 74 68 20 72 6f 77 20 74 68  the 100th row th
12900 61 74 0a 69 74 20 61 74 74 65 6d 70 74 73 20 74  at.it attempts t
12910 6f 20 75 70 64 61 74 65 2c 20 74 68 65 6e 20 74  o update, then t
12920 68 65 20 66 69 72 73 74 20 39 39 20 72 6f 77 20  he first 99 row 
12930 63 68 61 6e 67 65 73 20 61 72 65 20 70 72 65 73  changes are pres
12940 65 72 76 65 64 0a 62 75 74 20 63 68 61 6e 67 65  erved.but change
12950 73 20 74 6f 20 72 6f 77 73 20 31 30 30 20 61 6e  s to rows 100 an
12960 64 20 62 65 79 6f 6e 64 20 6e 65 76 65 72 20 6f  d beyond never o
12970 63 63 75 72 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a  ccur.</p></dd>..
12980 3c 64 74 3e 3c 62 3e 49 47 4e 4f 52 45 3c 2f 62  <dt><b>IGNORE</b
12990 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68  ></dt>.<dd><p>Wh
129a0 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20  en a constraint 
129b0 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73  violation occurs
129c0 2c 20 74 68 65 20 6f 6e 65 20 72 6f 77 20 74 68  , the one row th
129d0 61 74 20 63 6f 6e 74 61 69 6e 73 0a 74 68 65 20  at contains.the 
129e0 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
129f0 74 69 6f 6e 20 69 73 20 6e 6f 74 20 69 6e 73 65  tion is not inse
12a00 72 74 65 64 20 6f 72 20 63 68 61 6e 67 65 64 2e  rted or changed.
12a10 20 20 42 75 74 20 74 68 65 20 63 6f 6d 6d 61 6e    But the comman
12a20 64 0a 63 6f 6e 74 69 6e 75 65 73 20 65 78 65 63  d.continues exec
12a30 75 74 69 6e 67 20 6e 6f 72 6d 61 6c 6c 79 2e 20  uting normally. 
12a40 20 4f 74 68 65 72 20 72 6f 77 73 20 62 65 66 6f   Other rows befo
12a50 72 65 20 61 6e 64 20 61 66 74 65 72 20 74 68 65  re and after the
12a60 20 72 6f 77 20 74 68 61 74 0a 63 6f 6e 74 61 69   row that.contai
12a70 6e 65 64 20 74 68 65 20 63 6f 6e 73 74 72 61 69  ned the constrai
12a80 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 63 6f 6e  nt violation con
12a90 74 69 6e 75 65 20 74 6f 20 62 65 20 69 6e 73 65  tinue to be inse
12aa0 72 74 65 64 20 6f 72 20 75 70 64 61 74 65 64 0a  rted or updated.
12ab0 6e 6f 72 6d 61 6c 6c 79 2e 20 20 4e 6f 20 65 72  normally.  No er
12ac0 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e  ror is returned.
12ad0 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c  </p></dd>..<dt><
12ae0 62 3e 52 45 50 4c 41 43 45 3c 2f 62 3e 3c 2f 64  b>REPLACE</b></d
12af0 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61  t>.<dd><p>When a
12b00 20 55 4e 49 51 55 45 20 63 6f 6e 73 74 72 61 69   UNIQUE constrai
12b10 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63  nt violation occ
12b20 75 72 73 2c 20 74 68 65 20 70 72 65 2d 65 78 69  urs, the pre-exi
12b30 73 74 69 6e 67 20 72 6f 77 73 0a 74 68 61 74 20  sting rows.that 
12b40 61 72 65 20 63 61 75 73 69 6e 67 20 74 68 65 20  are causing the 
12b50 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
12b60 74 69 6f 6e 20 61 72 65 20 72 65 6d 6f 76 65 64  tion are removed
12b70 20 70 72 69 6f 72 20 74 6f 20 69 6e 73 65 72 74   prior to insert
12b80 69 6e 67 0a 6f 72 20 75 70 64 61 74 69 6e 67 20  ing.or updating 
12b90 74 68 65 20 63 75 72 72 65 6e 74 20 72 6f 77 2e  the current row.
12ba0 20 20 54 68 75 73 20 74 68 65 20 69 6e 73 65 72    Thus the inser
12bb0 74 20 6f 72 20 75 70 64 61 74 65 20 61 6c 77 61  t or update alwa
12bc0 79 73 20 6f 63 63 75 72 73 2e 0a 54 68 65 20 63  ys occurs..The c
12bd0 6f 6d 6d 61 6e 64 20 63 6f 6e 74 69 6e 75 65 73  ommand continues
12be0 20 65 78 65 63 75 74 69 6e 67 20 6e 6f 72 6d 61   executing norma
12bf0 6c 6c 79 2e 20 20 4e 6f 20 65 72 72 6f 72 20 69  lly.  No error i
12c00 73 20 72 65 74 75 72 6e 65 64 2e 0a 49 66 20 61  s returned..If a
12c10 20 4e 4f 54 20 4e 55 4c 4c 20 63 6f 6e 73 74 72   NOT NULL constr
12c20 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f  aint violation o
12c30 63 63 75 72 73 2c 20 74 68 65 20 4e 55 4c 4c 20  ccurs, the NULL 
12c40 76 61 6c 75 65 20 69 73 20 72 65 70 6c 61 63 65  value is replace
12c50 64 0a 62 79 20 74 68 65 20 64 65 66 61 75 6c 74  d.by the default
12c60 20 76 61 6c 75 65 20 66 6f 72 20 74 68 61 74 20   value for that 
12c70 63 6f 6c 75 6d 6e 2e 20 20 49 66 20 74 68 65 20  column.  If the 
12c80 63 6f 6c 75 6d 6e 20 68 61 73 20 6e 6f 20 64 65  column has no de
12c90 66 61 75 6c 74 0a 76 61 6c 75 65 2c 20 74 68 65  fault.value, the
12ca0 6e 20 74 68 65 20 41 42 4f 52 54 20 61 6c 67 6f  n the ABORT algo
12cb0 72 69 74 68 6d 20 69 73 20 75 73 65 64 2e 20 20  rithm is used.  
12cc0 49 66 20 61 20 43 48 45 43 4b 20 63 6f 6e 73 74  If a CHECK const
12cd0 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 0a  raint violation.
12ce0 6f 63 63 75 72 73 20 74 68 65 6e 20 74 68 65 20  occurs then the 
12cf0 49 47 4e 4f 52 45 20 61 6c 67 6f 72 69 74 68 6d  IGNORE algorithm
12d00 20 69 73 20 75 73 65 64 2e 3c 2f 70 3e 0a 0a 3c   is used.</p>..<
12d10 70 3e 57 68 65 6e 20 74 68 69 73 20 63 6f 6e 66  p>When this conf
12d20 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20  lict resolution 
12d30 73 74 72 61 74 65 67 79 20 64 65 6c 65 74 65 73  strategy deletes
12d40 20 72 6f 77 73 20 69 6e 20 6f 72 64 65 72 20 74   rows in order t
12d50 6f 0a 73 61 74 69 73 66 79 20 61 20 63 6f 6e 73  o.satisfy a cons
12d60 74 72 61 69 6e 74 2c 20 69 74 20 64 6f 65 73 20  traint, it does 
12d70 6e 6f 74 20 69 6e 76 6f 6b 65 20 64 65 6c 65 74  not invoke delet
12d80 65 20 74 72 69 67 67 65 72 73 20 6f 6e 20 74 68  e triggers on th
12d90 6f 73 65 0a 72 6f 77 73 2e 20 20 54 68 69 73 20  ose.rows.  This 
12da0 62 65 68 61 76 69 6f 72 20 6d 69 67 68 74 20 63  behavior might c
12db0 68 61 6e 67 65 20 69 6e 20 61 20 66 75 74 75 72  hange in a futur
12dc0 65 20 72 65 6c 65 61 73 65 2e 3c 2f 70 3e 0a 3c  e release.</p>.<
12dd0 2f 64 6c 3e 0a 0a 3c 70 3e 54 68 65 20 61 6c 67  /dl>..<p>The alg
12de0 6f 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64  orithm specified
12df0 20 69 6e 20 74 68 65 20 4f 52 20 63 6c 61 75 73   in the OR claus
12e00 65 20 6f 66 20 61 20 49 4e 53 45 52 54 20 6f 72  e of a INSERT or
12e10 20 55 50 44 41 54 45 0a 6f 76 65 72 72 69 64 65   UPDATE.override
12e20 73 20 61 6e 79 20 61 6c 67 6f 72 69 74 68 6d 20  s any algorithm 
12e30 73 70 65 63 69 66 69 65 64 20 69 6e 20 61 20 43  specified in a C
12e40 52 45 41 54 45 20 54 41 42 4c 45 2e 0a 49 66 20  REATE TABLE..If 
12e50 6e 6f 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20  no algorithm is 
12e60 73 70 65 63 69 66 69 65 64 20 61 6e 79 77 68 65  specified anywhe
12e70 72 65 2c 20 74 68 65 20 41 42 4f 52 54 20 61 6c  re, the ABORT al
12e80 67 6f 72 69 74 68 6d 20 69 73 20 75 73 65 64 2e  gorithm is used.
12e90 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23  </p>..<tcl>.####
12ea0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12eb0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12ec0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12ed0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12ee0 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69  ##########.Secti
12ef0 6f 6e 20 52 45 49 4e 44 45 58 20 72 65 69 6e 64  on REINDEX reind
12f00 65 78 20 52 45 49 4e 44 45 58 0a 0a 42 75 62 62  ex REINDEX..Bubb
12f10 6c 65 44 69 61 67 72 61 6d 20 72 65 69 6e 64 65  leDiagram reinde
12f20 78 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a  x-stmt 1.</tcl>.
12f30 0a 3c 70 3e 54 68 65 20 52 45 49 4e 44 45 58 20  .<p>The REINDEX 
12f40 63 6f 6d 6d 61 6e 64 20 69 73 20 75 73 65 64 20  command is used 
12f50 74 6f 20 64 65 6c 65 74 65 20 61 6e 64 20 72 65  to delete and re
12f60 63 72 65 61 74 65 20 69 6e 64 69 63 65 73 20 66  create indices f
12f70 72 6f 6d 20 73 63 72 61 74 63 68 2e 0a 54 68 69  rom scratch..Thi
12f80 73 20 69 73 20 75 73 65 66 75 6c 20 77 68 65 6e  s is useful when
12f90 20 74 68 65 20 64 65 66 69 6e 69 74 69 6f 6e 20   the definition 
12fa0 6f 66 20 61 20 63 6f 6c 6c 61 74 69 6f 6e 20 73  of a collation s
12fb0 65 71 75 65 6e 63 65 20 68 61 73 20 63 68 61 6e  equence has chan
12fc0 67 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 6e  ged..</p>..<p>In
12fd0 20 74 68 65 20 66 69 72 73 74 20 66 6f 72 6d 2c   the first form,
12fe0 20 61 6c 6c 20 69 6e 64 69 63 65 73 20 69 6e 20   all indices in 
12ff0 61 6c 6c 20 61 74 74 61 63 68 65 64 20 64 61 74  all attached dat
13000 61 62 61 73 65 73 20 74 68 61 74 20 75 73 65 20  abases that use 
13010 74 68 65 0a 6e 61 6d 65 64 20 63 6f 6c 6c 61 74  the.named collat
13020 69 6f 6e 20 73 65 71 75 65 6e 63 65 20 61 72 65  ion sequence are
13030 20 72 65 63 72 65 61 74 65 64 2e 20 49 6e 20 74   recreated. In t
13040 68 65 20 73 65 63 6f 6e 64 20 66 6f 72 6d 2c 20  he second form, 
13050 69 66 20 0a 3c 69 3e 26 23 39 31 3b 64 61 74 61  if .<i>&#91;data
13060 62 61 73 65 2d 6e 61 6d 65 2e 26 23 39 33 3b 74  base-name.&#93;t
13070 61 62 6c 65 2f 69 6e 64 65 78 2d 6e 61 6d 65 3c  able/index-name<
13080 2f 69 3e 20 69 64 65 6e 74 69 66 69 65 73 20 61  /i> identifies a
13090 20 74 61 62 6c 65 2c 0a 74 68 65 6e 20 61 6c 6c   table,.then all
130a0 20 69 6e 64 69 63 65 73 0a 61 73 73 6f 63 69 61   indices.associa
130b0 74 65 64 20 77 69 74 68 20 74 68 65 20 74 61 62  ted with the tab
130c0 6c 65 20 61 72 65 20 72 65 62 75 69 6c 74 2e 20  le are rebuilt. 
130d0 49 66 20 61 6e 20 69 6e 64 65 78 20 69 73 20 69  If an index is i
130e0 64 65 6e 74 69 66 69 65 64 2c 20 74 68 65 6e 20  dentified, then 
130f0 6f 6e 6c 79 0a 74 68 69 73 20 73 70 65 63 69 66  only.this specif
13100 69 63 20 69 6e 64 65 78 20 69 73 20 64 65 6c 65  ic index is dele
13110 74 65 64 20 61 6e 64 20 72 65 63 72 65 61 74 65  ted and recreate
13120 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 6e  d..</p>..<p>If n
13130 6f 20 3c 69 3e 64 61 74 61 62 61 73 65 2d 6e 61  o <i>database-na
13140 6d 65 3c 2f 69 3e 20 69 73 20 73 70 65 63 69 66  me</i> is specif
13150 69 65 64 20 61 6e 64 20 74 68 65 72 65 20 65 78  ied and there ex
13160 69 73 74 73 20 62 6f 74 68 20 61 20 74 61 62 6c  ists both a tabl
13170 65 20 6f 72 0a 69 6e 64 65 78 20 61 6e 64 20 61  e or.index and a
13180 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65   collation seque
13190 6e 63 65 20 6f 66 20 74 68 65 20 73 70 65 63 69  nce of the speci
131a0 66 69 65 64 20 6e 61 6d 65 2c 20 74 68 65 6e 20  fied name, then 
131b0 69 6e 64 69 63 65 73 20 61 73 73 6f 63 69 61 74  indices associat
131c0 65 64 0a 77 69 74 68 20 74 68 65 20 63 6f 6c 6c  ed.with the coll
131d0 61 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 20 6f  ation sequence o
131e0 6e 6c 79 20 61 72 65 20 72 65 63 6f 6e 73 74 72  nly are reconstr
131f0 75 63 74 65 64 2e 20 54 68 69 73 20 61 6d 62 69  ucted. This ambi
13200 67 75 69 74 79 20 6d 61 79 20 62 65 0a 64 69 73  guity may be.dis
13210 70 65 6c 6c 65 64 20 62 79 20 61 6c 77 61 79 73  pelled by always
13220 20 73 70 65 63 69 66 79 69 6e 67 20 61 20 3c 69   specifying a <i
13230 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c 2f  >database-name</
13240 69 3e 20 77 68 65 6e 20 72 65 69 6e 64 65 78 69  i> when reindexi
13250 6e 67 20 61 0a 73 70 65 63 69 66 69 63 20 74 61  ng a.specific ta
13260 62 6c 65 20 6f 72 20 69 6e 64 65 78 2e 0a 0a 3c  ble or index...<
13270 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23  tcl>.###########
13280 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13290 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
132a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
132b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
132c0 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 52 45 50  ####.Section REP
132d0 4c 41 43 45 20 72 65 70 6c 61 63 65 20 52 45 50  LACE replace REP
132e0 4c 41 43 45 0a 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  LACE..</tcl>..<p
132f0 3e 54 68 65 20 52 45 50 4c 41 43 45 20 63 6f 6d  >The REPLACE com
13300 6d 61 6e 64 20 69 73 20 61 6e 20 61 6c 69 61 73  mand is an alias
13310 20 66 6f 72 20 74 68 65 20 22 49 4e 53 45 52 54   for the "INSERT
13320 20 4f 52 20 52 45 50 4c 41 43 45 22 20 76 61 72   OR REPLACE" var
13330 69 61 6e 74 0a 6f 66 20 74 68 65 20 3c 61 20 68  iant.of the <a h
13340 72 65 66 3d 22 6c 61 6e 67 5f 69 6e 73 65 72 74  ref="lang_insert
13350 2e 68 74 6d 6c 22 3e 49 4e 53 45 52 54 3c 2f 61  .html">INSERT</a
13360 3e 20 63 6f 6d 6d 61 6e 64 2e 20 20 0a 54 68 69  > command.  .Thi
13370 73 20 61 6c 69 61 73 20 69 73 20 70 72 6f 76 69  s alias is provi
13380 64 65 64 20 66 6f 72 0a 63 6f 6d 70 61 74 69 62  ded for.compatib
13390 69 6c 69 74 79 20 77 69 74 68 20 4d 79 53 51 4c  ility with MySQL
133a0 2e 20 20 53 65 65 20 74 68 65 20 0a 3c 61 20 68  .  See the .<a h
133b0 72 65 66 3d 22 6c 61 6e 67 5f 69 6e 73 65 72 74  ref="lang_insert
133c0 2e 68 74 6d 6c 22 3e 49 4e 53 45 52 54 3c 2f 61  .html">INSERT</a
133d0 3e 20 63 6f 6d 6d 61 6e 64 20 64 6f 63 75 6d 65  > command docume
133e0 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61 64 64 69  ntation for addi
133f0 74 69 6f 6e 61 6c 0a 69 6e 66 6f 72 6d 61 74 69  tional.informati
13400 6f 6e 2e 3c 2f 70 3e 20 20 0a 0a 3c 74 63 6c 3e  on.</p>  ..<tcl>
13410 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
13420 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13430 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13440 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13450 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13460 0a 53 65 63 74 69 6f 6e 20 53 45 4c 45 43 54 20  .Section SELECT 
13470 73 65 6c 65 63 74 20 7b 53 45 4c 45 43 54 20 71  select {SELECT q
13480 75 65 72 79 7d 0a 0a 42 75 62 62 6c 65 44 69 61  uery}..BubbleDia
13490 67 72 61 6d 20 73 65 6c 65 63 74 2d 73 74 6d 74  gram select-stmt
134a0 20 31 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d   1.BubbleDiagram
134b0 20 72 65 73 75 6c 74 2d 63 6f 6c 75 6d 6e 0a 42   result-column.B
134c0 75 62 62 6c 65 44 69 61 67 72 61 6d 20 6a 6f 69  ubbleDiagram joi
134d0 6e 2d 73 6f 75 72 63 65 0a 42 75 62 62 6c 65 44  n-source.BubbleD
134e0 69 61 67 72 61 6d 20 73 69 6e 67 6c 65 2d 73 6f  iagram single-so
134f0 75 72 63 65 0a 42 75 62 62 6c 65 44 69 61 67 72  urce.BubbleDiagr
13500 61 6d 20 6a 6f 69 6e 2d 6f 70 0a 42 75 62 62 6c  am join-op.Bubbl
13510 65 44 69 61 67 72 61 6d 20 6a 6f 69 6e 2d 63 6f  eDiagram join-co
13520 6e 73 74 72 61 69 6e 74 0a 42 75 62 62 6c 65 44  nstraint.BubbleD
13530 69 61 67 72 61 6d 20 6f 72 64 65 72 69 6e 67 2d  iagram ordering-
13540 74 65 72 6d 0a 42 75 62 62 6c 65 44 69 61 67 72  term.BubbleDiagr
13550 61 6d 20 63 6f 6d 70 6f 75 6e 64 2d 6f 70 65 72  am compound-oper
13560 61 74 6f 72 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  ator.</tcl>..<p>
13570 54 68 65 20 53 45 4c 45 43 54 20 73 74 61 74 65  The SELECT state
13580 6d 65 6e 74 20 69 73 20 75 73 65 64 20 74 6f 20  ment is used to 
13590 71 75 65 72 79 20 74 68 65 20 64 61 74 61 62 61  query the databa
135a0 73 65 2e 20 20 54 68 65 0a 72 65 73 75 6c 74 20  se.  The.result 
135b0 6f 66 20 61 20 53 45 4c 45 43 54 20 69 73 20 7a  of a SELECT is z
135c0 65 72 6f 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73  ero or more rows
135d0 20 6f 66 20 64 61 74 61 20 77 68 65 72 65 20 65   of data where e
135e0 61 63 68 20 72 6f 77 0a 68 61 73 20 61 20 66 69  ach row.has a fi
135f0 78 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f  xed number of co
13600 6c 75 6d 6e 73 2e 20 20 54 68 65 20 6e 75 6d 62  lumns.  The numb
13610 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e  er of columns in
13620 20 74 68 65 0a 72 65 73 75 6c 74 20 69 73 20 73   the.result is s
13630 70 65 63 69 66 69 65 64 20 62 79 20 74 68 65 20  pecified by the 
13640 65 78 70 72 65 73 73 69 6f 6e 20 6c 69 73 74 20  expression list 
13650 69 6e 20 62 65 74 77 65 65 6e 20 74 68 65 0a 53  in between the.S
13660 45 4c 45 43 54 20 61 6e 64 20 46 52 4f 4d 20 6b  ELECT and FROM k
13670 65 79 77 6f 72 64 73 2e 20 20 41 6e 79 20 61 72  eywords.  Any ar
13680 62 69 74 72 61 72 79 20 65 78 70 72 65 73 73 69  bitrary expressi
13690 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64 0a 61  on can be used.a
136a0 73 20 61 20 72 65 73 75 6c 74 2e 20 20 49 66 20  s a result.  If 
136b0 61 20 72 65 73 75 6c 74 20 65 78 70 72 65 73 73  a result express
136c0 69 6f 6e 20 69 73 20 7d 0a 68 64 5f 70 75 74 73  ion is }.hd_puts
136d0 20 22 5b 4f 70 65 72 61 74 6f 72 20 2a 5d 20 74   "[Operator *] t
136e0 68 65 6e 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73 20  hen all columns 
136f0 6f 66 20 61 6c 6c 20 74 61 62 6c 65 73 20 61 72  of all tables ar
13700 65 20 73 75 62 73 74 69 74 75 74 65 64 5c 6e 22  e substituted\n"
13710 0a 68 64 5f 70 75 74 73 20 22 66 6f 72 20 74 68  .hd_puts "for th
13720 61 74 20 6f 6e 65 20 65 78 70 72 65 73 73 69 6f  at one expressio
13730 6e 2e 20 20 49 66 20 74 68 65 20 65 78 70 72 65  n.  If the expre
13740 73 73 69 6f 6e 20 69 73 20 74 68 65 20 6e 61 6d  ssion is the nam
13750 65 20 6f 66 5c 6e 22 0a 68 64 5f 70 75 74 73 20  e of\n".hd_puts 
13760 22 61 20 74 61 62 6c 65 20 66 6f 6c 6c 6f 77 65  "a table followe
13770 64 20 62 79 20 5b 4f 70 65 72 61 74 6f 72 20 2e  d by [Operator .
13780 2a 5d 20 74 68 65 6e 20 74 68 65 20 72 65 73 75  *] then the resu
13790 6c 74 20 69 73 20 61 6c 6c 20 63 6f 6c 75 6d 6e  lt is all column
137a0 73 5c 6e 22 0a 68 64 5f 70 75 74 73 20 7b 69 6e  s\n".hd_puts {in
137b0 20 74 68 61 74 20 6f 6e 65 20 74 61 62 6c 65 2e   that one table.
137c0 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 44 49 53  </p>..<p>The DIS
137d0 54 49 4e 43 54 20 6b 65 79 77 6f 72 64 20 63 61  TINCT keyword ca
137e0 75 73 65 73 20 61 20 73 75 62 73 65 74 20 6f 66  uses a subset of
137f0 20 72 65 73 75 6c 74 20 72 6f 77 73 20 74 6f 20   result rows to 
13800 62 65 20 72 65 74 75 72 6e 65 64 2c 20 0a 69 6e  be returned, .in
13810 20 77 68 69 63 68 20 65 61 63 68 20 72 65 73 75   which each resu
13820 6c 74 20 72 6f 77 20 69 73 20 64 69 66 66 65 72  lt row is differ
13830 65 6e 74 2e 20 20 4e 55 4c 4c 20 76 61 6c 75 65  ent.  NULL value
13840 73 20 61 72 65 20 6e 6f 74 20 74 72 65 61 74 65  s are not treate
13850 64 20 61 73 20 0a 64 69 73 74 69 6e 63 74 20 66  d as .distinct f
13860 72 6f 6d 20 65 61 63 68 20 6f 74 68 65 72 2e 20  rom each other. 
13870 20 54 68 65 20 64 65 66 61 75 6c 74 20 62 65 68   The default beh
13880 61 76 69 6f 72 20 69 73 20 74 68 61 74 20 61 6c  avior is that al
13890 6c 20 72 65 73 75 6c 74 20 72 6f 77 73 20 0a 62  l result rows .b
138a0 65 20 72 65 74 75 72 6e 65 64 2c 20 77 68 69 63  e returned, whic
138b0 68 20 63 61 6e 20 62 65 20 6d 61 64 65 20 65 78  h can be made ex
138c0 70 6c 69 63 69 74 20 77 69 74 68 20 74 68 65 20  plicit with the 
138d0 6b 65 79 77 6f 72 64 20 41 4c 4c 2e 3c 2f 70 3e  keyword ALL.</p>
138e0 0a 0a 3c 70 3e 54 68 65 20 71 75 65 72 79 20 69  ..<p>The query i
138f0 73 20 65 78 65 63 75 74 65 64 20 61 67 61 69 6e  s executed again
13900 73 74 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 74  st one or more t
13910 61 62 6c 65 73 20 73 70 65 63 69 66 69 65 64 20  ables specified 
13920 61 66 74 65 72 0a 74 68 65 20 46 52 4f 4d 20 6b  after.the FROM k
13930 65 79 77 6f 72 64 2e 20 20 49 66 20 6d 75 6c 74  eyword.  If mult
13940 69 70 6c 65 20 74 61 62 6c 65 73 20 6e 61 6d 65  iple tables name
13950 73 20 61 72 65 20 73 65 70 61 72 61 74 65 64 20  s are separated 
13960 62 79 20 63 6f 6d 6d 61 73 2c 0a 74 68 65 6e 20  by commas,.then 
13970 74 68 65 20 71 75 65 72 79 20 69 73 20 61 67 61  the query is aga
13980 69 6e 73 74 20 74 68 65 20 63 72 6f 73 73 20 6a  inst the cross j
13990 6f 69 6e 20 6f 66 20 74 68 65 20 76 61 72 69 6f  oin of the vario
139a0 75 73 20 74 61 62 6c 65 73 2e 0a 54 68 65 20 66  us tables..The f
139b0 75 6c 6c 20 53 51 4c 2d 39 32 20 6a 6f 69 6e 20  ull SQL-92 join 
139c0 73 79 6e 74 61 78 20 63 61 6e 20 61 6c 73 6f 20  syntax can also 
139d0 62 65 20 75 73 65 64 20 74 6f 20 73 70 65 63 69  be used to speci
139e0 66 79 20 6a 6f 69 6e 73 2e 0a 41 20 73 75 62 2d  fy joins..A sub-
139f0 71 75 65 72 79 0a 69 6e 20 70 61 72 65 6e 74 68  query.in parenth
13a00 65 73 65 73 20 6d 61 79 20 62 65 20 73 75 62 73  eses may be subs
13a10 74 69 74 75 74 65 64 20 66 6f 72 20 61 6e 79 20  tituted for any 
13a20 74 61 62 6c 65 20 6e 61 6d 65 20 69 6e 20 74 68  table name in th
13a30 65 20 46 52 4f 4d 20 63 6c 61 75 73 65 2e 0a 54  e FROM clause..T
13a40 68 65 20 65 6e 74 69 72 65 20 46 52 4f 4d 20 63  he entire FROM c
13a50 6c 61 75 73 65 20 6d 61 79 20 62 65 20 6f 6d 69  lause may be omi
13a60 74 74 65 64 2c 20 69 6e 20 77 68 69 63 68 20 63  tted, in which c
13a70 61 73 65 20 74 68 65 20 72 65 73 75 6c 74 20 69  ase the result i
13a80 73 20 61 0a 73 69 6e 67 6c 65 20 72 6f 77 20 63  s a.single row c
13a90 6f 6e 73 69 73 74 69 6e 67 20 6f 66 20 74 68 65  onsisting of the
13aa0 20 76 61 6c 75 65 73 20 6f 66 20 74 68 65 20 65   values of the e
13ab0 78 70 72 65 73 73 69 6f 6e 20 6c 69 73 74 2e 0a  xpression list..
13ac0 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 57 48 45  </p>..<p>The WHE
13ad0 52 45 20 63 6c 61 75 73 65 20 63 61 6e 20 62 65  RE clause can be
13ae0 20 75 73 65 64 20 74 6f 20 6c 69 6d 69 74 20 74   used to limit t
13af0 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77  he number of row
13b00 73 20 6f 76 65 72 0a 77 68 69 63 68 20 74 68 65  s over.which the
13b10 20 71 75 65 72 79 20 6f 70 65 72 61 74 65 73 2e   query operates.
13b20 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 47 52 4f  </p>..<p>The GRO
13b30 55 50 20 42 59 20 63 6c 61 75 73 65 20 63 61 75  UP BY clause cau
13b40 73 65 73 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20  ses one or more 
13b50 72 6f 77 73 20 6f 66 20 74 68 65 20 72 65 73 75  rows of the resu
13b60 6c 74 20 74 6f 0a 62 65 20 63 6f 6d 62 69 6e 65  lt to.be combine
13b70 64 20 69 6e 74 6f 20 61 20 73 69 6e 67 6c 65 20  d into a single 
13b80 72 6f 77 20 6f 66 20 6f 75 74 70 75 74 2e 20 20  row of output.  
13b90 54 68 69 73 20 69 73 20 65 73 70 65 63 69 61 6c  This is especial
13ba0 6c 79 20 75 73 65 66 75 6c 0a 77 68 65 6e 20 74  ly useful.when t
13bb0 68 65 20 72 65 73 75 6c 74 20 63 6f 6e 74 61 69  he result contai
13bc0 6e 73 20 61 67 67 72 65 67 61 74 65 20 66 75 6e  ns aggregate fun
13bd0 63 74 69 6f 6e 73 2e 20 20 54 68 65 20 65 78 70  ctions.  The exp
13be0 72 65 73 73 69 6f 6e 73 20 69 6e 0a 74 68 65 20  ressions in.the 
13bf0 47 52 4f 55 50 20 42 59 20 63 6c 61 75 73 65 20  GROUP BY clause 
13c00 64 6f 20 3c 65 6d 3e 6e 6f 74 3c 2f 65 6d 3e 20  do <em>not</em> 
13c10 68 61 76 65 20 74 6f 20 62 65 20 65 78 70 72 65  have to be expre
13c20 73 73 69 6f 6e 73 20 74 68 61 74 0a 61 70 70 65  ssions that.appe
13c30 61 72 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74  ar in the result
13c40 2e 20 20 54 68 65 20 48 41 56 49 4e 47 20 63 6c  .  The HAVING cl
13c50 61 75 73 65 20 69 73 20 73 69 6d 69 6c 61 72 20  ause is similar 
13c60 74 6f 20 57 48 45 52 45 20 65 78 63 65 70 74 0a  to WHERE except.
13c70 74 68 61 74 20 48 41 56 49 4e 47 20 61 70 70 6c  that HAVING appl
13c80 69 65 73 20 61 66 74 65 72 20 67 72 6f 75 70 69  ies after groupi
13c90 6e 67 20 68 61 73 20 6f 63 63 75 72 72 65 64 2e  ng has occurred.
13ca0 20 20 54 68 65 20 48 41 56 49 4e 47 20 65 78 70    The HAVING exp
13cb0 72 65 73 73 69 6f 6e 0a 6d 61 79 20 72 65 66 65  ression.may refe
13cc0 72 20 74 6f 20 76 61 6c 75 65 73 2c 20 65 76 65  r to values, eve
13cd0 6e 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63  n aggregate func
13ce0 74 69 6f 6e 73 2c 20 74 68 61 74 20 61 72 65 20  tions, that are 
13cf0 6e 6f 74 20 69 6e 20 74 68 65 20 72 65 73 75 6c  not in the resul
13d00 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 4f  t.</p>..<p>The O
13d10 52 44 45 52 20 42 59 20 63 6c 61 75 73 65 20 63  RDER BY clause c
13d20 61 75 73 65 73 20 74 68 65 20 6f 75 74 70 75 74  auses the output
13d30 20 72 6f 77 73 20 74 6f 20 62 65 20 73 6f 72 74   rows to be sort
13d40 65 64 2e 20 20 0a 54 68 65 20 61 72 67 75 6d 65  ed.  .The argume
13d50 6e 74 20 74 6f 20 4f 52 44 45 52 20 42 59 20 69  nt to ORDER BY i
13d60 73 20 61 20 6c 69 73 74 20 6f 66 20 65 78 70 72  s a list of expr
13d70 65 73 73 69 6f 6e 73 20 74 68 61 74 20 61 72 65  essions that are
13d80 20 75 73 65 64 20 61 73 20 74 68 65 0a 6b 65 79   used as the.key
13d90 20 66 6f 72 20 74 68 65 20 73 6f 72 74 2e 20 20   for the sort.  
13da0 54 68 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20  The expressions 
13db0 64 6f 20 6e 6f 74 20 68 61 76 65 20 74 6f 20 62  do not have to b
13dc0 65 20 70 61 72 74 20 6f 66 20 74 68 65 0a 72 65  e part of the.re
13dd0 73 75 6c 74 20 66 6f 72 20 61 20 73 69 6d 70 6c  sult for a simpl
13de0 65 20 53 45 4c 45 43 54 2c 20 62 75 74 20 69 6e  e SELECT, but in
13df0 20 61 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45   a compound SELE
13e00 43 54 20 65 61 63 68 20 73 6f 72 74 0a 65 78 70  CT each sort.exp
13e10 72 65 73 73 69 6f 6e 20 6d 75 73 74 20 65 78 61  ression must exa
13e20 63 74 6c 79 20 6d 61 74 63 68 20 6f 6e 65 20 6f  ctly match one o
13e30 66 20 74 68 65 20 72 65 73 75 6c 74 20 63 6f 6c  f the result col
13e40 75 6d 6e 73 2e 20 20 45 61 63 68 0a 73 6f 72 74  umns.  Each.sort
13e50 20 65 78 70 72 65 73 73 69 6f 6e 20 6d 61 79 20   expression may 
13e60 62 65 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 66 6f  be optionally fo
13e70 6c 6c 6f 77 65 64 20 62 79 20 61 20 43 4f 4c 4c  llowed by a COLL
13e80 41 54 45 20 6b 65 79 77 6f 72 64 20 61 6e 64 0a  ATE keyword and.
13e90 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 63 6f  the name of a co
13ea0 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e  llating function
13eb0 20 75 73 65 64 20 66 6f 72 20 6f 72 64 65 72 69   used for orderi
13ec0 6e 67 20 74 65 78 74 20 61 6e 64 2f 6f 72 0a 6b  ng text and/or.k
13ed0 65 79 77 6f 72 64 73 20 41 53 43 20 6f 72 20 44  eywords ASC or D
13ee0 45 53 43 20 74 6f 20 73 70 65 63 69 66 79 20 74  ESC to specify t
13ef0 68 65 20 73 6f 72 74 20 6f 72 64 65 72 2e 3c 2f  he sort order.</
13f00 70 3e 0a 0a 3c 70 3e 45 61 63 68 20 74 65 72 6d  p>..<p>Each term
13f10 20 6f 66 20 61 6e 20 4f 52 44 45 52 20 42 59 20   of an ORDER BY 
13f20 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 70 72  expression is pr
13f30 6f 63 65 73 73 65 64 20 61 73 20 66 6f 6c 6c 6f  ocessed as follo
13f40 77 73 3a 3c 2f 70 3e 0a 0a 3c 6f 6c 3e 0a 3c 6c  ws:</p>..<ol>.<l
13f50 69 3e 3c 70 3e 49 66 20 74 68 65 20 4f 52 44 45  i><p>If the ORDE
13f60 52 20 42 59 20 65 78 70 72 65 73 73 69 6f 6e 20  R BY expression 
13f70 69 73 20 61 20 63 6f 6e 73 74 61 6e 74 20 69 6e  is a constant in
13f80 74 65 67 65 72 20 4b 20 74 68 65 6e 20 74 68 65  teger K then the
13f90 0a 6f 75 74 70 75 74 20 69 73 20 6f 72 64 65 72  .output is order
13fa0 65 64 20 62 79 20 74 68 65 20 4b 2d 74 68 20 63  ed by the K-th c
13fb0 6f 6c 75 6d 6e 20 6f 66 20 74 68 65 20 72 65 73  olumn of the res
13fc0 75 6c 74 20 73 65 74 2e 3c 2f 70 3e 3c 2f 6c 69  ult set.</p></li
13fd0 3e 0a 3c 6c 69 3e 3c 70 3e 49 66 20 74 68 65 20  >.<li><p>If the 
13fe0 4f 52 44 45 52 20 42 59 20 65 78 70 72 65 73 73  ORDER BY express
13ff0 69 6f 6e 20 69 73 20 61 6e 20 69 64 65 6e 74 69  ion is an identi
14000 66 69 65 72 20 61 6e 64 20 6f 6e 65 20 6f 66 20  fier and one of 
14010 74 68 65 0a 6f 75 74 70 75 74 20 63 6f 6c 75 6d  the.output colum
14020 6e 73 20 68 61 73 20 61 6e 20 61 6c 69 61 73 20  ns has an alias 
14030 62 79 20 74 68 65 20 73 61 6d 65 20 6e 61 6d 65  by the same name
14040 2c 20 74 68 65 6e 20 74 68 65 20 6f 75 74 70 75  , then the outpu
14050 74 20 69 73 0a 6f 72 64 65 72 65 64 20 62 79 20  t is.ordered by 
14060 74 68 65 20 69 64 65 6e 74 69 66 69 65 64 20 63  the identified c
14070 6f 6c 75 6d 6e 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a  olumn.</p></li>.
14080 3c 6c 69 3e 3c 70 3e 4f 74 68 65 72 77 69 73 65  <li><p>Otherwise
14090 2c 20 74 68 65 20 4f 52 44 45 52 20 42 59 20 65  , the ORDER BY e
140a0 78 70 72 65 73 73 69 6f 6e 20 69 73 20 65 76 61  xpression is eva
140b0 6c 75 61 74 65 64 20 61 6e 64 20 74 68 65 20 6f  luated and the o
140c0 75 74 70 75 74 20 0a 69 73 20 6f 72 64 65 72 65  utput .is ordere
140d0 64 20 62 79 20 74 68 65 20 76 61 6c 75 65 20 6f  d by the value o
140e0 66 20 74 68 61 74 20 65 78 70 72 65 73 73 69 6f  f that expressio
140f0 6e 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 2f 6f 6c  n.</p></li>.</ol
14100 3e 0a 0a 3c 70 3e 49 6e 20 61 20 63 6f 6d 70 6f  >..<p>In a compo
14110 75 6e 64 20 53 45 4c 45 43 54 20 73 74 61 74 65  und SELECT state
14120 6d 65 6e 74 2c 20 74 68 65 20 74 68 69 72 64 20  ment, the third 
14130 4f 52 44 45 52 20 42 59 20 6d 61 74 63 68 69 6e  ORDER BY matchin
14140 67 20 72 75 6c 65 0a 72 65 71 75 69 72 65 73 20  g rule.requires 
14150 74 68 61 74 20 74 68 65 20 65 78 70 72 65 73 73  that the express
14160 69 6f 6e 20 62 65 20 69 64 65 6e 74 69 63 61 6c  ion be identical
14170 20 74 6f 20 6f 6e 65 20 6f 66 20 74 68 65 20 63   to one of the c
14180 6f 6c 75 6d 6e 73 20 69 6e 0a 74 68 65 20 72 65  olumns in.the re
14190 73 75 6c 74 20 73 65 74 2e 20 20 54 68 65 20 74  sult set.  The t
141a0 68 72 65 65 20 72 75 6c 65 73 20 61 72 65 20 66  hree rules are f
141b0 69 72 73 74 20 61 70 70 6c 69 65 64 20 74 6f 20  irst applied to 
141c0 74 68 65 20 6c 65 66 74 2d 6d 6f 73 74 0a 53 45  the left-most.SE
141d0 4c 45 43 54 20 69 6e 20 74 68 65 20 63 6f 6d 70  LECT in the comp
141e0 6f 75 6e 64 2e 20 20 49 66 20 61 20 6d 61 74 63  ound.  If a matc
141f0 68 20 69 73 20 66 6f 75 6e 64 2c 20 74 68 65 20  h is found, the 
14200 73 65 61 72 63 68 20 73 74 6f 70 73 2e 20 20 4f  search stops.  O
14210 74 68 65 72 77 69 73 65 2c 0a 74 68 65 20 6e 65  therwise,.the ne
14220 78 74 20 53 45 4c 45 43 54 20 74 6f 20 74 68 65  xt SELECT to the
14230 20 72 69 67 68 74 20 69 73 20 74 72 69 65 64 2e   right is tried.
14240 20 20 54 68 69 73 20 63 6f 6e 74 69 6e 75 65 73    This continues
14250 20 75 6e 74 69 6c 20 61 20 6d 61 74 63 68 0a 69   until a match.i
14260 73 20 66 6f 75 6e 64 2e 20 20 45 61 63 68 20 74  s found.  Each t
14270 65 72 6d 20 6f 66 20 74 68 65 20 4f 52 44 45 52  erm of the ORDER
14280 20 42 59 20 63 6c 61 75 73 65 20 69 73 20 70 72   BY clause is pr
14290 6f 63 65 73 73 65 64 20 73 65 70 61 72 61 74 65  ocessed separate
142a0 6c 79 20 0a 61 6e 64 20 6d 61 79 20 63 6f 6d 65  ly .and may come
142b0 20 66 72 6f 6d 20 64 69 66 66 65 72 65 6e 74 20   from different 
142c0 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74  SELECT statement
142d0 73 20 69 6e 20 74 68 65 20 63 6f 6d 70 6f 75 6e  s in the compoun
142e0 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 4c  d.</p>..<p>The L
142f0 49 4d 49 54 20 63 6c 61 75 73 65 20 70 6c 61 63  IMIT clause plac
14300 65 73 20 61 6e 20 75 70 70 65 72 20 62 6f 75 6e  es an upper boun
14310 64 20 6f 6e 20 74 68 65 20 6e 75 6d 62 65 72 20  d on the number 
14320 6f 66 20 72 6f 77 73 0a 72 65 74 75 72 6e 65 64  of rows.returned
14330 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 20   in the result. 
14340 20 41 20 6e 65 67 61 74 69 76 65 20 4c 49 4d 49   A negative LIMI
14350 54 20 69 6e 64 69 63 61 74 65 73 20 6e 6f 20 75  T indicates no u
14360 70 70 65 72 20 62 6f 75 6e 64 2e 0a 54 68 65 20  pper bound..The 
14370 6f 70 74 69 6f 6e 61 6c 20 4f 46 46 53 45 54 20  optional OFFSET 
14380 66 6f 6c 6c 6f 77 69 6e 67 20 4c 49 4d 49 54 20  following LIMIT 
14390 73 70 65 63 69 66 69 65 73 20 68 6f 77 20 6d 61  specifies how ma
143a0 6e 79 0a 72 6f 77 73 20 74 6f 20 73 6b 69 70 20  ny.rows to skip 
143b0 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67  at the beginning
143c0 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 73   of the result s
143d0 65 74 2e 0a 49 6e 20 61 20 63 6f 6d 70 6f 75 6e  et..In a compoun
143e0 64 20 71 75 65 72 79 2c 20 74 68 65 20 4c 49 4d  d query, the LIM
143f0 49 54 20 63 6c 61 75 73 65 20 6d 61 79 20 6f 6e  IT clause may on
14400 6c 79 20 61 70 70 65 61 72 20 6f 6e 20 74 68 65  ly appear on the
14410 0a 66 69 6e 61 6c 20 53 45 4c 45 43 54 20 73 74  .final SELECT st
14420 61 74 65 6d 65 6e 74 2e 0a 54 68 65 20 6c 69 6d  atement..The lim
14430 69 74 20 69 73 20 61 70 70 6c 69 65 64 20 74 6f  it is applied to
14440 20 74 68 65 20 65 6e 74 69 72 65 20 71 75 65 72   the entire quer
14450 79 20 6e 6f 74 0a 74 6f 20 74 68 65 20 69 6e 64  y not.to the ind
14460 69 76 69 64 75 61 6c 20 53 45 4c 45 43 54 20 73  ividual SELECT s
14470 74 61 74 65 6d 65 6e 74 20 74 6f 20 77 68 69 63  tatement to whic
14480 68 20 69 74 20 69 73 20 61 74 74 61 63 68 65 64  h it is attached
14490 2e 0a 4e 6f 74 65 20 74 68 61 74 20 69 66 20 74  ..Note that if t
144a0 68 65 20 4f 46 46 53 45 54 20 6b 65 79 77 6f 72  he OFFSET keywor
144b0 64 20 69 73 20 75 73 65 64 20 69 6e 20 74 68 65  d is used in the
144c0 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 2c 20 74   LIMIT clause, t
144d0 68 65 6e 20 74 68 65 0a 6c 69 6d 69 74 20 69 73  hen the.limit is
144e0 20 74 68 65 20 66 69 72 73 74 20 6e 75 6d 62 65   the first numbe
144f0 72 20 61 6e 64 20 74 68 65 20 6f 66 66 73 65 74  r and the offset
14500 20 69 73 20 74 68 65 20 73 65 63 6f 6e 64 20 6e   is the second n
14510 75 6d 62 65 72 2e 20 20 49 66 20 61 0a 63 6f 6d  umber.  If a.com
14520 6d 61 20 69 73 20 75 73 65 64 20 69 6e 73 74 65  ma is used inste
14530 61 64 20 6f 66 20 74 68 65 20 4f 46 46 53 45 54  ad of the OFFSET
14540 20 6b 65 79 77 6f 72 64 2c 20 74 68 65 6e 20 74   keyword, then t
14550 68 65 20 6f 66 66 73 65 74 20 69 73 20 74 68 65  he offset is the
14560 0a 66 69 72 73 74 20 6e 75 6d 62 65 72 20 61 6e  .first number an
14570 64 20 74 68 65 20 6c 69 6d 69 74 20 69 73 20 74  d the limit is t
14580 68 65 20 73 65 63 6f 6e 64 20 6e 75 6d 62 65 72  he second number
14590 2e 20 20 54 68 69 73 20 73 65 65 6d 69 6e 67 0a  .  This seeming.
145a0 63 6f 6e 74 72 61 64 69 74 69 6f 6e 20 69 73 20  contradition is 
145b0 69 6e 74 65 6e 74 69 6f 6e 61 6c 20 2d 20 69 74  intentional - it
145c0 20 6d 61 78 69 6d 69 7a 65 73 20 63 6f 6d 70 61   maximizes compa
145d0 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 6c 65  tibility with le
145e0 67 61 63 79 0a 53 51 4c 20 64 61 74 61 62 61 73  gacy.SQL databas
145f0 65 20 73 79 73 74 65 6d 73 2e 0a 3c 2f 70 3e 0a  e systems..</p>.
14600 0a 3c 70 3e 41 20 63 6f 6d 70 6f 75 6e 64 20 53  .<p>A compound S
14610 45 4c 45 43 54 20 69 73 20 66 6f 72 6d 65 64 20  ELECT is formed 
14620 66 72 6f 6d 20 74 77 6f 20 6f 72 20 6d 6f 72 65  from two or more
14630 20 73 69 6d 70 6c 65 20 53 45 4c 45 43 54 73 20   simple SELECTs 
14640 63 6f 6e 6e 65 63 74 65 64 0a 62 79 20 6f 6e 65  connected.by one
14650 20 6f 66 20 74 68 65 20 6f 70 65 72 61 74 6f 72   of the operator
14660 73 20 55 4e 49 4f 4e 2c 20 55 4e 49 4f 4e 20 41  s UNION, UNION A
14670 4c 4c 2c 20 49 4e 54 45 52 53 45 43 54 2c 20 6f  LL, INTERSECT, o
14680 72 20 45 58 43 45 50 54 2e 20 20 49 6e 0a 61 20  r EXCEPT.  In.a 
14690 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 2c  compound SELECT,
146a0 20 61 6c 6c 20 74 68 65 20 63 6f 6e 73 74 69 74   all the constit
146b0 75 65 6e 74 20 53 45 4c 45 43 54 73 20 6d 75 73  uent SELECTs mus
146c0 74 20 73 70 65 63 69 66 79 20 74 68 65 0a 73 61  t specify the.sa
146d0 6d 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 65 73  me number of res
146e0 75 6c 74 20 63 6f 6c 75 6d 6e 73 2e 20 20 54 68  ult columns.  Th
146f0 65 72 65 20 6d 61 79 20 62 65 20 6f 6e 6c 79 20  ere may be only 
14700 61 20 73 69 6e 67 6c 65 20 4f 52 44 45 52 20 42  a single ORDER B
14710 59 0a 63 6c 61 75 73 65 20 61 74 20 74 68 65 20  Y.clause at the 
14720 65 6e 64 20 6f 66 20 74 68 65 20 63 6f 6d 70 6f  end of the compo
14730 75 6e 64 20 53 45 4c 45 43 54 2e 20 20 54 68 65  und SELECT.  The
14740 20 55 4e 49 4f 4e 20 61 6e 64 20 55 4e 49 4f 4e   UNION and UNION
14750 20 41 4c 4c 0a 6f 70 65 72 61 74 6f 72 73 20 63   ALL.operators c
14760 6f 6d 62 69 6e 65 20 74 68 65 20 72 65 73 75 6c  ombine the resul
14770 74 73 20 6f 66 20 74 68 65 20 53 45 4c 45 43 54  ts of the SELECT
14780 73 20 74 6f 20 74 68 65 20 72 69 67 68 74 20 61  s to the right a
14790 6e 64 20 6c 65 66 74 20 69 6e 74 6f 0a 61 20 73  nd left into.a s
147a0 69 6e 67 6c 65 20 62 69 67 20 74 61 62 6c 65 2e  ingle big table.
147b0 20 20 54 68 65 20 64 69 66 66 65 72 65 6e 63 65    The difference
147c0 20 69 73 20 74 68 61 74 20 69 6e 20 55 4e 49 4f   is that in UNIO
147d0 4e 20 61 6c 6c 20 72 65 73 75 6c 74 20 72 6f 77  N all result row
147e0 73 0a 61 72 65 20 64 69 73 74 69 6e 63 74 20 77  s.are distinct w
147f0 68 65 72 65 20 69 6e 20 55 4e 49 4f 4e 20 41 4c  here in UNION AL
14800 4c 20 74 68 65 72 65 20 6d 61 79 20 62 65 20 64  L there may be d
14810 75 70 6c 69 63 61 74 65 73 2e 0a 54 68 65 20 49  uplicates..The I
14820 4e 54 45 52 53 45 43 54 20 6f 70 65 72 61 74 6f  NTERSECT operato
14830 72 20 74 61 6b 65 73 20 74 68 65 20 69 6e 74 65  r takes the inte
14840 72 73 65 63 74 69 6f 6e 20 6f 66 20 74 68 65 20  rsection of the 
14850 72 65 73 75 6c 74 73 20 6f 66 20 74 68 65 0a 6c  results of the.l
14860 65 66 74 20 61 6e 64 20 72 69 67 68 74 20 53 45  eft and right SE
14870 4c 45 43 54 73 2e 20 20 45 58 43 45 50 54 20 74  LECTs.  EXCEPT t
14880 61 6b 65 73 20 74 68 65 20 72 65 73 75 6c 74 20  akes the result 
14890 6f 66 20 6c 65 66 74 20 53 45 4c 45 43 54 20 61  of left SELECT a
148a0 66 74 65 72 0a 72 65 6d 6f 76 69 6e 67 20 74 68  fter.removing th
148b0 65 20 72 65 73 75 6c 74 73 20 6f 66 20 74 68 65  e results of the
148c0 20 72 69 67 68 74 20 53 45 4c 45 43 54 2e 20 20   right SELECT.  
148d0 57 68 65 6e 20 74 68 72 65 65 20 6f 72 20 6d 6f  When three or mo
148e0 72 65 20 53 45 4c 45 43 54 73 0a 61 72 65 20 63  re SELECTs.are c
148f0 6f 6e 6e 65 63 74 65 64 20 69 6e 74 6f 20 61 20  onnected into a 
14900 63 6f 6d 70 6f 75 6e 64 2c 20 74 68 65 79 20 67  compound, they g
14910 72 6f 75 70 20 66 72 6f 6d 20 6c 65 66 74 20 74  roup from left t
14920 6f 20 72 69 67 68 74 2e 3c 2f 70 3e 0a 0a 0a 3c  o right.</p>...<
14930 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23  tcl>.###########
14940 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14950 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14960 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14970 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14980 23 23 23 0a 53 65 63 74 69 6f 6e 20 55 50 44 41  ###.Section UPDA
14990 54 45 20 75 70 64 61 74 65 20 7b 55 50 44 41 54  TE update {UPDAT
149a0 45 20 55 50 44 41 54 45 73 7d 0a 0a 42 75 62 62  E UPDATEs}..Bubb
149b0 6c 65 44 69 61 67 72 61 6d 20 75 70 64 61 74 65  leDiagram update
149c0 2d 73 74 6d 74 20 31 0a 42 75 62 62 6c 65 44 69  -stmt 1.BubbleDi
149d0 61 67 72 61 6d 20 71 75 61 6c 69 66 69 65 64 2d  agram qualified-
149e0 74 61 62 6c 65 2d 6e 61 6d 65 0a 3c 2f 74 63 6c  table-name.</tcl
149f0 3e 0a 0a 3c 70 3e 54 68 65 20 55 50 44 41 54 45  >..<p>The UPDATE
14a00 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 75 73   statement is us
14a10 65 64 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65  ed to change the
14a20 20 76 61 6c 75 65 20 6f 66 20 63 6f 6c 75 6d 6e   value of column
14a30 73 20 69 6e 20 0a 73 65 6c 65 63 74 65 64 20 72  s in .selected r
14a40 6f 77 73 20 6f 66 20 61 20 74 61 62 6c 65 2e 20  ows of a table. 
14a50 20 45 61 63 68 20 61 73 73 69 67 6e 6d 65 6e 74   Each assignment
14a60 20 69 6e 20 61 6e 20 55 50 44 41 54 45 20 73 70   in an UPDATE sp
14a70 65 63 69 66 69 65 73 0a 61 20 63 6f 6c 75 6d 6e  ecifies.a column
14a80 20 6e 61 6d 65 20 74 6f 20 74 68 65 20 6c 65 66   name to the lef
14a90 74 20 6f 66 20 74 68 65 20 65 71 75 61 6c 73 20  t of the equals 
14aa0 73 69 67 6e 20 61 6e 64 20 61 6e 20 61 72 62 69  sign and an arbi
14ab0 74 72 61 72 79 20 65 78 70 72 65 73 73 69 6f 6e  trary expression
14ac0 0a 74 6f 20 74 68 65 20 72 69 67 68 74 2e 20 20  .to the right.  
14ad0 54 68 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20  The expressions 
14ae0 6d 61 79 20 75 73 65 20 74 68 65 20 76 61 6c 75  may use the valu
14af0 65 73 20 6f 66 20 6f 74 68 65 72 20 63 6f 6c 75  es of other colu
14b00 6d 6e 73 2e 0a 41 6c 6c 20 65 78 70 72 65 73 73  mns..All express
14b10 69 6f 6e 73 20 61 72 65 20 65 76 61 6c 75 61 74  ions are evaluat
14b20 65 64 20 62 65 66 6f 72 65 20 61 6e 79 20 61 73  ed before any as
14b30 73 69 67 6e 6d 65 6e 74 73 20 61 72 65 20 6d 61  signments are ma
14b40 64 65 2e 0a 41 20 57 48 45 52 45 20 63 6c 61 75  de..A WHERE clau
14b50 73 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  se can be used t
14b60 6f 20 72 65 73 74 72 69 63 74 20 77 68 69 63 68  o restrict which
14b70 20 72 6f 77 73 20 61 72 65 20 75 70 64 61 74 65   rows are update
14b80 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f  d.</p>..<p>The o
14b90 70 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74  ptional conflict
14ba0 2d 63 6c 61 75 73 65 20 61 6c 6c 6f 77 73 20 74  -clause allows t
14bb0 68 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e  he specification
14bc0 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69   of an alternati
14bd0 76 65 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f  ve.constraint co
14be0 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f  nflict resolutio
14bf0 6e 20 61 6c 67 6f 72 69 74 68 6d 20 74 6f 20 75  n algorithm to u
14c00 73 65 20 64 75 72 69 6e 67 20 74 68 69 73 20 6f  se during this o
14c10 6e 65 20 63 6f 6d 6d 61 6e 64 2e 0a 53 65 65 20  ne command..See 
14c20 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69 74 6c  the section titl
14c30 65 64 0a 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d  ed.[ON CONFLICT]
14c40 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20   for additional 
14c50 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e  information.</p>
14c60 0a 0a 3c 70 3e 49 66 20 53 51 4c 69 74 65 20 69  ..<p>If SQLite i
14c70 73 20 62 75 69 6c 74 20 77 69 74 68 20 74 68 65  s built with the
14c80 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   [SQLITE_ENABLE_
14c90 55 50 44 41 54 45 5f 44 45 4c 45 54 45 5f 4c 49  UPDATE_DELETE_LI
14ca0 4d 49 54 5d 0a 63 6f 6d 70 69 6c 65 2d 74 69 6d  MIT].compile-tim
14cb0 65 20 6f 70 74 69 6f 6e 20 74 68 65 6e 20 74 68  e option then th
14cc0 65 20 73 79 6e 74 61 78 20 6f 66 20 74 68 65 20  e syntax of the 
14cd0 55 50 44 41 54 45 20 73 74 61 74 65 6d 65 6e 74  UPDATE statement
14ce0 20 69 73 20 65 78 74 65 6e 64 65 64 0a 77 69 74   is extended.wit
14cf0 68 20 6f 70 74 69 6f 6e 61 6c 20 4f 52 44 45 52  h optional ORDER
14d00 20 42 59 20 61 6e 64 20 4c 49 4d 49 54 20 63 6c   BY and LIMIT cl
14d10 61 75 73 65 73 20 61 73 20 66 6f 6c 6c 6f 77 73  auses as follows
14d20 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 42 75 62 62  :</p>..<tcl>Bubb
14d30 6c 65 44 69 61 67 72 61 6d 20 75 70 64 61 74 65  leDiagram update
14d40 2d 73 74 6d 74 2d 6c 69 6d 69 74 65 64 3c 2f 74  -stmt-limited</t
14d50 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69  cl>..<p>The opti
14d60 6f 6e 61 6c 20 4c 49 4d 49 54 20 63 6c 61 75 73  onal LIMIT claus
14d70 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f  e can be used to
14d80 20 6c 69 6d 69 74 20 74 68 65 20 6e 75 6d 62 65   limit the numbe
14d90 72 20 6f 66 0a 72 6f 77 73 20 6d 6f 64 69 66 65  r of.rows modife
14da0 64 2c 20 61 6e 64 20 74 68 65 72 65 62 79 20 6c  d, and thereby l
14db0 69 6d 69 74 20 74 68 65 20 73 69 7a 65 20 6f 66  imit the size of
14dc0 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e   the transaction
14dd0 2e 0a 54 68 65 20 4f 52 44 45 52 20 42 59 20 63  ..The ORDER BY c
14de0 6c 61 75 73 65 20 69 73 20 75 73 65 64 20 6f 6e  lause is used on
14df0 6c 79 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20  ly to determine 
14e00 77 68 69 63 68 20 72 6f 77 73 20 66 61 6c 6c 0a  which rows fall.
14e10 77 69 74 68 69 6e 20 74 68 65 20 4c 49 4d 49 54  within the LIMIT
14e20 2e 20 20 54 68 65 20 6f 72 64 65 72 20 69 6e 20  .  The order in 
14e30 77 68 69 63 68 20 72 6f 77 73 20 61 72 65 20 6d  which rows are m
14e40 6f 64 69 66 69 65 64 20 69 73 20 61 72 62 69 74  odified is arbit
14e50 72 61 72 79 0a 61 6e 64 20 69 73 20 6e 6f 74 20  rary.and is not 
14e60 64 65 74 65 72 6d 69 6e 65 64 20 62 79 20 74 68  determined by th
14e70 65 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73  e ORDER BY claus
14e80 65 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23  e.</p>..<tcl>.##
14e90 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14ea0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14eb0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14ec0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14ed0 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63  ############.Sec
14ee0 74 69 6f 6e 20 56 41 43 55 55 4d 20 76 61 63 75  tion VACUUM vacu
14ef0 75 6d 20 56 41 43 55 55 4d 0a 0a 42 75 62 62 6c  um VACUUM..Bubbl
14f00 65 44 69 61 67 72 61 6d 20 76 61 63 75 75 6d 2d  eDiagram vacuum-
14f10 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c  stmt 1.</tcl>..<
14f20 70 3e 57 68 65 6e 20 61 6e 20 6f 62 6a 65 63 74  p>When an object
14f30 20 28 74 61 62 6c 65 2c 20 69 6e 64 65 78 2c 20   (table, index, 
14f40 6f 72 20 74 72 69 67 67 65 72 29 20 69 73 20 64  or trigger) is d
14f50 72 6f 70 70 65 64 20 66 72 6f 6d 20 74 68 65 20  ropped from the 
14f60 0a 64 61 74 61 62 61 73 65 2c 20 69 74 20 6c 65  .database, it le
14f70 61 76 65 73 20 62 65 68 69 6e 64 20 65 6d 70 74  aves behind empt
14f80 79 20 73 70 61 63 65 2e 20 20 54 68 69 73 20 6d  y space.  This m
14f90 61 6b 65 73 20 74 68 65 20 64 61 74 61 62 61 73  akes the databas
14fa0 65 20 0a 66 69 6c 65 20 6c 61 72 67 65 72 20 74  e .file larger t
14fb0 68 61 6e 20 69 74 20 6e 65 65 64 73 20 74 6f 20  han it needs to 
14fc0 62 65 2c 20 62 75 74 20 63 61 6e 20 73 70 65 65  be, but can spee
14fd0 64 20 75 70 20 69 6e 73 65 72 74 73 2e 20 20 49  d up inserts.  I
14fe0 6e 20 74 69 6d 65 20 0a 69 6e 73 65 72 74 73 20  n time .inserts 
14ff0 61 6e 64 20 64 65 6c 65 74 65 73 20 63 61 6e 20  and deletes can 
15000 6c 65 61 76 65 20 74 68 65 20 64 61 74 61 62 61  leave the databa
15010 73 65 20 66 69 6c 65 20 73 74 72 75 63 74 75 72  se file structur
15020 65 20 66 72 61 67 6d 65 6e 74 65 64 2c 20 0a 77  e fragmented, .w
15030 68 69 63 68 20 73 6c 6f 77 73 20 64 6f 77 6e 20  hich slows down 
15040 64 69 73 6b 20 61 63 63 65 73 73 20 74 6f 20 74  disk access to t
15050 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 74  he database cont
15060 65 6e 74 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  ents.</p>..<p>Th
15070 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64  e VACUUM command
15080 20 63 6c 65 61 6e 73 0a 74 68 65 20 6d 61 69 6e   cleans.the main
15090 20 64 61 74 61 62 61 73 65 20 62 79 20 63 6f 70   database by cop
150a0 79 69 6e 67 20 69 74 73 20 63 6f 6e 74 65 6e 74  ying its content
150b0 73 20 74 6f 20 61 20 74 65 6d 70 6f 72 61 72 79  s to a temporary
150c0 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 61   database file a
150d0 6e 64 20 0a 72 65 6c 6f 61 64 69 6e 67 20 74 68  nd .reloading th
150e0 65 20 6f 72 69 67 69 6e 61 6c 20 64 61 74 61 62  e original datab
150f0 61 73 65 20 66 69 6c 65 20 66 72 6f 6d 20 74 68  ase file from th
15100 65 20 63 6f 70 79 2e 20 20 54 68 69 73 20 65 6c  e copy.  This el
15110 69 6d 69 6e 61 74 65 73 20 0a 66 72 65 65 20 70  iminates .free p
15120 61 67 65 73 2c 20 20 61 6c 69 67 6e 73 20 74 61  ages,  aligns ta
15130 62 6c 65 20 64 61 74 61 20 74 6f 20 62 65 20 63  ble data to be c
15140 6f 6e 74 69 67 75 6f 75 73 2c 20 61 6e 64 20 6f  ontiguous, and o
15150 74 68 65 72 77 69 73 65 20 63 6c 65 61 6e 73 20  therwise cleans 
15160 0a 75 70 20 74 68 65 20 64 61 74 61 62 61 73 65  .up the database
15170 20 66 69 6c 65 20 73 74 72 75 63 74 75 72 65 2e   file structure.
15180 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 56 41 43  </p>..<p>The VAC
15190 55 55 4d 20 63 6f 6d 6d 61 6e 64 20 6d 61 79 20  UUM command may 
151a0 63 68 61 6e 67 65 20 74 68 65 20 0a 3c 61 20 68  change the .<a h
151b0 72 65 66 3d 22 6c 61 6e 67 5f 63 72 65 61 74 65  ref="lang_create
151c0 74 61 62 6c 65 2e 68 74 6d 6c 23 72 6f 77 69 64  table.html#rowid
151d0 22 3e 52 4f 57 49 44 3c 2f 61 3e 20 6f 66 20 65  ">ROWID</a> of e
151e0 6e 74 72 69 65 73 20 69 6e 20 74 61 62 6c 65 73  ntries in tables
151f0 20 74 68 61 74 20 64 6f 0a 6e 6f 74 20 68 61 76   that do.not hav
15200 65 20 61 6e 20 65 78 70 6c 69 63 69 74 20 49 4e  e an explicit IN
15210 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45  TEGER PRIMARY KE
15220 59 2e 3c 2f 70 3e 0a 0a 3c 70 3e 56 41 43 55 55  Y.</p>..<p>VACUU
15230 4d 20 6f 6e 6c 79 20 77 6f 72 6b 73 20 6f 6e 20  M only works on 
15240 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73  the main databas
15250 65 2e 0a 49 74 20 69 73 20 6e 6f 74 20 70 6f 73  e..It is not pos
15260 73 69 62 6c 65 20 74 6f 20 56 41 43 55 55 4d 20  sible to VACUUM 
15270 61 6e 20 61 74 74 61 63 68 65 64 20 64 61 74 61  an attached data
15280 62 61 73 65 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a  base file.</p>..
15290 3c 70 3e 54 68 65 20 56 41 43 55 55 4d 20 63 6f  <p>The VACUUM co
152a0 6d 6d 61 6e 64 20 77 69 6c 6c 20 66 61 69 6c 20  mmand will fail 
152b0 69 66 20 74 68 65 72 65 20 69 73 20 61 6e 20 61  if there is an a
152c0 63 74 69 76 65 20 74 72 61 6e 73 61 63 74 69 6f  ctive transactio
152d0 6e 2e 0a 54 68 65 20 56 41 43 55 55 4d 20 63 6f  n..The VACUUM co
152e0 6d 6d 61 6e 64 20 69 73 20 61 20 6e 6f 2d 6f 70  mmand is a no-op
152f0 20 66 6f 72 20 69 6e 2d 6d 65 6d 6f 72 79 20 64   for in-memory d
15300 61 74 61 62 61 73 65 73 2e 3c 2f 70 3e 0a 0a 3c  atabases.</p>..<
15310 70 3e 41 73 20 6f 66 20 53 51 4c 69 74 65 20 76  p>As of SQLite v
15320 65 72 73 69 6f 6e 20 33 2e 31 2c 20 61 6e 20 61  ersion 3.1, an a
15330 6c 74 65 72 6e 61 74 69 76 65 20 74 6f 20 75 73  lternative to us
15340 69 6e 67 20 74 68 65 20 56 41 43 55 55 4d 20 63  ing the VACUUM c
15350 6f 6d 6d 61 6e 64 0a 69 73 20 61 75 74 6f 2d 76  ommand.is auto-v
15360 61 63 75 75 6d 20 6d 6f 64 65 2c 20 65 6e 61 62  acuum mode, enab
15370 6c 65 64 20 75 73 69 6e 67 20 74 68 65 20 0a 5b  led using the .[
15380 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20 70 72 61  auto_vacuum] pra
15390 67 6d 61 2e 20 20 57 68 65 6e 20 5b 61 75 74 6f  gma.  When [auto
153a0 5f 76 61 63 75 75 6d 5d 20 69 73 20 65 6e 61 62  _vacuum] is enab
153b0 6c 65 64 20 66 6f 72 20 61 20 64 61 74 61 62 61  led for a databa
153c0 73 65 2c 20 0a 6c 61 72 67 65 20 64 65 6c 65 74  se, .large delet
153d0 65 73 20 63 61 75 73 65 0a 74 68 65 20 73 69 7a  es cause.the siz
153e0 65 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73  e of the databas
153f0 65 20 66 69 6c 65 20 74 6f 20 73 68 72 69 6e 6b  e file to shrink
15400 2e 20 20 48 6f 77 65 76 65 72 2c 20 5b 61 75 74  .  However, [aut
15410 6f 5f 76 61 63 75 75 6d 5d 0a 61 6c 73 6f 20 63  o_vacuum].also c
15420 61 75 73 65 73 20 65 78 63 65 73 73 20 66 72 61  auses excess fra
15430 67 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68  gmentation of th
15440 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e  e database file.
15450 20 20 41 6e 64 20 5b 61 75 74 6f 5f 76 61 63 75    And [auto_vacu
15460 75 6d 5d 0a 64 6f 65 73 20 6e 6f 74 20 63 6f 6d  um].does not com
15470 70 61 63 74 20 70 61 72 74 69 61 6c 6c 79 20 66  pact partially f
15480 69 6c 6c 65 64 20 70 61 67 65 73 20 6f 66 20 74  illed pages of t
15490 68 65 20 64 61 74 61 62 61 73 65 20 61 73 20 56  he database as V
154a0 41 43 55 55 4d 0a 64 6f 65 73 2e 0a 3c 2f 70 3e  ACUUM.does..</p>
154b0 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23  .<tcl>.#########
154c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
154d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
154e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
154f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15500 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 49  #####.Section {I
15510 4e 44 45 58 45 44 20 42 59 7d 20 69 6e 64 65 78  NDEXED BY} index
15520 65 64 62 79 20 7b 7b 49 4e 44 45 58 45 44 20 42  edby {{INDEXED B
15530 59 7d 20 7b 4e 4f 54 20 49 4e 44 45 58 45 44 7d  Y} {NOT INDEXED}
15540 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c 70 3e 54 68 65  }..</tcl>.<p>The
15550 20 49 4e 44 45 58 45 44 20 42 59 20 70 68 72 61   INDEXED BY phra
15560 73 65 20 69 73 20 61 20 53 51 4c 20 65 78 74 65  se is a SQL exte
15570 6e 73 69 6f 6e 20 66 6f 75 6e 64 20 6f 6e 6c 79  nsion found only
15580 20 69 6e 20 53 51 4c 69 74 65 20 77 68 69 63 68   in SQLite which
15590 20 63 61 6e 0a 62 65 20 75 73 65 64 20 74 6f 20   can.be used to 
155a0 76 65 72 69 66 79 20 74 68 61 74 20 74 68 65 20  verify that the 
155b0 63 6f 72 72 65 63 74 20 69 6e 64 69 63 65 73 20  correct indices 
155c0 61 72 65 20 62 65 69 6e 67 20 75 73 65 64 20 6f  are being used o
155d0 6e 20 61 20 5b 44 45 4c 45 54 45 5d 2c 0a 5b 53  n a [DELETE],.[S
155e0 45 4c 45 43 54 5d 2c 20 6f 72 20 5b 55 50 44 41  ELECT], or [UPDA
155f0 54 45 5d 20 73 74 61 74 65 6d 65 6e 74 2e 0a 54  TE] statement..T
15600 68 65 20 49 4e 44 45 58 45 44 20 42 59 20 70 68  he INDEXED BY ph
15610 72 61 73 65 20 61 6c 77 61 79 73 20 66 6f 6c 6c  rase always foll
15620 6f 77 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  ows the name of 
15630 61 20 74 61 62 6c 65 20 74 68 61 74 20 53 51 4c  a table that SQL
15640 69 74 65 20 77 69 6c 6c 0a 62 65 20 72 65 61 64  ite will.be read
15650 69 6e 67 2e 20 20 54 68 65 20 49 4e 44 45 58 45  ing.  The INDEXE
15660 44 20 42 59 20 70 68 72 61 73 65 20 63 61 6e 20  D BY phrase can 
15670 62 65 20 73 65 65 6e 20 69 6e 20 74 68 65 20 66  be seen in the f
15680 6f 6c 6c 6f 77 69 6e 67 20 73 79 6e 74 61 78 0a  ollowing syntax.
15690 64 69 61 67 72 61 6d 73 3a 3c 2f 70 3e 0a 0a 3c  diagrams:</p>..<
156a0 74 63 6c 3e 0a 42 75 62 62 6c 65 44 69 61 67 72  tcl>.BubbleDiagr
156b0 61 6d 20 71 75 61 6c 69 66 69 65 64 2d 74 61 62  am qualified-tab
156c0 6c 65 2d 6e 61 6d 65 0a 42 75 62 62 6c 65 44 69  le-name.BubbleDi
156d0 61 67 72 61 6d 20 73 69 6e 67 6c 65 2d 73 6f 75  agram single-sou
156e0 72 63 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54  rce.</tcl>..<p>T
156f0 68 65 20 22 49 4e 44 45 58 45 44 20 42 59 20 69  he "INDEXED BY i
15700 6e 64 65 78 2d 6e 61 6d 65 22 20 63 6c 61 75 73  ndex-name" claus
15710 65 20 73 70 65 63 69 66 69 65 73 20 74 68 61 74  e specifies that
15720 20 74 68 65 20 6e 61 6d 65 64 20 69 6e 64 65 78   the named index
15730 0a 6d 75 73 74 20 62 65 20 75 73 65 64 20 69 6e  .must be used in
15740 20 6f 72 64 65 72 20 74 6f 20 6c 6f 6f 6b 20 75   order to look u
15750 70 20 76 61 6c 75 65 73 20 6f 6e 20 74 68 65 20  p values on the 
15760 70 72 65 63 65 65 64 69 6e 67 20 74 61 62 6c 65  preceeding table
15770 2e 0a 49 66 20 69 6e 64 65 78 2d 6e 61 6d 65 20  ..If index-name 
15780 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 20 6f  does not exist o
15790 72 20 63 61 6e 6e 6f 74 20 62 65 20 75 73 65 64  r cannot be used
157a0 20 66 6f 72 20 74 68 65 20 71 75 65 72 79 2c 20   for the query, 
157b0 74 68 65 6e 0a 74 68 65 20 70 72 65 70 61 72 61  then.the prepara
157c0 74 69 6f 6e 20 6f 66 20 74 68 65 20 53 51 4c 20  tion of the SQL 
157d0 73 74 61 74 65 6d 65 6e 74 20 66 61 69 6c 73 2e  statement fails.
157e0 0a 54 68 65 20 22 4e 4f 54 20 49 4e 44 45 58 45  .The "NOT INDEXE
157f0 44 22 20 63 6c 61 75 73 65 20 73 70 65 63 69 66  D" clause specif
15800 69 65 73 20 74 68 61 74 20 6e 6f 20 69 6e 64 65  ies that no inde
15810 78 20 73 68 61 6c 6c 20 62 65 20 75 73 65 64 20  x shall be used 
15820 77 68 65 6e 0a 61 63 63 65 73 73 69 6e 67 20 74  when.accessing t
15830 68 65 20 70 72 65 63 65 65 64 69 6e 67 20 74 61  he preceeding ta
15840 62 6c 65 2c 20 69 6e 63 6c 75 64 69 6e 67 20 69  ble, including i
15850 6d 70 6c 69 65 64 20 69 6e 64 69 63 65 73 20 63  mplied indices c
15860 72 65 61 74 65 20 62 79 0a 55 4e 49 51 55 45 20  reate by.UNIQUE 
15870 61 6e 64 20 50 52 49 4d 41 52 59 20 4b 45 59 20  and PRIMARY KEY 
15880 63 6f 6e 73 74 72 61 69 6e 74 73 2e 20 20 48 6f  constraints.  Ho
15890 77 65 76 65 72 2c 20 74 68 65 20 49 4e 54 45 47  wever, the INTEG
158a0 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 0a 63  ER PRIMARY KEY.c
158b0 61 6e 20 73 74 69 6c 6c 20 62 65 20 75 73 65 64  an still be used
158c0 20 74 6f 20 6c 6f 6f 6b 20 75 70 20 65 6e 74 72   to look up entr
158d0 69 65 73 20 65 76 65 6e 20 77 68 65 6e 20 22 4e  ies even when "N
158e0 4f 54 20 49 4e 44 45 58 45 44 22 20 69 73 20 73  OT INDEXED" is s
158f0 70 65 63 69 66 69 65 64 2e 3c 2f 70 3e 0a 0a 3c  pecified.</p>..<
15900 70 3e 53 6f 6d 65 20 53 51 4c 20 64 61 74 61 62  p>Some SQL datab
15910 61 73 65 20 65 6e 67 69 6e 65 73 20 70 72 6f 76  ase engines prov
15920 69 64 65 20 6e 6f 6e 2d 73 74 61 6e 64 61 72 64  ide non-standard
15930 20 22 68 69 6e 74 22 20 6d 65 63 68 61 6e 69 73   "hint" mechanis
15940 6d 73 20 77 68 69 63 68 0a 63 61 6e 20 62 65 20  ms which.can be 
15950 75 73 65 64 20 74 6f 20 67 69 76 65 20 74 68 65  used to give the
15960 20 71 75 65 72 79 20 6f 70 74 69 6d 69 7a 65 72   query optimizer
15970 20 63 6c 75 65 73 20 61 62 6f 75 74 20 77 68 61   clues about wha
15980 74 20 69 6e 64 69 63 65 73 20 69 74 20 73 68 6f  t indices it sho
15990 75 6c 64 0a 75 73 65 20 66 6f 72 20 61 20 70 61  uld.use for a pa
159a0 72 74 69 63 75 6c 61 72 20 73 74 61 74 65 6d 65  rticular stateme
159b0 6e 74 2e 20 20 54 68 65 20 49 4e 44 45 58 20 42  nt.  The INDEX B
159c0 59 20 63 6c 61 75 73 65 20 6f 66 20 53 51 4c 69  Y clause of SQLi
159d0 74 65 20 69 73 20 0a 3c 65 6d 3e 6e 6f 74 3c 2f  te is .<em>not</
159e0 65 6d 3e 20 61 20 68 69 6e 74 69 6e 67 20 6d 65  em> a hinting me
159f0 63 68 61 6e 69 73 6d 20 61 6e 64 20 69 74 20 73  chanism and it s
15a00 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 75 73 65  hould not be use
15a10 64 20 61 73 20 73 75 63 68 2e 0a 54 68 65 20 49  d as such..The I
15a20 4e 44 45 58 45 44 20 42 59 20 63 6c 61 75 73 65  NDEXED BY clause
15a30 20 64 6f 65 73 20 6e 6f 74 20 67 69 76 65 20 74   does not give t
15a40 68 65 20 6f 70 74 69 6d 69 7a 65 72 20 68 69 6e  he optimizer hin
15a50 74 73 20 61 62 6f 75 74 20 77 68 69 63 68 20 69  ts about which i
15a60 6e 64 65 78 0a 74 6f 20 75 73 65 3b 20 69 74 20  ndex.to use; it 
15a70 67 69 76 65 73 20 74 68 65 20 6f 70 74 69 6d 69  gives the optimi
15a80 7a 65 72 20 61 20 72 65 71 75 69 72 65 6d 65 6e  zer a requiremen
15a90 74 20 6f 66 20 77 68 69 63 68 20 69 6e 64 65 78  t of which index
15aa0 20 74 6f 20 75 73 65 2e 0a 49 66 20 74 68 65 20   to use..If the 
15ab0 71 75 65 72 79 20 6f 70 74 69 6d 69 7a 65 72 20  query optimizer 
15ac0 69 73 20 75 6e 61 62 6c 65 20 74 6f 20 75 73 65  is unable to use
15ad0 20 74 68 65 20 69 6e 64 65 78 20 73 70 65 63 69   the index speci
15ae0 66 69 65 64 20 62 79 20 74 68 65 0a 49 4e 44 45  fied by the.INDE
15af0 58 20 42 59 20 63 6c 61 75 73 65 2c 20 74 68 65  X BY clause, the
15b00 6e 20 74 68 65 20 71 75 65 72 79 20 77 69 6c 6c  n the query will
15b10 20 66 61 69 6c 20 77 69 74 68 20 61 6e 20 65 72   fail with an er
15b20 72 6f 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ror.</p>..<p>The
15b30 20 49 4e 44 45 58 45 44 20 42 59 20 63 6c 61 75   INDEXED BY clau
15b40 73 65 20 69 73 20 3c 65 6d 3e 6e 6f 74 3c 2f 65  se is <em>not</e
15b50 6d 3e 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 20  m> intended for 
15b60 75 73 65 20 69 6e 20 74 75 6e 69 6e 67 0a 74 68  use in tuning.th
15b70 65 20 70 72 65 66 6f 72 6d 61 6e 63 65 20 6f 66  e preformance of
15b80 20 61 20 71 75 65 72 79 2e 20 20 54 68 65 20 69   a query.  The i
15b90 6e 74 65 6e 74 20 6f 66 20 74 68 65 20 49 4e 44  ntent of the IND
15ba0 45 58 45 44 20 42 59 20 63 6c 61 75 73 65 20 69  EXED BY clause i
15bb0 73 0a 74 6f 20 72 61 69 73 65 20 61 20 72 75 6e  s.to raise a run
15bc0 2d 74 69 6d 65 20 65 72 72 6f 72 20 69 66 20 61  -time error if a
15bd0 20 73 63 68 65 6d 61 20 63 68 61 6e 67 65 2c 20   schema change, 
15be0 73 75 63 68 20 61 73 20 64 72 6f 70 70 69 6e 67  such as dropping
15bf0 20 6f 72 0a 63 72 65 61 74 69 6e 67 20 61 6e 20   or.creating an 
15c00 69 6e 64 65 78 2c 20 63 61 75 73 65 73 20 74 68  index, causes th
15c10 65 20 71 75 65 72 79 20 70 6c 61 6e 20 66 6f 72  e query plan for
15c20 20 61 20 74 69 6d 65 2d 73 65 6e 73 69 74 69 76   a time-sensitiv
15c30 65 20 71 75 65 72 79 0a 74 6f 20 63 68 61 6e 67  e query.to chang
15c40 65 2e 20 20 54 68 65 20 49 4e 44 45 58 45 44 20  e.  The INDEXED 
15c50 42 59 20 63 6c 61 75 73 65 20 69 73 20 64 65 73  BY clause is des
15c60 69 67 6e 65 64 20 74 6f 20 68 65 6c 70 20 64 65  igned to help de
15c70 74 65 63 74 0a 75 6e 64 65 73 69 72 61 62 6c 65  tect.undesirable
15c80 20 71 75 65 72 79 20 70 6c 61 6e 20 63 68 61 6e   query plan chan
15c90 67 65 73 20 64 75 72 69 6e 67 20 72 65 67 72 65  ges during regre
15ca0 73 73 69 6f 6e 20 74 65 73 74 69 6e 67 2e 0a 44  ssion testing..D
15cb0 65 76 65 6c 6f 70 65 72 73 20 61 72 65 20 61 64  evelopers are ad
15cc0 6d 6f 6e 69 73 68 65 64 20 74 6f 20 6f 6d 69 74  monished to omit
15cd0 20 61 6c 6c 20 75 73 65 20 6f 66 20 49 4e 44 45   all use of INDE
15ce0 58 45 44 20 42 59 20 64 75 72 69 6e 67 0a 61 70  XED BY during.ap
15cf0 70 6c 69 63 61 74 69 6f 6e 20 64 65 73 69 67 6e  plication design
15d00 2c 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  , implementation
15d10 2c 20 74 65 73 74 69 6e 67 2c 20 61 6e 64 20 74  , testing, and t
15d20 75 6e 69 6e 67 2e 20 20 49 66 0a 49 4e 44 45 58  uning.  If.INDEX
15d30 45 44 20 42 59 20 69 73 20 74 6f 20 62 65 20 75  ED BY is to be u
15d40 73 65 64 20 61 74 20 61 6c 6c 2c 20 69 74 20 73  sed at all, it s
15d50 68 6f 75 6c 64 20 62 65 20 69 6e 73 65 72 74 65  hould be inserte
15d60 64 20 61 74 20 74 68 65 20 76 65 72 79 0a 65 6e  d at the very.en
15d70 64 20 6f 66 20 74 68 65 20 64 65 76 65 6c 6f 70  d of the develop
15d80 6d 65 6e 74 20 70 72 6f 63 65 73 73 20 77 68 65  ment process whe
15d90 6e 20 22 6c 6f 63 6b 69 6e 67 20 64 6f 77 6e 22  n "locking down"
15da0 20 61 20 64 65 73 69 67 6e 2e 3c 2f 70 3e 0a 0a   a design.</p>..
15db0 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
15dc0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15dd0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15de0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15df0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15e00 23 23 23 0a 23 20 41 20 6c 69 73 74 20 6f 66 20  ###.# A list of 
15e10 6b 65 79 77 6f 72 64 73 2e 20 20 41 20 61 73 74  keywords.  A ast
15e20 65 72 69 73 6b 20 6f 63 63 75 72 73 20 61 66 74  erisk occurs aft
15e30 65 72 20 74 68 65 20 6b 65 79 77 6f 72 64 20 69  er the keyword i
15e40 66 20 69 74 20 69 73 20 6f 6e 0a 23 20 74 68 65  f it is on.# the
15e50 20 66 61 6c 6c 62 61 63 6b 20 6c 69 73 74 2e 0a   fallback list..
15e60 23 0a 73 65 74 20 6b 65 79 77 6f 72 64 5f 6c 69  #.set keyword_li
15e70 73 74 20 5b 6c 73 6f 72 74 20 7b 0a 20 20 20 41  st [lsort {.   A
15e80 42 4f 52 54 2a 0a 20 20 20 41 44 44 0a 20 20 20  BORT*.   ADD.   
15e90 41 46 54 45 52 2a 0a 20 20 20 41 4c 4c 0a 20 20  AFTER*.   ALL.  
15ea0 20 41 4c 54 45 52 0a 20 20 20 41 4e 41 4c 59 5a   ALTER.   ANALYZ
15eb0 45 2a 0a 20 20 20 41 4e 44 0a 20 20 20 41 53 0a  E*.   AND.   AS.
15ec0 20 20 20 41 53 43 2a 0a 20 20 20 41 54 54 41 43     ASC*.   ATTAC
15ed0 48 2a 0a 20 20 20 41 55 54 4f 49 4e 43 52 45 4d  H*.   AUTOINCREM
15ee0 45 4e 54 0a 20 20 20 42 45 46 4f 52 45 2a 0a 20  ENT.   BEFORE*. 
15ef0 20 20 42 45 47 49 4e 2a 0a 20 20 20 42 45 54 57    BEGIN*.   BETW
15f00 45 45 4e 0a 20 20 20 42 59 0a 20 20 20 43 41 53  EEN.   BY.   CAS
15f10 43 41 44 45 2a 0a 20 20 20 43 41 53 45 0a 20 20  CADE*.   CASE.  
15f20 20 43 41 53 54 2a 0a 20 20 20 43 48 45 43 4b 0a   CAST*.   CHECK.
15f30 20 20 20 43 4f 4c 4c 41 54 45 0a 20 20 20 43 4f     COLLATE.   CO
15f40 4c 55 4d 4e 0a 20 20 20 43 4f 4d 4d 49 54 0a 20  LUMN.   COMMIT. 
15f50 20 20 43 4f 4e 46 4c 49 43 54 2a 0a 20 20 20 43    CONFLICT*.   C
15f60 4f 4e 53 54 52 41 49 4e 54 0a 20 20 20 43 52 45  ONSTRAINT.   CRE
15f70 41 54 45 0a 20 20 20 43 52 4f 53 53 0a 20 20 20  ATE.   CROSS.   
15f80 43 55 52 52 45 4e 54 5f 44 41 54 45 2a 0a 20 20  CURRENT_DATE*.  
15f90 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 2a 0a 20   CURRENT_TIME*. 
15fa0 20 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54    CURRENT_TIMEST
15fb0 41 4d 50 2a 0a 20 20 20 44 41 54 41 42 41 53 45  AMP*.   DATABASE
15fc0 2a 0a 20 20 20 44 45 46 41 55 4c 54 0a 20 20 20  *.   DEFAULT.   
15fd0 44 45 46 45 52 52 45 44 2a 0a 20 20 20 44 45 46  DEFERRED*.   DEF
15fe0 45 52 52 41 42 4c 45 0a 20 20 20 44 45 4c 45 54  ERRABLE.   DELET
15ff0 45 0a 20 20 20 44 45 53 43 2a 0a 20 20 20 44 45  E.   DESC*.   DE
16000 54 41 43 48 2a 0a 20 20 20 44 49 53 54 49 4e 43  TACH*.   DISTINC
16010 54 0a 20 20 20 44 52 4f 50 0a 20 20 20 45 4e 44  T.   DROP.   END
16020 2a 0a 20 20 20 45 41 43 48 2a 0a 20 20 20 45 4c  *.   EACH*.   EL
16030 53 45 0a 20 20 20 45 53 43 41 50 45 0a 20 20 20  SE.   ESCAPE.   
16040 45 58 43 45 50 54 0a 20 20 20 45 58 43 4c 55 53  EXCEPT.   EXCLUS
16050 49 56 45 2a 0a 20 20 20 45 58 49 53 54 53 0a 20  IVE*.   EXISTS. 
16060 20 20 45 58 50 4c 41 49 4e 2a 0a 20 20 20 46 41    EXPLAIN*.   FA
16070 49 4c 2a 0a 20 20 20 46 4f 52 2a 0a 20 20 20 46  IL*.   FOR*.   F
16080 4f 52 45 49 47 4e 0a 20 20 20 46 52 4f 4d 0a 20  OREIGN.   FROM. 
16090 20 20 46 55 4c 4c 0a 20 20 20 47 4c 4f 42 2a 0a    FULL.   GLOB*.
160a0 20 20 20 47 52 4f 55 50 0a 20 20 20 48 41 56 49     GROUP.   HAVI
160b0 4e 47 0a 20 20 20 49 46 2a 0a 20 20 20 49 47 4e  NG.   IF*.   IGN
160c0 4f 52 45 2a 0a 20 20 20 49 4d 4d 45 44 49 41 54  ORE*.   IMMEDIAT
160d0 45 2a 0a 20 20 20 49 4e 0a 20 20 20 49 4e 44 45  E*.   IN.   INDE
160e0 58 0a 20 20 20 49 4e 44 45 58 45 44 2a 0a 20 20  X.   INDEXED*.  
160f0 20 49 4e 49 54 49 41 4c 4c 59 2a 0a 20 20 20 49   INITIALLY*.   I
16100 4e 4e 45 52 0a 20 20 20 49 4e 53 45 52 54 0a 20  NNER.   INSERT. 
16110 20 20 49 4e 53 54 45 41 44 2a 0a 20 20 20 49 4e    INSTEAD*.   IN
16120 54 45 52 53 45 43 54 0a 20 20 20 49 4e 54 4f 0a  TERSECT.   INTO.
16130 20 20 20 49 53 0a 20 20 20 49 53 4e 55 4c 4c 0a     IS.   ISNULL.
16140 20 20 20 4a 4f 49 4e 0a 20 20 20 4b 45 59 2a 0a     JOIN.   KEY*.
16150 20 20 20 4c 45 46 54 0a 20 20 20 4c 49 4b 45 2a     LEFT.   LIKE*
16160 0a 20 20 20 4c 49 4d 49 54 0a 20 20 20 4d 41 54  .   LIMIT.   MAT
16170 43 48 2a 0a 20 20 20 4e 41 54 55 52 41 4c 0a 20  CH*.   NATURAL. 
16180 20 20 4e 4f 54 0a 20 20 20 4e 4f 54 4e 55 4c 4c    NOT.   NOTNULL
16190 0a 20 20 20 4e 55 4c 4c 0a 20 20 20 4f 46 2a 0a  .   NULL.   OF*.
161a0 20 20 20 4f 46 46 53 45 54 2a 0a 20 20 20 4f 4e     OFFSET*.   ON
161b0 0a 20 20 20 4f 52 0a 20 20 20 4f 52 44 45 52 0a  .   OR.   ORDER.
161c0 20 20 20 4f 55 54 45 52 0a 20 20 20 50 4c 41 4e     OUTER.   PLAN
161d0 2a 0a 20 20 20 50 52 41 47 4d 41 2a 0a 20 20 20  *.   PRAGMA*.   
161e0 50 52 49 4d 41 52 59 0a 20 20 20 51 55 45 52 59  PRIMARY.   QUERY
161f0 2a 0a 20 20 20 52 41 49 53 45 2a 0a 20 20 20 52  *.   RAISE*.   R
16200 45 46 45 52 45 4e 43 45 53 0a 20 20 20 52 45 47  EFERENCES.   REG
16210 45 58 50 0a 20 20 20 52 45 49 4e 44 45 58 2a 0a  EXP.   REINDEX*.
16220 20 20 20 52 45 4e 41 4d 45 2a 0a 20 20 20 52 45     RENAME*.   RE
16230 50 4c 41 43 45 2a 0a 20 20 20 52 45 53 54 52 49  PLACE*.   RESTRI
16240 43 54 2a 0a 20 20 20 52 49 47 48 54 0a 20 20 20  CT*.   RIGHT.   
16250 52 4f 4c 4c 42 41 43 4b 0a 20 20 20 52 4f 57 2a  ROLLBACK.   ROW*
16260 0a 20 20 20 53 45 4c 45 43 54 0a 20 20 20 53 45  .   SELECT.   SE
16270 54 0a 20 20 20 54 41 42 4c 45 0a 20 20 20 54 45  T.   TABLE.   TE
16280 4d 50 2a 0a 20 20 20 54 45 4d 50 4f 52 41 52 59  MP*.   TEMPORARY
16290 2a 0a 20 20 20 54 48 45 4e 0a 20 20 20 54 4f 0a  *.   THEN.   TO.
162a0 20 20 20 54 52 41 4e 53 41 43 54 49 4f 4e 0a 20     TRANSACTION. 
162b0 20 20 54 52 49 47 47 45 52 2a 0a 20 20 20 55 4e    TRIGGER*.   UN
162c0 49 4f 4e 0a 20 20 20 55 4e 49 51 55 45 0a 20 20  ION.   UNIQUE.  
162d0 20 55 50 44 41 54 45 0a 20 20 20 55 53 49 4e 47   UPDATE.   USING
162e0 0a 20 20 20 56 41 43 55 55 4d 2a 0a 20 20 20 56  .   VACUUM*.   V
162f0 41 4c 55 45 53 0a 20 20 20 56 49 45 57 2a 0a 20  ALUES.   VIEW*. 
16300 20 20 56 49 52 54 55 41 4c 2a 0a 20 20 20 57 48    VIRTUAL*.   WH
16310 45 4e 0a 20 20 20 57 48 45 52 45 0a 7d 5d 0a 0a  EN.   WHERE.}]..
16320 68 64 5f 70 75 74 73 20 7b 3c 44 49 56 20 63 6c  hd_puts {<DIV cl
16330 61 73 73 3d 22 70 64 66 5f 73 65 63 74 69 6f 6e  ass="pdf_section
16340 22 3e 7d 0a 53 65 63 74 69 6f 6e 20 7b 53 51 4c  ">}.Section {SQL
16350 69 74 65 20 4b 65 79 77 6f 72 64 73 7d 20 6b 65  ite Keywords} ke
16360 79 77 6f 72 64 73 20 7b 7b 53 51 4c 20 6b 65 79  ywords {{SQL key
16370 77 6f 72 64 7d 20 7b 53 51 4c 20 6b 65 79 77 6f  word} {SQL keywo
16380 72 64 73 7d 7d 0a 68 64 5f 70 75 74 73 20 7b 3c  rds}}.hd_puts {<
16390 2f 44 49 56 3e 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c  /DIV>}.</tcl>..<
163a0 70 3e 54 68 65 20 53 51 4c 20 73 74 61 6e 64 61  p>The SQL standa
163b0 72 64 20 73 70 65 63 69 66 69 65 73 20 61 20 68  rd specifies a h
163c0 75 67 65 20 6e 75 6d 62 65 72 20 6f 66 20 6b 65  uge number of ke
163d0 79 77 6f 72 64 73 20 77 68 69 63 68 20 6d 61 79  ywords which may
163e0 20 6e 6f 74 0a 62 65 20 75 73 65 64 20 61 73 20   not.be used as 
163f0 74 68 65 20 6e 61 6d 65 73 20 6f 66 20 74 61 62  the names of tab
16400 6c 65 73 2c 20 69 6e 64 69 63 65 73 2c 20 63 6f  les, indices, co
16410 6c 75 6d 6e 73 2c 20 64 61 74 61 62 61 73 65 73  lumns, databases
16420 2c 20 75 73 65 72 2d 64 65 66 69 6e 65 64 0a 66  , user-defined.f
16430 75 6e 63 74 69 6f 6e 73 2c 20 63 6f 6c 6c 61 74  unctions, collat
16440 69 6f 6e 73 2c 20 76 69 72 74 75 61 6c 20 74 61  ions, virtual ta
16450 62 6c 65 20 6d 6f 64 75 6c 65 73 2c 20 6f 72 20  ble modules, or 
16460 61 6e 79 20 6f 74 68 65 72 20 6e 61 6d 65 64 20  any other named 
16470 6f 62 6a 65 63 74 2e 0a 54 68 65 20 6c 69 73 74  object..The list
16480 20 6f 66 20 6b 65 79 77 6f 72 64 73 20 69 73 20   of keywords is 
16490 73 6f 20 6c 6f 6e 67 20 74 68 61 74 20 66 65 77  so long that few
164a0 20 70 65 6f 70 6c 65 20 63 61 6e 20 72 65 6d 65   people can reme
164b0 6d 62 65 72 20 74 68 65 6d 20 61 6c 6c 2e 0a 46  mber them all..F
164c0 6f 72 20 6d 6f 73 74 20 53 51 4c 20 63 6f 64 65  or most SQL code
164d0 2c 20 79 6f 75 72 20 73 61 66 65 73 74 20 62 65  , your safest be
164e0 74 20 69 73 20 74 6f 20 6e 65 76 65 72 20 75 73  t is to never us
164f0 65 20 61 6e 79 20 45 6e 67 6c 69 73 68 20 6c 61  e any English la
16500 6e 67 75 61 67 65 0a 77 6f 72 64 20 61 73 20 74  nguage.word as t
16510 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 75 73 65  he name of a use
16520 72 2d 64 65 66 69 6e 65 64 20 6f 62 6a 65 63 74  r-defined object
16530 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 79 6f 75  .</p>..<p>If you
16540 20 77 61 6e 74 20 74 6f 20 75 73 65 20 61 20 6b   want to use a k
16550 65 79 77 6f 72 64 20 61 73 20 61 20 6e 61 6d 65  eyword as a name
16560 2c 20 79 6f 75 20 6e 65 65 64 20 74 6f 20 71 75  , you need to qu
16570 6f 74 65 20 69 74 2e 20 20 54 68 65 72 65 0a 61  ote it.  There.a
16580 72 65 20 74 68 72 65 65 20 77 61 79 73 20 6f 66  re three ways of
16590 20 71 75 6f 74 69 6e 67 20 6b 65 79 77 6f 72 64   quoting keyword
165a0 73 20 69 6e 20 53 51 4c 69 74 65 3a 3c 2f 70 3e  s in SQLite:</p>
165b0 0a 0a 3c 70 3e 0a 3c 62 6c 6f 63 6b 71 75 6f 74  ..<p>.<blockquot
165c0 65 3e 0a 3c 74 61 62 6c 65 3e 0a 3c 74 72 3e 09  e>.<table>.<tr>.
165d0 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
165e0 3e 3c 62 3e 27 6b 65 79 77 6f 72 64 27 3c 2f 62  ><b>'keyword'</b
165f0 3e 3c 2f 74 64 3e 3c 74 64 20 77 69 64 74 68 3d  ></td><td width=
16600 22 32 30 22 3e 3c 2f 74 64 3e 0a 09 3c 74 64 3e  "20"></td>..<td>
16610 41 20 6b 65 79 77 6f 72 64 20 69 6e 20 73 69 6e  A keyword in sin
16620 67 6c 65 20 71 75 6f 74 65 73 20 69 73 20 69 6e  gle quotes is in
16630 74 65 72 70 72 65 74 65 64 20 61 73 20 61 20 6c  terpreted as a l
16640 69 74 65 72 61 6c 20 73 74 72 69 6e 67 0a 20 20  iteral string.  
16650 20 20 20 20 20 20 69 66 20 69 74 20 6f 63 63 75        if it occu
16660 72 73 20 69 6e 20 61 20 63 6f 6e 74 65 78 74 20  rs in a context 
16670 77 68 65 72 65 20 61 20 73 74 72 69 6e 67 20 6c  where a string l
16680 69 74 65 72 61 6c 20 69 73 20 61 6c 6c 6f 77 65  iteral is allowe
16690 64 2c 20 6f 74 68 65 72 77 69 73 65 0a 09 69 74  d, otherwise..it
166a0 20 69 73 20 75 6e 64 65 72 73 74 6f 6f 64 20 61   is understood a
166b0 73 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 2e  s an identifier.
166c0 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 3c 74 72 3e 09  </td></tr>.<tr>.
166d0 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
166e0 3e 3c 62 3e 22 6b 65 79 77 6f 72 64 22 3c 2f 62  ><b>"keyword"</b
166f0 3e 3c 2f 74 64 3e 3c 74 64 3e 3c 2f 74 64 3e 0a  ></td><td></td>.
16700 09 3c 74 64 3e 41 20 6b 65 79 77 6f 72 64 20 69  .<td>A keyword i
16710 6e 20 64 6f 75 62 6c 65 2d 71 75 6f 74 65 73 20  n double-quotes 
16720 69 73 20 69 6e 74 65 72 70 72 65 74 65 64 20 61  is interpreted a
16730 73 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20  s an identifier 
16740 69 66 0a 20 20 20 20 20 20 20 20 69 74 20 6d 61  if.        it ma
16750 74 63 68 65 73 20 61 20 6b 6e 6f 77 6e 20 69 64  tches a known id
16760 65 6e 74 69 66 69 65 72 2e 20 20 4f 74 68 65 72  entifier.  Other
16770 77 69 73 65 20 69 74 20 69 73 20 69 6e 74 65 72  wise it is inter
16780 70 72 65 74 65 64 20 61 73 20 61 0a 20 20 20 20  preted as a.    
16790 20 20 20 20 73 74 72 69 6e 67 20 6c 69 74 65 72      string liter
167a0 61 6c 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 3c 74  al.</td></tr>.<t
167b0 72 3e 09 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
167c0 6f 70 22 3e 3c 62 3e 26 23 39 31 3b 6b 65 79 77  op"><b>&#91;keyw
167d0 6f 72 64 26 23 39 33 3b 3c 2f 62 3e 3c 2f 74 64  ord&#93;</b></td
167e0 3e 3c 74 64 3e 3c 2f 74 64 3e 0a 09 3c 74 64 3e  ><td></td>..<td>
167f0 41 20 6b 65 79 77 6f 72 64 20 65 6e 63 6c 6f 73  A keyword enclos
16800 65 64 20 69 6e 20 73 71 75 61 72 65 20 62 72 61  ed in square bra
16810 63 6b 65 74 73 20 69 73 20 61 6c 77 61 79 73 20  ckets is always 
16820 75 6e 64 65 72 73 74 6f 6f 64 20 61 73 0a 20 20  understood as.  
16830 20 20 20 20 20 20 61 6e 20 69 64 65 6e 74 69 66        an identif
16840 69 65 72 2e 20 20 54 68 69 73 20 69 73 20 6e 6f  ier.  This is no
16850 74 20 73 74 61 6e 64 61 72 64 20 53 51 4c 2e 20  t standard SQL. 
16860 20 54 68 69 73 20 71 75 6f 74 69 6e 67 20 6d 65   This quoting me
16870 63 68 61 6e 69 73 6d 0a 20 20 20 20 20 20 20 20  chanism.        
16880 69 73 20 75 73 65 64 20 62 79 20 4d 53 20 41 63  is used by MS Ac
16890 63 65 73 73 20 61 6e 64 20 53 51 4c 20 53 65 72  cess and SQL Ser
168a0 76 65 72 20 61 6e 64 20 69 73 20 69 6e 63 6c 75  ver and is inclu
168b0 64 65 64 20 69 6e 20 53 51 4c 69 74 65 20 66 6f  ded in SQLite fo
168c0 72 0a 20 20 20 20 20 20 20 20 63 6f 6d 70 61 74  r.        compat
168d0 69 62 69 6c 69 74 79 2e 3c 2f 74 64 3e 3c 2f 74  ibility.</td></t
168e0 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 62 6c  r>.</table>.</bl
168f0 6f 63 6b 71 75 6f 74 65 3e 0a 3c 2f 70 3e 0a 0a  ockquote>.</p>..
16900 3c 70 3e 51 75 6f 74 65 64 20 6b 65 79 77 6f 72  <p>Quoted keywor
16910 64 73 20 61 72 65 20 75 6e 61 65 73 74 68 65 74  ds are unaesthet
16920 69 63 2e 0a 54 6f 20 68 65 6c 70 20 79 6f 75 20  ic..To help you 
16930 61 76 6f 69 64 20 74 68 65 6d 2c 20 53 51 4c 69  avoid them, SQLi
16940 74 65 20 61 6c 6c 6f 77 73 20 6d 61 6e 79 20 6b  te allows many k
16950 65 79 77 6f 72 64 73 20 74 6f 20 62 65 20 75 73  eywords to be us
16960 65 64 20 75 6e 71 75 6f 74 65 64 0a 61 73 20 74  ed unquoted.as t
16970 68 65 20 6e 61 6d 65 73 20 6f 66 20 64 61 74 61  he names of data
16980 62 61 73 65 73 2c 20 74 61 62 6c 65 73 2c 20 69  bases, tables, i
16990 6e 64 69 63 65 73 2c 20 74 72 69 67 67 65 72 73  ndices, triggers
169a0 2c 20 76 69 65 77 73 2c 20 63 6f 6c 75 6d 6e 73  , views, columns
169b0 2c 0a 75 73 65 72 2d 64 65 66 69 6e 65 64 20 66  ,.user-defined f
169c0 75 6e 63 74 69 6f 6e 73 2c 20 63 6f 6c 6c 61 74  unctions, collat
169d0 69 6f 6e 73 2c 20 61 74 74 61 63 68 65 64 20 64  ions, attached d
169e0 61 74 61 62 61 73 65 73 2c 20 61 6e 64 20 76 69  atabases, and vi
169f0 72 74 75 61 6c 0a 66 75 6e 63 74 69 6f 6e 20 6d  rtual.function m
16a00 6f 64 75 6c 65 73 2e 0a 49 6e 20 74 68 65 20 6c  odules..In the l
16a10 69 73 74 20 6f 66 20 6b 65 79 77 6f 72 64 73 20  ist of keywords 
16a20 74 68 61 74 20 66 6f 6c 6c 6f 77 73 2c 20 74 68  that follows, th
16a30 6f 73 65 20 74 68 61 74 20 63 61 6e 20 62 65 20  ose that can be 
16a40 75 73 65 64 20 61 73 20 69 64 65 6e 74 69 66 69  used as identifi
16a50 65 72 73 0a 61 72 65 20 73 68 6f 77 6e 20 69 6e  ers.are shown in
16a60 20 61 6e 20 69 74 61 6c 69 63 20 66 6f 6e 74 2e   an italic font.
16a70 20 20 4b 65 79 77 6f 72 64 73 20 74 68 61 74 20    Keywords that 
16a80 6d 75 73 74 20 62 65 20 71 75 6f 74 65 64 20 69  must be quoted i
16a90 6e 20 6f 72 64 65 72 20 74 6f 20 62 65 0a 75 73  n order to be.us
16aa0 65 64 20 61 73 20 69 64 65 6e 74 69 66 69 65 72  ed as identifier
16ab0 73 20 61 72 65 20 73 68 6f 77 6e 20 69 6e 20 62  s are shown in b
16ac0 6f 6c 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 53 51  old.</p>..<p>.SQ
16ad0 4c 69 74 65 20 61 64 64 73 20 6e 65 77 20 6b 65  Lite adds new ke
16ae0 79 77 6f 72 64 73 20 66 72 6f 6d 20 74 69 6d 65  ywords from time
16af0 20 74 6f 20 74 69 6d 65 20 77 68 65 6e 20 69 74   to time when it
16b00 20 74 61 6b 65 73 20 6f 6e 20 6e 65 77 20 66 65   takes on new fe
16b10 61 74 75 72 65 73 2e 0a 53 6f 20 74 6f 20 70 72  atures..So to pr
16b20 65 76 65 6e 74 20 79 6f 75 72 20 63 6f 64 65 20  event your code 
16b30 66 72 6f 6d 20 62 65 69 6e 67 20 62 72 6f 6b 65  from being broke
16b40 6e 20 62 79 20 66 75 74 75 72 65 20 65 6e 68 61  n by future enha
16b50 6e 63 65 6d 65 6e 74 73 2c 20 79 6f 75 20 73 68  ncements, you sh
16b60 6f 75 6c 64 0a 6e 6f 72 6d 61 6c 6c 79 20 71 75  ould.normally qu
16b70 6f 74 65 20 61 6e 79 20 69 6e 64 65 6e 74 69 66  ote any indentif
16b80 69 65 72 20 74 68 61 74 20 69 73 20 61 6e 20 45  ier that is an E
16b90 6e 67 6c 69 73 68 20 6c 61 6e 67 75 61 67 65 20  nglish language 
16ba0 77 6f 72 64 2c 20 65 76 65 6e 20 69 66 0a 79 6f  word, even if.yo
16bb0 75 20 64 6f 20 6e 6f 74 20 68 61 76 65 20 74 6f  u do not have to
16bc0 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 68 65 20  ..</p>..<p>.The 
16bd0 66 6f 6c 6c 6f 77 69 6e 67 20 61 72 65 20 74 68  following are th
16be0 65 20 6b 65 79 77 6f 72 64 73 20 63 75 72 72 65  e keywords curre
16bf0 6e 74 6c 79 20 72 65 63 6f 67 6e 69 7a 65 64 20  ntly recognized 
16c00 62 79 20 53 51 4c 69 74 65 3a 0a 3c 2f 70 3e 0a  by SQLite:.</p>.
16c10 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 74  .<blockquote>.<t
16c20 61 62 6c 65 20 77 69 64 74 68 3d 22 31 30 30 25  able width="100%
16c30 22 20 63 6c 61 73 73 3d 22 70 64 66 5f 6b 65 79  " class="pdf_key
16c40 77 6f 72 64 73 22 3e 0a 3c 74 72 3e 0a 3c 74 64  words">.<tr>.<td
16c50 20 61 6c 69 67 6e 3d 22 6c 65 66 74 22 20 76 61   align="left" va
16c60 6c 69 67 6e 3d 22 74 6f 70 22 20 77 69 64 74 68  lign="top" width
16c70 3d 22 32 30 25 22 3e 0a 0a 3c 74 63 6c 3e 0a 73  ="20%">..<tcl>.s
16c80 65 74 20 6e 20 5b 6c 6c 65 6e 67 74 68 20 24 6b  et n [llength $k
16c90 65 79 77 6f 72 64 5f 6c 69 73 74 5d 0a 73 65 74  eyword_list].set
16ca0 20 6e 43 6f 6c 20 35 0a 73 65 74 20 6e 52 6f 77   nCol 5.set nRow
16cb0 20 5b 65 78 70 72 20 7b 28 24 6e 2b 24 6e 43 6f   [expr {($n+$nCo
16cc0 6c 2d 31 29 2f 24 6e 43 6f 6c 7d 5d 0a 73 65 74  l-1)/$nCol}].set
16cd0 20 69 20 30 0a 66 6f 72 65 61 63 68 20 77 6f 72   i 0.foreach wor
16ce0 64 20 24 6b 65 79 77 6f 72 64 5f 6c 69 73 74 20  d $keyword_list 
16cf0 7b 0a 20 20 69 66 20 7b 5b 73 74 72 69 6e 67 20  {.  if {[string 
16d00 69 6e 64 65 78 20 24 77 6f 72 64 20 65 6e 64 5d  index $word end]
16d10 3d 3d 22 2a 22 7d 20 7b 0a 20 20 20 20 73 65 74  =="*"} {.    set
16d20 20 77 6f 72 64 20 5b 73 74 72 69 6e 67 20 72 61   word [string ra
16d30 6e 67 65 20 24 77 6f 72 64 20 30 20 65 6e 64 2d  nge $word 0 end-
16d40 31 5d 0a 20 20 20 20 73 65 74 20 66 6f 6e 74 20  1].    set font 
16d50 69 0a 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20  i.  } else {.   
16d60 20 73 65 74 20 66 6f 6e 74 20 62 0a 20 20 7d 0a   set font b.  }.
16d70 20 20 69 66 20 7b 24 69 3d 3d 24 6e 52 6f 77 7d    if {$i==$nRow}
16d80 20 7b 0a 20 20 20 20 68 64 5f 70 75 74 73 20 22   {.    hd_puts "
16d90 3c 2f 74 64 3e 3c 74 64 20 76 61 6c 69 67 6e 3d  </td><td valign=
16da0 5c 22 74 6f 70 5c 22 20 61 6c 69 67 6e 3d 5c 22  \"top\" align=\"
16db0 6c 65 66 74 5c 22 20 77 69 64 74 68 3d 5c 22 32  left\" width=\"2
16dc0 30 25 5c 22 3e 22 0a 20 20 20 20 73 65 74 20 69  0%\">".    set i
16dd0 20 31 0a 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20   1.  } else {.  
16de0 20 20 69 6e 63 72 20 69 0a 20 20 7d 0a 20 20 68    incr i.  }.  h
16df0 64 5f 70 75 74 73 20 22 3c 24 66 6f 6e 74 3e 24  d_puts "<$font>$
16e00 77 6f 72 64 3c 2f 24 66 6f 6e 74 3e 3c 62 72 3e  word</$font><br>
16e10 22 0a 7d 0a 3c 2f 74 63 6c 3e 0a 3c 2f 74 64 3e  ".}.</tcl>.</td>
16e20 3c 2f 74 72 3e 3c 2f 74 61 62 6c 65 3e 3c 2f 62  </tr></table></b
16e30 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 68 32 3e  lockquote>..<h2>
16e40 53 70 65 63 69 61 6c 20 6e 61 6d 65 73 3c 2f 68  Special names</h
16e50 32 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f 6c 6c 6f  2>..<p>The follo
16e60 77 69 6e 67 20 61 72 65 20 6e 6f 74 20 6b 65 79  wing are not key
16e70 77 6f 72 64 73 20 69 6e 20 53 51 4c 69 74 65 2c  words in SQLite,
16e80 20 62 75 74 20 61 72 65 20 75 73 65 64 20 61 73   but are used as
16e90 20 6e 61 6d 65 73 20 6f 66 20 0a 73 79 73 74 65   names of .syste
16ea0 6d 20 6f 62 6a 65 63 74 73 2e 20 20 54 68 65 79  m objects.  They
16eb0 20 63 61 6e 20 62 65 20 75 73 65 64 20 61 73 20   can be used as 
16ec0 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20 66 6f  an identifier fo
16ed0 72 20 61 20 64 69 66 66 65 72 65 6e 74 20 0a 74  r a different .t
16ee0 79 70 65 20 6f 66 20 6f 62 6a 65 63 74 2e 3c 2f  ype of object.</
16ef0 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 20  p>..<blockquote 
16f00 63 6c 61 73 73 3d 22 70 64 66 5f 6b 65 79 77 6f  class="pdf_keywo
16f10 72 64 73 22 3e 3c 62 3e 0a 20 20 5f 52 4f 57 49  rds"><b>.  _ROWI
16f20 44 5f 3c 62 72 3e 0a 20 20 4d 41 49 4e 3c 62 72  D_<br>.  MAIN<br
16f30 3e 0a 20 20 4f 49 44 3c 62 72 3e 0a 20 20 52 4f  >.  OID<br>.  RO
16f40 57 49 44 3c 62 72 3e 0a 20 20 53 51 4c 49 54 45  WID<br>.  SQLITE
16f50 5f 4d 41 53 54 45 52 3c 62 72 3e 0a 20 20 53 51  _MASTER<br>.  SQ
16f60 4c 49 54 45 5f 53 45 51 55 45 4e 43 45 3c 62 72  LITE_SEQUENCE<br
16f70 3e 0a 20 20 53 51 4c 49 54 45 5f 54 45 4d 50 5f  >.  SQLITE_TEMP_
16f80 4d 41 53 54 45 52 3c 62 72 3e 0a 20 20 54 45 4d  MASTER<br>.  TEM
16f90 50 3c 62 72 3e 0a 3c 2f 62 3e 3c 2f 62 6c 6f 63  P<br>.</b></bloc
16fa0 6b 71 75 6f 74 65 3e 0a                          kquote>.