/ Hex Artifact Content
Login

Artifact 7904dbc26918e44c34b522bfc03d7b4671adabaf:


0000: 23 0a 23 20 52 75 6e 20 74 68 69 73 20 54 63 6c  #.# Run this Tcl
0010: 20 73 63 72 69 70 74 20 74 6f 20 67 65 6e 65 72   script to gener
0020: 61 74 65 20 74 68 65 20 73 71 6c 69 74 65 2e 68  ate the sqlite.h
0030: 74 6d 6c 20 66 69 6c 65 2e 0a 23 0a 73 65 74 20  tml file..#.set 
0040: 72 63 73 69 64 20 7b 24 49 64 3a 20 6c 61 6e 67  rcsid {$Id: lang
0050: 2e 74 63 6c 2c 76 20 31 2e 37 35 20 32 30 30 34  .tcl,v 1.75 2004
0060: 2f 31 31 2f 31 30 20 30 35 3a 34 38 3a 35 37 20  /11/10 05:48:57 
0070: 64 61 6e 69 65 6c 6b 31 39 37 37 20 45 78 70 20  danielk1977 Exp 
0080: 24 7d 0a 73 6f 75 72 63 65 20 63 6f 6d 6d 6f 6e  $}.source common
0090: 2e 74 63 6c 0a 68 65 61 64 65 72 20 7b 51 75 65  .tcl.header {Que
00a0: 72 79 20 4c 61 6e 67 75 61 67 65 20 55 6e 64 65  ry Language Unde
00b0: 72 73 74 6f 6f 64 20 62 79 20 53 51 4c 69 74 65  rstood by SQLite
00c0: 7d 0a 70 75 74 73 20 7b 0a 3c 68 32 3e 53 51 4c  }.puts {.<h2>SQL
00d0: 20 41 73 20 55 6e 64 65 72 73 74 6f 6f 64 20 42   As Understood B
00e0: 79 20 53 51 4c 69 74 65 3c 2f 68 32 3e 0a 0a 3c  y SQLite</h2>..<
00f0: 70 3e 54 68 65 20 53 51 4c 69 74 65 20 6c 69 62  p>The SQLite lib
0100: 72 61 72 79 20 75 6e 64 65 72 73 74 61 6e 64 73  rary understands
0110: 20 6d 6f 73 74 20 6f 66 20 74 68 65 20 73 74 61   most of the sta
0120: 6e 64 61 72 64 20 53 51 4c 0a 6c 61 6e 67 75 61  ndard SQL.langua
0130: 67 65 2e 20 20 42 75 74 20 69 74 20 64 6f 65 73  ge.  But it does
0140: 20 3c 61 20 68 72 65 66 3d 22 6f 6d 69 74 74 65   <a href="omitte
0150: 64 2e 68 74 6d 6c 22 3e 6f 6d 69 74 20 73 6f 6d  d.html">omit som
0160: 65 20 66 65 61 74 75 72 65 73 3c 2f 61 3e 0a 77  e features</a>.w
0170: 68 69 6c 65 20 61 74 20 74 68 65 20 73 61 6d 65  hile at the same
0180: 20 74 69 6d 65 0a 61 64 64 69 6e 67 20 61 20 66   time.adding a f
0190: 65 77 20 66 65 61 74 75 72 65 73 20 6f 66 20 69  ew features of i
01a0: 74 73 20 6f 77 6e 2e 20 20 54 68 69 73 20 64 6f  ts own.  This do
01b0: 63 75 6d 65 6e 74 20 61 74 74 65 6d 70 74 73 20  cument attempts 
01c0: 74 6f 0a 64 65 73 63 72 69 62 65 20 70 72 65 63  to.describe prec
01d0: 69 73 65 6c 79 20 77 68 61 74 20 70 61 72 74 73  isely what parts
01e0: 20 6f 66 20 74 68 65 20 53 51 4c 20 6c 61 6e 67   of the SQL lang
01f0: 75 61 67 65 20 53 51 4c 69 74 65 20 64 6f 65 73  uage SQLite does
0200: 0a 61 6e 64 20 64 6f 65 73 20 6e 6f 74 20 73 75  .and does not su
0210: 70 70 6f 72 74 2e 20 20 41 20 6c 69 73 74 20 6f  pport.  A list o
0220: 66 20 3c 61 20 68 72 65 66 3d 22 23 6b 65 79 77  f <a href="#keyw
0230: 6f 72 64 73 22 3e 6b 65 79 77 6f 72 64 73 3c 2f  ords">keywords</
0240: 61 3e 20 69 73 20 0a 67 69 76 65 6e 20 61 74 20  a> is .given at 
0250: 74 68 65 20 65 6e 64 2e 3c 2f 70 3e 0a 0a 3c 70  the end.</p>..<p
0260: 3e 49 6e 20 61 6c 6c 20 6f 66 20 74 68 65 20 73  >In all of the s
0270: 79 6e 74 61 78 20 64 69 61 67 72 61 6d 73 20 74  yntax diagrams t
0280: 68 61 74 20 66 6f 6c 6c 6f 77 2c 20 6c 69 74 65  hat follow, lite
0290: 72 61 6c 20 74 65 78 74 20 69 73 20 73 68 6f 77  ral text is show
02a0: 6e 20 69 6e 0a 62 6f 6c 64 20 62 6c 75 65 2e 20  n in.bold blue. 
02b0: 20 4e 6f 6e 2d 74 65 72 6d 69 6e 61 6c 20 73 79   Non-terminal sy
02c0: 6d 62 6f 6c 73 20 61 72 65 20 73 68 6f 77 6e 20  mbols are shown 
02d0: 69 6e 20 69 74 61 6c 69 63 20 72 65 64 2e 20 20  in italic red.  
02e0: 4f 70 65 72 61 74 6f 72 73 0a 74 68 61 74 20 61  Operators.that a
02f0: 72 65 20 70 61 72 74 20 6f 66 20 74 68 65 20 73  re part of the s
0300: 79 6e 74 61 63 74 69 63 20 6d 61 72 6b 75 70 20  yntactic markup 
0310: 69 74 73 65 6c 66 20 61 72 65 20 73 68 6f 77 6e  itself are shown
0320: 20 69 6e 20 62 6c 61 63 6b 20 72 6f 6d 61 6e 2e   in black roman.
0330: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 69 73 20 64 6f  </p>..<p>This do
0340: 63 75 6d 65 6e 74 20 69 73 20 6a 75 73 74 20 61  cument is just a
0350: 6e 20 6f 76 65 72 76 69 65 77 20 6f 66 20 74 68  n overview of th
0360: 65 20 53 51 4c 20 73 79 6e 74 61 78 20 69 6d 70  e SQL syntax imp
0370: 6c 65 6d 65 6e 74 65 64 0a 62 79 20 53 51 4c 69  lemented.by SQLi
0380: 74 65 2e 20 20 4d 61 6e 79 20 6c 6f 77 2d 6c 65  te.  Many low-le
0390: 76 65 6c 20 70 72 6f 64 75 63 74 69 6f 6e 73 20  vel productions 
03a0: 61 72 65 20 6f 6d 69 74 74 65 64 2e 20 20 46 6f  are omitted.  Fo
03b0: 72 20 64 65 74 61 69 6c 65 64 20 69 6e 66 6f 72  r detailed infor
03c0: 6d 61 74 69 6f 6e 0a 6f 6e 20 74 68 65 20 6c 61  mation.on the la
03d0: 6e 67 75 61 67 65 20 74 68 61 74 20 53 51 4c 69  nguage that SQLi
03e0: 74 65 20 75 6e 64 65 72 73 74 61 6e 64 73 2c 20  te understands, 
03f0: 72 65 66 65 72 20 74 6f 20 74 68 65 20 73 6f 75  refer to the sou
0400: 72 63 65 20 63 6f 64 65 20 61 6e 64 0a 74 68 65  rce code and.the
0410: 20 67 72 61 6d 6d 61 72 20 66 69 6c 65 20 22 70   grammar file "p
0420: 61 72 73 65 2e 79 22 2e 3c 2f 70 3e 0a 0a 0a 3c  arse.y".</p>...<
0430: 70 3e 53 51 4c 69 74 65 20 69 6d 70 6c 65 6d 65  p>SQLite impleme
0440: 6e 74 73 20 74 68 65 20 66 6f 6c 6c 6f 77 20 73  nts the follow s
0450: 79 6e 74 61 78 3a 3c 2f 70 3e 0a 3c 70 3e 3c 75  yntax:</p>.<p><u
0460: 6c 3e 0a 7d 0a 0a 66 6f 72 65 61 63 68 20 7b 73  l>.}..foreach {s
0470: 65 63 74 69 6f 6e 7d 20 5b 6c 73 6f 72 74 20 2d  ection} [lsort -
0480: 69 6e 64 65 78 20 30 20 2d 64 69 63 74 69 6f 6e  index 0 -diction
0490: 61 72 79 20 7b 0a 20 20 7b 7b 43 52 45 41 54 45  ary {.  {{CREATE
04a0: 20 54 41 42 4c 45 7d 20 23 63 72 65 61 74 65 74   TABLE} #createt
04b0: 61 62 6c 65 7d 0a 20 20 7b 7b 43 52 45 41 54 45  able}.  {{CREATE
04c0: 20 49 4e 44 45 58 7d 20 23 63 72 65 61 74 65 69   INDEX} #createi
04d0: 6e 64 65 78 7d 0a 20 20 7b 56 41 43 55 55 4d 20  ndex}.  {VACUUM 
04e0: 23 76 61 63 75 75 6d 7d 0a 20 20 7b 7b 44 52 4f  #vacuum}.  {{DRO
04f0: 50 20 54 41 42 4c 45 7d 20 23 64 72 6f 70 74 61  P TABLE} #dropta
0500: 62 6c 65 7d 0a 20 20 7b 7b 44 52 4f 50 20 49 4e  ble}.  {{DROP IN
0510: 44 45 58 7d 20 23 64 72 6f 70 69 6e 64 65 78 7d  DEX} #dropindex}
0520: 0a 20 20 7b 49 4e 53 45 52 54 20 23 69 6e 73 65  .  {INSERT #inse
0530: 72 74 7d 0a 20 20 7b 52 45 50 4c 41 43 45 20 23  rt}.  {REPLACE #
0540: 72 65 70 6c 61 63 65 7d 0a 20 20 7b 44 45 4c 45  replace}.  {DELE
0550: 54 45 20 23 64 65 6c 65 74 65 7d 0a 20 20 7b 55  TE #delete}.  {U
0560: 50 44 41 54 45 20 23 75 70 64 61 74 65 7d 0a 20  PDATE #update}. 
0570: 20 7b 53 45 4c 45 43 54 20 23 73 65 6c 65 63 74   {SELECT #select
0580: 7d 0a 20 20 7b 63 6f 6d 6d 65 6e 74 20 23 63 6f  }.  {comment #co
0590: 6d 6d 65 6e 74 7d 0a 20 20 7b 43 4f 50 59 20 23  mment}.  {COPY #
05a0: 63 6f 70 79 7d 0a 20 20 7b 45 58 50 4c 41 49 4e  copy}.  {EXPLAIN
05b0: 20 23 65 78 70 6c 61 69 6e 7d 0a 20 20 7b 65 78   #explain}.  {ex
05c0: 70 72 65 73 73 69 6f 6e 20 23 65 78 70 72 7d 0a  pression #expr}.
05d0: 20 20 7b 7b 42 45 47 49 4e 20 54 52 41 4e 53 41    {{BEGIN TRANSA
05e0: 43 54 49 4f 4e 7d 20 23 74 72 61 6e 73 61 63 74  CTION} #transact
05f0: 69 6f 6e 7d 0a 20 20 7b 7b 43 4f 4d 4d 49 54 20  ion}.  {{COMMIT 
0600: 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20 23 74 72  TRANSACTION} #tr
0610: 61 6e 73 61 63 74 69 6f 6e 7d 0a 20 20 7b 7b 45  ansaction}.  {{E
0620: 4e 44 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20  ND TRANSACTION} 
0630: 23 74 72 61 6e 73 61 63 74 69 6f 6e 7d 0a 20 20  #transaction}.  
0640: 7b 7b 52 4f 4c 4c 42 41 43 4b 20 54 52 41 4e 53  {{ROLLBACK TRANS
0650: 41 43 54 49 4f 4e 7d 20 23 74 72 61 6e 73 61 63  ACTION} #transac
0660: 74 69 6f 6e 7d 0a 20 20 7b 50 52 41 47 4d 41 20  tion}.  {PRAGMA 
0670: 70 72 61 67 6d 61 2e 68 74 6d 6c 7d 0a 20 20 7b  pragma.html}.  {
0680: 7b 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61  {ON CONFLICT cla
0690: 75 73 65 7d 20 23 63 6f 6e 66 6c 69 63 74 7d 0a  use} #conflict}.
06a0: 20 20 7b 7b 43 52 45 41 54 45 20 56 49 45 57 7d    {{CREATE VIEW}
06b0: 20 23 63 72 65 61 74 65 76 69 65 77 7d 0a 20 20   #createview}.  
06c0: 7b 7b 44 52 4f 50 20 56 49 45 57 7d 20 23 64 72  {{DROP VIEW} #dr
06d0: 6f 70 76 69 65 77 7d 0a 20 20 7b 7b 43 52 45 41  opview}.  {{CREA
06e0: 54 45 20 54 52 49 47 47 45 52 7d 20 23 63 72 65  TE TRIGGER} #cre
06f0: 61 74 65 74 72 69 67 67 65 72 7d 0a 20 20 7b 7b  atetrigger}.  {{
0700: 44 52 4f 50 20 54 52 49 47 47 45 52 7d 20 23 64  DROP TRIGGER} #d
0710: 72 6f 70 74 72 69 67 67 65 72 7d 0a 20 20 7b 7b  roptrigger}.  {{
0720: 41 54 54 41 43 48 20 44 41 54 41 42 41 53 45 7d  ATTACH DATABASE}
0730: 20 23 61 74 74 61 63 68 7d 0a 20 20 7b 7b 44 45   #attach}.  {{DE
0740: 54 41 43 48 20 44 41 54 41 42 41 53 45 7d 20 23  TACH DATABASE} #
0750: 64 65 74 61 63 68 7d 0a 7d 5d 20 7b 0a 20 20 66  detach}.}] {.  f
0760: 6f 72 65 61 63 68 20 7b 73 5f 74 69 74 6c 65 20  oreach {s_title 
0770: 73 5f 74 61 67 7d 20 24 73 65 63 74 69 6f 6e 20  s_tag} $section 
0780: 7b 7d 0a 20 20 70 75 74 73 20 22 3c 6c 69 3e 3c  {}.  puts "<li><
0790: 61 20 68 72 65 66 3d 5c 22 24 73 5f 74 61 67 5c  a href=\"$s_tag\
07a0: 22 3e 24 73 5f 74 69 74 6c 65 3c 2f 61 3e 3c 2f  ">$s_title</a></
07b0: 6c 69 3e 22 0a 7d 0a 70 75 74 73 20 7b 3c 2f 75  li>".}.puts {</u
07c0: 6c 3e 3c 2f 70 3e 0a 0a 3c 70 3e 44 65 74 61 69  l></p>..<p>Detai
07d0: 6c 73 20 6f 6e 20 74 68 65 20 69 6d 70 6c 65 6d  ls on the implem
07e0: 65 6e 74 61 74 69 6f 6e 20 6f 66 20 65 61 63 68  entation of each
07f0: 20 63 6f 6d 6d 61 6e 64 20 61 72 65 20 70 72 6f   command are pro
0800: 76 69 64 65 64 20 69 6e 0a 74 68 65 20 73 65 71  vided in.the seq
0810: 75 65 6c 2e 3c 2f 70 3e 0a 7d 0a 0a 70 72 6f 63  uel.</p>.}..proc
0820: 20 4f 70 65 72 61 74 6f 72 20 7b 6e 61 6d 65 7d   Operator {name}
0830: 20 7b 0a 20 20 72 65 74 75 72 6e 20 22 3c 66 6f   {.  return "<fo
0840: 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 32 63 32 63  nt color=\"#2c2c
0850: 66 30 5c 22 3e 3c 62 69 67 3e 24 6e 61 6d 65 3c  f0\"><big>$name<
0860: 2f 62 69 67 3e 3c 2f 66 6f 6e 74 3e 22 0a 7d 0a  /big></font>".}.
0870: 70 72 6f 63 20 4e 6f 6e 74 65 72 6d 69 6e 61 6c  proc Nonterminal
0880: 20 7b 6e 61 6d 65 7d 20 7b 0a 20 20 72 65 74 75   {name} {.  retu
0890: 72 6e 20 22 3c 69 3e 3c 66 6f 6e 74 20 63 6f 6c  rn "<i><font col
08a0: 6f 72 3d 5c 22 23 66 66 33 34 33 34 5c 22 3e 24  or=\"#ff3434\">$
08b0: 6e 61 6d 65 3c 2f 66 6f 6e 74 3e 3c 2f 69 3e 22  name</font></i>"
08c0: 0a 7d 0a 70 72 6f 63 20 4b 65 79 77 6f 72 64 20  .}.proc Keyword 
08d0: 7b 6e 61 6d 65 7d 20 7b 0a 20 20 72 65 74 75 72  {name} {.  retur
08e0: 6e 20 22 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c  n "<font color=\
08f0: 22 23 32 63 32 63 66 30 5c 22 3e 24 6e 61 6d 65  "#2c2cf0\">$name
0900: 3c 2f 66 6f 6e 74 3e 22 0a 7d 0a 70 72 6f 63 20  </font>".}.proc 
0910: 45 78 61 6d 70 6c 65 20 7b 74 65 78 74 7d 20 7b  Example {text} {
0920: 0a 20 20 70 75 74 73 20 22 3c 62 6c 6f 63 6b 71  .  puts "<blockq
0930: 75 6f 74 65 3e 3c 70 72 65 3e 24 74 65 78 74 3c  uote><pre>$text<
0940: 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74  /pre></blockquot
0950: 65 3e 22 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20  e>".}...Section 
0960: 7b 41 54 54 41 43 48 20 44 41 54 41 42 41 53 45  {ATTACH DATABASE
0970: 7d 20 61 74 74 61 63 68 0a 0a 53 79 6e 74 61 78  } attach..Syntax
0980: 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d   {sql-statement}
0990: 20 7b 0a 41 54 54 41 43 48 20 5b 44 41 54 41 42   {.ATTACH [DATAB
09a0: 41 53 45 5d 20 3c 64 61 74 61 62 61 73 65 2d 66  ASE] <database-f
09b0: 69 6c 65 6e 61 6d 65 3e 20 41 53 20 3c 64 61 74  ilename> AS <dat
09c0: 61 62 61 73 65 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70  abase-name>.}..p
09d0: 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 41 54 54  uts {.<p>The ATT
09e0: 41 43 48 20 44 41 54 41 42 41 53 45 20 73 74 61  ACH DATABASE sta
09f0: 74 65 6d 65 6e 74 20 61 64 64 73 20 61 20 70 72  tement adds a pr
0a00: 65 65 78 69 73 74 69 6e 67 20 64 61 74 61 62 61  eexisting databa
0a10: 73 65 20 0a 66 69 6c 65 20 74 6f 20 74 68 65 20  se .file to the 
0a20: 63 75 72 72 65 6e 74 20 64 61 74 61 62 61 73 65  current database
0a30: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20 49 66   connection.  If
0a40: 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 20 63 6f   the filename co
0a50: 6e 74 61 69 6e 73 20 0a 70 75 6e 63 74 75 61 74  ntains .punctuat
0a60: 69 6f 6e 20 63 68 61 72 61 63 74 65 72 73 20 69  ion characters i
0a70: 74 20 6d 75 73 74 20 62 65 20 71 75 6f 74 65 64  t must be quoted
0a80: 2e 20 20 54 68 65 20 6e 61 6d 65 73 20 27 6d 61  .  The names 'ma
0a90: 69 6e 27 20 61 6e 64 20 0a 27 74 65 6d 70 27 20  in' and .'temp' 
0aa0: 72 65 66 65 72 20 74 6f 20 74 68 65 20 6d 61 69  refer to the mai
0ab0: 6e 20 64 61 74 61 62 61 73 65 20 61 6e 64 20 74  n database and t
0ac0: 68 65 20 64 61 74 61 62 61 73 65 20 75 73 65 64  he database used
0ad0: 20 66 6f 72 20 0a 74 65 6d 70 6f 72 61 72 79 20   for .temporary 
0ae0: 74 61 62 6c 65 73 2e 20 20 54 68 65 73 65 20 63  tables.  These c
0af0: 61 6e 6e 6f 74 20 62 65 20 64 65 74 61 63 68 65  annot be detache
0b00: 64 2e 20 20 41 74 74 61 63 68 65 64 20 64 61 74  d.  Attached dat
0b10: 61 62 61 73 65 73 20 0a 61 72 65 20 72 65 6d 6f  abases .are remo
0b20: 76 65 64 20 75 73 69 6e 67 20 74 68 65 20 3c 61  ved using the <a
0b30: 20 68 72 65 66 3d 22 23 64 65 74 61 63 68 22 3e   href="#detach">
0b40: 44 45 54 41 43 48 20 44 41 54 41 42 41 53 45 3c  DETACH DATABASE<
0b50: 2f 61 3e 20 0a 73 74 61 74 65 6d 65 6e 74 2e 3c  /a> .statement.<
0b60: 2f 70 3e 0a 0a 3c 70 3e 59 6f 75 20 63 61 6e 20  /p>..<p>You can 
0b70: 72 65 61 64 20 66 72 6f 6d 20 61 6e 64 20 77 72  read from and wr
0b80: 69 74 65 20 74 6f 20 61 6e 20 61 74 74 61 63 68  ite to an attach
0b90: 65 64 20 64 61 74 61 62 61 73 65 20 61 6e 64 20  ed database and 
0ba0: 79 6f 75 0a 63 61 6e 20 6d 6f 64 69 66 79 20 74  you.can modify t
0bb0: 68 65 20 73 63 68 65 6d 61 20 6f 66 20 74 68 65  he schema of the
0bc0: 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61   attached databa
0bd0: 73 65 2e 20 20 54 68 69 73 20 69 73 20 61 20 6e  se.  This is a n
0be0: 65 77 0a 66 65 61 74 75 72 65 20 6f 66 20 53 51  ew.feature of SQ
0bf0: 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 30  Lite version 3.0
0c00: 2e 20 20 49 6e 20 53 51 4c 69 74 65 20 32 2e 38  .  In SQLite 2.8
0c10: 2c 20 73 63 68 65 6d 61 20 63 68 61 6e 67 65 73  , schema changes
0c20: 0a 74 6f 20 61 74 74 61 63 68 65 64 20 64 61 74  .to attached dat
0c30: 61 62 61 73 65 73 20 77 65 72 65 20 6e 6f 74 20  abases were not 
0c40: 61 6c 6c 6f 77 65 64 2e 3c 2f 70 3e 0a 0a 3c 70  allowed.</p>..<p
0c50: 3e 59 6f 75 20 63 61 6e 6e 6f 74 20 63 72 65 61  >You cannot crea
0c60: 74 65 20 61 20 6e 65 77 20 74 61 62 6c 65 20 77  te a new table w
0c70: 69 74 68 20 74 68 65 20 73 61 6d 65 20 6e 61 6d  ith the same nam
0c80: 65 20 61 73 20 61 20 74 61 62 6c 65 20 69 6e 20  e as a table in 
0c90: 0a 61 6e 20 61 74 74 61 63 68 65 64 20 64 61 74  .an attached dat
0ca0: 61 62 61 73 65 2c 20 62 75 74 20 79 6f 75 20 63  abase, but you c
0cb0: 61 6e 20 61 74 74 61 63 68 20 61 20 64 61 74 61  an attach a data
0cc0: 62 61 73 65 20 77 68 69 63 68 20 63 6f 6e 74 61  base which conta
0cd0: 69 6e 73 0a 74 61 62 6c 65 73 20 77 68 6f 73 65  ins.tables whose
0ce0: 20 6e 61 6d 65 73 20 61 72 65 20 64 75 70 6c 69   names are dupli
0cf0: 63 61 74 65 73 20 6f 66 20 74 61 62 6c 65 73 20  cates of tables 
0d00: 69 6e 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61  in the main data
0d10: 62 61 73 65 2e 20 20 49 74 20 69 73 20 0a 61 6c  base.  It is .al
0d20: 73 6f 20 70 65 72 6d 69 73 73 69 62 6c 65 20 74  so permissible t
0d30: 6f 20 61 74 74 61 63 68 20 74 68 65 20 73 61 6d  o attach the sam
0d40: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
0d50: 6d 75 6c 74 69 70 6c 65 20 74 69 6d 65 73 2e 3c  multiple times.<
0d60: 2f 70 3e 0a 0a 3c 70 3e 54 61 62 6c 65 73 20 69  /p>..<p>Tables i
0d70: 6e 20 61 6e 20 61 74 74 61 63 68 65 64 20 64 61  n an attached da
0d80: 74 61 62 61 73 65 20 63 61 6e 20 62 65 20 72 65  tabase can be re
0d90: 66 65 72 72 65 64 20 74 6f 20 75 73 69 6e 67 20  ferred to using 
0da0: 74 68 65 20 73 79 6e 74 61 78 20 0a 3c 69 3e 64  the syntax .<i>d
0db0: 61 74 61 62 61 73 65 2d 6e 61 6d 65 2e 74 61 62  atabase-name.tab
0dc0: 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 2e 20 20 49 66  le-name</i>.  If
0dd0: 20 61 6e 20 61 74 74 61 63 68 65 64 20 74 61 62   an attached tab
0de0: 6c 65 20 64 6f 65 73 6e 27 74 20 68 61 76 65 20  le doesn't have 
0df0: 0a 61 20 64 75 70 6c 69 63 61 74 65 20 74 61 62  .a duplicate tab
0e00: 6c 65 20 6e 61 6d 65 20 69 6e 20 74 68 65 20 6d  le name in the m
0e10: 61 69 6e 20 64 61 74 61 62 61 73 65 2c 20 69 74  ain database, it
0e20: 20 64 6f 65 73 6e 27 74 20 72 65 71 75 69 72 65   doesn't require
0e30: 20 61 20 0a 64 61 74 61 62 61 73 65 20 6e 61 6d   a .database nam
0e40: 65 20 70 72 65 66 69 78 2e 20 20 57 68 65 6e 20  e prefix.  When 
0e50: 61 20 64 61 74 61 62 61 73 65 20 69 73 20 61 74  a database is at
0e60: 74 61 63 68 65 64 2c 20 61 6c 6c 20 6f 66 20 69  tached, all of i
0e70: 74 73 20 0a 74 61 62 6c 65 73 20 77 68 69 63 68  ts .tables which
0e80: 20 64 6f 6e 27 74 20 68 61 76 65 20 64 75 70 6c   don't have dupl
0e90: 69 63 61 74 65 20 6e 61 6d 65 73 20 62 65 63 6f  icate names beco
0ea0: 6d 65 20 74 68 65 20 27 64 65 66 61 75 6c 74 27  me the 'default'
0eb0: 20 74 61 62 6c 65 0a 6f 66 20 74 68 61 74 20 6e   table.of that n
0ec0: 61 6d 65 2e 20 20 41 6e 79 20 74 61 62 6c 65 73  ame.  Any tables
0ed0: 20 6f 66 20 74 68 61 74 20 6e 61 6d 65 20 61 74   of that name at
0ee0: 74 61 63 68 65 64 20 61 66 74 65 72 77 61 72 64  tached afterward
0ef0: 73 20 72 65 71 75 69 72 65 20 74 68 65 20 74 61  s require the ta
0f00: 62 6c 65 20 0a 70 72 65 66 69 78 2e 20 49 66 20  ble .prefix. If 
0f10: 74 68 65 20 27 64 65 66 61 75 6c 74 27 20 74 61  the 'default' ta
0f20: 62 6c 65 20 6f 66 20 61 20 67 69 76 65 6e 20 6e  ble of a given n
0f30: 61 6d 65 20 69 73 20 64 65 74 61 63 68 65 64 2c  ame is detached,
0f40: 20 74 68 65 6e 20 0a 74 68 65 20 6c 61 73 74 20   then .the last 
0f50: 74 61 62 6c 65 20 6f 66 20 74 68 61 74 20 6e 61  table of that na
0f60: 6d 65 20 61 74 74 61 63 68 65 64 20 62 65 63 6f  me attached beco
0f70: 6d 65 73 20 74 68 65 20 6e 65 77 20 64 65 66 61  mes the new defa
0f80: 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 72  ult.</p>..<p>.Tr
0f90: 61 6e 73 61 63 74 69 6f 6e 73 20 69 6e 76 6f 6c  ansactions invol
0fa0: 76 69 6e 67 20 6d 75 6c 74 69 70 6c 65 20 61 74  ving multiple at
0fb0: 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65 73  tached databases
0fc0: 20 61 72 65 20 61 74 6f 6d 69 63 2c 0a 61 73 73   are atomic,.ass
0fd0: 75 6d 69 6e 67 20 74 68 61 74 20 74 68 65 20 6d  uming that the m
0fe0: 61 69 6e 20 64 61 74 61 62 61 73 65 20 69 73 20  ain database is 
0ff0: 6e 6f 74 20 22 3a 6d 65 6d 6f 72 79 3a 22 2e 20  not ":memory:". 
1000: 20 49 66 20 74 68 65 20 6d 61 69 6e 0a 64 61 74   If the main.dat
1010: 61 62 61 73 65 20 69 73 20 22 3a 6d 65 6d 6f 72  abase is ":memor
1020: 79 3a 22 20 74 68 65 6e 20 0a 74 72 61 6e 73 61  y:" then .transa
1030: 63 74 69 6f 6e 73 20 63 6f 6e 74 69 6e 75 65 20  ctions continue 
1040: 74 6f 20 62 65 20 61 74 6f 6d 69 63 20 77 69 74  to be atomic wit
1050: 68 69 6e 20 65 61 63 68 20 69 6e 64 69 76 69 64  hin each individ
1060: 75 61 6c 0a 64 61 74 61 62 61 73 65 20 66 69 6c  ual.database fil
1070: 65 2e 20 42 75 74 20 69 66 20 74 68 65 20 68 6f  e. But if the ho
1080: 73 74 20 63 6f 6d 70 75 74 65 72 20 63 72 61 73  st computer cras
1090: 68 65 73 20 69 6e 20 74 68 65 20 6d 69 64 64 6c  hes in the middl
10a0: 65 0a 6f 66 20 61 20 43 4f 4d 4d 49 54 20 77 68  e.of a COMMIT wh
10b0: 65 72 65 20 74 77 6f 20 6f 72 20 6d 6f 72 65 20  ere two or more 
10c0: 64 61 74 61 62 61 73 65 20 66 69 6c 65 73 20 61  database files a
10d0: 72 65 20 75 70 64 61 74 65 64 2c 0a 73 6f 6d 65  re updated,.some
10e0: 20 6f 66 20 74 68 6f 73 65 20 66 69 6c 65 73 20   of those files 
10f0: 6d 69 67 68 74 20 67 65 74 20 74 68 65 20 63 68  might get the ch
1100: 61 6e 67 65 73 20 77 68 65 72 65 20 6f 74 68 65  anges where othe
1110: 72 73 0a 6d 69 67 68 74 20 6e 6f 74 2e 0a 41 74  rs.might not..At
1120: 6f 6d 69 63 20 63 6f 6d 6d 69 74 20 6f 66 20 61  omic commit of a
1130: 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65  ttached database
1140: 73 20 69 73 20 61 20 6e 65 77 20 66 65 61 74 75  s is a new featu
1150: 72 65 20 6f 66 20 53 51 4c 69 74 65 20 76 65 72  re of SQLite ver
1160: 73 69 6f 6e 20 33 2e 30 2e 0a 49 6e 20 53 51 4c  sion 3.0..In SQL
1170: 69 74 65 20 76 65 72 73 69 6f 6e 20 32 2e 38 2c  ite version 2.8,
1180: 20 61 6c 6c 20 63 6f 6d 6d 69 74 73 20 74 6f 20   all commits to 
1190: 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73  attached databas
11a0: 65 73 20 62 65 68 61 76 65 64 20 61 73 20 69 66  es behaved as if
11b0: 0a 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61  .the main databa
11c0: 73 65 20 77 65 72 65 20 22 3a 6d 65 6d 6f 72 79  se were ":memory
11d0: 3a 22 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  :"..</p>..<p>The
11e0: 72 65 20 69 73 20 61 20 63 6f 6d 70 69 6c 65 2d  re is a compile-
11f0: 74 69 6d 65 20 6c 69 6d 69 74 20 6f 66 20 31 30  time limit of 10
1200: 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61   attached databa
1210: 73 65 20 66 69 6c 65 73 2e 3c 2f 70 3e 0a 7d 0a  se files.</p>.}.
1220: 0a 0a 53 65 63 74 69 6f 6e 20 7b 42 45 47 49 4e  ..Section {BEGIN
1230: 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72   TRANSACTION} tr
1240: 61 6e 73 61 63 74 69 6f 6e 0a 0a 53 79 6e 74 61  ansaction..Synta
1250: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
1260: 7d 20 7b 0a 42 45 47 49 4e 20 5b 20 44 45 46 45  } {.BEGIN [ DEFE
1270: 52 52 45 44 20 7c 20 49 4d 4d 45 44 49 41 54 45  RRED | IMMEDIATE
1280: 20 7c 20 45 58 43 4c 55 53 49 56 45 20 5d 20 5b   | EXCLUSIVE ] [
1290: 54 52 41 4e 53 41 43 54 49 4f 4e 20 5b 3c 6e 61  TRANSACTION [<na
12a0: 6d 65 3e 5d 5d 0a 7d 0a 53 79 6e 74 61 78 20 7b  me>]].}.Syntax {
12b0: 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b  sql-statement} {
12c0: 0a 45 4e 44 20 5b 54 52 41 4e 53 41 43 54 49 4f  .END [TRANSACTIO
12d0: 4e 20 5b 3c 6e 61 6d 65 3e 5d 5d 0a 7d 0a 53 79  N [<name>]].}.Sy
12e0: 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d  ntax {sql-statem
12f0: 65 6e 74 7d 20 7b 0a 43 4f 4d 4d 49 54 20 5b 54  ent} {.COMMIT [T
1300: 52 41 4e 53 41 43 54 49 4f 4e 20 5b 3c 6e 61 6d  RANSACTION [<nam
1310: 65 3e 5d 5d 0a 7d 0a 53 79 6e 74 61 78 20 7b 73  e>]].}.Syntax {s
1320: 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a  ql-statement} {.
1330: 52 4f 4c 4c 42 41 43 4b 20 5b 54 52 41 4e 53 41  ROLLBACK [TRANSA
1340: 43 54 49 4f 4e 20 5b 3c 6e 61 6d 65 3e 5d 5d 0a  CTION [<name>]].
1350: 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 42 65 67  }..puts {.<p>Beg
1360: 69 6e 6e 69 6e 67 20 69 6e 20 76 65 72 73 69 6f  inning in versio
1370: 6e 20 32 2e 30 2c 20 53 51 4c 69 74 65 20 73 75  n 2.0, SQLite su
1380: 70 70 6f 72 74 73 20 74 72 61 6e 73 61 63 74 69  pports transacti
1390: 6f 6e 73 20 77 69 74 68 0a 72 6f 6c 6c 62 61 63  ons with.rollbac
13a0: 6b 20 61 6e 64 20 61 74 6f 6d 69 63 20 63 6f 6d  k and atomic com
13b0: 6d 69 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  mit.</p>..<p>The
13c0: 20 6f 70 74 69 6f 6e 61 6c 20 74 72 61 6e 73 61   optional transa
13d0: 63 74 69 6f 6e 20 6e 61 6d 65 20 69 73 20 69 67  ction name is ig
13e0: 6e 6f 72 65 64 2e 20 53 51 4c 69 74 65 20 63 75  nored. SQLite cu
13f0: 72 72 65 6e 74 6c 79 20 0a 64 6f 65 73 20 6e 6f  rrently .does no
1400: 74 20 61 6c 6c 6f 77 20 6e 65 73 74 65 64 20 74  t allow nested t
1410: 72 61 6e 73 61 63 74 69 6f 6e 73 2e 3c 2f 70 3e  ransactions.</p>
1420: 0a 0a 3c 70 3e 0a 4e 6f 20 63 68 61 6e 67 65 73  ..<p>.No changes
1430: 20 63 61 6e 20 62 65 20 6d 61 64 65 20 74 6f 20   can be made to 
1440: 74 68 65 20 64 61 74 61 62 61 73 65 20 65 78 63  the database exc
1450: 65 70 74 20 77 69 74 68 69 6e 20 61 20 74 72 61  ept within a tra
1460: 6e 73 61 63 74 69 6f 6e 2e 0a 41 6e 79 20 63 6f  nsaction..Any co
1470: 6d 6d 61 6e 64 20 74 68 61 74 20 63 68 61 6e 67  mmand that chang
1480: 65 73 20 74 68 65 20 64 61 74 61 62 61 73 65 20  es the database 
1490: 28 62 61 73 69 63 61 6c 6c 79 2c 20 61 6e 79 20  (basically, any 
14a0: 53 51 4c 20 63 6f 6d 6d 61 6e 64 0a 6f 74 68 65  SQL command.othe
14b0: 72 20 74 68 61 6e 20 53 45 4c 45 43 54 29 20 77  r than SELECT) w
14c0: 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ill automaticall
14d0: 79 20 73 74 61 72 74 20 61 20 74 72 61 6e 73 61  y start a transa
14e0: 63 74 69 6f 6e 20 69 66 0a 6f 6e 65 20 69 73 20  ction if.one is 
14f0: 6e 6f 74 20 61 6c 72 65 61 64 79 20 69 6e 20 65  not already in e
1500: 66 66 65 63 74 2e 20 20 41 75 74 6f 6d 61 74 69  ffect.  Automati
1510: 63 61 6c 6c 79 20 73 74 61 72 74 65 64 20 74 72  cally started tr
1520: 61 6e 73 61 63 74 69 6f 6e 73 0a 61 72 65 20 63  ansactions.are c
1530: 6f 6d 6d 69 74 74 65 64 20 61 74 20 74 68 65 20  ommitted at the 
1540: 63 6f 6e 63 6c 75 73 69 6f 6e 20 6f 66 20 74 68  conclusion of th
1550: 65 20 63 6f 6d 6d 61 6e 64 2e 0a 3c 2f 70 3e 0a  e command..</p>.
1560: 0a 3c 70 3e 0a 54 72 61 6e 73 61 63 74 69 6f 6e  .<p>.Transaction
1570: 73 20 63 61 6e 20 62 65 20 73 74 61 72 74 65 64  s can be started
1580: 20 6d 61 6e 75 61 6c 6c 79 20 75 73 69 6e 67 20   manually using 
1590: 74 68 65 20 42 45 47 49 4e 0a 63 6f 6d 6d 61 6e  the BEGIN.comman
15a0: 64 2e 20 20 53 75 63 68 20 74 72 61 6e 73 61 63  d.  Such transac
15b0: 74 69 6f 6e 73 20 75 73 75 61 6c 6c 79 20 70 65  tions usually pe
15c0: 72 73 69 73 74 20 75 6e 74 69 6c 20 74 68 65 20  rsist until the 
15d0: 6e 65 78 74 0a 43 4f 4d 4d 49 54 20 6f 72 20 52  next.COMMIT or R
15e0: 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61 6e 64 2e  OLLBACK command.
15f0: 20 20 42 75 74 20 61 20 74 72 61 6e 73 61 63 74    But a transact
1600: 69 6f 6e 20 77 69 6c 6c 20 61 6c 73 6f 20 0a 52  ion will also .R
1610: 4f 4c 4c 42 41 43 4b 20 69 66 20 74 68 65 20 64  OLLBACK if the d
1620: 61 74 61 62 61 73 65 20 69 73 20 63 6c 6f 73 65  atabase is close
1630: 64 20 6f 72 20 69 66 20 61 6e 20 65 72 72 6f 72  d or if an error
1640: 20 6f 63 63 75 72 73 0a 61 6e 64 20 74 68 65 20   occurs.and the 
1650: 52 4f 4c 4c 42 41 43 4b 20 63 6f 6e 66 6c 69 63  ROLLBACK conflic
1660: 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67  t resolution alg
1670: 6f 72 69 74 68 6d 20 69 73 20 73 70 65 63 69 66  orithm is specif
1680: 69 65 64 2e 0a 53 65 65 20 74 68 65 20 64 6f 63  ied..See the doc
1690: 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 6e 20 74 68  umentation on th
16a0: 65 20 3c 61 20 68 72 65 66 3d 22 23 63 6f 6e 66  e <a href="#conf
16b0: 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49 43  lict">ON CONFLIC
16c0: 54 3c 2f 61 3e 0a 63 6c 61 75 73 65 20 66 6f 72  T</a>.clause for
16d0: 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f   additional info
16e0: 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68  rmation about th
16f0: 65 20 52 4f 4c 4c 42 41 43 4b 0a 63 6f 6e 66 6c  e ROLLBACK.confl
1700: 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61  ict resolution a
1710: 6c 67 6f 72 69 74 68 6d 2e 0a 3c 2f 70 3e 0a 0a  lgorithm..</p>..
1720: 3c 70 3e 0a 49 6e 20 53 51 4c 69 74 65 20 76 65  <p>.In SQLite ve
1730: 72 73 69 6f 6e 20 33 2e 30 2e 38 20 61 6e 64 20  rsion 3.0.8 and 
1740: 6c 61 74 65 72 2c 20 74 72 61 6e 73 61 63 74 69  later, transacti
1750: 6f 6e 73 20 63 61 6e 20 62 65 20 64 65 66 65 72  ons can be defer
1760: 72 65 64 2c 0a 69 6d 6d 65 64 69 61 74 65 2c 20  red,.immediate, 
1770: 6f 72 20 65 78 63 6c 75 73 69 76 65 2e 20 20 44  or exclusive.  D
1780: 65 66 65 72 72 65 64 20 6d 65 61 6e 73 20 74 68  eferred means th
1790: 61 74 20 6e 6f 20 6c 6f 63 6b 73 20 61 72 65 20  at no locks are 
17a0: 61 63 71 75 69 72 65 64 0a 6f 6e 20 74 68 65 20  acquired.on the 
17b0: 64 61 74 61 62 61 73 65 20 75 6e 74 69 6c 20 74  database until t
17c0: 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20 66  he database is f
17d0: 69 72 73 74 20 61 63 63 65 73 73 65 64 2e 20 20  irst accessed.  
17e0: 54 68 75 73 20 77 69 74 68 20 61 0a 64 65 66 65  Thus with a.defe
17f0: 72 72 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e  rred transaction
1800: 2c 20 74 68 65 20 42 45 47 49 4e 20 73 74 61 74  , the BEGIN stat
1810: 65 6d 65 6e 74 20 69 74 73 65 6c 66 20 64 6f 65  ement itself doe
1820: 73 20 6e 6f 74 68 69 6e 67 2e 20 20 4c 6f 63 6b  s nothing.  Lock
1830: 73 0a 61 72 65 20 6e 6f 74 20 61 63 71 75 69 72  s.are not acquir
1840: 65 64 20 75 6e 74 69 6c 20 74 68 65 20 66 69 72  ed until the fir
1850: 73 74 20 72 65 61 64 20 6f 72 20 77 72 69 74 65  st read or write
1860: 20 6f 70 65 72 61 74 69 6f 6e 2e 20 20 54 68 65   operation.  The
1870: 20 66 69 72 73 74 20 72 65 61 64 0a 6f 70 65 72   first read.oper
1880: 61 74 69 6f 6e 20 61 67 61 69 6e 73 74 20 61 20  ation against a 
1890: 64 61 74 61 62 61 73 65 20 63 72 65 61 74 65 73  database creates
18a0: 20 61 20 53 48 41 52 45 44 20 6c 6f 63 6b 20 61   a SHARED lock a
18b0: 6e 64 20 74 68 65 20 66 69 72 73 74 0a 77 72 69  nd the first.wri
18c0: 74 65 20 6f 70 65 72 61 74 69 6f 6e 20 63 72 65  te operation cre
18d0: 61 74 65 73 20 61 20 52 45 53 45 52 56 45 44 20  ates a RESERVED 
18e0: 6c 6f 63 6b 2e 20 20 20 42 65 63 61 75 73 65 20  lock.   Because 
18f0: 74 68 65 20 61 63 71 75 69 73 69 74 69 6f 6e 20  the acquisition 
1900: 6f 66 0a 6c 6f 63 6b 73 20 69 73 20 64 65 66 65  of.locks is defe
1910: 72 72 65 64 20 75 6e 74 69 6c 20 74 68 65 79 20  rred until they 
1920: 61 72 65 20 6e 65 65 64 65 64 2c 20 69 74 20 69  are needed, it i
1930: 73 20 70 6f 73 73 69 62 6c 65 20 74 68 61 74 20  s possible that 
1940: 61 6e 6f 74 68 65 72 0a 74 68 72 65 61 64 20 6f  another.thread o
1950: 72 20 70 72 6f 63 65 73 73 20 63 6f 75 6c 64 20  r process could 
1960: 63 72 65 61 74 65 20 61 20 73 65 70 61 72 61 74  create a separat
1970: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 61 6e  e transaction an
1980: 64 20 77 72 69 74 65 20 74 6f 0a 74 68 65 20 64  d write to.the d
1990: 61 74 61 62 61 73 65 20 61 66 74 65 72 20 74 68  atabase after th
19a0: 65 20 42 45 47 49 4e 20 6f 6e 20 74 68 65 20 63  e BEGIN on the c
19b0: 75 72 72 65 6e 74 20 74 68 72 65 61 64 20 68 61  urrent thread ha
19c0: 73 20 65 78 65 63 75 74 65 64 2e 0a 49 66 20 74  s executed..If t
19d0: 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69  he transaction i
19e0: 73 20 69 6d 6d 65 64 69 61 74 65 2c 20 74 68 65  s immediate, the
19f0: 6e 20 52 45 53 45 52 56 45 44 20 6c 6f 63 6b 73  n RESERVED locks
1a00: 0a 61 72 65 20 61 63 71 75 69 72 65 64 20 6f 6e  .are acquired on
1a10: 20 61 6c 6c 20 64 61 74 61 62 61 73 65 73 20 61   all databases a
1a20: 73 20 73 6f 6f 6e 20 61 73 20 74 68 65 20 42 45  s soon as the BE
1a30: 47 49 4e 20 63 6f 6d 6d 61 6e 64 20 69 73 0a 65  GIN command is.e
1a40: 78 65 63 75 74 65 64 2c 20 77 69 74 68 6f 75 74  xecuted, without
1a50: 20 77 61 69 74 69 6e 67 20 66 6f 72 20 74 68 65   waiting for the
1a60: 0a 64 61 74 61 62 61 73 65 20 74 6f 20 62 65 20  .database to be 
1a70: 75 73 65 64 2e 20 20 41 66 74 65 72 20 61 20 42  used.  After a B
1a80: 45 47 49 4e 20 49 4d 4d 45 44 49 41 54 45 2c 20  EGIN IMMEDIATE, 
1a90: 79 6f 75 20 61 72 65 20 67 75 61 72 61 6e 74 65  you are guarante
1aa0: 65 64 20 74 68 61 74 0a 6e 6f 20 6f 74 68 65 72  ed that.no other
1ab0: 20 74 68 72 65 61 64 20 6f 72 20 70 72 6f 63 65   thread or proce
1ac0: 73 73 20 77 69 6c 6c 20 62 65 20 61 62 6c 65 20  ss will be able 
1ad0: 74 6f 20 77 72 69 74 65 20 74 6f 20 74 68 65 20  to write to the 
1ae0: 64 61 74 61 62 61 73 65 20 6f 72 0a 64 6f 20 61  database or.do a
1af0: 20 42 45 47 49 4e 20 49 4d 4d 45 44 49 41 54 45   BEGIN IMMEDIATE
1b00: 20 6f 72 20 42 45 47 49 4e 20 45 58 43 4c 55 53   or BEGIN EXCLUS
1b10: 49 56 45 2e 20 20 4f 74 68 65 72 20 70 72 6f 63  IVE.  Other proc
1b20: 65 73 73 65 73 20 63 61 6e 20 63 6f 6e 74 69 6e  esses can contin
1b30: 75 65 0a 74 6f 20 72 65 61 64 20 66 72 6f 6d 20  ue.to read from 
1b40: 74 68 65 20 64 61 74 61 62 61 73 65 2c 20 68 6f  the database, ho
1b50: 77 65 76 65 72 2e 20 20 41 6e 20 65 78 63 6c 75  wever.  An exclu
1b60: 73 69 76 65 20 74 72 61 6e 73 61 63 74 69 6f 6e  sive transaction
1b70: 20 63 61 75 73 65 73 0a 45 58 43 4c 55 53 49 56   causes.EXCLUSIV
1b80: 45 20 6c 6f 63 6b 73 20 74 6f 20 62 65 20 61 63  E locks to be ac
1b90: 71 75 69 72 65 64 20 6f 6e 20 61 6c 6c 20 64 61  quired on all da
1ba0: 74 61 62 61 73 65 73 2e 20 20 41 66 74 65 72 20  tabases.  After 
1bb0: 61 20 42 45 47 49 4e 0a 45 58 43 4c 55 53 49 56  a BEGIN.EXCLUSIV
1bc0: 45 2c 20 79 6f 75 20 61 72 65 20 67 75 61 72 61  E, you are guara
1bd0: 6e 74 65 65 64 20 74 68 61 74 20 6e 6f 20 6f 74  nteed that no ot
1be0: 68 65 72 20 74 68 72 65 61 64 20 6f 72 20 70 72  her thread or pr
1bf0: 6f 63 65 73 73 20 77 69 6c 6c 0a 62 65 20 61 62  ocess will.be ab
1c00: 6c 65 20 74 6f 20 72 65 61 64 20 6f 72 20 77 72  le to read or wr
1c10: 69 74 65 20 74 68 65 20 64 61 74 61 62 61 73 65  ite the database
1c20: 20 75 6e 74 69 6c 20 74 68 65 20 74 72 61 6e 73   until the trans
1c30: 61 63 74 69 6f 6e 20 69 73 0a 63 6f 6d 70 6c 65  action is.comple
1c40: 74 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 41 20  te..</p>..<p>.A 
1c50: 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 74  description of t
1c60: 68 65 20 6d 65 61 6e 69 6e 67 20 6f 66 20 53 48  he meaning of SH
1c70: 41 52 45 44 2c 20 52 45 53 45 52 56 45 44 2c 20  ARED, RESERVED, 
1c80: 61 6e 64 20 45 58 43 4c 55 53 49 56 45 20 6c 6f  and EXCLUSIVE lo
1c90: 63 6b 73 0a 69 73 20 61 76 61 69 6c 61 62 6c 65  cks.is available
1ca0: 20 3c 61 20 68 72 65 66 3d 22 6c 6f 63 6b 69 6e   <a href="lockin
1cb0: 67 76 33 2e 68 74 6d 6c 22 3e 73 65 70 61 72 61  gv3.html">separa
1cc0: 74 65 6c 79 3c 2f 61 3e 2e 0a 3c 2f 70 3e 0a 0a  tely</a>..</p>..
1cd0: 3c 70 3e 0a 54 68 65 20 64 65 66 61 75 6c 74 20  <p>.The default 
1ce0: 62 65 68 61 76 69 6f 72 20 66 6f 72 20 53 51 4c  behavior for SQL
1cf0: 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 30 2e  ite version 3.0.
1d00: 38 20 69 73 20 61 0a 64 65 66 65 72 72 65 64 20  8 is a.deferred 
1d10: 74 72 61 6e 73 61 63 74 69 6f 6e 2e 20 20 46 6f  transaction.  Fo
1d20: 72 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e  r SQLite version
1d30: 20 33 2e 30 2e 30 20 74 68 72 6f 75 67 68 20 33   3.0.0 through 3
1d40: 2e 30 2e 37 2c 0a 64 65 66 65 72 72 65 64 20 69  .0.7,.deferred i
1d50: 73 20 74 68 65 20 6f 6e 6c 79 20 6b 69 6e 64 20  s the only kind 
1d60: 6f 66 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 61  of transaction a
1d70: 76 61 69 6c 61 62 6c 65 2e 20 20 46 6f 72 20 53  vailable.  For S
1d80: 51 4c 69 74 65 0a 76 65 72 73 69 6f 6e 20 32 2e  QLite.version 2.
1d90: 38 20 61 6e 64 20 65 61 72 6c 69 65 72 2c 20 61  8 and earlier, a
1da0: 6c 6c 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 20  ll transactions 
1db0: 61 72 65 20 65 78 63 6c 75 73 69 76 65 2e 0a 3c  are exclusive..<
1dc0: 2f 70 3e 0a 0a 3c 70 3e 0a 54 68 65 20 43 4f 4d  /p>..<p>.The COM
1dd0: 4d 49 54 20 63 6f 6d 6d 61 6e 64 20 64 6f 65 73  MIT command does
1de0: 20 6e 6f 74 20 61 63 74 75 61 6c 6c 79 20 70 65   not actually pe
1df0: 72 66 6f 72 6d 20 61 20 63 6f 6d 6d 69 74 20 75  rform a commit u
1e00: 6e 74 69 6c 20 61 6c 6c 0a 70 65 6e 64 69 6e 67  ntil all.pending
1e10: 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 73 20 66 69   SQL commands fi
1e20: 6e 69 73 68 2e 20 20 54 68 75 73 20 69 66 20 74  nish.  Thus if t
1e30: 77 6f 20 6f 72 20 6d 6f 72 65 20 53 45 4c 45 43  wo or more SELEC
1e40: 54 20 73 74 61 74 65 6d 65 6e 74 73 0a 61 72 65  T statements.are
1e50: 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f   in the middle o
1e60: 66 20 70 72 6f 63 65 73 73 69 6e 67 20 61 6e 64  f processing and
1e70: 20 61 20 43 4f 4d 4d 49 54 20 69 73 20 65 78 65   a COMMIT is exe
1e80: 63 75 74 65 64 2c 20 74 68 65 20 63 6f 6d 6d 69  cuted, the commi
1e90: 74 0a 77 69 6c 6c 20 6e 6f 74 20 61 63 74 75 61  t.will not actua
1ea0: 6c 6c 79 20 6f 63 63 75 72 20 75 6e 74 69 6c 20  lly occur until 
1eb0: 61 6c 6c 20 53 45 4c 45 43 54 20 73 74 61 74 65  all SELECT state
1ec0: 6d 65 6e 74 73 20 66 69 6e 69 73 68 2e 0a 3c 2f  ments finish..</
1ed0: 70 3e 0a 0a 3c 70 3e 0a 41 6e 20 61 74 74 65 6d  p>..<p>.An attem
1ee0: 70 74 20 74 6f 20 65 78 65 63 75 74 65 20 43 4f  pt to execute CO
1ef0: 4d 4d 49 54 20 6d 69 67 68 74 20 72 65 73 75 6c  MMIT might resul
1f00: 74 20 69 6e 20 61 6e 20 53 51 4c 49 54 45 5f 42  t in an SQLITE_B
1f10: 55 53 59 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  USY return code.
1f20: 0a 54 68 69 73 20 69 6e 64 69 63 61 74 65 73 20  .This indicates 
1f30: 74 68 61 74 20 61 6e 6f 74 68 65 72 20 74 68 72  that another thr
1f40: 65 61 64 20 6f 72 20 70 72 6f 63 65 73 73 20 68  ead or process h
1f50: 61 64 20 61 20 72 65 61 64 20 6c 6f 63 6b 20 6f  ad a read lock o
1f60: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 0a 74  n the database.t
1f70: 68 61 74 20 70 72 65 76 65 6e 74 65 64 20 74 68  hat prevented th
1f80: 65 20 64 61 74 61 62 61 73 65 20 66 72 6f 6d 20  e database from 
1f90: 62 65 69 6e 67 20 75 70 64 61 74 65 64 2e 20 20  being updated.  
1fa0: 57 68 65 6e 20 43 4f 4d 4d 49 54 20 66 61 69 6c  When COMMIT fail
1fb0: 73 20 69 6e 20 74 68 69 73 0a 77 61 79 2c 20 74  s in this.way, t
1fc0: 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 72  he transaction r
1fd0: 65 6d 61 69 6e 73 20 61 63 74 69 76 65 20 61 6e  emains active an
1fe0: 64 20 74 68 65 20 43 4f 4d 4d 49 54 20 63 61 6e  d the COMMIT can
1ff0: 20 62 65 20 72 65 74 72 69 65 64 20 6c 61 74 65   be retried late
2000: 72 0a 61 66 74 65 72 20 74 68 65 20 72 65 61 64  r.after the read
2010: 65 72 20 68 61 73 20 68 61 64 20 61 20 63 68 61  er has had a cha
2020: 6e 63 65 20 74 6f 20 63 6c 65 61 72 2e 0a 3c 2f  nce to clear..</
2030: 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 63  p>.}...Section c
2040: 6f 6d 6d 65 6e 74 20 63 6f 6d 6d 65 6e 74 0a 0a  omment comment..
2050: 53 79 6e 74 61 78 20 7b 63 6f 6d 6d 65 6e 74 7d  Syntax {comment}
2060: 20 7b 3c 53 51 4c 2d 63 6f 6d 6d 65 6e 74 3e 20   {<SQL-comment> 
2070: 7c 20 3c 43 2d 63 6f 6d 6d 65 6e 74 3e 0a 7d 20  | <C-comment>.} 
2080: 7b 53 51 4c 2d 63 6f 6d 6d 65 6e 74 7d 20 7b 2d  {SQL-comment} {-
2090: 2d 20 3c 73 69 6e 67 6c 65 2d 6c 69 6e 65 3e 0a  - <single-line>.
20a0: 7d 20 7b 43 2d 63 6f 6d 6d 65 6e 74 7d 20 7b 2f  } {C-comment} {/
20b0: 53 54 41 52 20 3c 6d 75 6c 74 69 70 6c 65 2d 6c  STAR <multiple-l
20c0: 69 6e 65 73 3e 20 5b 53 54 41 52 2f 5d 0a 7d 0a  ines> [STAR/].}.
20d0: 0a 70 75 74 73 20 7b 0a 3c 70 3e 20 43 6f 6d 6d  .puts {.<p> Comm
20e0: 65 6e 74 73 20 61 72 65 6e 27 74 20 53 51 4c 20  ents aren't SQL 
20f0: 63 6f 6d 6d 61 6e 64 73 2c 20 62 75 74 20 63 61  commands, but ca
2100: 6e 20 6f 63 63 75 72 20 69 6e 20 53 51 4c 20 71  n occur in SQL q
2110: 75 65 72 69 65 73 2e 20 54 68 65 79 20 61 72 65  ueries. They are
2120: 20 0a 74 72 65 61 74 65 64 20 61 73 20 77 68 69   .treated as whi
2130: 74 65 73 70 61 63 65 20 62 79 20 74 68 65 20 70  tespace by the p
2140: 61 72 73 65 72 2e 20 20 54 68 65 79 20 63 61 6e  arser.  They can
2150: 20 62 65 67 69 6e 20 61 6e 79 77 68 65 72 65 20   begin anywhere 
2160: 77 68 69 74 65 73 70 61 63 65 20 0a 63 61 6e 20  whitespace .can 
2170: 62 65 20 66 6f 75 6e 64 2c 20 69 6e 63 6c 75 64  be found, includ
2180: 69 6e 67 20 69 6e 73 69 64 65 20 65 78 70 72 65  ing inside expre
2190: 73 73 69 6f 6e 73 20 74 68 61 74 20 73 70 61 6e  ssions that span
21a0: 20 6d 75 6c 74 69 70 6c 65 20 6c 69 6e 65 73 2e   multiple lines.
21b0: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 20 53 51 4c 20 63  .</p>..<p> SQL c
21c0: 6f 6d 6d 65 6e 74 73 20 6f 6e 6c 79 20 65 78 74  omments only ext
21d0: 65 6e 64 20 74 6f 20 74 68 65 20 65 6e 64 20 6f  end to the end o
21e0: 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 6c 69  f the current li
21f0: 6e 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20 43 20 63  ne.</p>..<p> C c
2200: 6f 6d 6d 65 6e 74 73 20 63 61 6e 20 73 70 61 6e  omments can span
2210: 20 61 6e 79 20 6e 75 6d 62 65 72 20 6f 66 20 6c   any number of l
2220: 69 6e 65 73 2e 20 20 49 66 20 74 68 65 72 65 20  ines.  If there 
2230: 69 73 20 6e 6f 20 74 65 72 6d 69 6e 61 74 69 6e  is no terminatin
2240: 67 0a 64 65 6c 69 6d 69 74 65 72 2c 20 74 68 65  g.delimiter, the
2250: 79 20 65 78 74 65 6e 64 20 74 6f 20 74 68 65 20  y extend to the 
2260: 65 6e 64 20 6f 66 20 74 68 65 20 69 6e 70 75 74  end of the input
2270: 2e 20 20 54 68 69 73 20 69 73 20 6e 6f 74 20 74  .  This is not t
2280: 72 65 61 74 65 64 20 61 73 0a 61 6e 20 65 72 72  reated as.an err
2290: 6f 72 2e 20 20 41 20 6e 65 77 20 53 51 4c 20 73  or.  A new SQL s
22a0: 74 61 74 65 6d 65 6e 74 20 63 61 6e 20 62 65 67  tatement can beg
22b0: 69 6e 20 6f 6e 20 61 20 6c 69 6e 65 20 61 66 74  in on a line aft
22c0: 65 72 20 61 20 6d 75 6c 74 69 6c 69 6e 65 0a 63  er a multiline.c
22d0: 6f 6d 6d 65 6e 74 20 65 6e 64 73 2e 20 20 43 20  omment ends.  C 
22e0: 63 6f 6d 6d 65 6e 74 73 20 63 61 6e 20 62 65 20  comments can be 
22f0: 65 6d 62 65 64 64 65 64 20 61 6e 79 77 68 65 72  embedded anywher
2300: 65 20 77 68 69 74 65 73 70 61 63 65 20 63 61 6e  e whitespace can
2310: 20 6f 63 63 75 72 2c 0a 69 6e 63 6c 75 64 69 6e   occur,.includin
2320: 67 20 69 6e 73 69 64 65 20 65 78 70 72 65 73 73  g inside express
2330: 69 6f 6e 73 2c 20 61 6e 64 20 69 6e 20 74 68 65  ions, and in the
2340: 20 6d 69 64 64 6c 65 20 6f 66 20 6f 74 68 65 72   middle of other
2350: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e   SQL statements.
2360: 0a 43 20 63 6f 6d 6d 65 6e 74 73 20 64 6f 20 6e  .C comments do n
2370: 6f 74 20 6e 65 73 74 2e 20 20 53 51 4c 20 63 6f  ot nest.  SQL co
2380: 6d 6d 65 6e 74 73 20 69 6e 73 69 64 65 20 61 20  mments inside a 
2390: 43 20 63 6f 6d 6d 65 6e 74 20 77 69 6c 6c 20 62  C comment will b
23a0: 65 20 69 67 6e 6f 72 65 64 2e 0a 3c 2f 70 3e 0a  e ignored..</p>.
23b0: 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 43 4f 50 59  }...Section COPY
23c0: 20 63 6f 70 79 0a 0a 53 79 6e 74 61 78 20 7b 73   copy..Syntax {s
23d0: 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a  ql-statement} {.
23e0: 43 4f 50 59 20 5b 20 4f 52 20 3c 63 6f 6e 66 6c  COPY [ OR <confl
23f0: 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d 3e 20 5d  ict-algorithm> ]
2400: 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65   [<database-name
2410: 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65  > .] <table-name
2420: 3e 20 46 52 4f 4d 20 3c 66 69 6c 65 6e 61 6d 65  > FROM <filename
2430: 3e 0a 5b 20 55 53 49 4e 47 20 44 45 4c 49 4d 49  >.[ USING DELIMI
2440: 54 45 52 53 20 3c 64 65 6c 69 6d 3e 20 5d 0a 7d  TERS <delim> ].}
2450: 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20  ..puts {.<p>The 
2460: 43 4f 50 59 20 63 6f 6d 6d 61 6e 64 20 69 73 20  COPY command is 
2470: 61 76 61 69 6c 61 62 6c 65 20 69 6e 20 53 51 4c  available in SQL
2480: 69 74 65 20 76 65 72 73 69 6f 6e 20 32 2e 38 20  ite version 2.8 
2490: 61 6e 64 20 65 61 72 6c 69 65 72 2e 0a 54 68 65  and earlier..The
24a0: 20 43 4f 50 59 20 63 6f 6d 6d 61 6e 64 20 68 61   COPY command ha
24b0: 73 20 62 65 65 6e 20 72 65 6d 6f 76 65 64 20 66  s been removed f
24c0: 72 6f 6d 20 53 51 4c 69 74 65 20 76 65 72 73 69  rom SQLite versi
24d0: 6f 6e 20 33 2e 30 20 64 75 65 20 74 6f 0a 63 6f  on 3.0 due to.co
24e0: 6d 70 6c 69 63 61 74 69 6f 6e 73 20 69 6e 20 74  mplications in t
24f0: 72 79 69 6e 67 20 74 6f 20 73 75 70 70 6f 72 74  rying to support
2500: 20 69 74 20 69 6e 20 61 20 6d 69 78 65 64 20 55   it in a mixed U
2510: 54 46 2d 38 2f 31 36 20 65 6e 76 69 72 6f 6e 6d  TF-8/16 environm
2520: 65 6e 74 2e 0a 49 6e 20 76 65 72 73 69 6f 6e 20  ent..In version 
2530: 33 2e 30 2c 20 74 68 65 20 3c 61 20 68 72 65 66  3.0, the <a href
2540: 3d 22 73 71 6c 69 74 65 2e 68 74 6d 6c 22 3e 63  ="sqlite.html">c
2550: 6f 6d 6d 61 6e 64 2d 6c 69 6e 65 20 73 68 65 6c  ommand-line shel
2560: 6c 3c 2f 61 3e 0a 63 6f 6e 74 61 69 6e 73 20 61  l</a>.contains a
2570: 20 6e 65 77 20 63 6f 6d 6d 61 6e 64 20 3c 62 3e   new command <b>
2580: 2e 69 6d 70 6f 72 74 3c 2f 62 3e 20 74 68 61 74  .import</b> that
2590: 20 63 61 6e 20 62 65 20 75 73 65 64 20 61 73 20   can be used as 
25a0: 61 20 73 75 62 73 74 69 74 75 74 65 0a 66 6f 72  a substitute.for
25b0: 20 43 4f 50 59 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e   COPY..</p>..<p>
25c0: 54 68 65 20 43 4f 50 59 20 63 6f 6d 6d 61 6e 64  The COPY command
25d0: 20 69 73 20 61 6e 20 65 78 74 65 6e 73 69 6f 6e   is an extension
25e0: 20 75 73 65 64 20 74 6f 20 6c 6f 61 64 20 6c 61   used to load la
25f0: 72 67 65 20 61 6d 6f 75 6e 74 73 20 6f 66 0a 64  rge amounts of.d
2600: 61 74 61 20 69 6e 74 6f 20 61 20 74 61 62 6c 65  ata into a table
2610: 2e 20 20 49 74 20 69 73 20 6d 6f 64 65 6c 65 64  .  It is modeled
2620: 20 61 66 74 65 72 20 61 20 73 69 6d 69 6c 61 72   after a similar
2630: 20 63 6f 6d 6d 61 6e 64 20 66 6f 75 6e 64 0a 69   command found.i
2640: 6e 20 50 6f 73 74 67 72 65 53 51 4c 2e 20 20 49  n PostgreSQL.  I
2650: 6e 20 66 61 63 74 2c 20 74 68 65 20 53 51 4c 69  n fact, the SQLi
2660: 74 65 20 43 4f 50 59 20 63 6f 6d 6d 61 6e 64 20  te COPY command 
2670: 69 73 20 73 70 65 63 69 66 69 63 61 6c 6c 79 0a  is specifically.
2680: 64 65 73 69 67 6e 65 64 20 74 6f 20 62 65 20 61  designed to be a
2690: 62 6c 65 20 74 6f 20 72 65 61 64 20 74 68 65 20  ble to read the 
26a0: 6f 75 74 70 75 74 20 6f 66 20 74 68 65 20 50 6f  output of the Po
26b0: 73 74 67 72 65 53 51 4c 20 64 75 6d 70 0a 75 74  stgreSQL dump.ut
26c0: 69 6c 69 74 79 20 3c 62 3e 70 67 5f 64 75 6d 70  ility <b>pg_dump
26d0: 3c 2f 62 3e 20 73 6f 20 74 68 61 74 20 64 61 74  </b> so that dat
26e0: 61 20 63 61 6e 20 62 65 20 65 61 73 69 6c 79 20  a can be easily 
26f0: 74 72 61 6e 73 66 65 72 72 65 64 20 66 72 6f 6d  transferred from
2700: 0a 50 6f 73 74 67 72 65 53 51 4c 20 69 6e 74 6f  .PostgreSQL into
2710: 20 53 51 4c 69 74 65 2e 3c 2f 70 3e 0a 0a 3c 70   SQLite.</p>..<p
2720: 3e 54 68 65 20 74 61 62 6c 65 2d 6e 61 6d 65 20  >The table-name 
2730: 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61  is the name of a
2740: 6e 20 65 78 69 73 74 69 6e 67 20 74 61 62 6c 65  n existing table
2750: 20 77 68 69 63 68 20 69 73 20 74 6f 0a 62 65 20   which is to.be 
2760: 66 69 6c 6c 65 64 20 77 69 74 68 20 64 61 74 61  filled with data
2770: 2e 20 20 54 68 65 20 66 69 6c 65 6e 61 6d 65 20  .  The filename 
2780: 69 73 20 61 20 73 74 72 69 6e 67 20 6f 72 20 69  is a string or i
2790: 64 65 6e 74 69 66 69 65 72 20 74 68 61 74 0a 6e  dentifier that.n
27a0: 61 6d 65 73 20 61 20 66 69 6c 65 20 66 72 6f 6d  ames a file from
27b0: 20 77 68 69 63 68 20 64 61 74 61 20 77 69 6c 6c   which data will
27c0: 20 62 65 20 72 65 61 64 2e 20 20 54 68 65 20 66   be read.  The f
27d0: 69 6c 65 6e 61 6d 65 20 63 61 6e 20 62 65 0a 74  ilename can be.t
27e0: 68 65 20 3c 62 3e 53 54 44 49 4e 3c 2f 62 3e 20  he <b>STDIN</b> 
27f0: 74 6f 20 72 65 61 64 20 64 61 74 61 20 66 72 6f  to read data fro
2800: 6d 20 73 74 61 6e 64 61 72 64 20 69 6e 70 75 74  m standard input
2810: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 45 61 63 68 20 6c  .</p>..<p>Each l
2820: 69 6e 65 20 6f 66 20 74 68 65 20 69 6e 70 75 74  ine of the input
2830: 20 66 69 6c 65 20 69 73 20 63 6f 6e 76 65 72 74   file is convert
2840: 65 64 20 69 6e 74 6f 20 61 20 73 69 6e 67 6c 65  ed into a single
2850: 20 72 65 63 6f 72 64 0a 69 6e 20 74 68 65 20 74   record.in the t
2860: 61 62 6c 65 2e 20 20 43 6f 6c 75 6d 6e 73 20 61  able.  Columns a
2870: 72 65 20 73 65 70 61 72 61 74 65 64 20 62 79 20  re separated by 
2880: 74 61 62 73 2e 20 20 49 66 20 61 20 74 61 62 20  tabs.  If a tab 
2890: 6f 63 63 75 72 73 20 61 73 0a 64 61 74 61 20 77  occurs as.data w
28a0: 69 74 68 69 6e 20 61 20 63 6f 6c 75 6d 6e 2c 20  ithin a column, 
28b0: 74 68 65 6e 20 74 68 61 74 20 74 61 62 20 69 73  then that tab is
28c0: 20 70 72 65 63 65 64 65 64 20 62 79 20 61 20 62   preceded by a b
28d0: 61 73 6b 73 6c 61 73 68 20 22 5c 22 0a 63 68 61  askslash "\".cha
28e0: 72 61 63 74 65 72 2e 20 20 41 20 62 61 73 6b 73  racter.  A basks
28f0: 6c 61 73 68 20 69 6e 20 74 68 65 20 64 61 74 61  lash in the data
2900: 20 61 70 70 65 61 72 73 20 61 73 20 74 77 6f 20   appears as two 
2910: 62 61 63 6b 73 6c 61 73 68 65 73 20 69 6e 0a 61  backslashes in.a
2920: 20 72 6f 77 2e 20 20 54 68 65 20 6f 70 74 69 6f   row.  The optio
2930: 6e 61 6c 20 55 53 49 4e 47 20 44 45 4c 49 4d 49  nal USING DELIMI
2940: 54 45 52 53 20 63 6c 61 75 73 65 20 63 61 6e 20  TERS clause can 
2950: 73 70 65 63 69 66 79 20 61 20 64 65 6c 69 6d 69  specify a delimi
2960: 74 65 72 0a 6f 74 68 65 72 20 74 68 61 6e 20 74  ter.other than t
2970: 61 62 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 61  ab.</p>..<p>If a
2980: 20 63 6f 6c 75 6d 6e 20 63 6f 6e 73 69 73 74 73   column consists
2990: 20 6f 66 20 74 68 65 20 63 68 61 72 61 63 74 65   of the characte
29a0: 72 20 22 5c 4e 22 2c 20 74 68 61 74 20 63 6f 6c  r "\N", that col
29b0: 75 6d 6e 20 69 73 20 66 69 6c 6c 65 64 0a 77 69  umn is filled.wi
29c0: 74 68 20 74 68 65 20 76 61 6c 75 65 20 4e 55 4c  th the value NUL
29d0: 4c 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f  L.</p>..<p>The o
29e0: 70 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74  ptional conflict
29f0: 2d 63 6c 61 75 73 65 20 61 6c 6c 6f 77 73 20 74  -clause allows t
2a00: 68 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e  he specification
2a10: 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69   of an alternati
2a20: 76 65 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f  ve.constraint co
2a30: 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f  nflict resolutio
2a40: 6e 20 61 6c 67 6f 72 69 74 68 6d 20 74 6f 20 75  n algorithm to u
2a50: 73 65 20 66 6f 72 20 74 68 69 73 20 6f 6e 65 20  se for this one 
2a60: 63 6f 6d 6d 61 6e 64 2e 0a 53 65 65 20 74 68 65  command..See the
2a70: 20 73 65 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a   section titled.
2a80: 3c 61 20 68 72 65 66 3d 22 23 63 6f 6e 66 6c 69  <a href="#confli
2a90: 63 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54 3c  ct">ON CONFLICT<
2aa0: 2f 61 3e 20 66 6f 72 20 61 64 64 69 74 69 6f 6e  /a> for addition
2ab0: 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c  al information.<
2ac0: 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20 74 68 65  /p>..<p>When the
2ad0: 20 69 6e 70 75 74 20 64 61 74 61 20 73 6f 75 72   input data sour
2ae0: 63 65 20 69 73 20 53 54 44 49 4e 2c 20 74 68 65  ce is STDIN, the
2af0: 20 69 6e 70 75 74 20 63 61 6e 20 62 65 20 74 65   input can be te
2b00: 72 6d 69 6e 61 74 65 64 0a 62 79 20 61 20 6c 69  rminated.by a li
2b10: 6e 65 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73  ne that contains
2b20: 20 6f 6e 6c 79 20 61 20 62 61 73 6b 73 6c 61 73   only a baskslas
2b30: 68 20 61 6e 64 20 61 20 64 6f 74 3a 7d 0a 70 75  h and a dot:}.pu
2b40: 74 73 20 22 5c 22 5b 4f 70 65 72 61 74 6f 72 20  ts "\"[Operator 
2b50: 5c 5c 2e 5d 5c 22 2e 3c 2f 70 3e 22 0a 0a 0a 53  \\.]\".</p>"...S
2b60: 65 63 74 69 6f 6e 20 7b 43 52 45 41 54 45 20 49  ection {CREATE I
2b70: 4e 44 45 58 7d 20 63 72 65 61 74 65 69 6e 64 65  NDEX} createinde
2b80: 78 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73  x..Syntax {sql-s
2b90: 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 43 52 45 41  tatement} {.CREA
2ba0: 54 45 20 5b 55 4e 49 51 55 45 5d 20 49 4e 44 45  TE [UNIQUE] INDE
2bb0: 58 20 3c 69 6e 64 65 78 2d 6e 61 6d 65 3e 20 0a  X <index-name> .
2bc0: 4f 4e 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61  ON [<database-na
2bd0: 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61  me> .] <table-na
2be0: 6d 65 3e 20 28 20 3c 63 6f 6c 75 6d 6e 2d 6e 61  me> ( <column-na
2bf0: 6d 65 3e 20 5b 2c 20 3c 63 6f 6c 75 6d 6e 2d 6e  me> [, <column-n
2c00: 61 6d 65 3e 5d 2a 20 29 0a 5b 20 4f 4e 20 43 4f  ame>]* ).[ ON CO
2c10: 4e 46 4c 49 43 54 20 3c 63 6f 6e 66 6c 69 63 74  NFLICT <conflict
2c20: 2d 61 6c 67 6f 72 69 74 68 6d 3e 20 5d 0a 7d 20  -algorithm> ].} 
2c30: 7b 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 7d 20 7b 0a  {column-name} {.
2c40: 3c 6e 61 6d 65 3e 20 5b 20 43 4f 4c 4c 41 54 45  <name> [ COLLATE
2c50: 20 3c 63 6f 6c 6c 61 74 69 6f 6e 2d 6e 61 6d 65   <collation-name
2c60: 3e 5d 20 5b 20 41 53 43 20 7c 20 44 45 53 43 20  >] [ ASC | DESC 
2c70: 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54  ].}..puts {.<p>T
2c80: 68 65 20 43 52 45 41 54 45 20 49 4e 44 45 58 20  he CREATE INDEX 
2c90: 63 6f 6d 6d 61 6e 64 20 63 6f 6e 73 69 73 74 73  command consists
2ca0: 20 6f 66 20 74 68 65 20 6b 65 79 77 6f 72 64 73   of the keywords
2cb0: 20 22 43 52 45 41 54 45 20 49 4e 44 45 58 22 20   "CREATE INDEX" 
2cc0: 66 6f 6c 6c 6f 77 65 64 0a 62 79 20 74 68 65 20  followed.by the 
2cd0: 6e 61 6d 65 20 6f 66 20 74 68 65 20 6e 65 77 20  name of the new 
2ce0: 69 6e 64 65 78 2c 20 74 68 65 20 6b 65 79 77 6f  index, the keywo
2cf0: 72 64 20 22 4f 4e 22 2c 20 74 68 65 20 6e 61 6d  rd "ON", the nam
2d00: 65 20 6f 66 20 61 20 70 72 65 76 69 6f 75 73 6c  e of a previousl
2d10: 79 0a 63 72 65 61 74 65 64 20 74 61 62 6c 65 20  y.created table 
2d20: 74 68 61 74 20 69 73 20 74 6f 20 62 65 20 69 6e  that is to be in
2d30: 64 65 78 65 64 2c 20 61 6e 64 20 61 20 70 61 72  dexed, and a par
2d40: 65 6e 74 68 65 73 69 7a 65 64 20 6c 69 73 74 20  enthesized list 
2d50: 6f 66 20 6e 61 6d 65 73 20 6f 66 0a 63 6f 6c 75  of names of.colu
2d60: 6d 6e 73 20 69 6e 20 74 68 65 20 74 61 62 6c 65  mns in the table
2d70: 20 74 68 61 74 20 61 72 65 20 75 73 65 64 20 66   that are used f
2d80: 6f 72 20 74 68 65 20 69 6e 64 65 78 20 6b 65 79  or the index key
2d90: 2e 0a 45 61 63 68 20 63 6f 6c 75 6d 6e 20 6e 61  ..Each column na
2da0: 6d 65 20 63 61 6e 20 62 65 20 66 6f 6c 6c 6f 77  me can be follow
2db0: 65 64 20 62 79 20 6f 6e 65 20 6f 66 20 74 68 65  ed by one of the
2dc0: 20 22 41 53 43 22 20 6f 72 20 22 44 45 53 43 22   "ASC" or "DESC"
2dd0: 20 6b 65 79 77 6f 72 64 73 0a 74 6f 20 69 6e 64   keywords.to ind
2de0: 69 63 61 74 65 20 73 6f 72 74 20 6f 72 64 65 72  icate sort order
2df0: 2c 20 62 75 74 20 74 68 65 20 73 6f 72 74 20 6f  , but the sort o
2e00: 72 64 65 72 20 69 73 20 69 67 6e 6f 72 65 64 20  rder is ignored 
2e10: 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 0a 69  in the current.i
2e20: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 20 20  mplementation.  
2e30: 53 6f 72 74 69 6e 67 20 69 73 20 61 6c 77 61 79  Sorting is alway
2e40: 73 20 64 6f 6e 65 20 69 6e 20 61 73 63 65 6e 64  s done in ascend
2e50: 69 6e 67 20 6f 72 64 65 72 2e 3c 2f 70 3e 0a 0a  ing order.</p>..
2e60: 3c 70 3e 54 68 65 20 43 4f 4c 4c 41 54 45 20 63  <p>The COLLATE c
2e70: 6c 61 75 73 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  lause following 
2e80: 65 61 63 68 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65  each column name
2e90: 20 64 65 66 69 6e 65 73 20 61 20 63 6f 6c 6c 61   defines a colla
2ea0: 74 69 6e 67 0a 73 65 71 75 65 6e 63 65 20 75 73  ting.sequence us
2eb0: 65 64 20 66 6f 72 20 74 65 78 74 20 65 6e 74 69  ed for text enti
2ec0: 72 65 73 20 69 6e 20 74 68 61 74 20 63 6f 6c 75  res in that colu
2ed0: 6d 6e 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74  mn.  The default
2ee0: 20 63 6f 6c 6c 61 74 69 6e 67 0a 73 65 71 75 65   collating.seque
2ef0: 6e 63 65 20 69 73 20 74 68 65 20 63 6f 6c 6c 61  nce is the colla
2f00: 74 69 6e 67 20 73 65 71 75 65 6e 63 65 20 64 65  ting sequence de
2f10: 66 69 6e 65 64 20 66 6f 72 20 74 68 61 74 20 63  fined for that c
2f20: 6f 6c 75 6d 6e 20 69 6e 20 74 68 65 0a 43 52 45  olumn in the.CRE
2f30: 41 54 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d  ATE TABLE statem
2f40: 65 6e 74 2e 20 20 4f 72 20 69 66 20 6e 6f 20 63  ent.  Or if no c
2f50: 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63  ollating sequenc
2f60: 65 20 69 73 20 6f 74 68 65 72 77 69 73 65 20 64  e is otherwise d
2f70: 65 66 69 6e 65 64 2c 0a 74 68 65 20 62 75 69 6c  efined,.the buil
2f80: 74 2d 69 6e 20 42 49 4e 41 52 59 20 63 6f 6c 6c  t-in BINARY coll
2f90: 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65 20 69  ating sequence i
2fa0: 73 20 75 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e  s used.</p>..<p>
2fb0: 54 68 65 72 65 20 61 72 65 20 6e 6f 20 61 72 62  There are no arb
2fc0: 69 74 72 61 72 79 20 6c 69 6d 69 74 73 20 6f 6e  itrary limits on
2fd0: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 69   the number of i
2fe0: 6e 64 69 63 65 73 20 74 68 61 74 20 63 61 6e 20  ndices that can 
2ff0: 62 65 0a 61 74 74 61 63 68 65 64 20 74 6f 20 61  be.attached to a
3000: 20 73 69 6e 67 6c 65 20 74 61 62 6c 65 2c 20 6e   single table, n
3010: 6f 72 20 6f 6e 20 74 68 65 20 6e 75 6d 62 65 72  or on the number
3020: 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 61   of columns in a
3030: 6e 20 69 6e 64 65 78 2e 3c 2f 70 3e 0a 0a 3c 70  n index.</p>..<p
3040: 3e 49 66 20 74 68 65 20 55 4e 49 51 55 45 20 6b  >If the UNIQUE k
3050: 65 79 77 6f 72 64 20 61 70 70 65 61 72 73 20 62  eyword appears b
3060: 65 74 77 65 65 6e 20 43 52 45 41 54 45 20 61 6e  etween CREATE an
3070: 64 20 49 4e 44 45 58 20 74 68 65 6e 20 64 75 70  d INDEX then dup
3080: 6c 69 63 61 74 65 0a 69 6e 64 65 78 20 65 6e 74  licate.index ent
3090: 72 69 65 73 20 61 72 65 20 6e 6f 74 20 61 6c 6c  ries are not all
30a0: 6f 77 65 64 2e 20 20 41 6e 79 20 61 74 74 65 6d  owed.  Any attem
30b0: 70 74 20 74 6f 20 69 6e 73 65 72 74 20 61 20 64  pt to insert a d
30c0: 75 70 6c 69 63 61 74 65 20 65 6e 74 72 79 0a 77  uplicate entry.w
30d0: 69 6c 6c 20 72 65 73 75 6c 74 20 69 6e 20 61 6e  ill result in an
30e0: 20 65 72 72 6f 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e   error.</p>..<p>
30f0: 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e  The optional con
3100: 66 6c 69 63 74 2d 63 6c 61 75 73 65 20 61 6c 6c  flict-clause all
3110: 6f 77 73 20 74 68 65 20 73 70 65 63 69 66 69 63  ows the specific
3120: 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61 6c 74 65  ation of an alte
3130: 72 6e 61 74 69 76 65 0a 64 65 66 61 75 6c 74 20  rnative.default 
3140: 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c  constraint confl
3150: 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61  ict resolution a
3160: 6c 67 6f 72 69 74 68 6d 20 66 6f 72 20 74 68 69  lgorithm for thi
3170: 73 20 69 6e 64 65 78 2e 0a 54 68 69 73 20 6f 6e  s index..This on
3180: 6c 79 20 6d 61 6b 65 73 20 73 65 6e 73 65 20 69  ly makes sense i
3190: 66 20 74 68 65 20 55 4e 49 51 55 45 20 6b 65 79  f the UNIQUE key
31a0: 77 6f 72 64 20 69 73 20 75 73 65 64 20 73 69 6e  word is used sin
31b0: 63 65 20 6f 74 68 65 72 77 69 73 65 0a 74 68 65  ce otherwise.the
31c0: 72 65 20 61 72 65 20 6e 6f 74 20 63 6f 6e 73 74  re are not const
31d0: 72 61 69 6e 74 73 20 6f 6e 20 74 68 65 20 69 6e  raints on the in
31e0: 64 65 78 2e 20 20 54 68 65 20 64 65 66 61 75 6c  dex.  The defaul
31f0: 74 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 0a 41  t algorithm is.A
3200: 42 4f 52 54 2e 20 20 49 66 20 61 20 43 4f 50 59  BORT.  If a COPY
3210: 2c 20 49 4e 53 45 52 54 2c 20 6f 72 20 55 50 44  , INSERT, or UPD
3220: 41 54 45 20 73 74 61 74 65 6d 65 6e 74 20 73 70  ATE statement sp
3230: 65 63 69 66 69 65 73 20 61 20 70 61 72 74 69 63  ecifies a partic
3240: 75 6c 61 72 0a 63 6f 6e 66 6c 69 63 74 20 72 65  ular.conflict re
3250: 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74  solution algorit
3260: 68 6d 2c 20 74 68 61 74 20 61 6c 67 6f 72 69 74  hm, that algorit
3270: 68 6d 20 69 73 20 75 73 65 64 20 69 6e 20 70 6c  hm is used in pl
3280: 61 63 65 20 6f 66 0a 74 68 65 20 64 65 66 61 75  ace of.the defau
3290: 6c 74 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65  lt algorithm spe
32a0: 63 69 66 69 65 64 20 68 65 72 65 2e 0a 53 65 65  cified here..See
32b0: 20 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69 74   the section tit
32c0: 6c 65 64 0a 3c 61 20 68 72 65 66 3d 22 23 63 6f  led.<a href="#co
32d0: 6e 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e 46 4c  nflict">ON CONFL
32e0: 49 43 54 3c 2f 61 3e 20 66 6f 72 20 61 64 64 69  ICT</a> for addi
32f0: 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69  tional informati
3300: 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  on.</p>..<p>The 
3310: 65 78 61 63 74 20 74 65 78 74 0a 6f 66 20 65 61  exact text.of ea
3320: 63 68 20 43 52 45 41 54 45 20 49 4e 44 45 58 20  ch CREATE INDEX 
3330: 73 74 61 74 65 6d 65 6e 74 20 69 73 20 73 74 6f  statement is sto
3340: 72 65 64 20 69 6e 20 74 68 65 20 3c 62 3e 73 71  red in the <b>sq
3350: 6c 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 0a  lite_master</b>.
3360: 6f 72 20 3c 62 3e 73 71 6c 69 74 65 5f 74 65 6d  or <b>sqlite_tem
3370: 70 5f 6d 61 73 74 65 72 3c 2f 62 3e 20 74 61 62  p_master</b> tab
3380: 6c 65 2c 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e  le, depending on
3390: 20 77 68 65 74 68 65 72 20 74 68 65 20 74 61 62   whether the tab
33a0: 6c 65 0a 62 65 69 6e 67 20 69 6e 64 65 78 65 64  le.being indexed
33b0: 20 69 73 20 74 65 6d 70 6f 72 61 72 79 2e 20 20   is temporary.  
33c0: 45 76 65 72 79 20 74 69 6d 65 20 74 68 65 20 64  Every time the d
33d0: 61 74 61 62 61 73 65 20 69 73 20 6f 70 65 6e 65  atabase is opene
33e0: 64 2c 0a 61 6c 6c 20 43 52 45 41 54 45 20 49 4e  d,.all CREATE IN
33f0: 44 45 58 20 73 74 61 74 65 6d 65 6e 74 73 0a 61  DEX statements.a
3400: 72 65 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65  re read from the
3410: 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61 73 74 65   <b>sqlite_maste
3420: 72 3c 2f 62 3e 20 74 61 62 6c 65 20 61 6e 64 20  r</b> table and 
3430: 75 73 65 64 20 74 6f 20 72 65 67 65 6e 65 72 61  used to regenera
3440: 74 65 0a 53 51 4c 69 74 65 27 73 20 69 6e 74 65  te.SQLite's inte
3450: 72 6e 61 6c 20 72 65 70 72 65 73 65 6e 74 61 74  rnal representat
3460: 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 64 65 78  ion of the index
3470: 20 6c 61 79 6f 75 74 2e 3c 2f 70 3e 0a 0a 3c 70   layout.</p>..<p
3480: 3e 49 6e 64 65 78 65 73 20 61 72 65 20 72 65 6d  >Indexes are rem
3490: 6f 76 65 64 20 77 69 74 68 20 74 68 65 20 3c 61  oved with the <a
34a0: 20 68 72 65 66 3d 22 23 64 72 6f 70 69 6e 64 65   href="#dropinde
34b0: 78 22 3e 44 52 4f 50 20 49 4e 44 45 58 3c 2f 61  x">DROP INDEX</a
34c0: 3e 20 0a 63 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a  > .command.</p>.
34d0: 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45  }...Section {CRE
34e0: 41 54 45 20 54 41 42 4c 45 7d 20 7b 63 72 65 61  ATE TABLE} {crea
34f0: 74 65 74 61 62 6c 65 7d 0a 0a 53 79 6e 74 61 78  tetable}..Syntax
3500: 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b   {sql-command} {
3510: 0a 43 52 45 41 54 45 20 5b 54 45 4d 50 20 7c 20  .CREATE [TEMP | 
3520: 54 45 4d 50 4f 52 41 52 59 5d 20 54 41 42 4c 45  TEMPORARY] TABLE
3530: 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 28 0a   <table-name> (.
3540: 20 20 3c 63 6f 6c 75 6d 6e 2d 64 65 66 3e 20 5b    <column-def> [
3550: 2c 20 3c 63 6f 6c 75 6d 6e 2d 64 65 66 3e 5d 2a  , <column-def>]*
3560: 0a 20 20 5b 2c 20 3c 63 6f 6e 73 74 72 61 69 6e  .  [, <constrain
3570: 74 3e 5d 2a 0a 29 0a 7d 20 7b 73 71 6c 2d 63 6f  t>]*.).} {sql-co
3580: 6d 6d 61 6e 64 7d 20 7b 0a 43 52 45 41 54 45 20  mmand} {.CREATE 
3590: 5b 54 45 4d 50 20 7c 20 54 45 4d 50 4f 52 41 52  [TEMP | TEMPORAR
35a0: 59 5d 20 54 41 42 4c 45 20 5b 3c 64 61 74 61 62  Y] TABLE [<datab
35b0: 61 73 65 2d 6e 61 6d 65 3e 2e 5d 20 3c 74 61 62  ase-name>.] <tab
35c0: 6c 65 2d 6e 61 6d 65 3e 20 41 53 20 3c 73 65 6c  le-name> AS <sel
35d0: 65 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e 0a 7d  ect-statement>.}
35e0: 20 7b 63 6f 6c 75 6d 6e 2d 64 65 66 7d 20 7b 0a   {column-def} {.
35f0: 3c 6e 61 6d 65 3e 20 5b 3c 74 79 70 65 3e 5d 20  <name> [<type>] 
3600: 5b 5b 43 4f 4e 53 54 52 41 49 4e 54 20 3c 6e 61  [[CONSTRAINT <na
3610: 6d 65 3e 5d 20 3c 63 6f 6c 75 6d 6e 2d 63 6f 6e  me>] <column-con
3620: 73 74 72 61 69 6e 74 3e 5d 2a 0a 7d 20 7b 74 79  straint>]*.} {ty
3630: 70 65 7d 20 7b 0a 3c 74 79 70 65 6e 61 6d 65 3e  pe} {.<typename>
3640: 20 7c 0a 3c 74 79 70 65 6e 61 6d 65 3e 20 28 20   |.<typename> ( 
3650: 3c 6e 75 6d 62 65 72 3e 20 29 20 7c 0a 3c 74 79  <number> ) |.<ty
3660: 70 65 6e 61 6d 65 3e 20 28 20 3c 6e 75 6d 62 65  pename> ( <numbe
3670: 72 3e 20 2c 20 3c 6e 75 6d 62 65 72 3e 20 29 0a  r> , <number> ).
3680: 7d 20 7b 63 6f 6c 75 6d 6e 2d 63 6f 6e 73 74 72  } {column-constr
3690: 61 69 6e 74 7d 20 7b 0a 4e 4f 54 20 4e 55 4c 4c  aint} {.NOT NULL
36a0: 20 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c 61   [ <conflict-cla
36b0: 75 73 65 3e 20 5d 20 7c 0a 50 52 49 4d 41 52 59  use> ] |.PRIMARY
36c0: 20 4b 45 59 20 5b 3c 73 6f 72 74 2d 6f 72 64 65   KEY [<sort-orde
36d0: 72 3e 5d 20 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d  r>] [ <conflict-
36e0: 63 6c 61 75 73 65 3e 20 5d 20 7c 0a 55 4e 49 51  clause> ] |.UNIQ
36f0: 55 45 20 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d 63  UE [ <conflict-c
3700: 6c 61 75 73 65 3e 20 5d 20 7c 0a 43 48 45 43 4b  lause> ] |.CHECK
3710: 20 28 20 3c 65 78 70 72 3e 20 29 20 5b 20 3c 63   ( <expr> ) [ <c
3720: 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20  onflict-clause> 
3730: 5d 20 7c 0a 44 45 46 41 55 4c 54 20 3c 76 61 6c  ] |.DEFAULT <val
3740: 75 65 3e 20 7c 0a 43 4f 4c 4c 41 54 45 20 3c 63  ue> |.COLLATE <c
3750: 6f 6c 6c 61 74 69 6f 6e 2d 6e 61 6d 65 3e 0a 7d  ollation-name>.}
3760: 20 7b 63 6f 6e 73 74 72 61 69 6e 74 7d 20 7b 0a   {constraint} {.
3770: 50 52 49 4d 41 52 59 20 4b 45 59 20 28 20 3c 63  PRIMARY KEY ( <c
3780: 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 20 29 20 5b 20  olumn-list> ) [ 
3790: 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65  <conflict-clause
37a0: 3e 20 5d 20 7c 0a 55 4e 49 51 55 45 20 28 20 3c  > ] |.UNIQUE ( <
37b0: 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 20 29 20 5b  column-list> ) [
37c0: 20 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73   <conflict-claus
37d0: 65 3e 20 5d 20 7c 0a 43 48 45 43 4b 20 28 20 3c  e> ] |.CHECK ( <
37e0: 65 78 70 72 3e 20 29 20 5b 20 3c 63 6f 6e 66 6c  expr> ) [ <confl
37f0: 69 63 74 2d 63 6c 61 75 73 65 3e 20 5d 0a 7d 20  ict-clause> ].} 
3800: 7b 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65  {conflict-clause
3810: 7d 20 7b 0a 4f 4e 20 43 4f 4e 46 4c 49 43 54 20  } {.ON CONFLICT 
3820: 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69  <conflict-algori
3830: 74 68 6d 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c  thm>.}..puts {.<
3840: 70 3e 41 20 43 52 45 41 54 45 20 54 41 42 4c 45  p>A CREATE TABLE
3850: 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 62 61   statement is ba
3860: 73 69 63 61 6c 6c 79 20 74 68 65 20 6b 65 79 77  sically the keyw
3870: 6f 72 64 73 20 22 43 52 45 41 54 45 20 54 41 42  ords "CREATE TAB
3880: 4c 45 22 0a 66 6f 6c 6c 6f 77 65 64 20 62 79 20  LE".followed by 
3890: 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 6e 65  the name of a ne
38a0: 77 20 74 61 62 6c 65 20 61 6e 64 20 61 20 70 61  w table and a pa
38b0: 72 65 6e 74 68 65 73 69 7a 65 64 20 6c 69 73 74  renthesized list
38c0: 20 6f 66 20 63 6f 6c 75 6d 6e 0a 64 65 66 69 6e   of column.defin
38d0: 69 74 69 6f 6e 73 20 61 6e 64 20 63 6f 6e 73 74  itions and const
38e0: 72 61 69 6e 74 73 2e 20 20 54 68 65 20 74 61 62  raints.  The tab
38f0: 6c 65 20 6e 61 6d 65 20 63 61 6e 20 62 65 20 65  le name can be e
3900: 69 74 68 65 72 20 61 6e 20 69 64 65 6e 74 69 66  ither an identif
3910: 69 65 72 0a 6f 72 20 61 20 73 74 72 69 6e 67 2e  ier.or a string.
3920: 20 20 54 61 62 6c 65 73 20 6e 61 6d 65 73 20 74    Tables names t
3930: 68 61 74 20 62 65 67 69 6e 20 77 69 74 68 20 22  hat begin with "
3940: 3c 62 3e 73 71 6c 69 74 65 5f 3c 2f 62 3e 22 20  <b>sqlite_</b>" 
3950: 61 72 65 20 72 65 73 65 72 76 65 64 0a 66 6f 72  are reserved.for
3960: 20 75 73 65 20 62 79 20 74 68 65 20 65 6e 67 69   use by the engi
3970: 6e 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 45 61 63 68  ne.</p>..<p>Each
3980: 20 63 6f 6c 75 6d 6e 20 64 65 66 69 6e 69 74 69   column definiti
3990: 6f 6e 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f  on is the name o
39a0: 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20 66 6f 6c  f the column fol
39b0: 6c 6f 77 65 64 20 62 79 20 74 68 65 0a 64 61 74  lowed by the.dat
39c0: 61 74 79 70 65 20 66 6f 72 20 74 68 61 74 20 63  atype for that c
39d0: 6f 6c 75 6d 6e 2c 20 74 68 65 6e 20 6f 6e 65 20  olumn, then one 
39e0: 6f 72 20 6d 6f 72 65 20 6f 70 74 69 6f 6e 61 6c  or more optional
39f0: 20 63 6f 6c 75 6d 6e 20 63 6f 6e 73 74 72 61 69   column constrai
3a00: 6e 74 73 2e 0a 54 68 65 20 64 61 74 61 74 79 70  nts..The datatyp
3a10: 65 20 66 6f 72 20 74 68 65 20 63 6f 6c 75 6d 6e  e for the column
3a20: 20 64 6f 65 73 20 6e 6f 74 20 72 65 73 74 72 69   does not restri
3a30: 63 74 20 77 68 61 74 20 64 61 74 61 20 6d 61 79  ct what data may
3a40: 20 62 65 20 70 75 74 0a 69 6e 20 74 68 61 74 20   be put.in that 
3a50: 63 6f 6c 75 6d 6e 2e 0a 53 65 65 20 3c 61 20 68  column..See <a h
3a60: 72 65 66 3d 22 64 61 74 61 74 79 70 65 33 2e 68  ref="datatype3.h
3a70: 74 6d 6c 22 3e 44 61 74 61 74 79 70 65 73 20 49  tml">Datatypes I
3a80: 6e 20 53 51 4c 69 74 65 20 56 65 72 73 69 6f 6e  n SQLite Version
3a90: 20 33 3c 2f 61 3e 20 66 6f 72 0a 61 64 64 69 74   3</a> for.addit
3aa0: 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f  ional informatio
3ab0: 6e 2e 0a 54 68 65 20 55 4e 49 51 55 45 20 63 6f  n..The UNIQUE co
3ac0: 6e 73 74 72 61 69 6e 74 20 63 61 75 73 65 73 20  nstraint causes 
3ad0: 61 6e 20 69 6e 64 65 78 20 74 6f 20 62 65 20 63  an index to be c
3ae0: 72 65 61 74 65 64 20 6f 6e 20 74 68 65 20 73 70  reated on the sp
3af0: 65 63 69 66 69 65 64 0a 63 6f 6c 75 6d 6e 73 2e  ecified.columns.
3b00: 20 20 54 68 69 73 20 69 6e 64 65 78 20 6d 75 73    This index mus
3b10: 74 20 63 6f 6e 74 61 69 6e 20 75 6e 69 71 75 65  t contain unique
3b20: 20 6b 65 79 73 2e 0a 54 68 65 20 44 45 46 41 55   keys..The DEFAU
3b30: 4c 54 20 63 6f 6e 73 74 72 61 69 6e 74 0a 73 70  LT constraint.sp
3b40: 65 63 69 66 69 65 73 20 61 20 64 65 66 61 75 6c  ecifies a defaul
3b50: 74 20 76 61 6c 75 65 20 74 6f 20 75 73 65 20 77  t value to use w
3b60: 68 65 6e 20 64 6f 69 6e 67 20 61 6e 20 49 4e 53  hen doing an INS
3b70: 45 52 54 2e 0a 54 68 65 20 43 4f 4c 4c 41 54 45  ERT..The COLLATE
3b80: 20 63 6c 61 75 73 65 20 73 70 65 63 69 66 69 65   clause specifie
3b90: 73 20 77 68 61 74 20 74 65 78 74 20 63 6f 6c 6c  s what text coll
3ba0: 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 74  ating function t
3bb0: 6f 20 75 73 65 0a 77 68 65 6e 20 63 6f 6d 70 61  o use.when compa
3bc0: 72 69 6e 67 20 74 65 78 74 20 65 6e 74 72 69 65  ring text entrie
3bd0: 73 20 66 6f 72 20 74 68 65 20 63 6f 6c 75 6d 6e  s for the column
3be0: 2e 20 20 54 68 65 20 62 75 69 6c 74 2d 69 6e 20  .  The built-in 
3bf0: 42 49 4e 41 52 59 0a 63 6f 6c 6c 61 74 69 6e 67  BINARY.collating
3c00: 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 75 73 65   function is use
3c10: 64 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 3c 2f  d by default..</
3c20: 70 3e 0a 0a 3c 70 3e 53 70 65 63 69 66 79 69 6e  p>..<p>Specifyin
3c30: 67 20 61 20 50 52 49 4d 41 52 59 20 4b 45 59 20  g a PRIMARY KEY 
3c40: 6e 6f 72 6d 61 6c 6c 79 20 6a 75 73 74 20 63 72  normally just cr
3c50: 65 61 74 65 73 20 61 20 55 4e 49 51 55 45 20 69  eates a UNIQUE i
3c60: 6e 64 65 78 0a 6f 6e 20 74 68 65 20 70 72 69 6d  ndex.on the prim
3c70: 61 72 79 20 6b 65 79 2e 20 20 48 6f 77 65 76 65  ary key.  Howeve
3c80: 72 2c 20 69 66 20 70 72 69 6d 61 72 79 20 6b 65  r, if primary ke
3c90: 79 20 69 73 20 6f 6e 20 61 20 73 69 6e 67 6c 65  y is on a single
3ca0: 20 63 6f 6c 75 6d 6e 0a 74 68 61 74 20 68 61 73   column.that has
3cb0: 20 64 61 74 61 74 79 70 65 20 49 4e 54 45 47 45   datatype INTEGE
3cc0: 52 2c 20 74 68 65 6e 20 74 68 61 74 20 63 6f 6c  R, then that col
3cd0: 75 6d 6e 20 69 73 20 75 73 65 64 20 69 6e 74 65  umn is used inte
3ce0: 72 6e 61 6c 6c 79 0a 61 73 20 74 68 65 20 61 63  rnally.as the ac
3cf0: 74 75 61 6c 20 6b 65 79 20 6f 66 20 74 68 65 20  tual key of the 
3d00: 42 2d 54 72 65 65 20 66 6f 72 20 74 68 65 20 74  B-Tree for the t
3d10: 61 62 6c 65 2e 20 20 54 68 69 73 20 6d 65 61 6e  able.  This mean
3d20: 73 20 74 68 61 74 20 74 68 65 20 63 6f 6c 75 6d  s that the colum
3d30: 6e 0a 6d 61 79 20 6f 6e 6c 79 20 68 6f 6c 64 20  n.may only hold 
3d40: 75 6e 69 71 75 65 20 69 6e 74 65 67 65 72 20 76  unique integer v
3d50: 61 6c 75 65 73 2e 20 20 28 45 78 63 65 70 74 20  alues.  (Except 
3d60: 66 6f 72 20 74 68 69 73 20 6f 6e 65 20 63 61 73  for this one cas
3d70: 65 2c 0a 53 51 4c 69 74 65 20 69 67 6e 6f 72 65  e,.SQLite ignore
3d80: 73 20 74 68 65 20 64 61 74 61 74 79 70 65 20 73  s the datatype s
3d90: 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20  pecification of 
3da0: 63 6f 6c 75 6d 6e 73 20 61 6e 64 20 61 6c 6c 6f  columns and allo
3db0: 77 73 0a 61 6e 79 20 6b 69 6e 64 20 6f 66 20 64  ws.any kind of d
3dc0: 61 74 61 20 74 6f 20 62 65 20 70 75 74 20 69 6e  ata to be put in
3dd0: 20 61 20 63 6f 6c 75 6d 6e 20 72 65 67 61 72 64   a column regard
3de0: 6c 65 73 73 20 6f 66 20 69 74 73 20 64 65 63 6c  less of its decl
3df0: 61 72 65 64 0a 64 61 74 61 74 79 70 65 2e 29 20  ared.datatype.) 
3e00: 20 49 66 20 61 20 74 61 62 6c 65 20 64 6f 65 73   If a table does
3e10: 20 6e 6f 74 20 68 61 76 65 20 61 6e 20 49 4e 54   not have an INT
3e20: 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59  EGER PRIMARY KEY
3e30: 20 63 6f 6c 75 6d 6e 2c 0a 74 68 65 6e 20 74 68   column,.then th
3e40: 65 20 42 2d 54 72 65 65 20 6b 65 79 20 77 69 6c  e B-Tree key wil
3e50: 6c 20 62 65 20 61 20 61 75 74 6f 6d 61 74 69 63  l be a automatic
3e60: 61 6c 6c 79 20 67 65 6e 65 72 61 74 65 64 20 69  ally generated i
3e70: 6e 74 65 67 65 72 2e 20 20 54 68 65 0a 42 2d 54  nteger.  The.B-T
3e80: 72 65 65 20 6b 65 79 20 66 6f 72 20 61 20 72 6f  ree key for a ro
3e90: 77 20 63 61 6e 20 61 6c 77 61 79 73 20 62 65 20  w can always be 
3ea0: 61 63 63 65 73 73 65 64 20 75 73 69 6e 67 20 6f  accessed using o
3eb0: 6e 65 20 6f 66 20 74 68 65 0a 73 70 65 63 69 61  ne of the.specia
3ec0: 6c 20 6e 61 6d 65 73 20 22 3c 62 3e 52 4f 57 49  l names "<b>ROWI
3ed0: 44 3c 2f 62 3e 22 2c 20 22 3c 62 3e 4f 49 44 3c  D</b>", "<b>OID<
3ee0: 2f 62 3e 22 2c 20 6f 72 20 22 3c 62 3e 5f 52 4f  /b>", or "<b>_RO
3ef0: 57 49 44 5f 3c 2f 62 3e 22 2e 0a 54 68 69 73 20  WID_</b>"..This 
3f00: 69 73 20 74 72 75 65 20 72 65 67 61 72 64 6c 65  is true regardle
3f10: 73 73 20 6f 66 20 77 68 65 74 68 65 72 20 6f 72  ss of whether or
3f20: 20 6e 6f 74 20 74 68 65 72 65 20 69 73 20 61 6e   not there is an
3f30: 20 49 4e 54 45 47 45 52 0a 50 52 49 4d 41 52 59   INTEGER.PRIMARY
3f40: 20 4b 45 59 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66   KEY.</p>..<p>If
3f50: 20 74 68 65 20 22 54 45 4d 50 22 20 6f 72 20 22   the "TEMP" or "
3f60: 54 45 4d 50 4f 52 41 52 59 22 20 6b 65 79 77 6f  TEMPORARY" keywo
3f70: 72 64 20 6f 63 63 75 72 73 20 69 6e 20 62 65 74  rd occurs in bet
3f80: 77 65 65 6e 20 22 43 52 45 41 54 45 22 0a 61 6e  ween "CREATE".an
3f90: 64 20 22 54 41 42 4c 45 22 20 74 68 65 6e 20 74  d "TABLE" then t
3fa0: 68 65 20 74 61 62 6c 65 20 74 68 61 74 20 69 73  he table that is
3fb0: 20 63 72 65 61 74 65 64 20 69 73 20 6f 6e 6c 79   created is only
3fc0: 20 76 69 73 69 62 6c 65 20 74 6f 20 74 68 65 0a   visible to the.
3fd0: 70 72 6f 63 65 73 73 20 74 68 61 74 20 6f 70 65  process that ope
3fe0: 6e 65 64 20 74 68 65 20 64 61 74 61 62 61 73 65  ned the database
3ff0: 20 61 6e 64 20 69 73 20 61 75 74 6f 6d 61 74 69   and is automati
4000: 63 61 6c 6c 79 20 64 65 6c 65 74 65 64 20 77 68  cally deleted wh
4010: 65 6e 0a 74 68 65 20 64 61 74 61 62 61 73 65 20  en.the database 
4020: 69 73 20 63 6c 6f 73 65 64 2e 20 20 41 6e 79 20  is closed.  Any 
4030: 69 6e 64 69 63 65 73 20 63 72 65 61 74 65 64 20  indices created 
4040: 6f 6e 20 61 20 74 65 6d 70 6f 72 61 72 79 20 74  on a temporary t
4050: 61 62 6c 65 0a 61 72 65 20 61 6c 73 6f 20 74 65  able.are also te
4060: 6d 70 6f 72 61 72 79 2e 20 20 54 65 6d 70 6f 72  mporary.  Tempor
4070: 61 72 79 20 74 61 62 6c 65 73 20 61 6e 64 20 69  ary tables and i
4080: 6e 64 69 63 65 73 20 61 72 65 20 73 74 6f 72 65  ndices are store
4090: 64 20 69 6e 20 61 0a 73 65 70 61 72 61 74 65 20  d in a.separate 
40a0: 66 69 6c 65 20 64 69 73 74 69 6e 63 74 20 66 72  file distinct fr
40b0: 6f 6d 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61  om the main data
40c0: 62 61 73 65 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a  base file.</p>..
40d0: 3c 70 3e 20 49 66 20 61 20 3c 64 61 74 61 62 61  <p> If a <databa
40e0: 73 65 2d 6e 61 6d 65 3e 20 69 73 20 73 70 65 63  se-name> is spec
40f0: 69 66 69 65 64 2c 20 74 68 65 6e 20 74 68 65 20  ified, then the 
4100: 74 61 62 6c 65 20 69 73 20 63 72 65 61 74 65 64  table is created
4110: 20 69 6e 20 0a 74 68 65 20 6e 61 6d 65 64 20 64   in .the named d
4120: 61 74 61 62 61 73 65 2e 20 49 74 20 69 73 20 61  atabase. It is a
4130: 6e 20 65 72 72 6f 72 20 74 6f 20 73 70 65 63 69  n error to speci
4140: 66 79 20 62 6f 74 68 20 61 20 3c 64 61 74 61 62  fy both a <datab
4150: 61 73 65 2d 6e 61 6d 65 3e 0a 61 6e 64 20 74 68  ase-name>.and th
4160: 65 20 54 45 4d 50 20 6b 65 79 77 6f 72 64 2c 20  e TEMP keyword, 
4170: 75 6e 6c 65 73 73 20 74 68 65 20 3c 64 61 74 61  unless the <data
4180: 62 61 73 65 2d 6e 61 6d 65 3e 20 69 73 20 22 74  base-name> is "t
4190: 65 6d 70 22 2e 20 49 66 20 6e 6f 0a 64 61 74 61  emp". If no.data
41a0: 62 61 73 65 20 6e 61 6d 65 20 69 73 20 73 70 65  base name is spe
41b0: 63 69 66 69 65 64 2c 20 61 6e 64 20 74 68 65 20  cified, and the 
41c0: 54 45 4d 50 20 6b 65 79 77 6f 72 64 20 69 73 20  TEMP keyword is 
41d0: 6e 6f 74 20 70 72 65 73 65 6e 74 2c 0a 74 68 65  not present,.the
41e0: 20 74 61 62 6c 65 20 69 73 20 63 72 65 61 74 65   table is create
41f0: 64 20 69 6e 20 74 68 65 20 6d 61 69 6e 20 64 61  d in the main da
4200: 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e  tabase.</p>..<p>
4210: 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e  The optional con
4220: 66 6c 69 63 74 2d 63 6c 61 75 73 65 20 66 6f 6c  flict-clause fol
4230: 6c 6f 77 69 6e 67 20 65 61 63 68 20 63 6f 6e 73  lowing each cons
4240: 74 72 61 69 6e 74 0a 61 6c 6c 6f 77 73 20 74 68  traint.allows th
4250: 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20  e specification 
4260: 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76  of an alternativ
4270: 65 20 64 65 66 61 75 6c 74 0a 63 6f 6e 73 74 72  e default.constr
4280: 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72 65  aint conflict re
4290: 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74  solution algorit
42a0: 68 6d 20 66 6f 72 20 74 68 61 74 20 63 6f 6e 73  hm for that cons
42b0: 74 72 61 69 6e 74 2e 0a 54 68 65 20 64 65 66 61  traint..The defa
42c0: 75 6c 74 20 69 73 20 61 62 6f 72 74 20 41 42 4f  ult is abort ABO
42d0: 52 54 2e 20 20 44 69 66 66 65 72 65 6e 74 20 63  RT.  Different c
42e0: 6f 6e 73 74 72 61 69 6e 74 73 20 77 69 74 68 69  onstraints withi
42f0: 6e 20 74 68 65 20 73 61 6d 65 0a 74 61 62 6c 65  n the same.table
4300: 20 6d 61 79 20 68 61 76 65 20 64 69 66 66 65 72   may have differ
4310: 65 6e 74 20 64 65 66 61 75 6c 74 20 63 6f 6e 66  ent default conf
4320: 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20  lict resolution 
4330: 61 6c 67 6f 72 69 74 68 6d 73 2e 0a 49 66 20 61  algorithms..If a
4340: 6e 20 43 4f 50 59 2c 20 49 4e 53 45 52 54 2c 20  n COPY, INSERT, 
4350: 6f 72 20 55 50 44 41 54 45 20 63 6f 6d 6d 61 6e  or UPDATE comman
4360: 64 20 73 70 65 63 69 66 69 65 73 20 61 20 64 69  d specifies a di
4370: 66 66 65 72 65 6e 74 20 63 6f 6e 66 6c 69 63 74  fferent conflict
4380: 0a 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f  .resolution algo
4390: 72 69 74 68 6d 2c 20 74 68 65 6e 20 74 68 61 74  rithm, then that
43a0: 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75 73   algorithm is us
43b0: 65 64 20 69 6e 20 70 6c 61 63 65 20 6f 66 20 74  ed in place of t
43c0: 68 65 0a 64 65 66 61 75 6c 74 20 61 6c 67 6f 72  he.default algor
43d0: 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20 69  ithm specified i
43e0: 6e 20 74 68 65 20 43 52 45 41 54 45 20 54 41 42  n the CREATE TAB
43f0: 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 0a 53 65  LE statement..Se
4400: 65 20 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69  e the section ti
4410: 74 6c 65 64 0a 3c 61 20 68 72 65 66 3d 22 23 63  tled.<a href="#c
4420: 6f 6e 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e 46  onflict">ON CONF
4430: 4c 49 43 54 3c 2f 61 3e 20 66 6f 72 20 61 64 64  LICT</a> for add
4440: 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74  itional informat
4450: 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 43 48 45  ion.</p>..<p>CHE
4460: 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 61  CK constraints a
4470: 72 65 20 69 67 6e 6f 72 65 64 20 69 6e 20 74 68  re ignored in th
4480: 65 20 63 75 72 72 65 6e 74 20 69 6d 70 6c 65 6d  e current implem
4490: 65 6e 74 61 74 69 6f 6e 2e 0a 53 75 70 70 6f 72  entation..Suppor
44a0: 74 20 66 6f 72 20 43 48 45 43 4b 20 63 6f 6e 73  t for CHECK cons
44b0: 74 72 61 69 6e 74 73 20 6d 61 79 20 62 65 20 61  traints may be a
44c0: 64 64 65 64 20 69 6e 20 74 68 65 20 66 75 74 75  dded in the futu
44d0: 72 65 2e 20 20 41 73 20 6f 66 0a 76 65 72 73 69  re.  As of.versi
44e0: 6f 6e 20 32 2e 33 2e 30 2c 20 4e 4f 54 20 4e 55  on 2.3.0, NOT NU
44f0: 4c 4c 2c 20 50 52 49 4d 41 52 59 20 4b 45 59 2c  LL, PRIMARY KEY,
4500: 20 61 6e 64 20 55 4e 49 51 55 45 20 63 6f 6e 73   and UNIQUE cons
4510: 74 72 61 69 6e 74 73 20 61 6c 6c 0a 77 6f 72 6b  traints all.work
4520: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65 20  .</p>..<p>There 
4530: 61 72 65 20 6e 6f 20 61 72 62 69 74 72 61 72 79  are no arbitrary
4540: 20 6c 69 6d 69 74 73 20 6f 6e 20 74 68 65 20 6e   limits on the n
4550: 75 6d 62 65 72 0a 6f 66 20 63 6f 6c 75 6d 6e 73  umber.of columns
4560: 20 6f 72 20 6f 6e 20 74 68 65 20 6e 75 6d 62 65   or on the numbe
4570: 72 20 6f 66 20 63 6f 6e 73 74 72 61 69 6e 74 73  r of constraints
4580: 20 69 6e 20 61 20 74 61 62 6c 65 2e 0a 54 68 65   in a table..The
4590: 20 74 6f 74 61 6c 20 61 6d 6f 75 6e 74 20 6f 66   total amount of
45a0: 20 64 61 74 61 20 69 6e 20 61 20 73 69 6e 67 6c   data in a singl
45b0: 65 20 72 6f 77 20 69 73 20 6c 69 6d 69 74 65 64  e row is limited
45c0: 20 74 6f 20 61 62 6f 75 74 0a 31 20 6d 65 67 61   to about.1 mega
45d0: 62 79 74 65 73 20 69 6e 20 76 65 72 73 69 6f 6e  bytes in version
45e0: 20 32 2e 38 2e 20 20 49 6e 20 76 65 72 73 69 6f   2.8.  In versio
45f0: 6e 20 33 2e 30 20 74 68 65 72 65 20 69 73 20 6e  n 3.0 there is n
4600: 6f 20 61 72 62 69 74 72 61 72 79 0a 6c 69 6d 69  o arbitrary.limi
4610: 74 20 6f 6e 20 74 68 65 20 61 6d 6f 75 6e 74 20  t on the amount 
4620: 6f 66 20 64 61 74 61 20 69 6e 20 61 20 72 6f 77  of data in a row
4630: 2e 3c 2f 70 3e 0a 0a 0a 3c 70 3e 54 68 65 20 43  .</p>...<p>The C
4640: 52 45 41 54 45 20 54 41 42 4c 45 20 41 53 20 66  REATE TABLE AS f
4650: 6f 72 6d 20 64 65 66 69 6e 65 73 20 74 68 65 20  orm defines the 
4660: 74 61 62 6c 65 20 74 6f 20 62 65 0a 74 68 65 20  table to be.the 
4670: 72 65 73 75 6c 74 20 73 65 74 20 6f 66 20 61 20  result set of a 
4680: 71 75 65 72 79 2e 20 20 54 68 65 20 6e 61 6d 65  query.  The name
4690: 73 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 63  s of the table c
46a0: 6f 6c 75 6d 6e 73 20 61 72 65 0a 74 68 65 20 6e  olumns are.the n
46b0: 61 6d 65 73 20 6f 66 20 74 68 65 20 63 6f 6c 75  ames of the colu
46c0: 6d 6e 73 20 69 6e 20 74 68 65 20 72 65 73 75 6c  mns in the resul
46d0: 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 65  t.</p>..<p>The e
46e0: 78 61 63 74 20 74 65 78 74 0a 6f 66 20 65 61 63  xact text.of eac
46f0: 68 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 73  h CREATE TABLE s
4700: 74 61 74 65 6d 65 6e 74 20 69 73 20 73 74 6f 72  tatement is stor
4710: 65 64 20 69 6e 20 74 68 65 20 3c 62 3e 73 71 6c  ed in the <b>sql
4720: 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 0a 74  ite_master</b>.t
4730: 61 62 6c 65 2e 20 20 45 76 65 72 79 20 74 69 6d  able.  Every tim
4740: 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69  e the database i
4750: 73 20 6f 70 65 6e 65 64 2c 20 61 6c 6c 20 43 52  s opened, all CR
4760: 45 41 54 45 20 54 41 42 4c 45 20 73 74 61 74 65  EATE TABLE state
4770: 6d 65 6e 74 73 0a 61 72 65 20 72 65 61 64 20 66  ments.are read f
4780: 72 6f 6d 20 74 68 65 20 3c 62 3e 73 71 6c 69 74  rom the <b>sqlit
4790: 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 20 74 61 62  e_master</b> tab
47a0: 6c 65 20 61 6e 64 20 75 73 65 64 20 74 6f 20 72  le and used to r
47b0: 65 67 65 6e 65 72 61 74 65 0a 53 51 4c 69 74 65  egenerate.SQLite
47c0: 27 73 20 69 6e 74 65 72 6e 61 6c 20 72 65 70 72  's internal repr
47d0: 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68  esentation of th
47e0: 65 20 74 61 62 6c 65 20 6c 61 79 6f 75 74 2e 0a  e table layout..
47f0: 49 66 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20  If the original 
4800: 63 6f 6d 6d 61 6e 64 20 77 61 73 20 61 20 43 52  command was a CR
4810: 45 41 54 45 20 54 41 42 4c 45 20 41 53 20 74 68  EATE TABLE AS th
4820: 65 6e 20 74 68 65 6e 20 61 6e 20 65 71 75 69 76  en then an equiv
4830: 61 6c 65 6e 74 0a 43 52 45 41 54 45 20 54 41 42  alent.CREATE TAB
4840: 4c 45 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  LE statement is 
4850: 73 79 6e 74 68 65 73 69 7a 65 64 20 61 6e 64 20  synthesized and 
4860: 73 74 6f 72 65 20 69 6e 20 3c 62 3e 73 71 6c 69  store in <b>sqli
4870: 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 0a 69 6e  te_master</b>.in
4880: 20 70 6c 61 63 65 20 6f 66 20 74 68 65 20 6f 72   place of the or
4890: 69 67 69 6e 61 6c 20 63 6f 6d 6d 61 6e 64 2e 0a  iginal command..
48a0: 54 68 65 20 74 65 78 74 20 6f 66 20 43 52 45 41  The text of CREA
48b0: 54 45 20 54 45 4d 50 4f 52 41 52 59 20 54 41 42  TE TEMPORARY TAB
48c0: 4c 45 20 73 74 61 74 65 6d 65 6e 74 73 20 61 72  LE statements ar
48d0: 65 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 0a  e stored in the.
48e0: 3c 62 3e 73 71 6c 69 74 65 5f 74 65 6d 70 5f 6d  <b>sqlite_temp_m
48f0: 61 73 74 65 72 3c 2f 62 3e 20 74 61 62 6c 65 2e  aster</b> table.
4900: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 61 62 6c 65 73  .</p>..<p>Tables
4910: 20 61 72 65 20 72 65 6d 6f 76 65 64 20 75 73 69   are removed usi
4920: 6e 67 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22  ng the <a href="
4930: 23 64 72 6f 70 74 61 62 6c 65 22 3e 44 52 4f 50  #droptable">DROP
4940: 20 54 41 42 4c 45 3c 2f 61 3e 20 0a 73 74 61 74   TABLE</a> .stat
4950: 65 6d 65 6e 74 2e 20 20 3c 2f 70 3e 0a 7d 0a 0a  ement.  </p>.}..
4960: 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54 45  .Section {CREATE
4970: 20 54 52 49 47 47 45 52 7d 20 63 72 65 61 74 65   TRIGGER} create
4980: 74 72 69 67 67 65 72 0a 0a 53 79 6e 74 61 78 20  trigger..Syntax 
4990: 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20  {sql-statement} 
49a0: 7b 0a 43 52 45 41 54 45 20 5b 54 45 4d 50 20 7c  {.CREATE [TEMP |
49b0: 20 54 45 4d 50 4f 52 41 52 59 5d 20 54 52 49 47   TEMPORARY] TRIG
49c0: 47 45 52 20 3c 74 72 69 67 67 65 72 2d 6e 61 6d  GER <trigger-nam
49d0: 65 3e 20 5b 20 42 45 46 4f 52 45 20 7c 20 41 46  e> [ BEFORE | AF
49e0: 54 45 52 20 5d 0a 3c 64 61 74 61 62 61 73 65 2d  TER ].<database-
49f0: 65 76 65 6e 74 3e 20 4f 4e 20 5b 3c 64 61 74 61  event> ON [<data
4a00: 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74  base-name> .] <t
4a10: 61 62 6c 65 2d 6e 61 6d 65 3e 0a 3c 74 72 69 67  able-name>.<trig
4a20: 67 65 72 2d 61 63 74 69 6f 6e 3e 0a 7d 0a 0a 53  ger-action>.}..S
4a30: 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65  yntax {sql-state
4a40: 6d 65 6e 74 7d 20 7b 0a 43 52 45 41 54 45 20 5b  ment} {.CREATE [
4a50: 54 45 4d 50 20 7c 20 54 45 4d 50 4f 52 41 52 59  TEMP | TEMPORARY
4a60: 5d 20 54 52 49 47 47 45 52 20 3c 74 72 69 67 67  ] TRIGGER <trigg
4a70: 65 72 2d 6e 61 6d 65 3e 20 49 4e 53 54 45 41 44  er-name> INSTEAD
4a80: 20 4f 46 0a 3c 64 61 74 61 62 61 73 65 2d 65 76   OF.<database-ev
4a90: 65 6e 74 3e 20 4f 4e 20 5b 3c 64 61 74 61 62 61  ent> ON [<databa
4aa0: 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 76 69 65  se-name> .] <vie
4ab0: 77 2d 6e 61 6d 65 3e 0a 3c 74 72 69 67 67 65 72  w-name>.<trigger
4ac0: 2d 61 63 74 69 6f 6e 3e 0a 7d 0a 0a 53 79 6e 74  -action>.}..Synt
4ad0: 61 78 20 7b 64 61 74 61 62 61 73 65 2d 65 76 65  ax {database-eve
4ae0: 6e 74 7d 20 7b 0a 44 45 4c 45 54 45 20 7c 20 0a  nt} {.DELETE | .
4af0: 49 4e 53 45 52 54 20 7c 20 0a 55 50 44 41 54 45  INSERT | .UPDATE
4b00: 20 7c 20 0a 55 50 44 41 54 45 20 4f 46 20 3c 63   | .UPDATE OF <c
4b10: 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 0a 7d 0a 0a 53  olumn-list>.}..S
4b20: 79 6e 74 61 78 20 7b 74 72 69 67 67 65 72 2d 61  yntax {trigger-a
4b30: 63 74 69 6f 6e 7d 20 7b 0a 5b 20 46 4f 52 20 45  ction} {.[ FOR E
4b40: 41 43 48 20 52 4f 57 20 7c 20 46 4f 52 20 45 41  ACH ROW | FOR EA
4b50: 43 48 20 53 54 41 54 45 4d 45 4e 54 20 5d 20 5b  CH STATEMENT ] [
4b60: 20 57 48 45 4e 20 3c 65 78 70 72 65 73 73 69 6f   WHEN <expressio
4b70: 6e 3e 20 5d 20 0a 42 45 47 49 4e 20 0a 20 20 3c  n> ] .BEGIN .  <
4b80: 74 72 69 67 67 65 72 2d 73 74 65 70 3e 20 3b 20  trigger-step> ; 
4b90: 5b 20 3c 74 72 69 67 67 65 72 2d 73 74 65 70 3e  [ <trigger-step>
4ba0: 20 3b 20 5d 2a 0a 45 4e 44 0a 7d 0a 0a 53 79 6e   ; ]*.END.}..Syn
4bb0: 74 61 78 20 7b 74 72 69 67 67 65 72 2d 73 74 65  tax {trigger-ste
4bc0: 70 7d 20 7b 0a 3c 75 70 64 61 74 65 2d 73 74 61  p} {.<update-sta
4bd0: 74 65 6d 65 6e 74 3e 20 7c 20 3c 69 6e 73 65 72  tement> | <inser
4be0: 74 2d 73 74 61 74 65 6d 65 6e 74 3e 20 7c 20 0a  t-statement> | .
4bf0: 3c 64 65 6c 65 74 65 2d 73 74 61 74 65 6d 65 6e  <delete-statemen
4c00: 74 3e 20 7c 20 3c 73 65 6c 65 63 74 2d 73 74 61  t> | <select-sta
4c10: 74 65 6d 65 6e 74 3e 20 0a 7d 0a 0a 70 75 74 73  tement> .}..puts
4c20: 20 7b 0a 3c 70 3e 54 68 65 20 43 52 45 41 54 45   {.<p>The CREATE
4c30: 20 54 52 49 47 47 45 52 20 73 74 61 74 65 6d 65   TRIGGER stateme
4c40: 6e 74 20 69 73 20 75 73 65 64 20 74 6f 20 61 64  nt is used to ad
4c50: 64 20 74 72 69 67 67 65 72 73 20 74 6f 20 74 68  d triggers to th
4c60: 65 20 0a 64 61 74 61 62 61 73 65 20 73 63 68 65  e .database sche
4c70: 6d 61 2e 20 54 72 69 67 67 65 72 73 20 61 72 65  ma. Triggers are
4c80: 20 64 61 74 61 62 61 73 65 20 6f 70 65 72 61 74   database operat
4c90: 69 6f 6e 73 20 28 74 68 65 20 3c 69 3e 74 72 69  ions (the <i>tri
4ca0: 67 67 65 72 2d 61 63 74 69 6f 6e 3c 2f 69 3e 29  gger-action</i>)
4cb0: 20 0a 74 68 61 74 20 61 72 65 20 61 75 74 6f 6d   .that are autom
4cc0: 61 74 69 63 61 6c 6c 79 20 70 65 72 66 6f 72 6d  atically perform
4cd0: 65 64 20 77 68 65 6e 20 61 20 73 70 65 63 69 66  ed when a specif
4ce0: 69 65 64 20 64 61 74 61 62 61 73 65 20 65 76 65  ied database eve
4cf0: 6e 74 20 28 74 68 65 0a 3c 69 3e 64 61 74 61 62  nt (the.<i>datab
4d00: 61 73 65 2d 65 76 65 6e 74 3c 2f 69 3e 29 20 6f  ase-event</i>) o
4d10: 63 63 75 72 73 2e 20 20 3c 2f 70 3e 0a 0a 3c 70  ccurs.  </p>..<p
4d20: 3e 41 20 74 72 69 67 67 65 72 20 6d 61 79 20 62  >A trigger may b
4d30: 65 20 73 70 65 63 69 66 69 65 64 20 74 6f 20 66  e specified to f
4d40: 69 72 65 20 77 68 65 6e 65 76 65 72 20 61 20 44  ire whenever a D
4d50: 45 4c 45 54 45 2c 20 49 4e 53 45 52 54 20 6f 72  ELETE, INSERT or
4d60: 20 55 50 44 41 54 45 20 6f 66 20 61 0a 70 61 72   UPDATE of a.par
4d70: 74 69 63 75 6c 61 72 20 64 61 74 61 62 61 73 65  ticular database
4d80: 20 74 61 62 6c 65 20 6f 63 63 75 72 73 2c 20 6f   table occurs, o
4d90: 72 20 77 68 65 6e 65 76 65 72 20 61 6e 20 55 50  r whenever an UP
4da0: 44 41 54 45 20 6f 66 20 6f 6e 65 20 6f 72 20 6d  DATE of one or m
4db0: 6f 72 65 0a 73 70 65 63 69 66 69 65 64 20 63 6f  ore.specified co
4dc0: 6c 75 6d 6e 73 20 6f 66 20 61 20 74 61 62 6c 65  lumns of a table
4dd0: 20 61 72 65 20 75 70 64 61 74 65 64 2e 3c 2f 70   are updated.</p
4de0: 3e 0a 0a 3c 70 3e 41 74 20 74 68 69 73 20 74 69  >..<p>At this ti
4df0: 6d 65 20 53 51 4c 69 74 65 20 73 75 70 70 6f 72  me SQLite suppor
4e00: 74 73 20 6f 6e 6c 79 20 46 4f 52 20 45 41 43 48  ts only FOR EACH
4e10: 20 52 4f 57 20 74 72 69 67 67 65 72 73 2c 20 6e   ROW triggers, n
4e20: 6f 74 20 46 4f 52 20 45 41 43 48 0a 53 54 41 54  ot FOR EACH.STAT
4e30: 45 4d 45 4e 54 20 74 72 69 67 67 65 72 73 2e 20  EMENT triggers. 
4e40: 48 65 6e 63 65 20 65 78 70 6c 69 63 69 74 6c 79  Hence explicitly
4e50: 20 73 70 65 63 69 66 79 69 6e 67 20 46 4f 52 20   specifying FOR 
4e60: 45 41 43 48 20 52 4f 57 20 69 73 20 6f 70 74 69  EACH ROW is opti
4e70: 6f 6e 61 6c 2e 20 20 46 4f 52 0a 45 41 43 48 20  onal.  FOR.EACH 
4e80: 52 4f 57 20 69 6d 70 6c 69 65 73 20 74 68 61 74  ROW implies that
4e90: 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65   the SQL stateme
4ea0: 6e 74 73 20 73 70 65 63 69 66 69 65 64 20 61 73  nts specified as
4eb0: 20 3c 69 3e 74 72 69 67 67 65 72 2d 73 74 65 70   <i>trigger-step
4ec0: 73 3c 2f 69 3e 20 0a 6d 61 79 20 62 65 20 65 78  s</i> .may be ex
4ed0: 65 63 75 74 65 64 20 28 64 65 70 65 6e 64 69 6e  ecuted (dependin
4ee0: 67 20 6f 6e 20 74 68 65 20 57 48 45 4e 20 63 6c  g on the WHEN cl
4ef0: 61 75 73 65 29 20 66 6f 72 20 65 61 63 68 20 64  ause) for each d
4f00: 61 74 61 62 61 73 65 20 72 6f 77 20 62 65 69 6e  atabase row bein
4f10: 67 0a 69 6e 73 65 72 74 65 64 2c 20 75 70 64 61  g.inserted, upda
4f20: 74 65 64 20 6f 72 20 64 65 6c 65 74 65 64 20 62  ted or deleted b
4f30: 79 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20  y the statement 
4f40: 63 61 75 73 69 6e 67 20 74 68 65 20 74 72 69 67  causing the trig
4f50: 67 65 72 20 74 6f 20 66 69 72 65 2e 3c 2f 70 3e  ger to fire.</p>
4f60: 0a 0a 3c 70 3e 42 6f 74 68 20 74 68 65 20 57 48  ..<p>Both the WH
4f70: 45 4e 20 63 6c 61 75 73 65 20 61 6e 64 20 74 68  EN clause and th
4f80: 65 20 3c 69 3e 74 72 69 67 67 65 72 2d 73 74 65  e <i>trigger-ste
4f90: 70 73 3c 2f 69 3e 20 6d 61 79 20 61 63 63 65 73  ps</i> may acces
4fa0: 73 20 65 6c 65 6d 65 6e 74 73 20 6f 66 20 0a 74  s elements of .t
4fb0: 68 65 20 72 6f 77 20 62 65 69 6e 67 20 69 6e 73  he row being ins
4fc0: 65 72 74 65 64 2c 20 64 65 6c 65 74 65 64 20 6f  erted, deleted o
4fd0: 72 20 75 70 64 61 74 65 64 20 75 73 69 6e 67 20  r updated using 
4fe0: 72 65 66 65 72 65 6e 63 65 73 20 6f 66 20 74 68  references of th
4ff0: 65 20 66 6f 72 6d 20 0a 22 4e 45 57 2e 3c 69 3e  e form ."NEW.<i>
5000: 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e 22  column-name</i>"
5010: 20 61 6e 64 20 22 4f 4c 44 2e 3c 69 3e 63 6f 6c   and "OLD.<i>col
5020: 75 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e 22 2c 20 77  umn-name</i>", w
5030: 68 65 72 65 0a 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e  here.<i>column-n
5040: 61 6d 65 3c 2f 69 3e 20 69 73 20 74 68 65 20 6e  ame</i> is the n
5050: 61 6d 65 20 6f 66 20 61 20 63 6f 6c 75 6d 6e 20  ame of a column 
5060: 66 72 6f 6d 20 74 68 65 20 74 61 62 6c 65 20 74  from the table t
5070: 68 61 74 20 74 68 65 20 74 72 69 67 67 65 72 0a  hat the trigger.
5080: 69 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  is associated wi
5090: 74 68 2e 20 4f 4c 44 20 61 6e 64 20 4e 45 57 20  th. OLD and NEW 
50a0: 72 65 66 65 72 65 6e 63 65 73 20 6d 61 79 20 6f  references may o
50b0: 6e 6c 79 20 62 65 20 75 73 65 64 20 69 6e 20 74  nly be used in t
50c0: 72 69 67 67 65 72 73 20 6f 6e 0a 3c 69 3e 74 72  riggers on.<i>tr
50d0: 69 67 67 65 72 2d 65 76 65 6e 74 3c 2f 69 3e 73  igger-event</i>s
50e0: 20 66 6f 72 20 77 68 69 63 68 20 74 68 65 79 20   for which they 
50f0: 61 72 65 20 72 65 6c 65 76 61 6e 74 2c 20 61 73  are relevant, as
5100: 20 66 6f 6c 6c 6f 77 73 3a 3c 2f 70 3e 0a 0a 3c   follows:</p>..<
5110: 74 61 62 6c 65 20 62 6f 72 64 65 72 3d 30 20 63  table border=0 c
5120: 65 6c 6c 70 61 64 64 69 6e 67 3d 31 30 3e 0a 3c  ellpadding=10>.<
5130: 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
5140: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
5150: 74 22 20 77 69 64 74 68 3d 31 32 30 3e 3c 69 3e  t" width=120><i>
5160: 49 4e 53 45 52 54 3c 2f 69 3e 3c 2f 74 64 3e 0a  INSERT</i></td>.
5170: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
5180: 3e 4e 45 57 20 72 65 66 65 72 65 6e 63 65 73 20  >NEW references 
5190: 61 72 65 20 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c  are valid</td>.<
51a0: 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61  /tr>.<tr>.<td va
51b0: 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e  lign="top" align
51c0: 3d 22 72 69 67 68 74 22 20 77 69 64 74 68 3d 31  ="right" width=1
51d0: 32 30 3e 3c 69 3e 55 50 44 41 54 45 3c 2f 69 3e  20><i>UPDATE</i>
51e0: 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  </td>.<td valign
51f0: 3d 22 74 6f 70 22 3e 4e 45 57 20 61 6e 64 20 4f  ="top">NEW and O
5200: 4c 44 20 72 65 66 65 72 65 6e 63 65 73 20 61 72  LD references ar
5210: 65 20 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f 74  e valid</td>.</t
5220: 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  r>.<tr>.<td vali
5230: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
5240: 72 69 67 68 74 22 20 77 69 64 74 68 3d 31 32 30  right" width=120
5250: 3e 3c 69 3e 44 45 4c 45 54 45 3c 2f 69 3e 3c 2f  ><i>DELETE</i></
5260: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
5270: 74 6f 70 22 3e 4f 4c 44 20 72 65 66 65 72 65 6e  top">OLD referen
5280: 63 65 73 20 61 72 65 20 76 61 6c 69 64 3c 2f 74  ces are valid</t
5290: 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65  d>.</tr>.</table
52a0: 3e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 61 20  >.</p>..<p>If a 
52b0: 57 48 45 4e 20 63 6c 61 75 73 65 20 69 73 20 73  WHEN clause is s
52c0: 75 70 70 6c 69 65 64 2c 20 74 68 65 20 53 51 4c  upplied, the SQL
52d0: 20 73 74 61 74 65 6d 65 6e 74 73 20 73 70 65 63   statements spec
52e0: 69 66 69 65 64 20 61 73 20 3c 69 3e 74 72 69 67  ified as <i>trig
52f0: 67 65 72 2d 73 74 65 70 73 3c 2f 69 3e 20 61 72  ger-steps</i> ar
5300: 65 20 6f 6e 6c 79 20 65 78 65 63 75 74 65 64 20  e only executed 
5310: 66 6f 72 20 72 6f 77 73 20 66 6f 72 20 77 68 69  for rows for whi
5320: 63 68 20 74 68 65 20 57 48 45 4e 20 63 6c 61 75  ch the WHEN clau
5330: 73 65 20 69 73 20 74 72 75 65 2e 20 49 66 20 6e  se is true. If n
5340: 6f 20 57 48 45 4e 20 63 6c 61 75 73 65 20 69 73  o WHEN clause is
5350: 20 73 75 70 70 6c 69 65 64 2c 20 74 68 65 20 53   supplied, the S
5360: 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 61 72  QL statements ar
5370: 65 20 65 78 65 63 75 74 65 64 20 66 6f 72 20 61  e executed for a
5380: 6c 6c 20 72 6f 77 73 2e 3c 2f 70 3e 0a 0a 3c 70  ll rows.</p>..<p
5390: 3e 54 68 65 20 73 70 65 63 69 66 69 65 64 20 3c  >The specified <
53a0: 69 3e 74 72 69 67 67 65 72 2d 74 69 6d 65 3c 2f  i>trigger-time</
53b0: 69 3e 20 64 65 74 65 72 6d 69 6e 65 73 20 77 68  i> determines wh
53c0: 65 6e 20 74 68 65 20 3c 69 3e 74 72 69 67 67 65  en the <i>trigge
53d0: 72 2d 73 74 65 70 73 3c 2f 69 3e 0a 77 69 6c 6c  r-steps</i>.will
53e0: 20 62 65 20 65 78 65 63 75 74 65 64 20 72 65 6c   be executed rel
53f0: 61 74 69 76 65 20 74 6f 20 74 68 65 20 69 6e 73  ative to the ins
5400: 65 72 74 69 6f 6e 2c 20 6d 6f 64 69 66 69 63 61  ertion, modifica
5410: 74 69 6f 6e 20 6f 72 20 72 65 6d 6f 76 61 6c 20  tion or removal 
5420: 6f 66 20 74 68 65 0a 61 73 73 6f 63 69 61 74 65  of the.associate
5430: 64 20 72 6f 77 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41  d row.</p>..<p>A
5440: 6e 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c  n ON CONFLICT cl
5450: 61 75 73 65 20 6d 61 79 20 62 65 20 73 70 65 63  ause may be spec
5460: 69 66 69 65 64 20 61 73 20 70 61 72 74 20 6f 66  ified as part of
5470: 20 61 6e 20 55 50 44 41 54 45 20 6f 72 20 49 4e   an UPDATE or IN
5480: 53 45 52 54 0a 3c 69 3e 74 72 69 67 67 65 72 2d  SERT.<i>trigger-
5490: 73 74 65 70 3c 2f 69 3e 2e 20 48 6f 77 65 76 65  step</i>. Howeve
54a0: 72 20 69 66 20 61 6e 20 4f 4e 20 43 4f 4e 46 4c  r if an ON CONFL
54b0: 49 43 54 20 63 6c 61 75 73 65 20 69 73 20 73 70  ICT clause is sp
54c0: 65 63 69 66 69 65 64 20 61 73 20 70 61 72 74 20  ecified as part 
54d0: 6f 66 20 0a 74 68 65 20 73 74 61 74 65 6d 65 6e  of .the statemen
54e0: 74 20 63 61 75 73 69 6e 67 20 74 68 65 20 74 72  t causing the tr
54f0: 69 67 67 65 72 20 74 6f 20 66 69 72 65 2c 20 74  igger to fire, t
5500: 68 65 6e 20 74 68 69 73 20 63 6f 6e 66 6c 69 63  hen this conflic
5510: 74 20 68 61 6e 64 6c 69 6e 67 0a 70 6f 6c 69 63  t handling.polic
5520: 79 20 69 73 20 75 73 65 64 20 69 6e 73 74 65 61  y is used instea
5530: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 72 69 67 67  d.</p>..<p>Trigg
5540: 65 72 73 20 61 72 65 20 61 75 74 6f 6d 61 74 69  ers are automati
5550: 63 61 6c 6c 79 20 64 72 6f 70 70 65 64 20 77 68  cally dropped wh
5560: 65 6e 20 74 68 65 20 74 61 62 6c 65 20 74 68 61  en the table tha
5570: 74 20 74 68 65 79 20 61 72 65 20 0a 61 73 73 6f  t they are .asso
5580: 63 69 61 74 65 64 20 77 69 74 68 20 69 73 20 64  ciated with is d
5590: 72 6f 70 70 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e  ropped.</p>..<p>
55a0: 54 72 69 67 67 65 72 73 20 6d 61 79 20 62 65 20  Triggers may be 
55b0: 63 72 65 61 74 65 64 20 6f 6e 20 76 69 65 77 73  created on views
55c0: 2c 20 61 73 20 77 65 6c 6c 20 61 73 20 6f 72 64  , as well as ord
55d0: 69 6e 61 72 79 20 74 61 62 6c 65 73 2c 20 62 79  inary tables, by
55e0: 20 73 70 65 63 69 66 79 69 6e 67 0a 49 4e 53 54   specifying.INST
55f0: 45 41 44 20 4f 46 20 69 6e 20 74 68 65 20 43 52  EAD OF in the CR
5600: 45 41 54 45 20 54 52 49 47 47 45 52 20 73 74 61  EATE TRIGGER sta
5610: 74 65 6d 65 6e 74 2e 20 49 66 20 6f 6e 65 20 6f  tement. If one o
5620: 72 20 6d 6f 72 65 20 4f 4e 20 49 4e 53 45 52 54  r more ON INSERT
5630: 2c 20 4f 4e 20 44 45 4c 45 54 45 0a 6f 72 20 4f  , ON DELETE.or O
5640: 4e 20 55 50 44 41 54 45 20 74 72 69 67 67 65 72  N UPDATE trigger
5650: 73 20 61 72 65 20 64 65 66 69 6e 65 64 20 6f 6e  s are defined on
5660: 20 61 20 76 69 65 77 2c 20 74 68 65 6e 20 69 74   a view, then it
5670: 20 69 73 20 6e 6f 74 20 61 6e 20 65 72 72 6f 72   is not an error
5680: 20 74 6f 20 65 78 65 63 75 74 65 0a 61 6e 20 49   to execute.an I
5690: 4e 53 45 52 54 2c 20 44 45 4c 45 54 45 20 6f 72  NSERT, DELETE or
56a0: 20 55 50 44 41 54 45 20 73 74 61 74 65 6d 65 6e   UPDATE statemen
56b0: 74 20 6f 6e 20 74 68 65 20 76 69 65 77 2c 20 72  t on the view, r
56c0: 65 73 70 65 63 74 69 76 65 6c 79 2e 20 54 68 65  espectively. The
56d0: 72 65 61 66 74 65 72 2c 0a 65 78 65 63 75 74 69  reafter,.executi
56e0: 6e 67 20 61 6e 20 49 4e 53 45 52 54 2c 20 44 45  ng an INSERT, DE
56f0: 4c 45 54 45 20 6f 72 20 55 50 44 41 54 45 20 6f  LETE or UPDATE o
5700: 6e 20 74 68 65 20 76 69 65 77 20 63 61 75 73 65  n the view cause
5710: 73 20 74 68 65 20 61 73 73 6f 63 69 61 74 65 64  s the associated
5720: 0a 20 20 74 72 69 67 67 65 72 73 20 74 6f 20 66  .  triggers to f
5730: 69 72 65 2e 20 54 68 65 20 72 65 61 6c 20 74 61  ire. The real ta
5740: 62 6c 65 73 20 75 6e 64 65 72 6c 79 69 6e 67 20  bles underlying 
5750: 74 68 65 20 76 69 65 77 20 61 72 65 20 6e 6f 74  the view are not
5760: 20 6d 6f 64 69 66 69 65 64 0a 20 20 28 65 78 63   modified.  (exc
5770: 65 70 74 20 70 6f 73 73 69 62 6c 79 20 65 78 70  ept possibly exp
5780: 6c 69 63 69 74 6c 79 2c 20 62 79 20 61 20 74 72  licitly, by a tr
5790: 69 67 67 65 72 20 70 72 6f 67 72 61 6d 29 2e 3c  igger program).<
57a0: 2f 70 3e 0a 0a 3c 70 3e 3c 62 3e 45 78 61 6d 70  /p>..<p><b>Examp
57b0: 6c 65 3a 3c 2f 62 3e 3c 2f 70 3e 0a 0a 3c 70 3e  le:</b></p>..<p>
57c0: 41 73 73 75 6d 69 6e 67 20 74 68 61 74 20 63 75  Assuming that cu
57d0: 73 74 6f 6d 65 72 20 72 65 63 6f 72 64 73 20 61  stomer records a
57e0: 72 65 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65  re stored in the
57f0: 20 22 63 75 73 74 6f 6d 65 72 73 22 20 74 61 62   "customers" tab
5800: 6c 65 2c 20 61 6e 64 0a 74 68 61 74 20 6f 72 64  le, and.that ord
5810: 65 72 20 72 65 63 6f 72 64 73 20 61 72 65 20 73  er records are s
5820: 74 6f 72 65 64 20 69 6e 20 74 68 65 20 22 6f 72  tored in the "or
5830: 64 65 72 73 22 20 74 61 62 6c 65 2c 20 74 68 65  ders" table, the
5840: 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 72 69 67 67   following trigg
5850: 65 72 0a 65 6e 73 75 72 65 73 20 74 68 61 74 20  er.ensures that 
5860: 61 6c 6c 20 61 73 73 6f 63 69 61 74 65 64 20 6f  all associated o
5870: 72 64 65 72 73 20 61 72 65 20 72 65 64 69 72 65  rders are redire
5880: 63 74 65 64 20 77 68 65 6e 20 61 20 63 75 73 74  cted when a cust
5890: 6f 6d 65 72 20 63 68 61 6e 67 65 73 0a 68 69 73  omer changes.his
58a0: 20 6f 72 20 68 65 72 20 61 64 64 72 65 73 73 3a   or her address:
58b0: 3c 2f 70 3e 0a 7d 0a 45 78 61 6d 70 6c 65 20 7b  </p>.}.Example {
58c0: 0a 43 52 45 41 54 45 20 54 52 49 47 47 45 52 20  .CREATE TRIGGER 
58d0: 75 70 64 61 74 65 5f 63 75 73 74 6f 6d 65 72 5f  update_customer_
58e0: 61 64 64 72 65 73 73 20 55 50 44 41 54 45 20 4f  address UPDATE O
58f0: 46 20 61 64 64 72 65 73 73 20 4f 4e 20 63 75 73  F address ON cus
5900: 74 6f 6d 65 72 73 20 0a 20 20 42 45 47 49 4e 0a  tomers .  BEGIN.
5910: 20 20 20 20 55 50 44 41 54 45 20 6f 72 64 65 72      UPDATE order
5920: 73 20 53 45 54 20 61 64 64 72 65 73 73 20 3d 20  s SET address = 
5930: 6e 65 77 2e 61 64 64 72 65 73 73 20 57 48 45 52  new.address WHER
5940: 45 20 63 75 73 74 6f 6d 65 72 5f 6e 61 6d 65 20  E customer_name 
5950: 3d 20 6f 6c 64 2e 6e 61 6d 65 3b 0a 20 20 45 4e  = old.name;.  EN
5960: 44 3b 0a 7d 0a 70 75 74 73 20 7b 0a 3c 70 3e 57  D;.}.puts {.<p>W
5970: 69 74 68 20 74 68 69 73 20 74 72 69 67 67 65 72  ith this trigger
5980: 20 69 6e 73 74 61 6c 6c 65 64 2c 20 65 78 65 63   installed, exec
5990: 75 74 69 6e 67 20 74 68 65 20 73 74 61 74 65 6d  uting the statem
59a0: 65 6e 74 3a 3c 2f 70 3e 0a 7d 0a 0a 45 78 61 6d  ent:</p>.}..Exam
59b0: 70 6c 65 20 7b 0a 55 50 44 41 54 45 20 63 75 73  ple {.UPDATE cus
59c0: 74 6f 6d 65 72 73 20 53 45 54 20 61 64 64 72 65  tomers SET addre
59d0: 73 73 20 3d 20 27 31 20 4d 61 69 6e 20 53 74 2e  ss = '1 Main St.
59e0: 27 20 57 48 45 52 45 20 6e 61 6d 65 20 3d 20 27  ' WHERE name = '
59f0: 4a 61 63 6b 20 4a 6f 6e 65 73 27 3b 0a 7d 0a 70  Jack Jones';.}.p
5a00: 75 74 73 20 7b 0a 3c 70 3e 63 61 75 73 65 73 20  uts {.<p>causes 
5a10: 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 6f  the following to
5a20: 20 62 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c   be automaticall
5a30: 79 20 65 78 65 63 75 74 65 64 3a 3c 2f 70 3e 0a  y executed:</p>.
5a40: 7d 0a 45 78 61 6d 70 6c 65 20 7b 0a 55 50 44 41  }.Example {.UPDA
5a50: 54 45 20 6f 72 64 65 72 73 20 53 45 54 20 61 64  TE orders SET ad
5a60: 64 72 65 73 73 20 3d 20 27 31 20 4d 61 69 6e 20  dress = '1 Main 
5a70: 53 74 2e 27 20 57 48 45 52 45 20 63 75 73 74 6f  St.' WHERE custo
5a80: 6d 65 72 5f 6e 61 6d 65 20 3d 20 27 4a 61 63 6b  mer_name = 'Jack
5a90: 20 4a 6f 6e 65 73 27 3b 0a 7d 0a 0a 70 75 74 73   Jones';.}..puts
5aa0: 20 7b 0a 3c 70 3e 4e 6f 74 65 20 74 68 61 74 20   {.<p>Note that 
5ab0: 63 75 72 72 65 6e 74 6c 79 2c 20 74 72 69 67 67  currently, trigg
5ac0: 65 72 73 20 6d 61 79 20 62 65 68 61 76 65 20 6f  ers may behave o
5ad0: 64 64 6c 79 20 77 68 65 6e 20 63 72 65 61 74 65  ddly when create
5ae0: 64 20 6f 6e 20 74 61 62 6c 65 73 0a 20 20 77 69  d on tables.  wi
5af0: 74 68 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41  th INTEGER PRIMA
5b00: 52 59 20 4b 45 59 20 66 69 65 6c 64 73 2e 20 49  RY KEY fields. I
5b10: 66 20 61 20 42 45 46 4f 52 45 20 74 72 69 67 67  f a BEFORE trigg
5b20: 65 72 20 70 72 6f 67 72 61 6d 20 6d 6f 64 69 66  er program modif
5b30: 69 65 73 20 74 68 65 20 0a 20 20 49 4e 54 45 47  ies the .  INTEG
5b40: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 66  ER PRIMARY KEY f
5b50: 69 65 6c 64 20 6f 66 20 61 20 72 6f 77 20 74 68  ield of a row th
5b60: 61 74 20 77 69 6c 6c 20 62 65 20 73 75 62 73 65  at will be subse
5b70: 71 75 65 6e 74 6c 79 20 75 70 64 61 74 65 64 20  quently updated 
5b80: 62 79 20 74 68 65 0a 20 20 73 74 61 74 65 6d 65  by the.  stateme
5b90: 6e 74 20 74 68 61 74 20 63 61 75 73 65 73 20 74  nt that causes t
5ba0: 68 65 20 74 72 69 67 67 65 72 20 74 6f 20 66 69  he trigger to fi
5bb0: 72 65 2c 20 74 68 65 6e 20 74 68 65 20 75 70 64  re, then the upd
5bc0: 61 74 65 20 6d 61 79 20 6e 6f 74 20 6f 63 63 75  ate may not occu
5bd0: 72 2e 20 0a 20 20 54 68 65 20 77 6f 72 6b 61 72  r. .  The workar
5be0: 6f 75 6e 64 20 69 73 20 74 6f 20 64 65 63 6c 61  ound is to decla
5bf0: 72 65 20 74 68 65 20 74 61 62 6c 65 20 77 69 74  re the table wit
5c00: 68 20 61 20 50 52 49 4d 41 52 59 20 4b 45 59 20  h a PRIMARY KEY 
5c10: 63 6f 6c 75 6d 6e 20 69 6e 73 74 65 61 64 0a 20  column instead. 
5c20: 20 6f 66 20 61 6e 20 49 4e 54 45 47 45 52 20 50   of an INTEGER P
5c30: 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d  RIMARY KEY colum
5c40: 6e 2e 3c 2f 70 3e 0a 7d 0a 0a 70 75 74 73 20 7b  n.</p>.}..puts {
5c50: 0a 3c 70 3e 41 20 73 70 65 63 69 61 6c 20 53 51  .<p>A special SQ
5c60: 4c 20 66 75 6e 63 74 69 6f 6e 20 52 41 49 53 45  L function RAISE
5c70: 28 29 20 6d 61 79 20 62 65 20 75 73 65 64 20 77  () may be used w
5c80: 69 74 68 69 6e 20 61 20 74 72 69 67 67 65 72 2d  ithin a trigger-
5c90: 70 72 6f 67 72 61 6d 2c 20 77 69 74 68 20 74 68  program, with th
5ca0: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 79 6e 74  e following synt
5cb0: 61 78 3c 2f 70 3e 20 0a 7d 0a 53 79 6e 74 61 78  ax</p> .}.Syntax
5cc0: 20 7b 72 61 69 73 65 2d 66 75 6e 63 74 69 6f 6e   {raise-function
5cd0: 7d 20 7b 0a 52 41 49 53 45 20 28 20 41 42 4f 52  } {.RAISE ( ABOR
5ce0: 54 2c 20 3c 65 72 72 6f 72 2d 6d 65 73 73 61 67  T, <error-messag
5cf0: 65 3e 20 29 20 7c 20 0a 52 41 49 53 45 20 28 20  e> ) | .RAISE ( 
5d00: 46 41 49 4c 2c 20 3c 65 72 72 6f 72 2d 6d 65 73  FAIL, <error-mes
5d10: 73 61 67 65 3e 20 29 20 7c 20 0a 52 41 49 53 45  sage> ) | .RAISE
5d20: 20 28 20 52 4f 4c 4c 42 41 43 4b 2c 20 3c 65 72   ( ROLLBACK, <er
5d30: 72 6f 72 2d 6d 65 73 73 61 67 65 3e 20 29 20 7c  ror-message> ) |
5d40: 20 0a 52 41 49 53 45 20 28 20 49 47 4e 4f 52 45   .RAISE ( IGNORE
5d50: 20 29 0a 7d 0a 70 75 74 73 20 7b 0a 3c 70 3e 57   ).}.puts {.<p>W
5d60: 68 65 6e 20 6f 6e 65 20 6f 66 20 74 68 65 20 66  hen one of the f
5d70: 69 72 73 74 20 74 68 72 65 65 20 66 6f 72 6d 73  irst three forms
5d80: 20 69 73 20 63 61 6c 6c 65 64 20 64 75 72 69 6e   is called durin
5d90: 67 20 74 72 69 67 67 65 72 2d 70 72 6f 67 72 61  g trigger-progra
5da0: 6d 20 65 78 65 63 75 74 69 6f 6e 2c 20 74 68 65  m execution, the
5db0: 20 73 70 65 63 69 66 69 65 64 20 4f 4e 20 43 4f   specified ON CO
5dc0: 4e 46 4c 49 43 54 20 70 72 6f 63 65 73 73 69 6e  NFLICT processin
5dd0: 67 20 69 73 20 70 65 72 66 6f 72 6d 65 64 20 28  g is performed (
5de0: 65 69 74 68 65 72 20 41 42 4f 52 54 2c 20 46 41  either ABORT, FA
5df0: 49 4c 20 6f 72 20 0a 20 52 4f 4c 4c 42 41 43 4b  IL or . ROLLBACK
5e00: 29 20 61 6e 64 20 74 68 65 20 63 75 72 72 65 6e  ) and the curren
5e10: 74 20 71 75 65 72 79 20 74 65 72 6d 69 6e 61 74  t query terminat
5e20: 65 73 2e 20 41 6e 20 65 72 72 6f 72 20 63 6f 64  es. An error cod
5e30: 65 20 6f 66 20 53 51 4c 49 54 45 5f 43 4f 4e 53  e of SQLITE_CONS
5e40: 54 52 41 49 4e 54 20 69 73 20 72 65 74 75 72 6e  TRAINT is return
5e50: 65 64 20 74 6f 20 74 68 65 20 75 73 65 72 2c 20  ed to the user, 
5e60: 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20 73  along with the s
5e70: 70 65 63 69 66 69 65 64 20 65 72 72 6f 72 20 6d  pecified error m
5e80: 65 73 73 61 67 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e  essage.</p>..<p>
5e90: 57 68 65 6e 20 52 41 49 53 45 28 49 47 4e 4f 52  When RAISE(IGNOR
5ea0: 45 29 20 69 73 20 63 61 6c 6c 65 64 2c 20 74 68  E) is called, th
5eb0: 65 20 72 65 6d 61 69 6e 64 65 72 20 6f 66 20 74  e remainder of t
5ec0: 68 65 20 63 75 72 72 65 6e 74 20 74 72 69 67 67  he current trigg
5ed0: 65 72 20 70 72 6f 67 72 61 6d 2c 0a 74 68 65 20  er program,.the 
5ee0: 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20 63  statement that c
5ef0: 61 75 73 65 64 20 74 68 65 20 74 72 69 67 67 65  aused the trigge
5f00: 72 20 70 72 6f 67 72 61 6d 20 74 6f 20 65 78 65  r program to exe
5f10: 63 75 74 65 20 61 6e 64 20 61 6e 79 20 73 75 62  cute and any sub
5f20: 73 65 71 75 65 6e 74 0a 20 20 20 20 74 72 69 67  sequent.    trig
5f30: 67 65 72 20 70 72 6f 67 72 61 6d 73 20 74 68 61  ger programs tha
5f40: 74 20 77 6f 75 6c 64 20 6f 66 20 62 65 65 6e 20  t would of been 
5f50: 65 78 65 63 75 74 65 64 20 61 72 65 20 61 62 61  executed are aba
5f60: 6e 64 6f 6e 65 64 2e 20 4e 6f 20 64 61 74 61 62  ndoned. No datab
5f70: 61 73 65 0a 20 20 20 20 63 68 61 6e 67 65 73 20  ase.    changes 
5f80: 61 72 65 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e  are rolled back.
5f90: 20 20 49 66 20 74 68 65 20 73 74 61 74 65 6d 65    If the stateme
5fa0: 6e 74 20 74 68 61 74 20 63 61 75 73 65 64 20 74  nt that caused t
5fb0: 68 65 20 74 72 69 67 67 65 72 20 70 72 6f 67 72  he trigger progr
5fc0: 61 6d 0a 20 20 20 20 74 6f 20 65 78 65 63 75 74  am.    to execut
5fd0: 65 20 69 73 20 69 74 73 65 6c 66 20 70 61 72 74  e is itself part
5fe0: 20 6f 66 20 61 20 74 72 69 67 67 65 72 20 70 72   of a trigger pr
5ff0: 6f 67 72 61 6d 2c 20 74 68 65 6e 20 74 68 61 74  ogram, then that
6000: 20 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d   trigger program
6010: 0a 20 20 20 20 72 65 73 75 6d 65 73 20 65 78 65  .    resumes exe
6020: 63 75 74 69 6f 6e 20 61 74 20 74 68 65 20 62 65  cution at the be
6030: 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20 6e  ginning of the n
6040: 65 78 74 20 73 74 65 70 2e 0a 3c 2f 70 3e 0a 0a  ext step..</p>..
6050: 3c 70 3e 54 72 69 67 67 65 72 73 20 61 72 65 20  <p>Triggers are 
6060: 72 65 6d 6f 76 65 64 20 75 73 69 6e 67 20 74 68  removed using th
6070: 65 20 3c 61 20 68 72 65 66 3d 22 23 64 72 6f 70  e <a href="#drop
6080: 74 72 69 67 67 65 72 22 3e 44 52 4f 50 20 54 52  trigger">DROP TR
6090: 49 47 47 45 52 3c 2f 61 3e 0a 73 74 61 74 65 6d  IGGER</a>.statem
60a0: 65 6e 74 2e 20 20 4e 6f 6e 2d 74 65 6d 70 6f 72  ent.  Non-tempor
60b0: 61 72 79 20 74 72 69 67 67 65 72 73 20 63 61 6e  ary triggers can
60c0: 6e 6f 74 20 62 65 20 61 64 64 65 64 20 6f 6e 20  not be added on 
60d0: 61 20 74 61 62 6c 65 20 69 6e 20 61 6e 20 0a 61  a table in an .a
60e0: 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65  ttached database
60f0: 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f  .</p>.}...Sectio
6100: 6e 20 7b 43 52 45 41 54 45 20 56 49 45 57 7d 20  n {CREATE VIEW} 
6110: 7b 63 72 65 61 74 65 76 69 65 77 7d 0a 0a 53 79  {createview}..Sy
6120: 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e  ntax {sql-comman
6130: 64 7d 20 7b 0a 43 52 45 41 54 45 20 5b 54 45 4d  d} {.CREATE [TEM
6140: 50 20 7c 20 54 45 4d 50 4f 52 41 52 59 5d 20 56  P | TEMPORARY] V
6150: 49 45 57 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e  IEW [<database-n
6160: 61 6d 65 3e 2e 5d 20 3c 76 69 65 77 2d 6e 61 6d  ame>.] <view-nam
6170: 65 3e 20 41 53 20 3c 73 65 6c 65 63 74 2d 73 74  e> AS <select-st
6180: 61 74 65 6d 65 6e 74 3e 0a 7d 0a 0a 70 75 74 73  atement>.}..puts
6190: 20 7b 0a 3c 70 3e 54 68 65 20 43 52 45 41 54 45   {.<p>The CREATE
61a0: 20 56 49 45 57 20 63 6f 6d 6d 61 6e 64 20 61 73   VIEW command as
61b0: 73 69 67 6e 73 20 61 20 6e 61 6d 65 20 74 6f 20  signs a name to 
61c0: 61 20 70 72 65 2d 70 61 63 6b 61 67 65 64 20 0a  a pre-packaged .
61d0: 3c 61 20 68 72 65 66 3d 22 23 73 65 6c 65 63 74  <a href="#select
61e0: 22 3e 53 45 4c 45 43 54 3c 2f 61 3e 0a 73 74 61  ">SELECT</a>.sta
61f0: 74 65 6d 65 6e 74 2e 20 20 4f 6e 63 65 20 74 68  tement.  Once th
6200: 65 20 76 69 65 77 20 69 73 20 63 72 65 61 74 65  e view is create
6210: 64 2c 20 69 74 20 63 61 6e 20 62 65 20 75 73 65  d, it can be use
6220: 64 20 69 6e 20 74 68 65 20 46 52 4f 4d 20 63 6c  d in the FROM cl
6230: 61 75 73 65 0a 6f 66 20 61 6e 6f 74 68 65 72 20  ause.of another 
6240: 53 45 4c 45 43 54 20 69 6e 20 70 6c 61 63 65 20  SELECT in place 
6250: 6f 66 20 61 20 74 61 62 6c 65 20 6e 61 6d 65 2e  of a table name.
6260: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74 68 65  .</p>..<p>If the
6270: 20 22 54 45 4d 50 22 20 6f 72 20 22 54 45 4d 50   "TEMP" or "TEMP
6280: 4f 52 41 52 59 22 20 6b 65 79 77 6f 72 64 20 6f  ORARY" keyword o
6290: 63 63 75 72 73 20 69 6e 20 62 65 74 77 65 65 6e  ccurs in between
62a0: 20 22 43 52 45 41 54 45 22 0a 61 6e 64 20 22 54   "CREATE".and "T
62b0: 41 42 4c 45 22 20 74 68 65 6e 20 74 68 65 20 74  ABLE" then the t
62c0: 61 62 6c 65 20 74 68 61 74 20 69 73 20 63 72 65  able that is cre
62d0: 61 74 65 64 20 69 73 20 6f 6e 6c 79 20 76 69 73  ated is only vis
62e0: 69 62 6c 65 20 74 6f 20 74 68 65 0a 70 72 6f 63  ible to the.proc
62f0: 65 73 73 20 74 68 61 74 20 6f 70 65 6e 65 64 20  ess that opened 
6300: 74 68 65 20 64 61 74 61 62 61 73 65 20 61 6e 64  the database and
6310: 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c   is automaticall
6320: 79 20 64 65 6c 65 74 65 64 20 77 68 65 6e 0a 74  y deleted when.t
6330: 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20 63  he database is c
6340: 6c 6f 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20  losed.</p>..<p> 
6350: 49 66 20 61 20 3c 64 61 74 61 62 61 73 65 2d 6e  If a <database-n
6360: 61 6d 65 3e 20 69 73 20 73 70 65 63 69 66 69 65  ame> is specifie
6370: 64 2c 20 74 68 65 6e 20 74 68 65 20 76 69 65 77  d, then the view
6380: 20 69 73 20 63 72 65 61 74 65 64 20 69 6e 20 0a   is created in .
6390: 74 68 65 20 6e 61 6d 65 64 20 64 61 74 61 62 61  the named databa
63a0: 73 65 2e 20 49 74 20 69 73 20 61 6e 20 65 72 72  se. It is an err
63b0: 6f 72 20 74 6f 20 73 70 65 63 69 66 79 20 62 6f  or to specify bo
63c0: 74 68 20 61 20 3c 64 61 74 61 62 61 73 65 2d 6e  th a <database-n
63d0: 61 6d 65 3e 0a 61 6e 64 20 74 68 65 20 54 45 4d  ame>.and the TEM
63e0: 50 20 6b 65 79 77 6f 72 64 2c 20 75 6e 6c 65 73  P keyword, unles
63f0: 73 20 74 68 65 20 3c 64 61 74 61 62 61 73 65 2d  s the <database-
6400: 6e 61 6d 65 3e 20 69 73 20 22 74 65 6d 70 22 2e  name> is "temp".
6410: 20 49 66 20 6e 6f 0a 64 61 74 61 62 61 73 65 20   If no.database 
6420: 6e 61 6d 65 20 69 73 20 73 70 65 63 69 66 69 65  name is specifie
6430: 64 2c 20 61 6e 64 20 74 68 65 20 54 45 4d 50 20  d, and the TEMP 
6440: 6b 65 79 77 6f 72 64 20 69 73 20 6e 6f 74 20 70  keyword is not p
6450: 72 65 73 65 6e 74 2c 0a 74 68 65 20 74 61 62 6c  resent,.the tabl
6460: 65 20 69 73 20 63 72 65 61 74 65 64 20 69 6e 20  e is created in 
6470: 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73  the main databas
6480: 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 59 6f 75 20 63  e.</p>..<p>You c
6490: 61 6e 6e 6f 74 20 43 4f 50 59 2c 20 44 45 4c 45  annot COPY, DELE
64a0: 54 45 2c 20 49 4e 53 45 52 54 20 6f 72 20 55 50  TE, INSERT or UP
64b0: 44 41 54 45 20 61 20 76 69 65 77 2e 20 20 56 69  DATE a view.  Vi
64c0: 65 77 73 20 61 72 65 20 72 65 61 64 2d 6f 6e 6c  ews are read-onl
64d0: 79 20 0a 69 6e 20 53 51 4c 69 74 65 2e 20 20 48  y .in SQLite.  H
64e0: 6f 77 65 76 65 72 2c 20 69 6e 20 6d 61 6e 79 20  owever, in many 
64f0: 63 61 73 65 73 20 79 6f 75 20 63 61 6e 20 75 73  cases you can us
6500: 65 20 61 20 3c 61 20 68 72 65 66 3d 22 23 74 72  e a <a href="#tr
6510: 69 67 67 65 72 22 3e 0a 54 52 49 47 47 45 52 3c  igger">.TRIGGER<
6520: 2f 61 3e 20 6f 6e 20 74 68 65 20 76 69 65 77 20  /a> on the view 
6530: 74 6f 20 61 63 63 6f 6d 70 6c 69 73 68 20 74 68  to accomplish th
6540: 65 20 73 61 6d 65 20 74 68 69 6e 67 2e 20 20 56  e same thing.  V
6550: 69 65 77 73 20 61 72 65 20 72 65 6d 6f 76 65 64  iews are removed
6560: 20 0a 77 69 74 68 20 74 68 65 20 3c 61 20 68 72   .with the <a hr
6570: 65 66 3d 22 23 64 72 6f 70 76 69 65 77 22 3e 44  ef="#dropview">D
6580: 52 4f 50 20 56 49 45 57 3c 2f 61 3e 20 0a 63 6f  ROP VIEW</a> .co
6590: 6d 6d 61 6e 64 2e 20 20 4e 6f 6e 2d 74 65 6d 70  mmand.  Non-temp
65a0: 6f 72 61 72 79 20 76 69 65 77 73 20 63 61 6e 6e  orary views cann
65b0: 6f 74 20 62 65 20 63 72 65 61 74 65 64 20 6f 6e  ot be created on
65c0: 20 74 61 62 6c 65 73 20 69 6e 20 61 6e 20 61 74   tables in an at
65d0: 74 61 63 68 65 64 20 0a 64 61 74 61 62 61 73 65  tached .database
65e0: 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f  .</p>.}...Sectio
65f0: 6e 20 44 45 4c 45 54 45 20 64 65 6c 65 74 65 0a  n DELETE delete.
6600: 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61  .Syntax {sql-sta
6610: 74 65 6d 65 6e 74 7d 20 7b 0a 44 45 4c 45 54 45  tement} {.DELETE
6620: 20 46 52 4f 4d 20 5b 3c 64 61 74 61 62 61 73 65   FROM [<database
6630: 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65  -name> .] <table
6640: 2d 6e 61 6d 65 3e 20 5b 57 48 45 52 45 20 3c 65  -name> [WHERE <e
6650: 78 70 72 3e 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a  xpr>].}..puts {.
6660: 3c 70 3e 54 68 65 20 44 45 4c 45 54 45 20 63 6f  <p>The DELETE co
6670: 6d 6d 61 6e 64 20 69 73 20 75 73 65 64 20 74 6f  mmand is used to
6680: 20 72 65 6d 6f 76 65 20 72 65 63 6f 72 64 73 20   remove records 
6690: 66 72 6f 6d 20 61 20 74 61 62 6c 65 2e 0a 54 68  from a table..Th
66a0: 65 20 63 6f 6d 6d 61 6e 64 20 63 6f 6e 73 69 73  e command consis
66b0: 74 73 20 6f 66 20 74 68 65 20 22 44 45 4c 45 54  ts of the "DELET
66c0: 45 20 46 52 4f 4d 22 20 6b 65 79 77 6f 72 64 73  E FROM" keywords
66d0: 20 66 6f 6c 6c 6f 77 65 64 20 62 79 0a 74 68 65   followed by.the
66e0: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 74 61 62   name of the tab
66f0: 6c 65 20 66 72 6f 6d 20 77 68 69 63 68 20 72 65  le from which re
6700: 63 6f 72 64 73 20 61 72 65 20 74 6f 20 62 65 20  cords are to be 
6710: 72 65 6d 6f 76 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c  removed..</p>..<
6720: 70 3e 57 69 74 68 6f 75 74 20 61 20 57 48 45 52  p>Without a WHER
6730: 45 20 63 6c 61 75 73 65 2c 20 61 6c 6c 20 72 6f  E clause, all ro
6740: 77 73 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20  ws of the table 
6750: 61 72 65 20 72 65 6d 6f 76 65 64 2e 0a 49 66 20  are removed..If 
6760: 61 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 69  a WHERE clause i
6770: 73 20 73 75 70 70 6c 69 65 64 2c 20 74 68 65 6e  s supplied, then
6780: 20 6f 6e 6c 79 20 74 68 6f 73 65 20 72 6f 77 73   only those rows
6790: 20 74 68 61 74 20 6d 61 74 63 68 0a 74 68 65 20   that match.the 
67a0: 65 78 70 72 65 73 73 69 6f 6e 20 61 72 65 20 72  expression are r
67b0: 65 6d 6f 76 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a  emoved.</p>.}...
67c0: 53 65 63 74 69 6f 6e 20 7b 44 45 54 41 43 48 20  Section {DETACH 
67d0: 44 41 54 41 42 41 53 45 7d 20 64 65 74 61 63 68  DATABASE} detach
67e0: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f  ..Syntax {sql-co
67f0: 6d 6d 61 6e 64 7d 20 7b 0a 44 45 54 41 43 48 20  mmand} {.DETACH 
6800: 5b 44 41 54 41 42 41 53 45 5d 20 3c 64 61 74 61  [DATABASE] <data
6810: 62 61 73 65 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70 75  base-name>.}..pu
6820: 74 73 20 7b 0a 3c 70 3e 54 68 69 73 20 73 74 61  ts {.<p>This sta
6830: 74 65 6d 65 6e 74 20 64 65 74 61 63 68 65 73 20  tement detaches 
6840: 61 6e 20 61 64 64 69 74 69 6f 6e 61 6c 20 64 61  an additional da
6850: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
6860: 6e 20 70 72 65 76 69 6f 75 73 6c 79 20 0a 61 74  n previously .at
6870: 74 61 63 68 65 64 20 75 73 69 6e 67 20 74 68 65  tached using the
6880: 20 3c 61 20 68 72 65 66 3d 22 23 61 74 74 61 63   <a href="#attac
6890: 68 22 3e 41 54 54 41 43 48 20 44 41 54 41 42 41  h">ATTACH DATABA
68a0: 53 45 3c 2f 61 3e 20 73 74 61 74 65 6d 65 6e 74  SE</a> statement
68b0: 2e 20 20 49 74 0a 69 73 20 70 6f 73 73 69 62 6c  .  It.is possibl
68c0: 65 20 74 6f 20 68 61 76 65 20 74 68 65 20 73 61  e to have the sa
68d0: 6d 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  me database file
68e0: 20 61 74 74 61 63 68 65 64 20 6d 75 6c 74 69 70   attached multip
68f0: 6c 65 20 74 69 6d 65 73 20 75 73 69 6e 67 20 0a  le times using .
6900: 64 69 66 66 65 72 65 6e 74 20 6e 61 6d 65 73 2c  different names,
6910: 20 61 6e 64 20 64 65 74 61 63 68 69 6e 67 20 6f   and detaching o
6920: 6e 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f  ne connection to
6930: 20 61 20 66 69 6c 65 20 77 69 6c 6c 20 6c 65 61   a file will lea
6940: 76 65 20 74 68 65 20 0a 6f 74 68 65 72 73 20 69  ve the .others i
6950: 6e 74 61 63 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  ntact.</p>..<p>T
6960: 68 69 73 20 73 74 61 74 65 6d 65 6e 74 20 77 69  his statement wi
6970: 6c 6c 20 66 61 69 6c 20 69 66 20 53 51 4c 69 74  ll fail if SQLit
6980: 65 20 69 73 20 69 6e 20 74 68 65 20 6d 69 64 64  e is in the midd
6990: 6c 65 20 6f 66 20 61 20 74 72 61 6e 73 61 63 74  le of a transact
69a0: 69 6f 6e 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63  ion.</p>.}...Sec
69b0: 74 69 6f 6e 20 7b 44 52 4f 50 20 49 4e 44 45 58  tion {DROP INDEX
69c0: 7d 20 64 72 6f 70 69 6e 64 65 78 0a 0a 53 79 6e  } dropindex..Syn
69d0: 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64  tax {sql-command
69e0: 7d 20 7b 0a 44 52 4f 50 20 49 4e 44 45 58 20 5b  } {.DROP INDEX [
69f0: 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20  <database-name> 
6a00: 2e 5d 20 3c 69 6e 64 65 78 2d 6e 61 6d 65 3e 0a  .] <index-name>.
6a10: 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65  }..puts {.<p>The
6a20: 20 44 52 4f 50 20 49 4e 44 45 58 20 73 74 61 74   DROP INDEX stat
6a30: 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61 6e  ement removes an
6a40: 20 69 6e 64 65 78 20 61 64 64 65 64 0a 77 69 74   index added.wit
6a50: 68 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23  h the <a href="#
6a60: 63 72 65 61 74 65 69 6e 64 65 78 22 3e 0a 43 52  createindex">.CR
6a70: 45 41 54 45 20 49 4e 44 45 58 3c 2f 61 3e 20 73  EATE INDEX</a> s
6a80: 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 69  tatement.  The i
6a90: 6e 64 65 78 20 6e 61 6d 65 64 20 69 73 20 63 6f  ndex named is co
6aa0: 6d 70 6c 65 74 65 6c 79 20 72 65 6d 6f 76 65 64  mpletely removed
6ab0: 20 66 72 6f 6d 0a 74 68 65 20 64 69 73 6b 2e 20   from.the disk. 
6ac0: 20 54 68 65 20 6f 6e 6c 79 20 77 61 79 20 74 6f   The only way to
6ad0: 20 72 65 63 6f 76 65 72 20 74 68 65 20 69 6e 64   recover the ind
6ae0: 65 78 20 69 73 20 74 6f 20 72 65 65 6e 74 65 72  ex is to reenter
6af0: 20 74 68 65 0a 61 70 70 72 6f 70 72 69 61 74 65   the.appropriate
6b00: 20 43 52 45 41 54 45 20 49 4e 44 45 58 20 63 6f   CREATE INDEX co
6b10: 6d 6d 61 6e 64 2e 20 20 4e 6f 6e 2d 74 65 6d 70  mmand.  Non-temp
6b20: 6f 72 61 72 79 20 69 6e 64 65 78 65 73 20 6f 6e  orary indexes on
6b30: 20 74 61 62 6c 65 73 20 69 6e 20 0a 61 6e 20 61   tables in .an a
6b40: 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65  ttached database
6b50: 20 63 61 6e 6e 6f 74 20 62 65 20 64 72 6f 70 70   cannot be dropp
6b60: 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  ed.</p>..<p>The 
6b70: 44 52 4f 50 20 49 4e 44 45 58 20 73 74 61 74 65  DROP INDEX state
6b80: 6d 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20 72 65  ment does not re
6b90: 64 75 63 65 20 74 68 65 20 73 69 7a 65 20 6f 66  duce the size of
6ba0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 0a 66   the database .f
6bb0: 69 6c 65 2e 20 20 45 6d 70 74 79 20 73 70 61 63  ile.  Empty spac
6bc0: 65 20 69 6e 20 74 68 65 20 64 61 74 61 62 61 73  e in the databas
6bd0: 65 20 69 73 20 72 65 74 61 69 6e 65 64 20 66 6f  e is retained fo
6be0: 72 20 6c 61 74 65 72 20 49 4e 53 45 52 54 73 2e  r later INSERTs.
6bf0: 20 20 54 6f 20 0a 72 65 6d 6f 76 65 20 66 72 65    To .remove fre
6c00: 65 20 73 70 61 63 65 20 69 6e 20 74 68 65 20 64  e space in the d
6c10: 61 74 61 62 61 73 65 2c 20 75 73 65 20 74 68 65  atabase, use the
6c20: 20 3c 61 20 68 72 65 66 3d 22 23 76 61 63 75 75   <a href="#vacuu
6c30: 6d 22 3e 56 41 43 55 55 4d 3c 2f 61 3e 20 0a 63  m">VACUUM</a> .c
6c40: 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a  ommand.</p>.}...
6c50: 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20 54 41  Section {DROP TA
6c60: 42 4c 45 7d 20 64 72 6f 70 74 61 62 6c 65 0a 0a  BLE} droptable..
6c70: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d  Syntax {sql-comm
6c80: 61 6e 64 7d 20 7b 0a 44 52 4f 50 20 54 41 42 4c  and} {.DROP TABL
6c90: 45 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d  E [<database-nam
6ca0: 65 3e 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65  e>.] <table-name
6cb0: 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54  >.}..puts {.<p>T
6cc0: 68 65 20 44 52 4f 50 20 54 41 42 4c 45 20 73 74  he DROP TABLE st
6cd0: 61 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20  atement removes 
6ce0: 61 20 74 61 62 6c 65 20 61 64 64 65 64 20 77 69  a table added wi
6cf0: 74 68 20 74 68 65 20 3c 61 20 68 72 65 66 3d 0a  th the <a href=.
6d00: 22 23 63 72 65 61 74 65 74 61 62 6c 65 22 3e 43  "#createtable">C
6d10: 52 45 41 54 45 20 54 41 42 4c 45 3c 2f 61 3e 20  REATE TABLE</a> 
6d20: 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20  statement.  The 
6d30: 6e 61 6d 65 20 73 70 65 63 69 66 69 65 64 20 69  name specified i
6d40: 73 20 74 68 65 0a 74 61 62 6c 65 20 6e 61 6d 65  s the.table name
6d50: 2e 20 20 49 74 20 69 73 20 63 6f 6d 70 6c 65 74  .  It is complet
6d60: 65 6c 79 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d  ely removed from
6d70: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63   the database sc
6d80: 68 65 6d 61 20 61 6e 64 20 74 68 65 20 0a 64 69  hema and the .di
6d90: 73 6b 20 66 69 6c 65 2e 20 20 54 68 65 20 74 61  sk file.  The ta
6da0: 62 6c 65 20 63 61 6e 20 6e 6f 74 20 62 65 20 72  ble can not be r
6db0: 65 63 6f 76 65 72 65 64 2e 20 20 41 6c 6c 20 69  ecovered.  All i
6dc0: 6e 64 69 63 65 73 20 61 73 73 6f 63 69 61 74 65  ndices associate
6dd0: 64 20 0a 77 69 74 68 20 74 68 65 20 74 61 62 6c  d .with the tabl
6de0: 65 20 61 72 65 20 61 6c 73 6f 20 64 65 6c 65 74  e are also delet
6df0: 65 64 2e 20 20 4e 6f 6e 2d 74 65 6d 70 6f 72 61  ed.  Non-tempora
6e00: 72 79 20 74 61 62 6c 65 73 20 69 6e 20 61 6e 20  ry tables in an 
6e10: 61 74 74 61 63 68 65 64 20 0a 64 61 74 61 62 61  attached .databa
6e20: 73 65 20 63 61 6e 6e 6f 74 20 62 65 20 64 72 6f  se cannot be dro
6e30: 70 70 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  pped.</p>..<p>Th
6e40: 65 20 44 52 4f 50 20 54 41 42 4c 45 20 73 74 61  e DROP TABLE sta
6e50: 74 65 6d 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20  tement does not 
6e60: 72 65 64 75 63 65 20 74 68 65 20 73 69 7a 65 20  reduce the size 
6e70: 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
6e80: 0a 66 69 6c 65 2e 20 20 45 6d 70 74 79 20 73 70  .file.  Empty sp
6e90: 61 63 65 20 69 6e 20 74 68 65 20 64 61 74 61 62  ace in the datab
6ea0: 61 73 65 20 69 73 20 72 65 74 61 69 6e 65 64 20  ase is retained 
6eb0: 66 6f 72 20 6c 61 74 65 72 20 49 4e 53 45 52 54  for later INSERT
6ec0: 73 2e 20 20 54 6f 20 0a 72 65 6d 6f 76 65 20 66  s.  To .remove f
6ed0: 72 65 65 20 73 70 61 63 65 20 69 6e 20 74 68 65  ree space in the
6ee0: 20 64 61 74 61 62 61 73 65 2c 20 75 73 65 20 74   database, use t
6ef0: 68 65 20 3c 61 20 68 72 65 66 3d 22 23 76 61 63  he <a href="#vac
6f00: 75 75 6d 22 3e 56 41 43 55 55 4d 3c 2f 61 3e 20  uum">VACUUM</a> 
6f10: 0a 63 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 7d 0a  .command.</p>.}.
6f20: 0a 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20  ..Section {DROP 
6f30: 54 52 49 47 47 45 52 7d 20 64 72 6f 70 74 72 69  TRIGGER} droptri
6f40: 67 67 65 72 0a 53 79 6e 74 61 78 20 7b 73 71 6c  gger.Syntax {sql
6f50: 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 44 52  -statement} {.DR
6f60: 4f 50 20 54 52 49 47 47 45 52 20 5b 3c 64 61 74  OP TRIGGER [<dat
6f70: 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c  abase-name> .] <
6f80: 74 72 69 67 67 65 72 2d 6e 61 6d 65 3e 0a 7d 0a  trigger-name>.}.
6f90: 70 75 74 73 20 7b 20 0a 3c 70 3e 54 68 65 20 44  puts { .<p>The D
6fa0: 52 4f 50 20 54 52 49 47 47 45 52 20 73 74 61 74  ROP TRIGGER stat
6fb0: 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61 20  ement removes a 
6fc0: 74 72 69 67 67 65 72 20 63 72 65 61 74 65 64 20  trigger created 
6fd0: 62 79 20 74 68 65 20 0a 3c 61 20 68 72 65 66 3d  by the .<a href=
6fe0: 22 23 63 72 65 61 74 65 74 72 69 67 67 65 72 22  "#createtrigger"
6ff0: 3e 43 52 45 41 54 45 20 54 52 49 47 47 45 52 3c  >CREATE TRIGGER<
7000: 2f 61 3e 20 73 74 61 74 65 6d 65 6e 74 2e 20 20  /a> statement.  
7010: 54 68 65 20 74 72 69 67 67 65 72 20 69 73 20 0a  The trigger is .
7020: 64 65 6c 65 74 65 64 20 66 72 6f 6d 20 74 68 65  deleted from the
7030: 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61   database schema
7040: 2e 20 4e 6f 74 65 20 74 68 61 74 20 74 72 69 67  . Note that trig
7050: 67 65 72 73 20 61 72 65 20 61 75 74 6f 6d 61 74  gers are automat
7060: 69 63 61 6c 6c 79 20 0a 64 72 6f 70 70 65 64 20  ically .dropped 
7070: 77 68 65 6e 20 74 68 65 20 61 73 73 6f 63 69 61  when the associa
7080: 74 65 64 20 74 61 62 6c 65 20 69 73 20 64 72 6f  ted table is dro
7090: 70 70 65 64 2e 20 20 4e 6f 6e 2d 74 65 6d 70 6f  pped.  Non-tempo
70a0: 72 61 72 79 20 74 72 69 67 67 65 72 73 20 0a 63  rary triggers .c
70b0: 61 6e 6e 6f 74 20 62 65 20 64 72 6f 70 70 65 64  annot be dropped
70c0: 20 6f 6e 20 61 74 74 61 63 68 65 64 20 74 61 62   on attached tab
70d0: 6c 65 73 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63  les.</p>.}...Sec
70e0: 74 69 6f 6e 20 7b 44 52 4f 50 20 56 49 45 57 7d  tion {DROP VIEW}
70f0: 20 64 72 6f 70 76 69 65 77 0a 0a 53 79 6e 74 61   dropview..Synta
7100: 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20  x {sql-command} 
7110: 7b 0a 44 52 4f 50 20 56 49 45 57 20 3c 76 69 65  {.DROP VIEW <vie
7120: 77 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70 75 74 73 20  w-name>.}..puts 
7130: 7b 0a 3c 70 3e 54 68 65 20 44 52 4f 50 20 56 49  {.<p>The DROP VI
7140: 45 57 20 73 74 61 74 65 6d 65 6e 74 20 72 65 6d  EW statement rem
7150: 6f 76 65 73 20 61 20 76 69 65 77 20 63 72 65 61  oves a view crea
7160: 74 65 64 20 62 79 20 74 68 65 20 3c 61 20 68 72  ted by the <a hr
7170: 65 66 3d 0a 22 23 63 72 65 61 74 65 76 69 65 77  ef=."#createview
7180: 22 3e 43 52 45 41 54 45 20 56 49 45 57 3c 2f 61  ">CREATE VIEW</a
7190: 3e 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68  > statement.  Th
71a0: 65 20 6e 61 6d 65 20 73 70 65 63 69 66 69 65 64  e name specified
71b0: 20 69 73 20 74 68 65 20 0a 76 69 65 77 20 6e 61   is the .view na
71c0: 6d 65 2e 20 20 49 74 20 69 73 20 72 65 6d 6f 76  me.  It is remov
71d0: 65 64 20 66 72 6f 6d 20 74 68 65 20 64 61 74 61  ed from the data
71e0: 62 61 73 65 20 73 63 68 65 6d 61 2c 20 62 75 74  base schema, but
71f0: 20 6e 6f 20 61 63 74 75 61 6c 20 64 61 74 61 20   no actual data 
7200: 0a 69 6e 20 74 68 65 20 75 6e 64 65 72 6c 79 69  .in the underlyi
7210: 6e 67 20 62 61 73 65 20 74 61 62 6c 65 73 20 69  ng base tables i
7220: 73 20 6d 6f 64 69 66 69 65 64 2e 20 20 4e 6f 6e  s modified.  Non
7230: 2d 74 65 6d 70 6f 72 61 72 79 20 76 69 65 77 73  -temporary views
7240: 20 69 6e 20 0a 61 74 74 61 63 68 65 64 20 64 61   in .attached da
7250: 74 61 62 61 73 65 73 20 63 61 6e 6e 6f 74 20 62  tabases cannot b
7260: 65 20 64 72 6f 70 70 65 64 2e 3c 2f 70 3e 0a 7d  e dropped.</p>.}
7270: 0a 0a 0a 53 65 63 74 69 6f 6e 20 45 58 50 4c 41  ...Section EXPLA
7280: 49 4e 20 65 78 70 6c 61 69 6e 0a 0a 53 79 6e 74  IN explain..Synt
7290: 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e  ax {sql-statemen
72a0: 74 7d 20 7b 0a 45 58 50 4c 41 49 4e 20 3c 73 71  t} {.EXPLAIN <sq
72b0: 6c 2d 73 74 61 74 65 6d 65 6e 74 3e 0a 7d 0a 0a  l-statement>.}..
72c0: 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 45 58  puts {.<p>The EX
72d0: 50 4c 41 49 4e 20 63 6f 6d 6d 61 6e 64 20 6d 6f  PLAIN command mo
72e0: 64 69 66 69 65 72 20 69 73 20 61 20 6e 6f 6e 2d  difier is a non-
72f0: 73 74 61 6e 64 61 72 64 20 65 78 74 65 6e 73 69  standard extensi
7300: 6f 6e 2e 20 20 54 68 65 0a 69 64 65 61 20 63 6f  on.  The.idea co
7310: 6d 65 73 20 66 72 6f 6d 20 61 20 73 69 6d 69 6c  mes from a simil
7320: 61 72 20 63 6f 6d 6d 61 6e 64 20 66 6f 75 6e 64  ar command found
7330: 20 69 6e 20 50 6f 73 74 67 72 65 53 51 4c 2c 20   in PostgreSQL, 
7340: 62 75 74 20 74 68 65 20 6f 70 65 72 61 74 69 6f  but the operatio
7350: 6e 0a 69 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20  n.is completely 
7360: 64 69 66 66 65 72 65 6e 74 2e 3c 2f 70 3e 0a 0a  different.</p>..
7370: 3c 70 3e 49 66 20 74 68 65 20 45 58 50 4c 41 49  <p>If the EXPLAI
7380: 4e 20 6b 65 79 77 6f 72 64 20 61 70 70 65 61 72  N keyword appear
7390: 73 20 62 65 66 6f 72 65 20 61 6e 79 20 6f 74 68  s before any oth
73a0: 65 72 20 53 51 4c 69 74 65 20 53 51 4c 20 63 6f  er SQLite SQL co
73b0: 6d 6d 61 6e 64 0a 74 68 65 6e 20 69 6e 73 74 65  mmand.then inste
73c0: 61 64 20 6f 66 20 61 63 74 75 61 6c 6c 79 20 65  ad of actually e
73d0: 78 65 63 75 74 69 6e 67 20 74 68 65 20 63 6f 6d  xecuting the com
73e0: 6d 61 6e 64 2c 20 74 68 65 20 53 51 4c 69 74 65  mand, the SQLite
73f0: 20 6c 69 62 72 61 72 79 20 77 69 6c 6c 0a 72 65   library will.re
7400: 70 6f 72 74 20 62 61 63 6b 20 74 68 65 20 73 65  port back the se
7410: 71 75 65 6e 63 65 20 6f 66 20 76 69 72 74 75 61  quence of virtua
7420: 6c 20 6d 61 63 68 69 6e 65 20 69 6e 73 74 72 75  l machine instru
7430: 63 74 69 6f 6e 73 20 69 74 20 77 6f 75 6c 64 20  ctions it would 
7440: 68 61 76 65 0a 75 73 65 64 20 74 6f 20 65 78 65  have.used to exe
7450: 63 75 74 65 20 74 68 65 20 63 6f 6d 6d 61 6e 64  cute the command
7460: 20 68 61 64 20 74 68 65 20 45 58 50 4c 41 49 4e   had the EXPLAIN
7470: 20 6b 65 79 77 6f 72 64 20 6e 6f 74 20 62 65 65   keyword not bee
7480: 6e 20 70 72 65 73 65 6e 74 2e 0a 46 6f 72 20 61  n present..For a
7490: 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d  dditional inform
74a0: 61 74 69 6f 6e 20 61 62 6f 75 74 20 76 69 72 74  ation about virt
74b0: 75 61 6c 20 6d 61 63 68 69 6e 65 20 69 6e 73 74  ual machine inst
74c0: 72 75 63 74 69 6f 6e 73 20 73 65 65 0a 74 68 65  ructions see.the
74d0: 20 3c 61 20 68 72 65 66 3d 22 61 72 63 68 2e 68   <a href="arch.h
74e0: 74 6d 6c 22 3e 61 72 63 68 69 74 65 63 74 75 72  tml">architectur
74f0: 65 20 64 65 73 63 72 69 70 74 69 6f 6e 3c 2f 61  e description</a
7500: 3e 20 6f 72 20 74 68 65 20 64 6f 63 75 6d 65 6e  > or the documen
7510: 74 61 74 69 6f 6e 0a 6f 6e 20 3c 61 20 68 72 65  tation.on <a hre
7520: 66 3d 22 6f 70 63 6f 64 65 2e 68 74 6d 6c 22 3e  f="opcode.html">
7530: 61 76 61 69 6c 61 62 6c 65 20 6f 70 63 6f 64 65  available opcode
7540: 73 3c 2f 61 3e 20 66 6f 72 20 74 68 65 20 76 69  s</a> for the vi
7550: 72 74 75 61 6c 20 6d 61 63 68 69 6e 65 2e 3c 2f  rtual machine.</
7560: 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 65  p>.}...Section e
7570: 78 70 72 65 73 73 69 6f 6e 20 65 78 70 72 0a 0a  xpression expr..
7580: 53 79 6e 74 61 78 20 7b 65 78 70 72 7d 20 7b 0a  Syntax {expr} {.
7590: 3c 65 78 70 72 3e 20 3c 62 69 6e 61 72 79 2d 6f  <expr> <binary-o
75a0: 70 3e 20 3c 65 78 70 72 3e 20 7c 0a 3c 65 78 70  p> <expr> |.<exp
75b0: 72 3e 20 3c 6c 69 6b 65 2d 6f 70 3e 20 3c 65 78  r> <like-op> <ex
75c0: 70 72 3e 20 7c 0a 3c 75 6e 61 72 79 2d 6f 70 3e  pr> |.<unary-op>
75d0: 20 3c 65 78 70 72 3e 20 7c 0a 28 20 3c 65 78 70   <expr> |.( <exp
75e0: 72 3e 20 29 20 7c 0a 3c 63 6f 6c 75 6d 6e 2d 6e  r> ) |.<column-n
75f0: 61 6d 65 3e 20 7c 0a 3c 74 61 62 6c 65 2d 6e 61  ame> |.<table-na
7600: 6d 65 3e 20 2e 20 3c 63 6f 6c 75 6d 6e 2d 6e 61  me> . <column-na
7610: 6d 65 3e 20 7c 0a 3c 64 61 74 61 62 61 73 65 2d  me> |.<database-
7620: 6e 61 6d 65 3e 20 2e 20 3c 74 61 62 6c 65 2d 6e  name> . <table-n
7630: 61 6d 65 3e 20 2e 20 3c 63 6f 6c 75 6d 6e 2d 6e  ame> . <column-n
7640: 61 6d 65 3e 20 7c 0a 3c 6c 69 74 65 72 61 6c 2d  ame> |.<literal-
7650: 76 61 6c 75 65 3e 20 7c 0a 3c 66 75 6e 63 74 69  value> |.<functi
7660: 6f 6e 2d 6e 61 6d 65 3e 20 28 20 3c 65 78 70 72  on-name> ( <expr
7670: 2d 6c 69 73 74 3e 20 7c 20 53 54 41 52 20 29 20  -list> | STAR ) 
7680: 7c 0a 3c 65 78 70 72 3e 20 49 53 4e 55 4c 4c 20  |.<expr> ISNULL 
7690: 7c 0a 3c 65 78 70 72 3e 20 4e 4f 54 4e 55 4c 4c  |.<expr> NOTNULL
76a0: 20 7c 0a 3c 65 78 70 72 3e 20 5b 4e 4f 54 5d 20   |.<expr> [NOT] 
76b0: 42 45 54 57 45 45 4e 20 3c 65 78 70 72 3e 20 41  BETWEEN <expr> A
76c0: 4e 44 20 3c 65 78 70 72 3e 20 7c 0a 3c 65 78 70  ND <expr> |.<exp
76d0: 72 3e 20 5b 4e 4f 54 5d 20 49 4e 20 28 20 3c 76  r> [NOT] IN ( <v
76e0: 61 6c 75 65 2d 6c 69 73 74 3e 20 29 20 7c 0a 3c  alue-list> ) |.<
76f0: 65 78 70 72 3e 20 5b 4e 4f 54 5d 20 49 4e 20 28  expr> [NOT] IN (
7700: 20 3c 73 65 6c 65 63 74 2d 73 74 61 74 65 6d 65   <select-stateme
7710: 6e 74 3e 20 29 20 7c 0a 3c 65 78 70 72 3e 20 5b  nt> ) |.<expr> [
7720: 4e 4f 54 5d 20 49 4e 20 5b 3c 64 61 74 61 62 61  NOT] IN [<databa
7730: 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62  se-name> .] <tab
7740: 6c 65 2d 6e 61 6d 65 3e 20 7c 0a 28 20 3c 73 65  le-name> |.( <se
7750: 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e 20  lect-statement> 
7760: 29 20 7c 0a 43 41 53 45 20 5b 3c 65 78 70 72 3e  ) |.CASE [<expr>
7770: 5d 20 4c 50 20 57 48 45 4e 20 3c 65 78 70 72 3e  ] LP WHEN <expr>
7780: 20 54 48 45 4e 20 3c 65 78 70 72 3e 20 52 50 50   THEN <expr> RPP
7790: 4c 55 53 20 5b 45 4c 53 45 20 3c 65 78 70 72 3e  LUS [ELSE <expr>
77a0: 5d 20 45 4e 44 0a 7d 20 7b 6c 69 6b 65 2d 6f 70  ] END.} {like-op
77b0: 7d 20 7b 0a 4c 49 4b 45 20 7c 20 47 4c 4f 42 20  } {.LIKE | GLOB 
77c0: 7c 20 4e 4f 54 20 4c 49 4b 45 20 7c 20 4e 4f 54  | NOT LIKE | NOT
77d0: 20 47 4c 4f 42 0a 7d 0a 0a 70 75 74 73 20 7b 0a   GLOB.}..puts {.
77e0: 3c 70 3e 54 68 69 73 20 73 65 63 74 69 6f 6e 20  <p>This section 
77f0: 69 73 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f  is different fro
7800: 6d 20 74 68 65 20 6f 74 68 65 72 73 2e 20 20 4d  m the others.  M
7810: 6f 73 74 20 6f 74 68 65 72 20 73 65 63 74 69 6f  ost other sectio
7820: 6e 73 20 6f 66 0a 74 68 69 73 20 64 6f 63 75 6d  ns of.this docum
7830: 65 6e 74 20 74 61 6c 6b 73 20 61 62 6f 75 74 20  ent talks about 
7840: 61 20 70 61 72 74 69 63 75 6c 61 72 20 53 51 4c  a particular SQL
7850: 20 63 6f 6d 6d 61 6e 64 2e 20 20 54 68 69 73 20   command.  This 
7860: 73 65 63 74 69 6f 6e 20 64 6f 65 73 0a 6e 6f 74  section does.not
7870: 20 74 61 6c 6b 20 61 62 6f 75 74 20 61 20 73 74   talk about a st
7880: 61 6e 64 61 6c 6f 6e 65 20 63 6f 6d 6d 61 6e 64  andalone command
7890: 20 62 75 74 20 61 62 6f 75 74 20 22 65 78 70 72   but about "expr
78a0: 65 73 73 69 6f 6e 73 22 20 77 68 69 63 68 20 61  essions" which a
78b0: 72 65 20 0a 73 75 62 63 6f 6d 70 6f 6e 65 6e 74  re .subcomponent
78c0: 73 20 6f 66 20 6d 6f 73 74 20 6f 74 68 65 72 20  s of most other 
78d0: 63 6f 6d 6d 61 6e 64 73 2e 3c 2f 70 3e 0a 0a 3c  commands.</p>..<
78e0: 70 3e 53 51 4c 69 74 65 20 75 6e 64 65 72 73 74  p>SQLite underst
78f0: 61 6e 64 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69  ands the followi
7900: 6e 67 20 62 69 6e 61 72 79 20 6f 70 65 72 61 74  ng binary operat
7910: 6f 72 73 2c 20 69 6e 20 6f 72 64 65 72 20 66 72  ors, in order fr
7920: 6f 6d 0a 68 69 67 68 65 73 74 20 74 6f 20 6c 6f  om.highest to lo
7930: 77 65 73 74 20 70 72 65 63 65 64 65 6e 63 65 3a  west precedence:
7940: 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
7950: 65 3e 3c 70 72 65 3e 0a 3c 66 6f 6e 74 20 63 6f  e><pre>.<font co
7960: 6c 6f 72 3d 22 23 32 63 32 63 66 30 22 3e 3c 62  lor="#2c2cf0"><b
7970: 69 67 3e 7c 7c 0a 2a 20 20 20 20 2f 20 20 20 20  ig>||.*    /    
7980: 25 0a 2b 20 20 20 20 2d 0a 26 6c 74 3b 26 6c 74  %.+    -.&lt;&lt
7990: 3b 20 20 20 26 67 74 3b 26 67 74 3b 20 20 20 26  ;   &gt;&gt;   &
79a0: 61 6d 70 3b 20 20 20 20 7c 0a 26 6c 74 3b 20 20  amp;    |.&lt;  
79b0: 20 20 26 6c 74 3b 3d 20 20 20 26 67 74 3b 20 20    &lt;=   &gt;  
79c0: 20 20 26 67 74 3b 3d 0a 3d 20 20 20 20 3d 3d 20    &gt;=.=    == 
79d0: 20 20 21 3d 20 20 20 26 6c 74 3b 26 67 74 3b 20    !=   &lt;&gt; 
79e0: 20 20 3c 2f 62 69 67 3e 49 4e 0a 41 4e 44 20 20    </big>IN.AND  
79f0: 20 0a 4f 52 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70 72   .OR</font>.</pr
7a00: 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  e></blockquote>.
7a10: 0a 3c 70 3e 53 75 70 70 6f 72 74 65 64 20 75 6e  .<p>Supported un
7a20: 61 72 79 20 6f 70 65 72 61 74 6f 72 73 20 61 72  ary operators ar
7a30: 65 20 74 68 65 73 65 3a 3c 2f 70 3e 0a 0a 3c 62  e these:</p>..<b
7a40: 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a  lockquote><pre>.
7a50: 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23 32 63  <font color="#2c
7a60: 32 63 66 30 22 3e 3c 62 69 67 3e 2d 20 20 20 20  2cf0"><big>-    
7a70: 2b 20 20 20 20 21 20 20 20 20 7e 3c 2f 62 69 67  +    !    ~</big
7a80: 3e 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70 72 65 3e 3c  ></font>.</pre><
7a90: 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70  /blockquote>..<p
7aa0: 3e 41 6e 79 20 53 51 4c 69 74 65 20 76 61 6c 75  >Any SQLite valu
7ab0: 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 61 73  e can be used as
7ac0: 20 70 61 72 74 20 6f 66 20 61 6e 20 65 78 70 72   part of an expr
7ad0: 65 73 73 69 6f 6e 2e 20 20 0a 46 6f 72 20 61 72  ession.  .For ar
7ae0: 69 74 68 6d 65 74 69 63 20 6f 70 65 72 61 74 69  ithmetic operati
7af0: 6f 6e 73 2c 20 69 6e 74 65 67 65 72 73 20 61 72  ons, integers ar
7b00: 65 20 74 72 65 61 74 65 64 20 61 73 20 69 6e 74  e treated as int
7b10: 65 67 65 72 73 2e 0a 53 74 72 69 6e 67 73 20 61  egers..Strings a
7b20: 72 65 20 66 69 72 73 74 20 63 6f 6e 76 65 72 74  re first convert
7b30: 65 64 20 74 6f 20 72 65 61 6c 20 6e 75 6d 62 65  ed to real numbe
7b40: 72 73 20 75 73 69 6e 67 20 3c 62 3e 61 74 6f 66  rs using <b>atof
7b50: 28 29 3c 2f 62 3e 2e 0a 46 6f 72 20 63 6f 6d 70  ()</b>..For comp
7b60: 61 72 69 73 6f 6e 20 6f 70 65 72 61 74 6f 72 73  arison operators
7b70: 2c 20 6e 75 6d 62 65 72 73 20 63 6f 6d 70 61 72  , numbers compar
7b80: 65 20 61 73 20 6e 75 6d 62 65 72 73 20 61 6e 64  e as numbers and
7b90: 20 73 74 72 69 6e 67 73 0a 63 6f 6d 70 61 72 65   strings.compare
7ba0: 20 75 73 69 6e 67 20 74 68 65 20 3c 62 3e 73 74   using the <b>st
7bb0: 72 63 6d 70 28 29 3c 2f 62 3e 20 66 75 6e 63 74  rcmp()</b> funct
7bc0: 69 6f 6e 2e 0a 4e 6f 74 65 20 74 68 61 74 20 74  ion..Note that t
7bd0: 68 65 72 65 20 61 72 65 20 74 77 6f 20 76 61 72  here are two var
7be0: 69 61 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 65  iations of the e
7bf0: 71 75 61 6c 73 20 61 6e 64 20 6e 6f 74 20 65 71  quals and not eq
7c00: 75 61 6c 73 0a 6f 70 65 72 61 74 6f 72 73 2e 20  uals.operators. 
7c10: 20 45 71 75 61 6c 73 20 63 61 6e 20 62 65 20 65   Equals can be e
7c20: 69 74 68 65 72 7d 0a 70 75 74 73 20 22 5b 4f 70  ither}.puts "[Op
7c30: 65 72 61 74 6f 72 20 3d 5d 20 6f 72 20 5b 4f 70  erator =] or [Op
7c40: 65 72 61 74 6f 72 20 3d 3d 5d 2e 0a 54 68 65 20  erator ==]..The 
7c50: 6e 6f 6e 2d 65 71 75 61 6c 73 20 6f 70 65 72 61  non-equals opera
7c60: 74 6f 72 20 63 61 6e 20 62 65 20 65 69 74 68 65  tor can be eithe
7c70: 72 0a 5b 4f 70 65 72 61 74 6f 72 20 21 3d 5d 20  r.[Operator !=] 
7c80: 6f 72 20 5b 4f 70 65 72 61 74 6f 72 20 7b 26 6c  or [Operator {&l
7c90: 74 3b 26 67 74 3b 7d 5d 2e 0a 54 68 65 20 5b 4f  t;&gt;}]..The [O
7ca0: 70 65 72 61 74 6f 72 20 7c 7c 5d 20 6f 70 65 72  perator ||] oper
7cb0: 61 74 6f 72 20 69 73 20 5c 22 63 6f 6e 63 61 74  ator is \"concat
7cc0: 65 6e 61 74 65 5c 22 20 2d 20 69 74 20 6a 6f 69  enate\" - it joi
7cd0: 6e 73 20 74 6f 67 65 74 68 65 72 0a 74 68 65 20  ns together.the 
7ce0: 74 77 6f 20 73 74 72 69 6e 67 73 20 6f 66 20 69  two strings of i
7cf0: 74 73 20 6f 70 65 72 61 6e 64 73 2e 0a 54 68 65  ts operands..The
7d00: 20 6f 70 65 72 61 74 6f 72 20 5b 4f 70 65 72 61   operator [Opera
7d10: 74 6f 72 20 25 5d 20 6f 75 74 70 75 74 73 20 74  tor %] outputs t
7d20: 68 65 20 72 65 6d 61 69 6e 64 65 72 20 6f 66 20  he remainder of 
7d30: 69 74 73 20 6c 65 66 74 20 0a 6f 70 65 72 61 6e  its left .operan
7d40: 64 20 6d 6f 64 75 6c 6f 20 69 74 73 20 72 69 67  d modulo its rig
7d50: 68 74 20 6f 70 65 72 61 6e 64 2e 3c 2f 70 3e 22  ht operand.</p>"
7d60: 0a 70 75 74 73 20 7b 0a 0a 3c 61 20 6e 61 6d 65  .puts {..<a name
7d70: 3d 22 6c 69 6b 65 22 3e 3c 2f 61 3e 0a 3c 70 3e  ="like"></a>.<p>
7d80: 54 68 65 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f  The LIKE operato
7d90: 72 20 64 6f 65 73 20 61 20 77 69 6c 64 63 61 72  r does a wildcar
7da0: 64 20 63 6f 6d 70 61 72 69 73 6f 6e 2e 20 20 54  d comparison.  T
7db0: 68 65 20 6f 70 65 72 61 6e 64 0a 74 6f 20 74 68  he operand.to th
7dc0: 65 20 72 69 67 68 74 20 63 6f 6e 74 61 69 6e 73  e right contains
7dd0: 20 74 68 65 20 77 69 6c 64 63 61 72 64 73 2e 7d   the wildcards.}
7de0: 0a 70 75 74 73 20 22 41 20 70 65 72 63 65 6e 74  .puts "A percent
7df0: 20 73 79 6d 62 6f 6c 20 5b 4f 70 65 72 61 74 6f   symbol [Operato
7e00: 72 20 25 5d 20 69 6e 20 74 68 65 20 72 69 67 68  r %] in the righ
7e10: 74 20 6f 70 65 72 61 6e 64 0a 6d 61 74 63 68 65  t operand.matche
7e20: 73 20 61 6e 79 20 73 65 71 75 65 6e 63 65 20 6f  s any sequence o
7e30: 66 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 63  f zero or more c
7e40: 68 61 72 61 63 74 65 72 73 20 6f 6e 20 74 68 65  haracters on the
7e50: 20 6c 65 66 74 2e 0a 41 6e 20 75 6e 64 65 72 73   left..An unders
7e60: 63 6f 72 65 20 5b 4f 70 65 72 61 74 6f 72 20 5f  core [Operator _
7e70: 5d 20 6f 6e 20 74 68 65 20 72 69 67 68 74 0a 6d  ] on the right.m
7e80: 61 74 63 68 65 73 20 61 6e 79 20 73 69 6e 67 6c  atches any singl
7e90: 65 20 63 68 61 72 61 63 74 65 72 20 6f 6e 20 74  e character on t
7ea0: 68 65 20 6c 65 66 74 2e 22 0a 70 75 74 73 20 7b  he left.".puts {
7eb0: 54 68 65 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f  The LIKE operato
7ec0: 72 20 69 73 0a 6e 6f 74 20 63 61 73 65 20 73 65  r is.not case se
7ed0: 6e 73 69 74 69 76 65 20 61 6e 64 20 77 69 6c 6c  nsitive and will
7ee0: 20 6d 61 74 63 68 20 75 70 70 65 72 20 63 61 73   match upper cas
7ef0: 65 20 63 68 61 72 61 63 74 65 72 73 20 6f 6e 20  e characters on 
7f00: 6f 6e 65 0a 73 69 64 65 20 61 67 61 69 6e 73 74  one.side against
7f10: 20 6c 6f 77 65 72 20 63 61 73 65 20 63 68 61 72   lower case char
7f20: 61 63 74 65 72 73 20 6f 6e 20 74 68 65 20 6f 74  acters on the ot
7f30: 68 65 72 2e 0a 28 41 20 62 75 67 3a 20 53 51 4c  her..(A bug: SQL
7f40: 69 74 65 20 6f 6e 6c 79 20 75 6e 64 65 72 73 74  ite only underst
7f50: 61 6e 64 73 20 75 70 70 65 72 2f 6c 6f 77 65 72  ands upper/lower
7f60: 20 63 61 73 65 20 66 6f 72 20 37 2d 62 69 74 20   case for 7-bit 
7f70: 4c 61 74 69 6e 0a 63 68 61 72 61 63 74 65 72 73  Latin.characters
7f80: 2e 20 20 48 65 6e 63 65 20 74 68 65 20 4c 49 4b  .  Hence the LIK
7f90: 45 20 6f 70 65 72 61 74 6f 72 20 69 73 20 63 61  E operator is ca
7fa0: 73 65 20 73 65 6e 73 69 74 69 76 65 20 66 6f 72  se sensitive for
7fb0: 0a 38 2d 62 69 74 20 69 73 6f 38 38 35 39 20 63  .8-bit iso8859 c
7fc0: 68 61 72 61 63 74 65 72 73 20 6f 72 20 55 54 46  haracters or UTF
7fd0: 2d 38 20 63 68 61 72 61 63 74 65 72 73 2e 20 20  -8 characters.  
7fe0: 46 6f 72 20 65 78 61 6d 70 6c 65 2c 0a 74 68 65  For example,.the
7ff0: 20 65 78 70 72 65 73 73 69 6f 6e 20 3c 62 3e 27   expression <b>'
8000: 61 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e 62 73  a'&nbsp;LIKE&nbs
8010: 70 3b 27 41 27 3c 2f 62 3e 20 69 73 20 54 52 55  p;'A'</b> is TRU
8020: 45 20 62 75 74 0a 3c 62 3e 27 26 61 65 6c 69 67  E but.<b>'&aelig
8030: 3b 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e 62 73  ;'&nbsp;LIKE&nbs
8040: 70 3b 27 26 41 45 6c 69 67 3b 27 3c 2f 62 3e 20  p;'&AElig;'</b> 
8050: 69 73 20 46 41 4c 53 45 2e 29 2e 20 20 54 68 65  is FALSE.).  The
8060: 20 69 6e 66 69 78 20 0a 4c 49 4b 45 20 6f 70 65   infix .LIKE ope
8070: 72 61 74 6f 72 20 69 73 20 69 64 65 6e 74 69 63  rator is identic
8080: 61 6c 20 74 68 65 20 75 73 65 72 20 66 75 6e 63  al the user func
8090: 74 69 6f 6e 20 3c 61 20 68 72 65 66 3d 22 23 6c  tion <a href="#l
80a0: 69 6b 65 46 75 6e 63 22 3e 0a 6c 69 6b 65 28 3c  ikeFunc">.like(<
80b0: 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e  i>X</i>,<i>Y</i>
80c0: 29 3c 2f 61 3e 2e 0a 3c 2f 70 3e 0a 0a 3c 61 20  )</a>..</p>..<a 
80d0: 6e 61 6d 65 3d 22 67 6c 6f 62 22 3e 3c 2f 61 3e  name="glob"></a>
80e0: 0a 3c 70 3e 54 68 65 20 47 4c 4f 42 20 6f 70 65  .<p>The GLOB ope
80f0: 72 61 74 6f 72 20 69 73 20 73 69 6d 69 6c 61 72  rator is similar
8100: 20 74 6f 20 4c 49 4b 45 20 62 75 74 20 75 73 65   to LIKE but use
8110: 73 20 74 68 65 20 55 6e 69 78 0a 66 69 6c 65 20  s the Unix.file 
8120: 67 6c 6f 62 62 69 6e 67 20 73 79 6e 74 61 78 20  globbing syntax 
8130: 66 6f 72 20 69 74 73 20 77 69 6c 64 63 61 72 64  for its wildcard
8140: 73 2e 20 20 41 6c 73 6f 2c 20 47 4c 4f 42 20 69  s.  Also, GLOB i
8150: 73 20 63 61 73 65 0a 73 65 6e 73 69 74 69 76 65  s case.sensitive
8160: 2c 20 75 6e 6c 69 6b 65 20 4c 49 4b 45 2e 20 20  , unlike LIKE.  
8170: 42 6f 74 68 20 47 4c 4f 42 20 61 6e 64 20 4c 49  Both GLOB and LI
8180: 4b 45 20 6d 61 79 20 62 65 20 70 72 65 63 65 64  KE may be preced
8190: 65 64 20 62 79 0a 74 68 65 20 4e 4f 54 20 6b 65  ed by.the NOT ke
81a0: 79 77 6f 72 64 20 74 6f 20 69 6e 76 65 72 74 20  yword to invert 
81b0: 74 68 65 20 73 65 6e 73 65 20 6f 66 20 74 68 65  the sense of the
81c0: 20 74 65 73 74 2e 20 20 54 68 65 20 69 6e 66 69   test.  The infi
81d0: 78 20 47 4c 4f 42 20 0a 6f 70 65 72 61 74 6f 72  x GLOB .operator
81e0: 20 69 73 20 69 64 65 6e 74 69 63 61 6c 20 74 68   is identical th
81f0: 65 20 75 73 65 72 20 66 75 6e 63 74 69 6f 6e 20  e user function 
8200: 3c 61 20 68 72 65 66 3d 22 23 67 6c 6f 62 46 75  <a href="#globFu
8210: 6e 63 22 3e 0a 67 6c 6f 62 28 3c 69 3e 58 3c 2f  nc">.glob(<i>X</
8220: 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 61 3e  i>,<i>Y</i>)</a>
8230: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 63 6f 6c 75  .</p>..<p>A colu
8240: 6d 6e 20 6e 61 6d 65 20 63 61 6e 20 62 65 20 61  mn name can be a
8250: 6e 79 20 6f 66 20 74 68 65 20 6e 61 6d 65 73 20  ny of the names 
8260: 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20 43  defined in the C
8270: 52 45 41 54 45 20 54 41 42 4c 45 0a 73 74 61 74  REATE TABLE.stat
8280: 65 6d 65 6e 74 20 6f 72 20 6f 6e 65 20 6f 66 20  ement or one of 
8290: 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 70  the following sp
82a0: 65 63 69 61 6c 20 69 64 65 6e 74 69 66 69 65 72  ecial identifier
82b0: 73 3a 20 22 3c 62 3e 52 4f 57 49 44 3c 2f 62 3e  s: "<b>ROWID</b>
82c0: 22 2c 0a 22 3c 62 3e 4f 49 44 3c 2f 62 3e 22 2c  ",."<b>OID</b>",
82d0: 20 6f 72 20 22 3c 62 3e 5f 52 4f 57 49 44 5f 3c   or "<b>_ROWID_<
82e0: 2f 62 3e 22 2e 0a 54 68 65 73 65 20 73 70 65 63  /b>"..These spec
82f0: 69 61 6c 20 69 64 65 6e 74 69 66 69 65 72 73 20  ial identifiers 
8300: 61 6c 6c 20 64 65 73 63 72 69 62 65 20 74 68 65  all describe the
8310: 0a 75 6e 69 71 75 65 20 72 61 6e 64 6f 6d 20 69  .unique random i
8320: 6e 74 65 67 65 72 20 6b 65 79 20 28 74 68 65 20  nteger key (the 
8330: 22 72 6f 77 20 6b 65 79 22 29 20 61 73 73 6f 63  "row key") assoc
8340: 69 61 74 65 64 20 77 69 74 68 20 65 76 65 72 79  iated with every
8350: 20 0a 72 6f 77 20 6f 66 20 65 76 65 72 79 20 74   .row of every t
8360: 61 62 6c 65 2e 0a 54 68 65 20 73 70 65 63 69 61  able..The specia
8370: 6c 20 69 64 65 6e 74 69 66 69 65 72 73 20 6f 6e  l identifiers on
8380: 6c 79 20 72 65 66 65 72 20 74 6f 20 74 68 65 20  ly refer to the 
8390: 72 6f 77 20 6b 65 79 20 69 66 20 74 68 65 20 43  row key if the C
83a0: 52 45 41 54 45 20 54 41 42 4c 45 0a 73 74 61 74  REATE TABLE.stat
83b0: 65 6d 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20 64  ement does not d
83c0: 65 66 69 6e 65 20 61 20 72 65 61 6c 20 63 6f 6c  efine a real col
83d0: 75 6d 6e 20 77 69 74 68 20 74 68 65 20 73 61 6d  umn with the sam
83e0: 65 20 6e 61 6d 65 2e 20 20 52 6f 77 20 6b 65 79  e name.  Row key
83f0: 73 0a 61 63 74 20 6c 69 6b 65 20 72 65 61 64 2d  s.act like read-
8400: 6f 6e 6c 79 20 63 6f 6c 75 6d 6e 73 2e 20 20 41  only columns.  A
8410: 20 72 6f 77 20 6b 65 79 20 63 61 6e 20 62 65 20   row key can be 
8420: 75 73 65 64 20 61 6e 79 77 68 65 72 65 20 61 20  used anywhere a 
8430: 72 65 67 75 6c 61 72 0a 63 6f 6c 75 6d 6e 20 63  regular.column c
8440: 61 6e 20 62 65 20 75 73 65 64 2c 20 65 78 63 65  an be used, exce
8450: 70 74 20 74 68 61 74 20 79 6f 75 20 63 61 6e 6e  pt that you cann
8460: 6f 74 20 63 68 61 6e 67 65 20 74 68 65 20 76 61  ot change the va
8470: 6c 75 65 0a 6f 66 20 61 20 72 6f 77 20 6b 65 79  lue.of a row key
8480: 20 69 6e 20 61 6e 20 55 50 44 41 54 45 20 6f 72   in an UPDATE or
8490: 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e   INSERT statemen
84a0: 74 2e 0a 22 53 45 4c 45 43 54 20 2a 20 2e 2e 2e  t.."SELECT * ...
84b0: 22 20 64 6f 65 73 20 6e 6f 74 20 72 65 74 75 72  " does not retur
84c0: 6e 20 74 68 65 20 72 6f 77 20 6b 65 79 2e 3c 2f  n the row key.</
84d0: 70 3e 0a 0a 3c 70 3e 53 45 4c 45 43 54 20 73 74  p>..<p>SELECT st
84e0: 61 74 65 6d 65 6e 74 73 20 63 61 6e 20 61 70 70  atements can app
84f0: 65 61 72 20 69 6e 20 65 78 70 72 65 73 73 69 6f  ear in expressio
8500: 6e 73 20 61 73 20 65 69 74 68 65 72 20 74 68 65  ns as either the
8510: 0a 72 69 67 68 74 2d 68 61 6e 64 20 6f 70 65 72  .right-hand oper
8520: 61 6e 64 20 6f 66 20 74 68 65 20 49 4e 20 6f 70  and of the IN op
8530: 65 72 61 74 6f 72 20 6f 72 20 61 73 20 61 20 73  erator or as a s
8540: 63 61 6c 61 72 20 71 75 61 6e 74 69 74 79 2e 0a  calar quantity..
8550: 49 6e 20 62 6f 74 68 20 63 61 73 65 73 2c 20 74  In both cases, t
8560: 68 65 20 53 45 4c 45 43 54 20 73 68 6f 75 6c 64  he SELECT should
8570: 20 68 61 76 65 20 6f 6e 6c 79 20 61 20 73 69 6e   have only a sin
8580: 67 6c 65 20 63 6f 6c 75 6d 6e 20 69 6e 20 69 74  gle column in it
8590: 73 0a 72 65 73 75 6c 74 2e 20 20 43 6f 6d 70 6f  s.result.  Compo
85a0: 75 6e 64 20 53 45 4c 45 43 54 73 20 28 63 6f 6e  und SELECTs (con
85b0: 6e 65 63 74 65 64 20 77 69 74 68 20 6b 65 79 77  nected with keyw
85c0: 6f 72 64 73 20 6c 69 6b 65 20 55 4e 49 4f 4e 20  ords like UNION 
85d0: 6f 72 0a 45 58 43 45 50 54 29 20 61 72 65 20 61  or.EXCEPT) are a
85e0: 6c 6c 6f 77 65 64 2e 0a 41 20 53 45 4c 45 43 54  llowed..A SELECT
85f0: 20 69 6e 20 61 6e 20 65 78 70 72 65 73 73 69 6f   in an expressio
8600: 6e 20 69 73 20 65 76 61 6c 75 61 74 65 64 20 6f  n is evaluated o
8610: 6e 63 65 20 62 65 66 6f 72 65 20 61 6e 79 20 6f  nce before any o
8620: 74 68 65 72 20 70 72 6f 63 65 73 73 69 6e 67 0a  ther processing.
8630: 69 73 20 70 65 72 66 6f 72 6d 65 64 2c 20 73 6f  is performed, so
8640: 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 65 78 70   none of the exp
8650: 72 65 73 73 69 6f 6e 73 20 77 69 74 68 69 6e 20  ressions within 
8660: 74 68 65 20 73 65 6c 65 63 74 20 69 74 73 65 6c  the select itsel
8670: 66 20 63 61 6e 0a 72 65 66 65 72 20 74 6f 20 71  f can.refer to q
8680: 75 61 6e 74 69 74 69 65 73 20 69 6e 20 74 68 65  uantities in the
8690: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 65 78 70 72   containing expr
86a0: 65 73 73 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e  ession.</p>..<p>
86b0: 57 68 65 6e 20 61 20 53 45 4c 45 43 54 20 69 73  When a SELECT is
86c0: 20 74 68 65 20 72 69 67 68 74 20 6f 70 65 72 61   the right opera
86d0: 6e 64 20 6f 66 20 74 68 65 20 49 4e 20 6f 70 65  nd of the IN ope
86e0: 72 61 74 6f 72 2c 20 74 68 65 20 49 4e 0a 6f 70  rator, the IN.op
86f0: 65 72 61 74 6f 72 20 72 65 74 75 72 6e 73 20 54  erator returns T
8700: 52 55 45 20 69 66 20 74 68 65 20 72 65 73 75 6c  RUE if the resul
8710: 74 20 6f 66 20 74 68 65 20 6c 65 66 74 20 6f 70  t of the left op
8720: 65 72 61 6e 64 20 69 73 20 61 6e 79 20 6f 66 0a  erand is any of.
8730: 74 68 65 20 76 61 6c 75 65 73 20 67 65 6e 65 72  the values gener
8740: 61 74 65 64 20 62 79 20 74 68 65 20 73 65 6c 65  ated by the sele
8750: 63 74 2e 20 20 54 68 65 20 49 4e 20 6f 70 65 72  ct.  The IN oper
8760: 61 74 6f 72 20 6d 61 79 20 62 65 20 70 72 65 63  ator may be prec
8770: 65 64 65 64 0a 62 79 20 74 68 65 20 4e 4f 54 20  eded.by the NOT 
8780: 6b 65 79 77 6f 72 64 20 74 6f 20 69 6e 76 65 72  keyword to inver
8790: 74 20 74 68 65 20 73 65 6e 73 65 20 6f 66 20 74  t the sense of t
87a0: 68 65 20 74 65 73 74 2e 3c 2f 70 3e 0a 0a 3c 70  he test.</p>..<p
87b0: 3e 57 68 65 6e 20 61 20 53 45 4c 45 43 54 20 61  >When a SELECT a
87c0: 70 70 65 61 72 73 20 77 69 74 68 69 6e 20 61 6e  ppears within an
87d0: 20 65 78 70 72 65 73 73 69 6f 6e 20 62 75 74 20   expression but 
87e0: 69 73 20 6e 6f 74 20 74 68 65 20 72 69 67 68 74  is not the right
87f0: 0a 6f 70 65 72 61 6e 64 20 6f 66 20 61 6e 20 49  .operand of an I
8800: 4e 20 6f 70 65 72 61 74 6f 72 2c 20 74 68 65 6e  N operator, then
8810: 20 74 68 65 20 66 69 72 73 74 20 72 6f 77 20 6f   the first row o
8820: 66 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20  f the result of 
8830: 74 68 65 0a 53 45 4c 45 43 54 20 62 65 63 6f 6d  the.SELECT becom
8840: 65 73 20 74 68 65 20 76 61 6c 75 65 20 75 73 65  es the value use
8850: 64 20 69 6e 20 74 68 65 20 65 78 70 72 65 73 73  d in the express
8860: 69 6f 6e 2e 20 20 49 66 20 74 68 65 20 53 45 4c  ion.  If the SEL
8870: 45 43 54 20 79 69 65 6c 64 73 0a 6d 6f 72 65 20  ECT yields.more 
8880: 74 68 61 6e 20 6f 6e 65 20 72 65 73 75 6c 74 20  than one result 
8890: 72 6f 77 2c 20 61 6c 6c 20 72 6f 77 73 20 61 66  row, all rows af
88a0: 74 65 72 20 74 68 65 20 66 69 72 73 74 20 61 72  ter the first ar
88b0: 65 20 69 67 6e 6f 72 65 64 2e 20 20 49 66 0a 74  e ignored.  If.t
88c0: 68 65 20 53 45 4c 45 43 54 20 79 69 65 6c 64 73  he SELECT yields
88d0: 20 6e 6f 20 72 6f 77 73 2c 20 74 68 65 6e 20 74   no rows, then t
88e0: 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20  he value of the 
88f0: 53 45 4c 45 43 54 20 69 73 20 4e 55 4c 4c 2e 3c  SELECT is NULL.<
8900: 2f 70 3e 0a 0a 3c 70 3e 42 6f 74 68 20 73 69 6d  /p>..<p>Both sim
8910: 70 6c 65 20 61 6e 64 20 61 67 67 72 65 67 61 74  ple and aggregat
8920: 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20  e functions are 
8930: 73 75 70 70 6f 72 74 65 64 2e 20 20 41 20 73 69  supported.  A si
8940: 6d 70 6c 65 0a 66 75 6e 63 74 69 6f 6e 20 63 61  mple.function ca
8950: 6e 20 62 65 20 75 73 65 64 20 69 6e 20 61 6e 79  n be used in any
8960: 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 20 53 69   expression.  Si
8970: 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 73 20 72  mple functions r
8980: 65 74 75 72 6e 0a 61 20 72 65 73 75 6c 74 20 69  eturn.a result i
8990: 6d 6d 65 64 69 61 74 65 6c 79 20 62 61 73 65 64  mmediately based
89a0: 20 6f 6e 20 74 68 65 69 72 20 69 6e 70 75 74 73   on their inputs
89b0: 2e 20 20 41 67 67 72 65 67 61 74 65 20 66 75 6e  .  Aggregate fun
89c0: 63 74 69 6f 6e 73 0a 6d 61 79 20 6f 6e 6c 79 20  ctions.may only 
89d0: 62 65 20 75 73 65 64 20 69 6e 20 61 20 53 45 4c  be used in a SEL
89e0: 45 43 54 20 73 74 61 74 65 6d 65 6e 74 2e 20 20  ECT statement.  
89f0: 41 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69  Aggregate functi
8a00: 6f 6e 73 20 63 6f 6d 70 75 74 65 0a 74 68 65 69  ons compute.thei
8a10: 72 20 72 65 73 75 6c 74 20 61 63 72 6f 73 73 20  r result across 
8a20: 61 6c 6c 20 72 6f 77 73 20 6f 66 20 74 68 65 20  all rows of the 
8a30: 72 65 73 75 6c 74 20 73 65 74 2e 3c 2f 70 3e 0a  result set.</p>.
8a40: 0a 3c 70 3e 54 68 65 20 66 75 6e 63 74 69 6f 6e  .<p>The function
8a50: 73 20 73 68 6f 77 6e 20 62 65 6c 6f 77 20 61 72  s shown below ar
8a60: 65 20 61 76 61 69 6c 61 62 6c 65 20 62 79 20 64  e available by d
8a70: 65 66 61 75 6c 74 2e 20 20 41 64 64 69 74 69 6f  efault.  Additio
8a80: 6e 61 6c 0a 66 75 6e 63 74 69 6f 6e 73 20 6d 61  nal.functions ma
8a90: 79 20 62 65 20 77 72 69 74 74 65 6e 20 69 6e 20  y be written in 
8aa0: 43 20 61 6e 64 20 61 64 64 65 64 20 74 6f 20 74  C and added to t
8ab0: 68 65 20 64 61 74 61 62 61 73 65 20 65 6e 67 69  he database engi
8ac0: 6e 65 20 75 73 69 6e 67 0a 74 68 65 20 3c 61 20  ne using.the <a 
8ad0: 68 72 65 66 3d 22 63 61 70 69 33 72 65 66 2e 68  href="capi3ref.h
8ae0: 74 6d 6c 23 63 66 75 6e 63 22 3e 73 71 6c 69 74  tml#cfunc">sqlit
8af0: 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69  e3_create_functi
8b00: 6f 6e 28 29 3c 2f 61 3e 0a 41 50 49 2e 3c 2f 70  on()</a>.API.</p
8b10: 3e 0a 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65 72  >..<table border
8b20: 3d 30 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31  =0 cellpadding=1
8b30: 30 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  0>.<tr>.<td vali
8b40: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
8b50: 72 69 67 68 74 22 20 77 69 64 74 68 3d 31 32 30  right" width=120
8b60: 3e 61 62 73 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f  >abs(<i>X</i>)</
8b70: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
8b80: 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20  top">Return the 
8b90: 61 62 73 6f 6c 75 74 65 20 76 61 6c 75 65 20 6f  absolute value o
8ba0: 66 20 61 72 67 75 6d 65 6e 74 20 3c 69 3e 58 3c  f argument <i>X<
8bb0: 2f 69 3e 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  /i>.</td>.</tr>.
8bc0: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
8bd0: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
8be0: 67 68 74 22 3e 63 6f 61 6c 65 73 63 65 28 3c 69  ght">coalesce(<i
8bf0: 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c  >X</i>,<i>Y</i>,
8c00: 2e 2e 2e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  ...)</td>.<td va
8c10: 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72  lign="top">Retur
8c20: 6e 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20  n a copy of the 
8c30: 66 69 72 73 74 20 6e 6f 6e 2d 4e 55 4c 4c 20 61  first non-NULL a
8c40: 72 67 75 6d 65 6e 74 2e 20 20 49 66 0a 61 6c 6c  rgument.  If.all
8c50: 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 4e   arguments are N
8c60: 55 4c 4c 20 74 68 65 6e 20 4e 55 4c 4c 20 69 73  ULL then NULL is
8c70: 20 72 65 74 75 72 6e 65 64 2e 20 20 54 68 65 72   returned.  Ther
8c80: 65 20 6d 75 73 74 20 62 65 20 61 74 20 6c 65 61  e must be at lea
8c90: 73 74 20 0a 32 20 61 72 67 75 6d 65 6e 74 73 2e  st .2 arguments.
8ca0: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72  </td>.</tr>..<tr
8cb0: 3e 0a 3c 61 20 6e 61 6d 65 3d 22 67 6c 6f 62 46  >.<a name="globF
8cc0: 75 6e 63 22 3e 3c 2f 61 3e 0a 3c 74 64 20 76 61  unc"></a>.<td va
8cd0: 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e  lign="top" align
8ce0: 3d 22 72 69 67 68 74 22 3e 67 6c 6f 62 28 3c 69  ="right">glob(<i
8cf0: 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29  >X</i>,<i>Y</i>)
8d00: 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  </td>.<td valign
8d10: 3d 22 74 6f 70 22 3e 54 68 69 73 20 66 75 6e 63  ="top">This func
8d20: 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20  tion is used to 
8d30: 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 0a 22 3c  implement the."<
8d40: 62 3e 58 20 47 4c 4f 42 20 59 3c 2f 62 3e 22 20  b>X GLOB Y</b>" 
8d50: 73 79 6e 74 61 78 20 6f 66 20 53 51 4c 69 74 65  syntax of SQLite
8d60: 2e 20 20 54 68 65 0a 3c 61 20 68 72 65 66 3d 22  .  The.<a href="
8d70: 63 61 70 69 33 72 65 66 2e 68 74 6d 6c 23 73 71  capi3ref.html#sq
8d80: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e  lite3_create_fun
8d90: 63 74 69 6f 6e 22 3e 73 71 6c 69 74 65 33 5f 63  ction">sqlite3_c
8da0: 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29  reate_function()
8db0: 3c 2f 61 3e 20 0a 69 6e 74 65 72 66 61 63 65 20  </a> .interface 
8dc0: 63 61 6e 0a 62 65 20 75 73 65 64 20 74 6f 20 6f  can.be used to o
8dd0: 76 65 72 72 69 64 65 20 74 68 69 73 20 66 75 6e  verride this fun
8de0: 63 74 69 6f 6e 20 61 6e 64 20 74 68 65 72 65 62  ction and thereb
8df0: 79 20 63 68 61 6e 67 65 20 74 68 65 20 6f 70 65  y change the ope
8e00: 72 61 74 69 6f 6e 0a 6f 66 20 74 68 65 20 3c 61  ration.of the <a
8e10: 20 68 72 65 66 3d 22 23 67 6c 6f 62 22 3e 47 4c   href="#glob">GL
8e20: 4f 42 3c 2f 61 3e 20 6f 70 65 72 61 74 6f 72 2e  OB</a> operator.
8e30: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72  </td>.</tr>..<tr
8e40: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
8e50: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
8e60: 3e 69 66 6e 75 6c 6c 28 3c 69 3e 58 3c 2f 69 3e  >ifnull(<i>X</i>
8e70: 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 74 64 3e 0a  ,<i>Y</i>)</td>.
8e80: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
8e90: 3e 52 65 74 75 72 6e 20 61 20 63 6f 70 79 20 6f  >Return a copy o
8ea0: 66 20 74 68 65 20 66 69 72 73 74 20 6e 6f 6e 2d  f the first non-
8eb0: 4e 55 4c 4c 20 61 72 67 75 6d 65 6e 74 2e 20 20  NULL argument.  
8ec0: 49 66 0a 62 6f 74 68 20 61 72 67 75 6d 65 6e 74  If.both argument
8ed0: 73 20 61 72 65 20 4e 55 4c 4c 20 74 68 65 6e 20  s are NULL then 
8ee0: 4e 55 4c 4c 20 69 73 20 72 65 74 75 72 6e 65 64  NULL is returned
8ef0: 2e 20 54 68 69 73 20 62 65 68 61 76 65 73 20 74  . This behaves t
8f00: 68 65 20 73 61 6d 65 20 61 73 20 0a 3c 62 3e 63  he same as .<b>c
8f10: 6f 61 6c 65 73 63 65 28 29 3c 2f 62 3e 20 61 62  oalesce()</b> ab
8f20: 6f 76 65 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  ove.</td>.</tr>.
8f30: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
8f40: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
8f50: 67 68 74 22 3e 6c 61 73 74 5f 69 6e 73 65 72 74  ght">last_insert
8f60: 5f 72 6f 77 69 64 28 29 3c 2f 74 64 3e 0a 3c 74  _rowid()</td>.<t
8f70: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52  d valign="top">R
8f80: 65 74 75 72 6e 20 74 68 65 20 52 4f 57 49 44 20  eturn the ROWID 
8f90: 6f 66 20 74 68 65 20 6c 61 73 74 20 72 6f 77 20  of the last row 
8fa0: 69 6e 73 65 72 74 20 66 72 6f 6d 20 74 68 69 73  insert from this
8fb0: 0a 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 74  .connection to t
8fc0: 68 65 20 64 61 74 61 62 61 73 65 2e 20 20 54 68  he database.  Th
8fd0: 69 73 20 69 73 20 74 68 65 20 73 61 6d 65 20 76  is is the same v
8fe0: 61 6c 75 65 20 74 68 61 74 20 77 6f 75 6c 64 20  alue that would 
8ff0: 62 65 20 72 65 74 75 72 6e 65 64 0a 66 72 6f 6d  be returned.from
9000: 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6c   the <b>sqlite_l
9010: 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64  ast_insert_rowid
9020: 28 29 3c 2f 62 3e 20 41 50 49 20 66 75 6e 63 74  ()</b> API funct
9030: 69 6f 6e 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  ion.</td>.</tr>.
9040: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
9050: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
9060: 67 68 74 22 3e 6c 65 6e 67 74 68 28 3c 69 3e 58  ght">length(<i>X
9070: 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  </i>)</td>.<td v
9080: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75  align="top">Retu
9090: 72 6e 20 74 68 65 20 73 74 72 69 6e 67 20 6c 65  rn the string le
90a0: 6e 67 74 68 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e  ngth of <i>X</i>
90b0: 20 69 6e 20 63 68 61 72 61 63 74 65 72 73 2e 0a   in characters..
90c0: 49 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6e  If SQLite is con
90d0: 66 69 67 75 72 65 64 20 74 6f 20 73 75 70 70 6f  figured to suppo
90e0: 72 74 20 55 54 46 2d 38 2c 20 74 68 65 6e 20 74  rt UTF-8, then t
90f0: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 55 54 46  he number of UTF
9100: 2d 38 0a 63 68 61 72 61 63 74 65 72 73 20 69 73  -8.characters is
9110: 20 72 65 74 75 72 6e 65 64 2c 20 6e 6f 74 20 74   returned, not t
9120: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74  he number of byt
9130: 65 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a  es.</td>.</tr>..
9140: 3c 74 72 3e 0a 3c 61 20 6e 61 6d 65 3d 22 6c 69  <tr>.<a name="li
9150: 6b 65 46 75 6e 63 22 3e 3c 2f 61 3e 0a 3c 74 64  keFunc"></a>.<td
9160: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c   valign="top" al
9170: 69 67 6e 3d 22 72 69 67 68 74 22 3e 6c 69 6b 65  ign="right">like
9180: 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f  (<i>X</i>,<i>Y</
9190: 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c  i>)</td>.<td val
91a0: 69 67 6e 3d 22 74 6f 70 22 3e 54 68 69 73 20 66  ign="top">This f
91b0: 75 6e 63 74 69 6f 6e 20 69 73 20 75 73 65 64 20  unction is used 
91c0: 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65  to implement the
91d0: 0a 22 3c 62 3e 58 20 4c 49 4b 45 20 59 3c 2f 62  ."<b>X LIKE Y</b
91e0: 3e 22 20 73 79 6e 74 61 78 20 6f 66 20 53 51 4c  >" syntax of SQL
91f0: 2e 20 20 54 68 65 0a 3c 61 20 68 72 65 66 3d 22  .  The.<a href="
9200: 63 61 70 69 33 72 65 66 2e 68 74 6d 6c 23 73 71  capi3ref.html#sq
9210: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e  lite3_create_fun
9220: 63 74 69 6f 6e 22 3e 73 71 6c 69 74 65 5f 63 72  ction">sqlite_cr
9230: 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29 3c  eate_function()<
9240: 2f 61 3e 20 0a 69 6e 74 65 72 66 61 63 65 20 63  /a> .interface c
9250: 61 6e 0a 62 65 20 75 73 65 64 20 74 6f 20 6f 76  an.be used to ov
9260: 65 72 72 69 64 65 20 74 68 69 73 20 66 75 6e 63  erride this func
9270: 74 69 6f 6e 20 61 6e 64 20 74 68 65 72 65 62 79  tion and thereby
9280: 20 63 68 61 6e 67 65 20 74 68 65 20 6f 70 65 72   change the oper
9290: 61 74 69 6f 6e 0a 6f 66 20 74 68 65 20 3c 61 20  ation.of the <a 
92a0: 68 72 65 66 3d 22 23 6c 69 6b 65 22 3e 4c 49 4b  href="#like">LIK
92b0: 45 3c 2f 61 3e 20 6f 70 65 72 61 74 6f 72 2e 3c  E</a> operator.<
92c0: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  /td>.</tr>..<tr>
92d0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
92e0: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
92f0: 6c 6f 77 65 72 28 3c 69 3e 58 3c 2f 69 3e 29 3c  lower(<i>X</i>)<
9300: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
9310: 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20 63  "top">Return a c
9320: 6f 70 79 20 6f 66 20 73 74 72 69 6e 67 20 3c 69  opy of string <i
9330: 3e 58 3c 2f 69 3e 20 77 69 6c 6c 20 61 6c 6c 20  >X</i> will all 
9340: 63 68 61 72 61 63 74 65 72 73 0a 63 6f 6e 76 65  characters.conve
9350: 72 74 65 64 20 74 6f 20 6c 6f 77 65 72 20 63 61  rted to lower ca
9360: 73 65 2e 20 20 54 68 65 20 43 20 6c 69 62 72 61  se.  The C libra
9370: 72 79 20 3c 62 3e 74 6f 6c 6f 77 65 72 28 29 3c  ry <b>tolower()<
9380: 2f 62 3e 20 72 6f 75 74 69 6e 65 20 69 73 20 75  /b> routine is u
9390: 73 65 64 0a 66 6f 72 20 74 68 65 20 63 6f 6e 76  sed.for the conv
93a0: 65 72 73 69 6f 6e 2c 20 77 68 69 63 68 20 6d 65  ersion, which me
93b0: 61 6e 73 20 74 68 61 74 20 74 68 69 73 20 66 75  ans that this fu
93c0: 6e 63 74 69 6f 6e 20 6d 69 67 68 74 20 6e 6f 74  nction might not
93d0: 0a 77 6f 72 6b 20 63 6f 72 72 65 63 74 6c 79 20  .work correctly 
93e0: 6f 6e 20 55 54 46 2d 38 20 63 68 61 72 61 63 74  on UTF-8 charact
93f0: 65 72 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  ers.</td>.</tr>.
9400: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
9410: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
9420: 67 68 74 22 3e 6d 61 78 28 3c 69 3e 58 3c 2f 69  ght">max(<i>X</i
9430: 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c 2e 2e 2e 29 3c  >,<i>Y</i>,...)<
9440: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
9450: 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65  "top">Return the
9460: 20 61 72 67 75 6d 65 6e 74 20 77 69 74 68 20 74   argument with t
9470: 68 65 20 6d 61 78 69 6d 75 6d 20 76 61 6c 75 65  he maximum value
9480: 2e 20 20 41 72 67 75 6d 65 6e 74 73 0a 6d 61 79  .  Arguments.may
9490: 20 62 65 20 73 74 72 69 6e 67 73 20 69 6e 20 61   be strings in a
94a0: 64 64 69 74 69 6f 6e 20 74 6f 20 6e 75 6d 62 65  ddition to numbe
94b0: 72 73 2e 20 20 54 68 65 20 6d 61 78 69 6d 75 6d  rs.  The maximum
94c0: 20 76 61 6c 75 65 20 69 73 20 64 65 74 65 72 6d   value is determ
94d0: 69 6e 65 64 0a 62 79 20 74 68 65 20 75 73 75 61  ined.by the usua
94e0: 6c 20 73 6f 72 74 20 6f 72 64 65 72 2e 20 20 4e  l sort order.  N
94f0: 6f 74 65 20 74 68 61 74 20 3c 62 3e 6d 61 78 28  ote that <b>max(
9500: 29 3c 2f 62 3e 20 69 73 20 61 20 73 69 6d 70 6c  )</b> is a simpl
9510: 65 20 66 75 6e 63 74 69 6f 6e 20 77 68 65 6e 0a  e function when.
9520: 69 74 20 68 61 73 20 32 20 6f 72 20 6d 6f 72 65  it has 2 or more
9530: 20 61 72 67 75 6d 65 6e 74 73 20 62 75 74 20 63   arguments but c
9540: 6f 6e 76 65 72 74 73 20 74 6f 20 61 6e 20 61 67  onverts to an ag
9550: 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e  gregate function
9560: 20 69 66 20 67 69 76 65 6e 0a 6f 6e 6c 79 20 61   if given.only a
9570: 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74   single argument
9580: 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74  .</td>.</tr>..<t
9590: 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
95a0: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
95b0: 22 3e 6d 69 6e 28 3c 69 3e 58 3c 2f 69 3e 2c 3c  ">min(<i>X</i>,<
95c0: 69 3e 59 3c 2f 69 3e 2c 2e 2e 2e 29 3c 2f 74 64  i>Y</i>,...)</td
95d0: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
95e0: 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20 61 72  p">Return the ar
95f0: 67 75 6d 65 6e 74 20 77 69 74 68 20 74 68 65 20  gument with the 
9600: 6d 69 6e 69 6d 75 6d 20 76 61 6c 75 65 2e 20 20  minimum value.  
9610: 41 72 67 75 6d 65 6e 74 73 0a 6d 61 79 20 62 65  Arguments.may be
9620: 20 73 74 72 69 6e 67 73 20 69 6e 20 61 64 64 69   strings in addi
9630: 74 69 6f 6e 20 74 6f 20 6e 75 6d 62 65 72 73 2e  tion to numbers.
9640: 20 20 54 68 65 20 6d 69 6e 69 6d 75 6d 20 76 61    The minimum va
9650: 6c 75 65 20 69 73 20 64 65 74 65 72 6d 69 6e 65  lue is determine
9660: 64 0a 62 79 20 74 68 65 20 75 73 75 61 6c 20 73  d.by the usual s
9670: 6f 72 74 20 6f 72 64 65 72 2e 20 20 4e 6f 74 65  ort order.  Note
9680: 20 74 68 61 74 20 3c 62 3e 6d 69 6e 28 29 3c 2f   that <b>min()</
9690: 62 3e 20 69 73 20 61 20 73 69 6d 70 6c 65 20 66  b> is a simple f
96a0: 75 6e 63 74 69 6f 6e 20 77 68 65 6e 0a 69 74 20  unction when.it 
96b0: 68 61 73 20 32 20 6f 72 20 6d 6f 72 65 20 61 72  has 2 or more ar
96c0: 67 75 6d 65 6e 74 73 20 62 75 74 20 63 6f 6e 76  guments but conv
96d0: 65 72 74 73 20 74 6f 20 61 6e 20 61 67 67 72 65  erts to an aggre
96e0: 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 20 69 66  gate function if
96f0: 20 67 69 76 65 6e 0a 6f 6e 6c 79 20 61 20 73 69   given.only a si
9700: 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 2e 3c 2f  ngle argument.</
9710: 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a  td>.</tr>..<tr>.
9720: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
9730: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 6e   align="right">n
9740: 75 6c 6c 69 66 28 3c 69 3e 58 3c 2f 69 3e 2c 3c  ullif(<i>X</i>,<
9750: 69 3e 59 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74  i>Y</i>)</td>.<t
9760: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52  d valign="top">R
9770: 65 74 75 72 6e 20 74 68 65 20 66 69 72 73 74 20  eturn the first 
9780: 61 72 67 75 6d 65 6e 74 20 69 66 20 74 68 65 20  argument if the 
9790: 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 64 69  arguments are di
97a0: 66 66 65 72 65 6e 74 2c 20 0a 6f 74 68 65 72 77  fferent, .otherw
97b0: 69 73 65 20 72 65 74 75 72 6e 20 4e 55 4c 4c 2e  ise return NULL.
97c0: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72  </td>.</tr>..<tr
97d0: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
97e0: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
97f0: 3e 71 75 6f 74 65 28 3c 69 3e 58 3c 2f 69 3e 29  >quote(<i>X</i>)
9800: 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  </td>.<td valign
9810: 3d 22 74 6f 70 22 3e 54 68 69 73 20 72 6f 75 74  ="top">This rout
9820: 69 6e 65 20 72 65 74 75 72 6e 73 20 61 20 73 74  ine returns a st
9830: 72 69 6e 67 20 77 68 69 63 68 20 69 73 20 74 68  ring which is th
9840: 65 20 76 61 6c 75 65 20 6f 66 0a 69 74 73 20 61  e value of.its a
9850: 72 67 75 6d 65 6e 74 20 73 75 69 74 61 62 6c 65  rgument suitable
9860: 20 66 6f 72 20 69 6e 63 6c 75 73 69 6f 6e 20 69   for inclusion i
9870: 6e 74 6f 20 61 6e 6f 74 68 65 72 20 53 51 4c 20  nto another SQL 
9880: 73 74 61 74 65 6d 65 6e 74 2e 0a 53 74 72 69 6e  statement..Strin
9890: 67 73 20 61 72 65 20 73 75 72 72 6f 75 6e 64 65  gs are surrounde
98a0: 64 20 62 79 20 73 69 6e 67 6c 65 2d 71 75 6f 74  d by single-quot
98b0: 65 73 20 77 69 74 68 20 65 73 63 61 70 65 73 20  es with escapes 
98c0: 6f 6e 20 69 6e 74 65 72 69 6f 72 20 71 75 6f 74  on interior quot
98d0: 65 73 0a 61 73 20 6e 65 65 64 65 64 2e 20 20 42  es.as needed.  B
98e0: 4c 4f 42 73 20 61 72 65 20 65 6e 63 6f 64 65 64  LOBs are encoded
98f0: 20 61 73 20 68 65 78 61 64 65 63 69 6d 61 6c 20   as hexadecimal 
9900: 6c 69 74 65 72 61 6c 73 2e 0a 54 68 65 20 63 75  literals..The cu
9910: 72 72 65 6e 74 20 69 6d 70 6c 65 6d 65 6e 74 61  rrent implementa
9920: 74 69 6f 6e 20 6f 66 20 56 41 43 55 55 4d 20 75  tion of VACUUM u
9930: 73 65 73 20 74 68 69 73 20 66 75 6e 63 74 69 6f  ses this functio
9940: 6e 2e 20 20 54 68 65 20 66 75 6e 63 74 69 6f 6e  n.  The function
9950: 0a 69 73 20 61 6c 73 6f 20 75 73 65 66 75 6c 20  .is also useful 
9960: 77 68 65 6e 20 77 72 69 74 69 6e 67 20 74 72 69  when writing tri
9970: 67 67 65 72 73 20 74 6f 20 69 6d 70 6c 65 6d 65  ggers to impleme
9980: 6e 74 20 75 6e 64 6f 2f 72 65 64 6f 20 66 75 6e  nt undo/redo fun
9990: 63 74 69 6f 6e 61 6c 69 74 79 2e 0a 3c 2f 74 64  ctionality..</td
99a0: 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74  >.</tr>..<tr>.<t
99b0: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61  d valign="top" a
99c0: 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 72 61 6e  lign="right">ran
99d0: 64 6f 6d 28 2a 29 3c 2f 74 64 3e 0a 3c 74 64 20  dom(*)</td>.<td 
99e0: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74  valign="top">Ret
99f0: 75 72 6e 20 61 20 72 61 6e 64 6f 6d 20 69 6e 74  urn a random int
9a00: 65 67 65 72 20 62 65 74 77 65 65 6e 20 2d 32 31  eger between -21
9a10: 34 37 34 38 33 36 34 38 20 61 6e 64 0a 2b 32 31  47483648 and.+21
9a20: 34 37 34 38 33 36 34 37 2e 3c 2f 74 64 3e 0a 3c  47483647.</td>.<
9a30: 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76  /tr>..<tr>.<td v
9a40: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
9a50: 6e 3d 22 72 69 67 68 74 22 3e 72 6f 75 6e 64 28  n="right">round(
9a60: 3c 69 3e 58 3c 2f 69 3e 29 3c 62 72 3e 72 6f 75  <i>X</i>)<br>rou
9a70: 6e 64 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59  nd(<i>X</i>,<i>Y
9a80: 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  </i>)</td>.<td v
9a90: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 6f 75 6e  align="top">Roun
9aa0: 64 20 6f 66 66 20 74 68 65 20 6e 75 6d 62 65 72  d off the number
9ab0: 20 3c 69 3e 58 3c 2f 69 3e 20 74 6f 20 3c 69 3e   <i>X</i> to <i>
9ac0: 59 3c 2f 69 3e 20 64 69 67 69 74 73 20 74 6f 20  Y</i> digits to 
9ad0: 74 68 65 0a 72 69 67 68 74 20 6f 66 20 74 68 65  the.right of the
9ae0: 20 64 65 63 69 6d 61 6c 20 70 6f 69 6e 74 2e 20   decimal point. 
9af0: 20 49 66 20 74 68 65 20 3c 69 3e 59 3c 2f 69 3e   If the <i>Y</i>
9b00: 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f 6d 69   argument is omi
9b10: 74 74 65 64 2c 20 30 20 69 73 20 0a 61 73 73 75  tted, 0 is .assu
9b20: 6d 65 64 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  med.</td>.</tr>.
9b30: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
9b40: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
9b50: 67 68 74 22 3e 73 6f 75 6e 64 65 78 28 3c 69 3e  ght">soundex(<i>
9b60: 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20  X</i>)</td>.<td 
9b70: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 43 6f 6d  valign="top">Com
9b80: 70 75 74 65 20 74 68 65 20 73 6f 75 6e 64 65 78  pute the soundex
9b90: 20 65 6e 63 6f 64 69 6e 67 20 6f 66 20 74 68 65   encoding of the
9ba0: 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e   string <i>X</i>
9bb0: 2e 0a 54 68 65 20 73 74 72 69 6e 67 20 22 3f 30  ..The string "?0
9bc0: 30 30 22 20 69 73 20 72 65 74 75 72 6e 65 64 20  00" is returned 
9bd0: 69 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20  if the argument 
9be0: 69 73 20 4e 55 4c 4c 2e 0a 54 68 69 73 20 66 75  is NULL..This fu
9bf0: 6e 63 74 69 6f 6e 20 69 73 20 6f 6d 69 74 74 65  nction is omitte
9c00: 64 20 66 72 6f 6d 20 53 51 4c 69 74 65 20 62 79  d from SQLite by
9c10: 20 64 65 66 61 75 6c 74 2e 0a 49 74 20 69 73 20   default..It is 
9c20: 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 74  only available t
9c30: 68 65 20 2d 44 53 51 4c 49 54 45 5f 53 4f 55 4e  he -DSQLITE_SOUN
9c40: 44 45 58 3d 31 20 63 6f 6d 70 69 6c 65 72 20 6f  DEX=1 compiler o
9c50: 70 74 69 6f 6e 0a 69 73 20 75 73 65 64 20 77 68  ption.is used wh
9c60: 65 6e 20 53 51 4c 69 74 65 20 69 73 20 62 75 69  en SQLite is bui
9c70: 6c 74 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a  lt.</td>.</tr>..
9c80: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
9c90: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
9ca0: 68 74 22 3e 73 71 6c 69 74 65 5f 76 65 72 73 69  ht">sqlite_versi
9cb0: 6f 6e 28 2a 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  on(*)</td>.<td v
9cc0: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75  align="top">Retu
9cd0: 72 6e 20 74 68 65 20 76 65 72 73 69 6f 6e 20 73  rn the version s
9ce0: 74 72 69 6e 67 20 66 6f 72 20 74 68 65 20 53 51  tring for the SQ
9cf0: 4c 69 74 65 20 6c 69 62 72 61 72 79 0a 74 68 61  Lite library.tha
9d00: 74 20 69 73 20 72 75 6e 6e 69 6e 67 2e 20 20 45  t is running.  E
9d10: 78 61 6d 70 6c 65 3a 20 20 22 32 2e 38 2e 30 22  xample:  "2.8.0"
9d20: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72  </td>.</tr>..<tr
9d30: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
9d40: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
9d50: 3e 73 75 62 73 74 72 28 3c 69 3e 58 3c 2f 69 3e  >substr(<i>X</i>
9d60: 2c 3c 69 3e 59 3c 2f 69 3e 2c 3c 69 3e 5a 3c 2f  ,<i>Y</i>,<i>Z</
9d70: 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c  i>)</td>.<td val
9d80: 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e  ign="top">Return
9d90: 20 61 20 73 75 62 73 74 72 69 6e 67 20 6f 66 20   a substring of 
9da0: 69 6e 70 75 74 20 73 74 72 69 6e 67 20 3c 69 3e  input string <i>
9db0: 58 3c 2f 69 3e 20 74 68 61 74 20 62 65 67 69 6e  X</i> that begin
9dc0: 73 0a 77 69 74 68 20 74 68 65 20 3c 69 3e 59 3c  s.with the <i>Y<
9dd0: 2f 69 3e 2d 74 68 20 63 68 61 72 61 63 74 65 72  /i>-th character
9de0: 20 61 6e 64 20 77 68 69 63 68 20 69 73 20 3c 69   and which is <i
9df0: 3e 5a 3c 2f 69 3e 20 63 68 61 72 61 63 74 65 72  >Z</i> character
9e00: 73 20 6c 6f 6e 67 2e 0a 54 68 65 20 6c 65 66 74  s long..The left
9e10: 2d 6d 6f 73 74 20 63 68 61 72 61 63 74 65 72 20  -most character 
9e20: 6f 66 20 3c 69 3e 58 3c 2f 69 3e 20 69 73 20 6e  of <i>X</i> is n
9e30: 75 6d 62 65 72 20 31 2e 20 20 49 66 20 3c 69 3e  umber 1.  If <i>
9e40: 59 3c 2f 69 3e 20 69 73 20 6e 65 67 61 74 69 76  Y</i> is negativ
9e50: 65 0a 74 68 65 20 74 68 65 20 66 69 72 73 74 20  e.the the first 
9e60: 63 68 61 72 61 63 74 65 72 20 6f 66 20 74 68 65  character of the
9e70: 20 73 75 62 73 74 72 69 6e 67 20 69 73 20 66 6f   substring is fo
9e80: 75 6e 64 20 62 79 20 63 6f 75 6e 74 69 6e 67 20  und by counting 
9e90: 66 72 6f 6d 20 74 68 65 0a 72 69 67 68 74 20 72  from the.right r
9ea0: 61 74 68 65 72 20 74 68 61 6e 20 74 68 65 20 6c  ather than the l
9eb0: 65 66 74 2e 20 20 49 66 20 53 51 4c 69 74 65 20  eft.  If SQLite 
9ec0: 69 73 20 63 6f 6e 66 69 67 75 72 65 64 20 74 6f  is configured to
9ed0: 20 73 75 70 70 6f 72 74 20 55 54 46 2d 38 2c 0a   support UTF-8,.
9ee0: 74 68 65 6e 20 63 68 61 72 61 63 74 65 72 73 20  then characters 
9ef0: 69 6e 64 69 63 65 73 20 72 65 66 65 72 20 74 6f  indices refer to
9f00: 20 61 63 74 75 61 6c 20 55 54 46 2d 38 20 63 68   actual UTF-8 ch
9f10: 61 72 61 63 74 65 72 73 2c 20 6e 6f 74 20 62 79  aracters, not by
9f20: 74 65 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  tes.</td>.</tr>.
9f30: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
9f40: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
9f50: 67 68 74 22 3e 74 79 70 65 6f 66 28 3c 69 3e 58  ght">typeof(<i>X
9f60: 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  </i>)</td>.<td v
9f70: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75  align="top">Retu
9f80: 72 6e 20 74 68 65 20 74 79 70 65 20 6f 66 20 74  rn the type of t
9f90: 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 3c 69  he expression <i
9fa0: 3e 58 3c 2f 69 3e 2e 20 20 54 68 65 20 6f 6e 6c  >X</i>.  The onl
9fb0: 79 20 0a 72 65 74 75 72 6e 20 76 61 6c 75 65 73  y .return values
9fc0: 20 61 72 65 20 22 6e 75 6c 6c 22 2c 20 22 69 6e   are "null", "in
9fd0: 74 65 67 65 72 22 2c 20 22 72 65 61 6c 22 2c 20  teger", "real", 
9fe0: 22 74 65 78 74 22 2c 20 61 6e 64 20 22 62 6c 6f  "text", and "blo
9ff0: 62 22 2e 0a 53 51 4c 69 74 65 27 73 20 74 79 70  b"..SQLite's typ
a000: 65 20 68 61 6e 64 6c 69 6e 67 20 69 73 20 0a 65  e handling is .e
a010: 78 70 6c 61 69 6e 65 64 20 69 6e 20 3c 61 20 68  xplained in <a h
a020: 72 65 66 3d 22 64 61 74 61 74 79 70 65 33 2e 68  ref="datatype3.h
a030: 74 6d 6c 22 3e 44 61 74 61 74 79 70 65 73 20 69  tml">Datatypes i
a040: 6e 20 53 51 4c 69 74 65 20 56 65 72 73 69 6f 6e  n SQLite Version
a050: 20 33 3c 2f 61 3e 2e 3c 2f 74 64 3e 0a 3c 2f 74   3</a>.</td>.</t
a060: 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c  r>..<tr>.<td val
a070: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
a080: 22 72 69 67 68 74 22 3e 75 70 70 65 72 28 3c 69  "right">upper(<i
a090: 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64  >X</i>)</td>.<td
a0a0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65   valign="top">Re
a0b0: 74 75 72 6e 20 61 20 63 6f 70 79 20 6f 66 20 69  turn a copy of i
a0c0: 6e 70 75 74 20 73 74 72 69 6e 67 20 3c 69 3e 58  nput string <i>X
a0d0: 3c 2f 69 3e 20 63 6f 6e 76 65 72 74 65 64 20 74  </i> converted t
a0e0: 6f 20 61 6c 6c 0a 75 70 70 65 72 2d 63 61 73 65  o all.upper-case
a0f0: 20 6c 65 74 74 65 72 73 2e 20 20 54 68 65 20 69   letters.  The i
a100: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66  mplementation of
a110: 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 75   this function u
a120: 73 65 73 20 74 68 65 20 43 20 6c 69 62 72 61 72  ses the C librar
a130: 79 0a 72 6f 75 74 69 6e 65 20 3c 62 3e 74 6f 75  y.routine <b>tou
a140: 70 70 65 72 28 29 3c 2f 62 3e 20 77 68 69 63 68  pper()</b> which
a150: 20 6d 65 61 6e 73 20 69 74 20 6d 61 79 20 6e 6f   means it may no
a160: 74 20 77 6f 72 6b 20 63 6f 72 72 65 63 74 6c 79  t work correctly
a170: 20 6f 6e 20 0a 55 54 46 2d 38 20 73 74 72 69 6e   on .UTF-8 strin
a180: 67 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c  gs.</td>.</tr>.<
a190: 2f 74 61 62 6c 65 3e 0a 0a 3c 70 3e 0a 54 68 65  /table>..<p>.The
a1a0: 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 67 67 72 65   following aggre
a1b0: 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 20 61  gate functions a
a1c0: 72 65 20 61 76 61 69 6c 61 62 6c 65 20 62 79 20  re available by 
a1d0: 64 65 66 61 75 6c 74 2e 20 20 41 64 64 69 74 69  default.  Additi
a1e0: 6f 6e 61 6c 0a 61 67 67 72 65 67 61 74 65 20 66  onal.aggregate f
a1f0: 75 6e 63 74 69 6f 6e 73 20 77 72 69 74 74 65 6e  unctions written
a200: 20 69 6e 20 43 20 6d 61 79 20 62 65 20 61 64 64   in C may be add
a210: 65 64 20 75 73 69 6e 67 20 74 68 65 20 0a 3c 61  ed using the .<a
a220: 20 68 72 65 66 3d 22 63 61 70 69 33 72 65 66 2e   href="capi3ref.
a230: 68 74 6d 6c 23 73 71 6c 69 74 65 33 5f 63 72 65  html#sqlite3_cre
a240: 61 74 65 5f 66 75 6e 63 74 69 6f 6e 22 3e 73 71  ate_function">sq
a250: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e  lite3_create_fun
a260: 63 74 69 6f 6e 28 29 3c 2f 61 3e 0a 41 50 49 2e  ction()</a>.API.
a270: 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20 62 6f 72  </p>..<table bor
a280: 64 65 72 3d 30 20 63 65 6c 6c 70 61 64 64 69 6e  der=0 cellpaddin
a290: 67 3d 31 30 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76  g=10>.<tr>.<td v
a2a0: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
a2b0: 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74 68 3d  n="right" width=
a2c0: 31 32 30 3e 61 76 67 28 3c 69 3e 58 3c 2f 69 3e  120>avg(<i>X</i>
a2d0: 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67  )</td>.<td valig
a2e0: 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74  n="top">Return t
a2f0: 68 65 20 61 76 65 72 61 67 65 20 76 61 6c 75 65  he average value
a300: 20 6f 66 20 61 6c 6c 20 3c 69 3e 58 3c 2f 69 3e   of all <i>X</i>
a310: 20 77 69 74 68 69 6e 20 61 20 67 72 6f 75 70 2e   within a group.
a320: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72  </td>.</tr>..<tr
a330: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
a340: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
a350: 3e 63 6f 75 6e 74 28 3c 69 3e 58 3c 2f 69 3e 29  >count(<i>X</i>)
a360: 3c 62 72 3e 63 6f 75 6e 74 28 2a 29 3c 2f 74 64  <br>count(*)</td
a370: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
a380: 70 22 3e 54 68 65 20 66 69 72 73 74 20 66 6f 72  p">The first for
a390: 6d 20 72 65 74 75 72 6e 20 61 20 63 6f 75 6e 74  m return a count
a3a0: 20 6f 66 20 74 68 65 20 6e 75 6d 62 65 72 20 6f   of the number o
a3b0: 66 20 74 69 6d 65 73 0a 74 68 61 74 20 3c 69 3e  f times.that <i>
a3c0: 58 3c 2f 69 3e 20 69 73 20 6e 6f 74 20 4e 55 4c  X</i> is not NUL
a3d0: 4c 20 69 6e 20 61 20 67 72 6f 75 70 2e 20 20 54  L in a group.  T
a3e0: 68 65 20 73 65 63 6f 6e 64 20 66 6f 72 6d 20 28  he second form (
a3f0: 77 69 74 68 20 6e 6f 20 61 72 67 75 6d 65 6e 74  with no argument
a400: 29 0a 72 65 74 75 72 6e 73 20 74 68 65 20 74 6f  ).returns the to
a410: 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f  tal number of ro
a420: 77 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e  ws in the group.
a430: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72  </td>.</tr>..<tr
a440: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
a450: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
a460: 3e 6d 61 78 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f  >max(<i>X</i>)</
a470: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
a480: 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20  top">Return the 
a490: 6d 61 78 69 6d 75 6d 20 76 61 6c 75 65 20 6f 66  maximum value of
a4a0: 20 61 6c 6c 20 76 61 6c 75 65 73 20 69 6e 20 74   all values in t
a4b0: 68 65 20 67 72 6f 75 70 2e 0a 54 68 65 20 75 73  he group..The us
a4c0: 75 61 6c 20 73 6f 72 74 20 6f 72 64 65 72 20 69  ual sort order i
a4d0: 73 20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d  s used to determ
a4e0: 69 6e 65 20 74 68 65 20 6d 61 78 69 6d 75 6d 2e  ine the maximum.
a4f0: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72  </td>.</tr>..<tr
a500: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
a510: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
a520: 3e 6d 69 6e 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f  >min(<i>X</i>)</
a530: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
a540: 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20  top">Return the 
a550: 6d 69 6e 69 6d 75 6d 20 6e 6f 6e 2d 4e 55 4c 4c  minimum non-NULL
a560: 20 76 61 6c 75 65 20 6f 66 20 61 6c 6c 20 76 61   value of all va
a570: 6c 75 65 73 20 69 6e 20 74 68 65 20 67 72 6f 75  lues in the grou
a580: 70 2e 0a 54 68 65 20 75 73 75 61 6c 20 73 6f 72  p..The usual sor
a590: 74 20 6f 72 64 65 72 20 69 73 20 75 73 65 64 20  t order is used 
a5a0: 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65  to determine the
a5b0: 20 6d 69 6e 69 6d 75 6d 2e 20 20 4e 55 4c 4c 20   minimum.  NULL 
a5c0: 69 73 20 6f 6e 6c 79 20 72 65 74 75 72 6e 65 64  is only returned
a5d0: 0a 69 66 20 61 6c 6c 20 76 61 6c 75 65 73 20 69  .if all values i
a5e0: 6e 20 74 68 65 20 67 72 6f 75 70 20 61 72 65 20  n the group are 
a5f0: 4e 55 4c 4c 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  NULL.</td>.</tr>
a600: 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  ..<tr>.<td valig
a610: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
a620: 69 67 68 74 22 3e 73 75 6d 28 3c 69 3e 58 3c 2f  ight">sum(<i>X</
a630: 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c  i>)</td>.<td val
a640: 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e  ign="top">Return
a650: 20 74 68 65 20 6e 75 6d 65 72 69 63 20 73 75 6d   the numeric sum
a660: 20 6f 66 20 61 6c 6c 20 76 61 6c 75 65 73 20 69   of all values i
a670: 6e 20 74 68 65 20 67 72 6f 75 70 2e 3c 2f 74 64  n the group.</td
a680: 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e  >.</tr>.</table>
a690: 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 49 4e 53  .}...Section INS
a6a0: 45 52 54 20 69 6e 73 65 72 74 0a 0a 53 79 6e 74  ERT insert..Synt
a6b0: 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e  ax {sql-statemen
a6c0: 74 7d 20 7b 0a 49 4e 53 45 52 54 20 5b 4f 52 20  t} {.INSERT [OR 
a6d0: 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69  <conflict-algori
a6e0: 74 68 6d 3e 5d 20 49 4e 54 4f 20 5b 3c 64 61 74  thm>] INTO [<dat
a6f0: 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c  abase-name> .] <
a700: 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 28 3c 63  table-name> [(<c
a710: 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 29 5d 20 56 41  olumn-list>)] VA
a720: 4c 55 45 53 28 3c 76 61 6c 75 65 2d 6c 69 73 74  LUES(<value-list
a730: 3e 29 20 7c 0a 49 4e 53 45 52 54 20 5b 4f 52 20  >) |.INSERT [OR 
a740: 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69  <conflict-algori
a750: 74 68 6d 3e 5d 20 49 4e 54 4f 20 5b 3c 64 61 74  thm>] INTO [<dat
a760: 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c  abase-name> .] <
a770: 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 28 3c 63  table-name> [(<c
a780: 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 29 5d 20 3c 73  olumn-list>)] <s
a790: 65 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e  elect-statement>
a7a0: 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68  .}..puts {.<p>Th
a7b0: 65 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65  e INSERT stateme
a7c0: 6e 74 20 63 6f 6d 65 73 20 69 6e 20 74 77 6f 20  nt comes in two 
a7d0: 62 61 73 69 63 20 66 6f 72 6d 73 2e 20 20 54 68  basic forms.  Th
a7e0: 65 20 66 69 72 73 74 20 66 6f 72 6d 0a 28 77 69  e first form.(wi
a7f0: 74 68 20 74 68 65 20 22 56 41 4c 55 45 53 22 20  th the "VALUES" 
a800: 6b 65 79 77 6f 72 64 29 20 63 72 65 61 74 65 73  keyword) creates
a810: 20 61 20 73 69 6e 67 6c 65 20 6e 65 77 20 72 6f   a single new ro
a820: 77 20 69 6e 20 61 6e 20 65 78 69 73 74 69 6e 67  w in an existing
a830: 20 74 61 62 6c 65 2e 0a 49 66 20 6e 6f 20 63 6f   table..If no co
a840: 6c 75 6d 6e 2d 6c 69 73 74 20 69 73 20 73 70 65  lumn-list is spe
a850: 63 69 66 69 65 64 20 74 68 65 6e 20 74 68 65 20  cified then the 
a860: 6e 75 6d 62 65 72 20 6f 66 20 76 61 6c 75 65 73  number of values
a870: 20 6d 75 73 74 0a 62 65 20 74 68 65 20 73 61 6d   must.be the sam
a880: 65 20 61 73 20 74 68 65 20 6e 75 6d 62 65 72 20  e as the number 
a890: 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68  of columns in th
a8a0: 65 20 74 61 62 6c 65 2e 20 20 49 66 20 61 20 63  e table.  If a c
a8b0: 6f 6c 75 6d 6e 2d 6c 69 73 74 0a 69 73 20 73 70  olumn-list.is sp
a8c0: 65 63 69 66 69 65 64 2c 20 74 68 65 6e 20 74 68  ecified, then th
a8d0: 65 20 6e 75 6d 62 65 72 20 6f 66 20 76 61 6c 75  e number of valu
a8e0: 65 73 20 6d 75 73 74 20 6d 61 74 63 68 20 74 68  es must match th
a8f0: 65 20 6e 75 6d 62 65 72 20 6f 66 0a 73 70 65 63  e number of.spec
a900: 69 66 69 65 64 20 63 6f 6c 75 6d 6e 73 2e 20 20  ified columns.  
a910: 43 6f 6c 75 6d 6e 73 20 6f 66 20 74 68 65 20 74  Columns of the t
a920: 61 62 6c 65 20 74 68 61 74 20 64 6f 20 6e 6f 74  able that do not
a930: 20 61 70 70 65 61 72 20 69 6e 20 74 68 65 0a 63   appear in the.c
a940: 6f 6c 75 6d 6e 20 6c 69 73 74 20 61 72 65 20 66  olumn list are f
a950: 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 64  illed with the d
a960: 65 66 61 75 6c 74 20 76 61 6c 75 65 2c 20 6f 72  efault value, or
a970: 20 77 69 74 68 20 4e 55 4c 4c 20 69 66 20 6e 6f   with NULL if no
a980: 74 0a 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20  t.default value 
a990: 69 73 20 73 70 65 63 69 66 69 65 64 2e 0a 3c 2f  is specified..</
a9a0: 70 3e 0a 0a 3c 70 3e 54 68 65 20 73 65 63 6f 6e  p>..<p>The secon
a9b0: 64 20 66 6f 72 6d 20 6f 66 20 74 68 65 20 49 4e  d form of the IN
a9c0: 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74 20 74  SERT statement t
a9d0: 61 6b 65 73 20 69 74 20 64 61 74 61 20 66 72 6f  akes it data fro
a9e0: 6d 20 61 0a 53 45 4c 45 43 54 20 73 74 61 74 65  m a.SELECT state
a9f0: 6d 65 6e 74 2e 20 20 54 68 65 20 6e 75 6d 62 65  ment.  The numbe
aa00: 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20  r of columns in 
aa10: 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68  the result of th
aa20: 65 0a 53 45 4c 45 43 54 20 6d 75 73 74 20 65 78  e.SELECT must ex
aa30: 61 63 74 6c 79 20 6d 61 74 63 68 20 74 68 65 20  actly match the 
aa40: 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e  number of column
aa50: 73 20 69 6e 20 74 68 65 20 74 61 62 6c 65 20 69  s in the table i
aa60: 66 0a 6e 6f 20 63 6f 6c 75 6d 6e 20 6c 69 73 74  f.no column list
aa70: 20 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 6f   is specified, o
aa80: 72 20 69 74 20 6d 75 73 74 20 6d 61 74 63 68 20  r it must match 
aa90: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f  the number of co
aaa0: 6c 75 6d 6e 73 0a 6e 61 6d 65 20 69 6e 20 74 68  lumns.name in th
aab0: 65 20 63 6f 6c 75 6d 6e 20 6c 69 73 74 2e 20 20  e column list.  
aac0: 41 20 6e 65 77 20 65 6e 74 72 79 20 69 73 20 6d  A new entry is m
aad0: 61 64 65 20 69 6e 20 74 68 65 20 74 61 62 6c 65  ade in the table
aae0: 0a 66 6f 72 20 65 76 65 72 79 20 72 6f 77 20 6f  .for every row o
aaf0: 66 20 74 68 65 20 53 45 4c 45 43 54 20 72 65 73  f the SELECT res
ab00: 75 6c 74 2e 20 20 54 68 65 20 53 45 4c 45 43 54  ult.  The SELECT
ab10: 20 6d 61 79 20 62 65 20 73 69 6d 70 6c 65 0a 6f   may be simple.o
ab20: 72 20 63 6f 6d 70 6f 75 6e 64 2e 20 20 49 66 20  r compound.  If 
ab30: 74 68 65 20 53 45 4c 45 43 54 20 73 74 61 74 65  the SELECT state
ab40: 6d 65 6e 74 20 68 61 73 20 61 6e 20 4f 52 44 45  ment has an ORDE
ab50: 52 20 42 59 20 63 6c 61 75 73 65 2c 0a 74 68 65  R BY clause,.the
ab60: 20 4f 52 44 45 52 20 42 59 20 69 73 20 69 67 6e   ORDER BY is ign
ab70: 6f 72 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  ored.</p>..<p>Th
ab80: 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c  e optional confl
ab90: 69 63 74 2d 63 6c 61 75 73 65 20 61 6c 6c 6f 77  ict-clause allow
aba0: 73 20 74 68 65 20 73 70 65 63 69 66 69 63 61 74  s the specificat
abb0: 69 6f 6e 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e  ion of an altern
abc0: 61 74 69 76 65 0a 63 6f 6e 73 74 72 61 69 6e 74  ative.constraint
abd0: 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75   conflict resolu
abe0: 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 74  tion algorithm t
abf0: 6f 20 75 73 65 20 64 75 72 69 6e 67 20 74 68 69  o use during thi
ac00: 73 20 6f 6e 65 20 63 6f 6d 6d 61 6e 64 2e 0a 53  s one command..S
ac10: 65 65 20 74 68 65 20 73 65 63 74 69 6f 6e 20 74  ee the section t
ac20: 69 74 6c 65 64 0a 3c 61 20 68 72 65 66 3d 22 23  itled.<a href="#
ac30: 63 6f 6e 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e  conflict">ON CON
ac40: 46 4c 49 43 54 3c 2f 61 3e 20 66 6f 72 20 61 64  FLICT</a> for ad
ac50: 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61  ditional informa
ac60: 74 69 6f 6e 2e 0a 46 6f 72 20 63 6f 6d 70 61 74  tion..For compat
ac70: 69 62 69 6c 69 74 79 20 77 69 74 68 20 4d 79 53  ibility with MyS
ac80: 51 4c 2c 20 74 68 65 20 70 61 72 73 65 72 20 61  QL, the parser a
ac90: 6c 6c 6f 77 73 20 74 68 65 20 75 73 65 20 6f 66  llows the use of
aca0: 20 74 68 65 0a 73 69 6e 67 6c 65 20 6b 65 79 77   the.single keyw
acb0: 6f 72 64 20 3c 61 20 68 72 65 66 3d 22 23 72 65  ord <a href="#re
acc0: 70 6c 61 63 65 22 3e 52 45 50 4c 41 43 45 3c 2f  place">REPLACE</
acd0: 61 3e 20 61 73 20 61 6e 20 61 6c 69 61 73 20 66  a> as an alias f
ace0: 6f 72 20 22 49 4e 53 45 52 54 20 4f 52 20 52 45  or "INSERT OR RE
acf0: 50 4c 41 43 45 22 2e 0a 3c 2f 70 3e 0a 7d 0a 0a  PLACE"..</p>.}..
ad00: 0a 53 65 63 74 69 6f 6e 20 7b 4f 4e 20 43 4f 4e  .Section {ON CON
ad10: 46 4c 49 43 54 20 63 6c 61 75 73 65 7d 20 63 6f  FLICT clause} co
ad20: 6e 66 6c 69 63 74 0a 0a 53 79 6e 74 61 78 20 7b  nflict..Syntax {
ad30: 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 7d  conflict-clause}
ad40: 20 7b 0a 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 3c   {.ON CONFLICT <
ad50: 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74  conflict-algorit
ad60: 68 6d 3e 0a 7d 20 7b 63 6f 6e 66 6c 69 63 74 2d  hm>.} {conflict-
ad70: 61 6c 67 6f 72 69 74 68 6d 7d 20 7b 0a 52 4f 4c  algorithm} {.ROL
ad80: 4c 42 41 43 4b 20 7c 20 41 42 4f 52 54 20 7c 20  LBACK | ABORT | 
ad90: 46 41 49 4c 20 7c 20 49 47 4e 4f 52 45 20 7c 20  FAIL | IGNORE | 
ada0: 52 45 50 4c 41 43 45 0a 7d 0a 0a 70 75 74 73 20  REPLACE.}..puts 
adb0: 7b 0a 3c 70 3e 54 68 65 20 4f 4e 20 43 4f 4e 46  {.<p>The ON CONF
adc0: 4c 49 43 54 20 63 6c 61 75 73 65 20 69 73 20 6e  LICT clause is n
add0: 6f 74 20 61 20 73 65 70 61 72 61 74 65 20 53 51  ot a separate SQ
ade0: 4c 20 63 6f 6d 6d 61 6e 64 2e 20 20 49 74 20 69  L command.  It i
adf0: 73 20 61 0a 6e 6f 6e 2d 73 74 61 6e 64 61 72 64  s a.non-standard
ae00: 20 63 6c 61 75 73 65 20 74 68 61 74 20 63 61 6e   clause that can
ae10: 20 61 70 70 65 61 72 20 69 6e 20 6d 61 6e 79 20   appear in many 
ae20: 6f 74 68 65 72 20 53 51 4c 20 63 6f 6d 6d 61 6e  other SQL comman
ae30: 64 73 2e 0a 49 74 20 69 73 20 67 69 76 65 6e 20  ds..It is given 
ae40: 69 74 73 20 6f 77 6e 20 73 65 63 74 69 6f 6e 20  its own section 
ae50: 69 6e 20 74 68 69 73 20 64 6f 63 75 6d 65 6e 74  in this document
ae60: 20 62 65 63 61 75 73 65 20 69 74 20 69 73 20 6e   because it is n
ae70: 6f 74 0a 70 61 72 74 20 6f 66 20 73 74 61 6e 64  ot.part of stand
ae80: 61 72 64 20 53 51 4c 20 61 6e 64 20 74 68 65 72  ard SQL and ther
ae90: 65 66 6f 72 65 20 6d 69 67 68 74 20 6e 6f 74 20  efore might not 
aea0: 62 65 20 66 61 6d 69 6c 69 61 72 2e 3c 2f 70 3e  be familiar.</p>
aeb0: 0a 0a 3c 70 3e 54 68 65 20 73 79 6e 74 61 78 20  ..<p>The syntax 
aec0: 66 6f 72 20 74 68 65 20 4f 4e 20 43 4f 4e 46 4c  for the ON CONFL
aed0: 49 43 54 20 63 6c 61 75 73 65 20 69 73 20 61 73  ICT clause is as
aee0: 20 73 68 6f 77 6e 20 61 62 6f 76 65 20 66 6f 72   shown above for
aef0: 0a 74 68 65 20 43 52 45 41 54 45 20 54 41 42 4c  .the CREATE TABL
af00: 45 20 61 6e 64 20 43 52 45 41 54 45 20 49 4e 44  E and CREATE IND
af10: 45 58 20 63 6f 6d 6d 61 6e 64 73 2e 20 20 46 6f  EX commands.  Fo
af20: 72 20 74 68 65 20 43 4f 50 59 2c 20 49 4e 53 45  r the COPY, INSE
af30: 52 54 2c 20 61 6e 64 0a 55 50 44 41 54 45 20 63  RT, and.UPDATE c
af40: 6f 6d 6d 61 6e 64 73 2c 20 74 68 65 20 6b 65 79  ommands, the key
af50: 77 6f 72 64 73 20 22 4f 4e 20 43 4f 4e 46 4c 49  words "ON CONFLI
af60: 43 54 22 20 61 72 65 20 72 65 70 6c 61 63 65 64  CT" are replaced
af70: 20 62 79 20 22 4f 52 22 2c 20 74 6f 20 6d 61 6b   by "OR", to mak
af80: 65 0a 74 68 65 20 73 79 6e 74 61 78 20 73 65 65  e.the syntax see
af90: 6d 20 6d 6f 72 65 20 6e 61 74 75 72 61 6c 2e 20  m more natural. 
afa0: 20 42 75 74 20 74 68 65 20 6d 65 61 6e 69 6e 67   But the meaning
afb0: 20 6f 66 20 74 68 65 20 63 6c 61 75 73 65 20 69   of the clause i
afc0: 73 20 74 68 65 20 73 61 6d 65 0a 65 69 74 68 65  s the same.eithe
afd0: 72 20 77 61 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  r way.</p>..<p>T
afe0: 68 65 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63  he ON CONFLICT c
aff0: 6c 61 75 73 65 20 73 70 65 63 69 66 69 65 73 20  lause specifies 
b000: 61 6e 20 61 6c 67 6f 72 69 74 68 6d 20 75 73 65  an algorithm use
b010: 64 20 74 6f 20 72 65 73 6f 6c 76 65 0a 63 6f 6e  d to resolve.con
b020: 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74  straint conflict
b030: 73 2e 20 20 54 68 65 72 65 20 61 72 65 20 66 69  s.  There are fi
b040: 76 65 20 63 68 6f 69 63 65 73 3a 20 52 4f 4c 4c  ve choices: ROLL
b050: 42 41 43 4b 2c 20 41 42 4f 52 54 2c 0a 46 41 49  BACK, ABORT,.FAI
b060: 4c 2c 20 49 47 4e 4f 52 45 2c 20 61 6e 64 20 52  L, IGNORE, and R
b070: 45 50 4c 41 43 45 2e 20 54 68 65 20 64 65 66 61  EPLACE. The defa
b080: 75 6c 74 20 61 6c 67 6f 72 69 74 68 6d 20 69 73  ult algorithm is
b090: 20 41 42 4f 52 54 2e 20 20 54 68 69 73 0a 69 73   ABORT.  This.is
b0a0: 20 77 68 61 74 20 74 68 65 79 20 6d 65 61 6e 3a   what they mean:
b0b0: 3c 2f 70 3e 0a 0a 3c 64 6c 3e 0a 3c 64 74 3e 3c  </p>..<dl>.<dt><
b0c0: 62 3e 52 4f 4c 4c 42 41 43 4b 3c 2f 62 3e 3c 2f  b>ROLLBACK</b></
b0d0: 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20  dt>.<dd><p>When 
b0e0: 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f  a constraint vio
b0f0: 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 61  lation occurs, a
b100: 6e 20 69 6d 6d 65 64 69 61 74 65 20 52 4f 4c 4c  n immediate ROLL
b110: 42 41 43 4b 0a 6f 63 63 75 72 73 2c 20 74 68 75  BACK.occurs, thu
b120: 73 20 65 6e 64 69 6e 67 20 74 68 65 20 63 75 72  s ending the cur
b130: 72 65 6e 74 20 74 72 61 6e 73 61 63 74 69 6f 6e  rent transaction
b140: 2c 20 61 6e 64 20 74 68 65 20 63 6f 6d 6d 61 6e  , and the comman
b150: 64 20 61 62 6f 72 74 73 0a 77 69 74 68 20 61 20  d aborts.with a 
b160: 72 65 74 75 72 6e 20 63 6f 64 65 20 6f 66 20 53  return code of S
b170: 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54  QLITE_CONSTRAINT
b180: 2e 20 20 49 66 20 6e 6f 20 74 72 61 6e 73 61 63  .  If no transac
b190: 74 69 6f 6e 20 69 73 0a 61 63 74 69 76 65 20 28  tion is.active (
b1a0: 6f 74 68 65 72 20 74 68 61 6e 20 74 68 65 20 69  other than the i
b1b0: 6d 70 6c 69 65 64 20 74 72 61 6e 73 61 63 74 69  mplied transacti
b1c0: 6f 6e 20 74 68 61 74 20 69 73 20 63 72 65 61 74  on that is creat
b1d0: 65 64 20 6f 6e 20 65 76 65 72 79 0a 63 6f 6d 6d  ed on every.comm
b1e0: 61 6e 64 29 20 74 68 65 6e 20 74 68 69 73 20 61  and) then this a
b1f0: 6c 67 6f 72 69 74 68 6d 20 77 6f 72 6b 73 20 74  lgorithm works t
b200: 68 65 20 73 61 6d 65 20 61 73 20 41 42 4f 52 54  he same as ABORT
b210: 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e  .</p></dd>..<dt>
b220: 3c 62 3e 41 42 4f 52 54 3c 2f 62 3e 3c 2f 64 74  <b>ABORT</b></dt
b230: 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61 20  >.<dd><p>When a 
b240: 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
b250: 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65  tion occurs, the
b260: 20 63 6f 6d 6d 61 6e 64 20 62 61 63 6b 73 20 6f   command backs o
b270: 75 74 0a 61 6e 79 20 70 72 69 6f 72 20 63 68 61  ut.any prior cha
b280: 6e 67 65 73 20 69 74 20 6d 69 67 68 74 20 68 61  nges it might ha
b290: 76 65 20 6d 61 64 65 20 61 6e 64 20 61 62 6f 72  ve made and abor
b2a0: 74 73 20 77 69 74 68 20 61 20 72 65 74 75 72 6e  ts with a return
b2b0: 20 63 6f 64 65 0a 6f 66 20 53 51 4c 49 54 45 5f   code.of SQLITE_
b2c0: 43 4f 4e 53 54 52 41 49 4e 54 2e 20 20 42 75 74  CONSTRAINT.  But
b2d0: 20 6e 6f 20 52 4f 4c 4c 42 41 43 4b 20 69 73 20   no ROLLBACK is 
b2e0: 65 78 65 63 75 74 65 64 20 73 6f 20 63 68 61 6e  executed so chan
b2f0: 67 65 73 0a 66 72 6f 6d 20 70 72 69 6f 72 20 63  ges.from prior c
b300: 6f 6d 6d 61 6e 64 73 20 77 69 74 68 69 6e 20 74  ommands within t
b310: 68 65 20 73 61 6d 65 20 74 72 61 6e 73 61 63 74  he same transact
b320: 69 6f 6e 0a 61 72 65 20 70 72 65 73 65 72 76 65  ion.are preserve
b330: 64 2e 20 20 54 68 69 73 20 69 73 20 74 68 65 20  d.  This is the 
b340: 64 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72  default behavior
b350: 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e  .</p></dd>..<dt>
b360: 3c 62 3e 46 41 49 4c 3c 2f 62 3e 3c 2f 64 74 3e  <b>FAIL</b></dt>
b370: 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61 20 63  .<dd><p>When a c
b380: 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74  onstraint violat
b390: 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20  ion occurs, the 
b3a0: 63 6f 6d 6d 61 6e 64 20 61 62 6f 72 74 73 20 77  command aborts w
b3b0: 69 74 68 20 61 0a 72 65 74 75 72 6e 20 63 6f 64  ith a.return cod
b3c0: 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41  e SQLITE_CONSTRA
b3d0: 49 4e 54 2e 20 20 42 75 74 20 61 6e 79 20 63 68  INT.  But any ch
b3e0: 61 6e 67 65 73 20 74 6f 20 74 68 65 20 64 61 74  anges to the dat
b3f0: 61 62 61 73 65 20 74 68 61 74 0a 74 68 65 20 63  abase that.the c
b400: 6f 6d 6d 61 6e 64 20 6d 61 64 65 20 70 72 69 6f  ommand made prio
b410: 72 20 74 6f 20 65 6e 63 6f 75 6e 74 65 72 69 6e  r to encounterin
b420: 67 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74  g the constraint
b430: 20 76 69 6f 6c 61 74 69 6f 6e 0a 61 72 65 20 70   violation.are p
b440: 72 65 73 65 72 76 65 64 20 61 6e 64 20 61 72 65  reserved and are
b450: 20 6e 6f 74 20 62 61 63 6b 65 64 20 6f 75 74 2e   not backed out.
b460: 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69    For example, i
b470: 66 20 61 6e 20 55 50 44 41 54 45 0a 73 74 61 74  f an UPDATE.stat
b480: 65 6d 65 6e 74 20 65 6e 63 6f 75 6e 74 65 72 65  ement encountere
b490: 64 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76  d a constraint v
b4a0: 69 6f 6c 61 74 69 6f 6e 20 6f 6e 20 74 68 65 20  iolation on the 
b4b0: 31 30 30 74 68 20 72 6f 77 20 74 68 61 74 0a 69  100th row that.i
b4c0: 74 20 61 74 74 65 6d 70 74 73 20 74 6f 20 75 70  t attempts to up
b4d0: 64 61 74 65 2c 20 74 68 65 6e 20 74 68 65 20 66  date, then the f
b4e0: 69 72 73 74 20 39 39 20 72 6f 77 20 63 68 61 6e  irst 99 row chan
b4f0: 67 65 73 20 61 72 65 20 70 72 65 73 65 72 76 65  ges are preserve
b500: 64 0a 62 75 74 20 63 68 61 6e 67 65 73 20 74 6f  d.but changes to
b510: 20 72 6f 77 73 20 31 30 30 20 61 6e 64 20 62 65   rows 100 and be
b520: 79 6f 6e 64 20 6e 65 76 65 72 20 6f 63 63 75 72  yond never occur
b530: 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e  .</p></dd>..<dt>
b540: 3c 62 3e 49 47 4e 4f 52 45 3c 2f 62 3e 3c 2f 64  <b>IGNORE</b></d
b550: 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61  t>.<dd><p>When a
b560: 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c   constraint viol
b570: 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68  ation occurs, th
b580: 65 20 6f 6e 65 20 72 6f 77 20 74 68 61 74 20 63  e one row that c
b590: 6f 6e 74 61 69 6e 73 0a 74 68 65 20 63 6f 6e 73  ontains.the cons
b5a0: 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e  traint violation
b5b0: 20 69 73 20 6e 6f 74 20 69 6e 73 65 72 74 65 64   is not inserted
b5c0: 20 6f 72 20 63 68 61 6e 67 65 64 2e 20 20 42 75   or changed.  Bu
b5d0: 74 20 74 68 65 20 63 6f 6d 6d 61 6e 64 0a 63 6f  t the command.co
b5e0: 6e 74 69 6e 75 65 73 20 65 78 65 63 75 74 69 6e  ntinues executin
b5f0: 67 20 6e 6f 72 6d 61 6c 6c 79 2e 20 20 4f 74 68  g normally.  Oth
b600: 65 72 20 72 6f 77 73 20 62 65 66 6f 72 65 20 61  er rows before a
b610: 6e 64 20 61 66 74 65 72 20 74 68 65 20 72 6f 77  nd after the row
b620: 20 74 68 61 74 0a 63 6f 6e 74 61 69 6e 65 64 20   that.contained 
b630: 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 20 76  the constraint v
b640: 69 6f 6c 61 74 69 6f 6e 20 63 6f 6e 74 69 6e 75  iolation continu
b650: 65 20 74 6f 20 62 65 20 69 6e 73 65 72 74 65 64  e to be inserted
b660: 20 6f 72 20 75 70 64 61 74 65 64 0a 6e 6f 72 6d   or updated.norm
b670: 61 6c 6c 79 2e 20 20 4e 6f 20 65 72 72 6f 72 20  ally.  No error 
b680: 69 73 20 72 65 74 75 72 6e 65 64 2e 3c 2f 70 3e  is returned.</p>
b690: 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 52 45  </dd>..<dt><b>RE
b6a0: 50 4c 41 43 45 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c  PLACE</b></dt>.<
b6b0: 64 64 3e 3c 70 3e 57 68 65 6e 20 61 20 55 4e 49  dd><p>When a UNI
b6c0: 51 55 45 20 63 6f 6e 73 74 72 61 69 6e 74 20 76  QUE constraint v
b6d0: 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c  iolation occurs,
b6e0: 20 74 68 65 20 70 72 65 2d 65 78 69 73 74 69 6e   the pre-existin
b6f0: 67 20 72 6f 77 73 0a 74 68 61 74 20 61 72 65 20  g rows.that are 
b700: 63 61 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 73  causing the cons
b710: 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e  traint violation
b720: 20 61 72 65 20 72 65 6d 6f 76 65 64 20 70 72 69   are removed pri
b730: 6f 72 20 74 6f 20 69 6e 73 65 72 74 69 6e 67 0a  or to inserting.
b740: 6f 72 20 75 70 64 61 74 69 6e 67 20 74 68 65 20  or updating the 
b750: 63 75 72 72 65 6e 74 20 72 6f 77 2e 20 20 54 68  current row.  Th
b760: 75 73 20 74 68 65 20 69 6e 73 65 72 74 20 6f 72  us the insert or
b770: 20 75 70 64 61 74 65 20 61 6c 77 61 79 73 20 6f   update always o
b780: 63 63 75 72 73 2e 0a 54 68 65 20 63 6f 6d 6d 61  ccurs..The comma
b790: 6e 64 20 63 6f 6e 74 69 6e 75 65 73 20 65 78 65  nd continues exe
b7a0: 63 75 74 69 6e 67 20 6e 6f 72 6d 61 6c 6c 79 2e  cuting normally.
b7b0: 20 20 4e 6f 20 65 72 72 6f 72 20 69 73 20 72 65    No error is re
b7c0: 74 75 72 6e 65 64 2e 0a 49 66 20 61 20 4e 4f 54  turned..If a NOT
b7d0: 20 4e 55 4c 4c 20 63 6f 6e 73 74 72 61 69 6e 74   NULL constraint
b7e0: 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72   violation occur
b7f0: 73 2c 20 74 68 65 20 4e 55 4c 4c 20 76 61 6c 75  s, the NULL valu
b800: 65 20 69 73 20 72 65 70 6c 61 63 65 64 0a 62 79  e is replaced.by
b810: 20 74 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c   the default val
b820: 75 65 20 66 6f 72 20 74 68 61 74 20 63 6f 6c 75  ue for that colu
b830: 6d 6e 2e 20 20 49 66 20 74 68 65 20 63 6f 6c 75  mn.  If the colu
b840: 6d 6e 20 68 61 73 20 6e 6f 20 64 65 66 61 75 6c  mn has no defaul
b850: 74 0a 76 61 6c 75 65 2c 20 74 68 65 6e 20 74 68  t.value, then th
b860: 65 20 41 42 4f 52 54 20 61 6c 67 6f 72 69 74 68  e ABORT algorith
b870: 6d 20 69 73 20 75 73 65 64 2e 3c 2f 70 3e 0a 0a  m is used.</p>..
b880: 3c 70 3e 57 68 65 6e 20 74 68 69 73 20 63 6f 6e  <p>When this con
b890: 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e  flict resolution
b8a0: 20 73 74 72 61 74 65 67 79 20 64 65 6c 65 74 65   strategy delete
b8b0: 73 20 72 6f 77 73 20 69 6e 20 6f 72 64 65 72 20  s rows in order 
b8c0: 74 6f 0a 73 61 74 69 73 66 79 20 61 20 63 6f 6e  to.satisfy a con
b8d0: 73 74 72 61 69 6e 74 2c 20 69 74 20 64 6f 65 73  straint, it does
b8e0: 20 6e 6f 74 20 69 6e 76 6f 6b 65 20 64 65 6c 65   not invoke dele
b8f0: 74 65 20 74 72 69 67 67 65 72 73 20 6f 6e 20 74  te triggers on t
b900: 68 6f 73 65 0a 72 6f 77 73 2e 20 20 42 75 74 20  hose.rows.  But 
b910: 74 68 61 74 20 6d 61 79 20 63 68 61 6e 67 65 20  that may change 
b920: 69 6e 20 61 20 66 75 74 75 72 65 20 72 65 6c 65  in a future rele
b930: 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ase.</p>..<p>The
b940: 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63 69   algorithm speci
b950: 66 69 65 64 20 69 6e 20 74 68 65 20 4f 52 20 63  fied in the OR c
b960: 6c 61 75 73 65 20 6f 66 20 61 20 43 4f 50 59 2c  lause of a COPY,
b970: 20 49 4e 53 45 52 54 2c 20 6f 72 20 55 50 44 41   INSERT, or UPDA
b980: 54 45 0a 6f 76 65 72 72 69 64 65 73 20 61 6e 79  TE.overrides any
b990: 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63 69   algorithm speci
b9a0: 66 69 65 64 20 69 6e 20 61 20 43 52 45 41 54 45  fied in a CREATE
b9b0: 20 54 41 42 4c 45 20 6f 72 20 43 52 45 41 54 45   TABLE or CREATE
b9c0: 20 49 4e 44 45 58 2e 0a 49 66 20 6e 6f 20 61 6c   INDEX..If no al
b9d0: 67 6f 72 69 74 68 6d 20 69 73 20 73 70 65 63 69  gorithm is speci
b9e0: 66 69 65 64 20 61 6e 79 77 68 65 72 65 2c 20 74  fied anywhere, t
b9f0: 68 65 20 41 42 4f 52 54 20 61 6c 67 6f 72 69 74  he ABORT algorit
ba00: 68 6d 20 69 73 20 75 73 65 64 2e 3c 2f 70 3e 0a  hm is used.</p>.
ba10: 0a 7d 0a 23 20 3c 70 3e 46 6f 72 20 61 64 64 69  .}.# <p>For addi
ba20: 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69  tional informati
ba30: 6f 6e 2c 20 73 65 65 20 0a 23 20 3c 61 20 68 72  on, see .# <a hr
ba40: 65 66 3d 22 63 6f 6e 66 6c 69 63 74 2e 68 74 6d  ef="conflict.htm
ba50: 6c 22 3e 63 6f 6e 66 6c 69 63 74 2e 68 74 6d 6c  l">conflict.html
ba60: 3c 2f 61 3e 2e 3c 2f 70 3e 0a 0a 53 65 63 74 69  </a>.</p>..Secti
ba70: 6f 6e 20 52 45 50 4c 41 43 45 20 72 65 70 6c 61  on REPLACE repla
ba80: 63 65 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d  ce..Syntax {sql-
ba90: 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 52 45 50  statement} {.REP
baa0: 4c 41 43 45 20 49 4e 54 4f 20 5b 3c 64 61 74 61  LACE INTO [<data
bab0: 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74  base-name> .] <t
bac0: 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 28 20 3c 63  able-name> [( <c
bad0: 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 20 29 5d 20 56  olumn-list> )] V
bae0: 41 4c 55 45 53 20 28 20 3c 76 61 6c 75 65 2d 6c  ALUES ( <value-l
baf0: 69 73 74 3e 20 29 20 7c 0a 52 45 50 4c 41 43 45  ist> ) |.REPLACE
bb00: 20 49 4e 54 4f 20 5b 3c 64 61 74 61 62 61 73 65   INTO [<database
bb10: 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65  -name> .] <table
bb20: 2d 6e 61 6d 65 3e 20 5b 28 20 3c 63 6f 6c 75 6d  -name> [( <colum
bb30: 6e 2d 6c 69 73 74 3e 20 29 5d 20 3c 73 65 6c 65  n-list> )] <sele
bb40: 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e 0a 7d 0a  ct-statement>.}.
bb50: 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 52  .puts {.<p>The R
bb60: 45 50 4c 41 43 45 20 63 6f 6d 6d 61 6e 64 20 69  EPLACE command i
bb70: 73 20 61 6e 20 61 6c 69 61 73 20 66 6f 72 20 74  s an alias for t
bb80: 68 65 20 22 49 4e 53 45 52 54 20 4f 52 20 52 45  he "INSERT OR RE
bb90: 50 4c 41 43 45 22 20 76 61 72 69 61 6e 74 0a 6f  PLACE" variant.o
bba0: 66 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23  f the <a href="#
bbb0: 69 6e 73 65 72 74 22 3e 49 4e 53 45 52 54 3c 2f  insert">INSERT</
bbc0: 61 3e 20 63 6f 6d 6d 61 6e 64 2e 20 20 54 68 69  a> command.  Thi
bbd0: 73 20 61 6c 69 61 73 20 69 73 20 70 72 6f 76 69  s alias is provi
bbe0: 64 65 64 20 66 6f 72 0a 63 6f 6d 70 61 74 69 62  ded for.compatib
bbf0: 69 6c 69 74 79 20 77 69 74 68 20 4d 79 53 51 4c  ility with MySQL
bc00: 2e 20 20 53 65 65 20 74 68 65 20 0a 3c 61 20 68  .  See the .<a h
bc10: 72 65 66 3d 22 23 69 6e 73 65 72 74 22 3e 49 4e  ref="#insert">IN
bc20: 53 45 52 54 3c 2f 61 3e 20 63 6f 6d 6d 61 6e 64  SERT</a> command
bc30: 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66   documentation f
bc40: 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 0a 69 6e  or additional.in
bc50: 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 20 20  formation.</p>  
bc60: 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 53 45 4c  .}...Section SEL
bc70: 45 43 54 20 73 65 6c 65 63 74 0a 0a 53 79 6e 74  ECT select..Synt
bc80: 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e  ax {sql-statemen
bc90: 74 7d 20 7b 0a 53 45 4c 45 43 54 20 5b 41 4c 4c  t} {.SELECT [ALL
bca0: 20 7c 20 44 49 53 54 49 4e 43 54 5d 20 3c 72 65   | DISTINCT] <re
bcb0: 73 75 6c 74 3e 20 5b 46 52 4f 4d 20 3c 74 61 62  sult> [FROM <tab
bcc0: 6c 65 2d 6c 69 73 74 3e 5d 0a 5b 57 48 45 52 45  le-list>].[WHERE
bcd0: 20 3c 65 78 70 72 3e 5d 0a 5b 47 52 4f 55 50 20   <expr>].[GROUP 
bce0: 42 59 20 3c 65 78 70 72 2d 6c 69 73 74 3e 5d 0a  BY <expr-list>].
bcf0: 5b 48 41 56 49 4e 47 20 3c 65 78 70 72 3e 5d 0a  [HAVING <expr>].
bd00: 5b 3c 63 6f 6d 70 6f 75 6e 64 2d 6f 70 3e 20 3c  [<compound-op> <
bd10: 73 65 6c 65 63 74 3e 5d 2a 0a 5b 4f 52 44 45 52  select>]*.[ORDER
bd20: 20 42 59 20 3c 73 6f 72 74 2d 65 78 70 72 2d 6c   BY <sort-expr-l
bd30: 69 73 74 3e 5d 0a 5b 4c 49 4d 49 54 20 3c 69 6e  ist>].[LIMIT <in
bd40: 74 65 67 65 72 3e 20 5b 4c 50 20 4f 46 46 53 45  teger> [LP OFFSE
bd50: 54 20 7c 20 2c 20 52 50 20 3c 69 6e 74 65 67 65  T | , RP <intege
bd60: 72 3e 5d 5d 0a 7d 20 7b 72 65 73 75 6c 74 7d 20  r>]].} {result} 
bd70: 7b 0a 3c 72 65 73 75 6c 74 2d 63 6f 6c 75 6d 6e  {.<result-column
bd80: 3e 20 5b 2c 20 3c 72 65 73 75 6c 74 2d 63 6f 6c  > [, <result-col
bd90: 75 6d 6e 3e 5d 2a 0a 7d 20 7b 72 65 73 75 6c 74  umn>]*.} {result
bda0: 2d 63 6f 6c 75 6d 6e 7d 20 7b 0a 53 54 41 52 20  -column} {.STAR 
bdb0: 7c 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 2e  | <table-name> .
bdc0: 20 53 54 41 52 20 7c 20 3c 65 78 70 72 3e 20 5b   STAR | <expr> [
bdd0: 20 5b 41 53 5d 20 3c 73 74 72 69 6e 67 3e 20 5d   [AS] <string> ]
bde0: 0a 7d 20 7b 74 61 62 6c 65 2d 6c 69 73 74 7d 20  .} {table-list} 
bdf0: 7b 0a 3c 74 61 62 6c 65 3e 20 5b 3c 6a 6f 69 6e  {.<table> [<join
be00: 2d 6f 70 3e 20 3c 74 61 62 6c 65 3e 20 3c 6a 6f  -op> <table> <jo
be10: 69 6e 2d 61 72 67 73 3e 5d 2a 0a 7d 20 7b 74 61  in-args>]*.} {ta
be20: 62 6c 65 7d 20 7b 0a 3c 74 61 62 6c 65 2d 6e 61  ble} {.<table-na
be30: 6d 65 3e 20 5b 41 53 20 3c 61 6c 69 61 73 3e 5d  me> [AS <alias>]
be40: 20 7c 0a 28 20 3c 73 65 6c 65 63 74 3e 20 29 20   |.( <select> ) 
be50: 5b 41 53 20 3c 61 6c 69 61 73 3e 5d 0a 7d 20 7b  [AS <alias>].} {
be60: 6a 6f 69 6e 2d 6f 70 7d 20 7b 0a 2c 20 7c 20 5b  join-op} {., | [
be70: 4e 41 54 55 52 41 4c 5d 20 5b 4c 45 46 54 20 7c  NATURAL] [LEFT |
be80: 20 52 49 47 48 54 20 7c 20 46 55 4c 4c 5d 20 5b   RIGHT | FULL] [
be90: 4f 55 54 45 52 20 7c 20 49 4e 4e 45 52 20 7c 20  OUTER | INNER | 
bea0: 43 52 4f 53 53 5d 20 4a 4f 49 4e 0a 7d 20 7b 6a  CROSS] JOIN.} {j
beb0: 6f 69 6e 2d 61 72 67 73 7d 20 7b 0a 5b 4f 4e 20  oin-args} {.[ON 
bec0: 3c 65 78 70 72 3e 5d 20 5b 55 53 49 4e 47 20 28  <expr>] [USING (
bed0: 20 3c 69 64 2d 6c 69 73 74 3e 20 29 5d 0a 7d 20   <id-list> )].} 
bee0: 7b 73 6f 72 74 2d 65 78 70 72 2d 6c 69 73 74 7d  {sort-expr-list}
bef0: 20 7b 0a 3c 65 78 70 72 3e 20 5b 3c 73 6f 72 74   {.<expr> [<sort
bf00: 2d 6f 72 64 65 72 3e 5d 20 5b 2c 20 3c 65 78 70  -order>] [, <exp
bf10: 72 3e 20 5b 3c 73 6f 72 74 2d 6f 72 64 65 72 3e  r> [<sort-order>
bf20: 5d 5d 2a 0a 7d 20 7b 73 6f 72 74 2d 6f 72 64 65  ]]*.} {sort-orde
bf30: 72 7d 20 7b 0a 5b 20 43 4f 4c 4c 41 54 45 20 3c  r} {.[ COLLATE <
bf40: 63 6f 6c 6c 61 74 69 6f 6e 2d 6e 61 6d 65 3e 20  collation-name> 
bf50: 5d 20 5b 20 41 53 43 20 7c 20 44 45 53 43 20 5d  ] [ ASC | DESC ]
bf60: 0a 7d 20 7b 63 6f 6d 70 6f 75 6e 64 5f 6f 70 7d  .} {compound_op}
bf70: 20 7b 0a 55 4e 49 4f 4e 20 7c 20 55 4e 49 4f 4e   {.UNION | UNION
bf80: 20 41 4c 4c 20 7c 20 49 4e 54 45 52 53 45 43 54   ALL | INTERSECT
bf90: 20 7c 20 45 58 43 45 50 54 0a 7d 0a 0a 70 75 74   | EXCEPT.}..put
bfa0: 73 20 7b 0a 3c 70 3e 54 68 65 20 53 45 4c 45 43  s {.<p>The SELEC
bfb0: 54 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 75  T statement is u
bfc0: 73 65 64 20 74 6f 20 71 75 65 72 79 20 74 68 65  sed to query the
bfd0: 20 64 61 74 61 62 61 73 65 2e 20 20 54 68 65 0a   database.  The.
bfe0: 72 65 73 75 6c 74 20 6f 66 20 61 20 53 45 4c 45  result of a SELE
bff0: 43 54 20 69 73 20 7a 65 72 6f 20 6f 72 20 6d 6f  CT is zero or mo
c000: 72 65 20 72 6f 77 73 20 6f 66 20 64 61 74 61 20  re rows of data 
c010: 77 68 65 72 65 20 65 61 63 68 20 72 6f 77 0a 68  where each row.h
c020: 61 73 20 61 20 66 69 78 65 64 20 6e 75 6d 62 65  as a fixed numbe
c030: 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 2e 20 20 54  r of columns.  T
c040: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c  he number of col
c050: 75 6d 6e 73 20 69 6e 20 74 68 65 0a 72 65 73 75  umns in the.resu
c060: 6c 74 20 69 73 20 73 70 65 63 69 66 69 65 64 20  lt is specified 
c070: 62 79 20 74 68 65 20 65 78 70 72 65 73 73 69 6f  by the expressio
c080: 6e 20 6c 69 73 74 20 69 6e 20 62 65 74 77 65 65  n list in betwee
c090: 6e 20 74 68 65 0a 53 45 4c 45 43 54 20 61 6e 64  n the.SELECT and
c0a0: 20 46 52 4f 4d 20 6b 65 79 77 6f 72 64 73 2e 20   FROM keywords. 
c0b0: 20 41 6e 79 20 61 72 62 69 74 72 61 72 79 20 65   Any arbitrary e
c0c0: 78 70 72 65 73 73 69 6f 6e 20 63 61 6e 20 62 65  xpression can be
c0d0: 20 75 73 65 64 0a 61 73 20 61 20 72 65 73 75 6c   used.as a resul
c0e0: 74 2e 20 20 49 66 20 61 20 72 65 73 75 6c 74 20  t.  If a result 
c0f0: 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 7d 0a  expression is }.
c100: 70 75 74 73 20 22 5b 4f 70 65 72 61 74 6f 72 20  puts "[Operator 
c110: 2a 5d 20 74 68 65 6e 20 61 6c 6c 20 63 6f 6c 75  *] then all colu
c120: 6d 6e 73 20 6f 66 20 61 6c 6c 20 74 61 62 6c 65  mns of all table
c130: 73 20 61 72 65 20 73 75 62 73 74 69 74 75 74 65  s are substitute
c140: 64 22 0a 70 75 74 73 20 7b 66 6f 72 20 74 68 61  d".puts {for tha
c150: 74 20 6f 6e 65 20 65 78 70 72 65 73 73 69 6f 6e  t one expression
c160: 2e 20 20 49 66 20 74 68 65 20 65 78 70 72 65 73  .  If the expres
c170: 73 69 6f 6e 20 69 73 20 74 68 65 20 6e 61 6d 65  sion is the name
c180: 20 6f 66 7d 0a 70 75 74 73 20 22 61 20 74 61 62   of}.puts "a tab
c190: 6c 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 5b  le followed by [
c1a0: 4f 70 65 72 61 74 6f 72 20 2e 2a 5d 20 74 68 65  Operator .*] the
c1b0: 6e 20 74 68 65 20 72 65 73 75 6c 74 20 69 73 20  n the result is 
c1c0: 61 6c 6c 20 63 6f 6c 75 6d 6e 73 22 0a 70 75 74  all columns".put
c1d0: 73 20 7b 69 6e 20 74 68 61 74 20 6f 6e 65 20 74  s {in that one t
c1e0: 61 62 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  able.</p>..<p>Th
c1f0: 65 20 44 49 53 54 49 4e 43 54 20 6b 65 79 77 6f  e DISTINCT keywo
c200: 72 64 20 63 61 75 73 65 73 20 61 20 73 75 62 73  rd causes a subs
c210: 65 74 20 6f 66 20 72 65 73 75 6c 74 20 72 6f 77  et of result row
c220: 73 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64  s to be returned
c230: 2c 20 0a 69 6e 20 77 68 69 63 68 20 65 61 63 68  , .in which each
c240: 20 72 65 73 75 6c 74 20 72 6f 77 20 69 73 20 64   result row is d
c250: 69 66 66 65 72 65 6e 74 2e 20 20 4e 55 4c 4c 20  ifferent.  NULL 
c260: 76 61 6c 75 65 73 20 61 72 65 20 6e 6f 74 20 74  values are not t
c270: 72 65 61 74 65 64 20 61 73 20 0a 64 69 73 74 69  reated as .disti
c280: 6e 63 74 20 66 72 6f 6d 20 65 61 63 68 20 6f 74  nct from each ot
c290: 68 65 72 2e 20 20 54 68 65 20 64 65 66 61 75 6c  her.  The defaul
c2a0: 74 20 62 65 68 61 76 69 6f 72 20 69 73 20 74 68  t behavior is th
c2b0: 61 74 20 61 6c 6c 20 72 65 73 75 6c 74 20 72 6f  at all result ro
c2c0: 77 73 20 0a 62 65 20 72 65 74 75 72 6e 65 64 2c  ws .be returned,
c2d0: 20 77 68 69 63 68 20 63 61 6e 20 62 65 20 6d 61   which can be ma
c2e0: 64 65 20 65 78 70 6c 69 63 69 74 20 77 69 74 68  de explicit with
c2f0: 20 74 68 65 20 6b 65 79 77 6f 72 64 20 41 4c 4c   the keyword ALL
c300: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 71 75  .</p>..<p>The qu
c310: 65 72 79 20 69 73 20 65 78 65 63 75 74 65 64 20  ery is executed 
c320: 61 67 61 69 6e 73 74 20 6f 6e 65 20 6f 72 20 6d  against one or m
c330: 6f 72 65 20 74 61 62 6c 65 73 20 73 70 65 63 69  ore tables speci
c340: 66 69 65 64 20 61 66 74 65 72 0a 74 68 65 20 46  fied after.the F
c350: 52 4f 4d 20 6b 65 79 77 6f 72 64 2e 20 20 49 66  ROM keyword.  If
c360: 20 6d 75 6c 74 69 70 6c 65 20 74 61 62 6c 65 73   multiple tables
c370: 20 6e 61 6d 65 73 20 61 72 65 20 73 65 70 61 72   names are separ
c380: 61 74 65 64 20 62 79 20 63 6f 6d 6d 61 73 2c 0a  ated by commas,.
c390: 74 68 65 6e 20 74 68 65 20 71 75 65 72 79 20 69  then the query i
c3a0: 73 20 61 67 61 69 6e 73 74 20 74 68 65 20 63 72  s against the cr
c3b0: 6f 73 73 20 6a 6f 69 6e 20 6f 66 20 74 68 65 20  oss join of the 
c3c0: 76 61 72 69 6f 75 73 20 74 61 62 6c 65 73 2e 0a  various tables..
c3d0: 54 68 65 20 66 75 6c 6c 20 53 51 4c 2d 39 32 20  The full SQL-92 
c3e0: 6a 6f 69 6e 20 73 79 6e 74 61 78 20 63 61 6e 20  join syntax can 
c3f0: 61 6c 73 6f 20 62 65 20 75 73 65 64 20 74 6f 20  also be used to 
c400: 73 70 65 63 69 66 79 20 6a 6f 69 6e 73 2e 0a 41  specify joins..A
c410: 20 73 75 62 2d 71 75 65 72 79 0a 69 6e 20 70 61   sub-query.in pa
c420: 72 65 6e 74 68 65 73 65 73 20 6d 61 79 20 62 65  rentheses may be
c430: 20 73 75 62 73 74 69 74 75 74 65 64 20 66 6f 72   substituted for
c440: 20 61 6e 79 20 74 61 62 6c 65 20 6e 61 6d 65 20   any table name 
c450: 69 6e 20 74 68 65 20 46 52 4f 4d 20 63 6c 61 75  in the FROM clau
c460: 73 65 2e 0a 54 68 65 20 65 6e 74 69 72 65 20 46  se..The entire F
c470: 52 4f 4d 20 63 6c 61 75 73 65 20 6d 61 79 20 62  ROM clause may b
c480: 65 20 6f 6d 69 74 74 65 64 2c 20 69 6e 20 77 68  e omitted, in wh
c490: 69 63 68 20 63 61 73 65 20 74 68 65 20 72 65 73  ich case the res
c4a0: 75 6c 74 20 69 73 20 61 0a 73 69 6e 67 6c 65 20  ult is a.single 
c4b0: 72 6f 77 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f  row consisting o
c4c0: 66 20 74 68 65 20 76 61 6c 75 65 73 20 6f 66 20  f the values of 
c4d0: 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 6c  the expression l
c4e0: 69 73 74 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  ist..</p>..<p>Th
c4f0: 65 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 63  e WHERE clause c
c500: 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 6c 69  an be used to li
c510: 6d 69 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  mit the number o
c520: 66 20 72 6f 77 73 20 6f 76 65 72 0a 77 68 69 63  f rows over.whic
c530: 68 20 74 68 65 20 71 75 65 72 79 20 6f 70 65 72  h the query oper
c540: 61 74 65 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  ates.</p>..<p>Th
c550: 65 20 47 52 4f 55 50 20 42 59 20 63 6c 61 75 73  e GROUP BY claus
c560: 65 73 20 63 61 75 73 65 73 20 6f 6e 65 20 6f 72  es causes one or
c570: 20 6d 6f 72 65 20 72 6f 77 73 20 6f 66 20 74 68   more rows of th
c580: 65 20 72 65 73 75 6c 74 20 74 6f 0a 62 65 20 63  e result to.be c
c590: 6f 6d 62 69 6e 65 64 20 69 6e 74 6f 20 61 20 73  ombined into a s
c5a0: 69 6e 67 6c 65 20 72 6f 77 20 6f 66 20 6f 75 74  ingle row of out
c5b0: 70 75 74 2e 20 20 54 68 69 73 20 69 73 20 65 73  put.  This is es
c5c0: 70 65 63 69 61 6c 6c 79 20 75 73 65 66 75 6c 0a  pecially useful.
c5d0: 77 68 65 6e 20 74 68 65 20 72 65 73 75 6c 74 20  when the result 
c5e0: 63 6f 6e 74 61 69 6e 73 20 61 67 67 72 65 67 61  contains aggrega
c5f0: 74 65 20 66 75 6e 63 74 69 6f 6e 73 2e 20 20 54  te functions.  T
c600: 68 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20 69  he expressions i
c610: 6e 0a 74 68 65 20 47 52 4f 55 50 20 42 59 20 63  n.the GROUP BY c
c620: 6c 61 75 73 65 20 64 6f 20 3c 65 6d 3e 6e 6f 74  lause do <em>not
c630: 3c 2f 65 6d 3e 20 68 61 76 65 20 74 6f 20 62 65  </em> have to be
c640: 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74 68 61   expressions tha
c650: 74 0a 61 70 70 65 61 72 20 69 6e 20 74 68 65 20  t.appear in the 
c660: 72 65 73 75 6c 74 2e 20 20 54 68 65 20 48 41 56  result.  The HAV
c670: 49 4e 47 20 63 6c 61 75 73 65 20 69 73 20 73 69  ING clause is si
c680: 6d 69 6c 61 72 20 74 6f 20 57 48 45 52 45 20 65  milar to WHERE e
c690: 78 63 65 70 74 0a 74 68 61 74 20 48 41 56 49 4e  xcept.that HAVIN
c6a0: 47 20 61 70 70 6c 69 65 73 20 61 66 74 65 72 20  G applies after 
c6b0: 67 72 6f 75 70 69 6e 67 20 68 61 73 20 6f 63 63  grouping has occ
c6c0: 75 72 72 65 64 2e 20 20 54 68 65 20 48 41 56 49  urred.  The HAVI
c6d0: 4e 47 20 65 78 70 72 65 73 73 69 6f 6e 0a 6d 61  NG expression.ma
c6e0: 79 20 72 65 66 65 72 20 74 6f 20 76 61 6c 75 65  y refer to value
c6f0: 73 2c 20 65 76 65 6e 20 61 67 67 72 65 67 61 74  s, even aggregat
c700: 65 20 66 75 6e 63 74 69 6f 6e 73 2c 20 74 68 61  e functions, tha
c710: 74 20 61 72 65 20 6e 6f 74 20 69 6e 20 74 68 65  t are not in the
c720: 20 72 65 73 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70   result.</p>..<p
c730: 3e 54 68 65 20 4f 52 44 45 52 20 42 59 20 63 6c  >The ORDER BY cl
c740: 61 75 73 65 20 63 61 75 73 65 73 20 74 68 65 20  ause causes the 
c750: 6f 75 74 70 75 74 20 72 6f 77 73 20 74 6f 20 62  output rows to b
c760: 65 20 73 6f 72 74 65 64 2e 20 20 0a 54 68 65 20  e sorted.  .The 
c770: 61 72 67 75 6d 65 6e 74 20 74 6f 20 4f 52 44 45  argument to ORDE
c780: 52 20 42 59 20 69 73 20 61 20 6c 69 73 74 20 6f  R BY is a list o
c790: 66 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74 68  f expressions th
c7a0: 61 74 20 61 72 65 20 75 73 65 64 20 61 73 20 74  at are used as t
c7b0: 68 65 0a 6b 65 79 20 66 6f 72 20 74 68 65 20 73  he.key for the s
c7c0: 6f 72 74 2e 20 20 54 68 65 20 65 78 70 72 65 73  ort.  The expres
c7d0: 73 69 6f 6e 73 20 64 6f 20 6e 6f 74 20 68 61 76  sions do not hav
c7e0: 65 20 74 6f 20 62 65 20 70 61 72 74 20 6f 66 20  e to be part of 
c7f0: 74 68 65 0a 72 65 73 75 6c 74 20 66 6f 72 20 61  the.result for a
c800: 20 73 69 6d 70 6c 65 20 53 45 4c 45 43 54 2c 20   simple SELECT, 
c810: 62 75 74 20 69 6e 20 61 20 63 6f 6d 70 6f 75 6e  but in a compoun
c820: 64 20 53 45 4c 45 43 54 20 65 61 63 68 20 73 6f  d SELECT each so
c830: 72 74 0a 65 78 70 72 65 73 73 69 6f 6e 20 6d 75  rt.expression mu
c840: 73 74 20 65 78 61 63 74 6c 79 20 6d 61 74 63 68  st exactly match
c850: 20 6f 6e 65 20 6f 66 20 74 68 65 20 72 65 73 75   one of the resu
c860: 6c 74 20 63 6f 6c 75 6d 6e 73 2e 20 20 45 61 63  lt columns.  Eac
c870: 68 0a 73 6f 72 74 20 65 78 70 72 65 73 73 69 6f  h.sort expressio
c880: 6e 20 6d 61 79 20 62 65 20 6f 70 74 69 6f 6e 61  n may be optiona
c890: 6c 6c 79 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20  lly followed by 
c8a0: 61 20 43 4f 4c 4c 41 54 45 20 6b 65 79 77 6f 72  a COLLATE keywor
c8b0: 64 20 61 6e 64 0a 74 68 65 20 6e 61 6d 65 20 6f  d and.the name o
c8c0: 66 20 61 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75  f a collating fu
c8d0: 6e 63 74 69 6f 6e 20 75 73 65 64 20 66 6f 72 20  nction used for 
c8e0: 6f 72 64 65 72 69 6e 67 20 74 65 78 74 20 61 6e  ordering text an
c8f0: 64 2f 6f 72 0a 6b 65 79 77 6f 72 64 73 20 41 53  d/or.keywords AS
c900: 43 20 6f 72 20 44 45 53 43 20 74 6f 20 73 70 65  C or DESC to spe
c910: 63 69 66 79 20 74 68 65 20 73 6f 72 74 20 6f 72  cify the sort or
c920: 64 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  der.</p>..<p>The
c930: 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 70 6c   LIMIT clause pl
c940: 61 63 65 73 20 61 6e 20 75 70 70 65 72 20 62 6f  aces an upper bo
c950: 75 6e 64 20 6f 6e 20 74 68 65 20 6e 75 6d 62 65  und on the numbe
c960: 72 20 6f 66 20 72 6f 77 73 0a 72 65 74 75 72 6e  r of rows.return
c970: 65 64 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74  ed in the result
c980: 2e 20 20 41 20 6e 65 67 61 74 69 76 65 20 4c 49  .  A negative LI
c990: 4d 49 54 20 69 6e 64 69 63 61 74 65 73 20 6e 6f  MIT indicates no
c9a0: 20 75 70 70 65 72 20 62 6f 75 6e 64 2e 0a 54 68   upper bound..Th
c9b0: 65 20 6f 70 74 69 6f 6e 61 6c 20 4f 46 46 53 45  e optional OFFSE
c9c0: 54 20 66 6f 6c 6c 6f 77 69 6e 67 20 4c 49 4d 49  T following LIMI
c9d0: 54 20 73 70 65 63 69 66 69 65 73 20 68 6f 77 20  T specifies how 
c9e0: 6d 61 6e 79 0a 72 6f 77 73 20 74 6f 20 73 6b 69  many.rows to ski
c9f0: 70 20 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69  p at the beginni
ca00: 6e 67 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74  ng of the result
ca10: 20 73 65 74 2e 0a 49 6e 20 61 20 63 6f 6d 70 6f   set..In a compo
ca20: 75 6e 64 20 71 75 65 72 79 2c 20 74 68 65 20 4c  und query, the L
ca30: 49 4d 49 54 20 63 6c 61 75 73 65 20 6d 61 79 20  IMIT clause may 
ca40: 6f 6e 6c 79 20 61 70 70 65 61 72 20 6f 6e 20 74  only appear on t
ca50: 68 65 0a 66 69 6e 61 6c 20 53 45 4c 45 43 54 20  he.final SELECT 
ca60: 73 74 61 74 65 6d 65 6e 74 2e 0a 54 68 65 20 6c  statement..The l
ca70: 69 6d 69 74 20 69 73 20 61 70 70 6c 69 65 64 20  imit is applied 
ca80: 74 6f 20 74 68 65 20 65 6e 74 69 72 65 20 71 75  to the entire qu
ca90: 65 72 79 20 6e 6f 74 0a 74 6f 20 74 68 65 20 69  ery not.to the i
caa0: 6e 64 69 76 69 64 75 61 6c 20 53 45 4c 45 43 54  ndividual SELECT
cab0: 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 20 77 68   statement to wh
cac0: 69 63 68 20 69 74 20 69 73 20 61 74 74 61 63 68  ich it is attach
cad0: 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 63  ed..</p>..<p>A c
cae0: 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 69  ompound SELECT i
caf0: 73 20 66 6f 72 6d 65 64 20 66 72 6f 6d 20 74 77  s formed from tw
cb00: 6f 20 6f 72 20 6d 6f 72 65 20 73 69 6d 70 6c 65  o or more simple
cb10: 20 53 45 4c 45 43 54 73 20 63 6f 6e 6e 65 63 74   SELECTs connect
cb20: 65 64 0a 62 79 20 6f 6e 65 20 6f 66 20 74 68 65  ed.by one of the
cb30: 20 6f 70 65 72 61 74 6f 72 73 20 55 4e 49 4f 4e   operators UNION
cb40: 2c 20 55 4e 49 4f 4e 20 41 4c 4c 2c 20 49 4e 54  , UNION ALL, INT
cb50: 45 52 53 45 43 54 2c 20 6f 72 20 45 58 43 45 50  ERSECT, or EXCEP
cb60: 54 2e 20 20 49 6e 0a 61 20 63 6f 6d 70 6f 75 6e  T.  In.a compoun
cb70: 64 20 53 45 4c 45 43 54 2c 20 61 6c 6c 20 74 68  d SELECT, all th
cb80: 65 20 63 6f 6e 73 74 69 74 75 65 6e 74 20 53 45  e constituent SE
cb90: 4c 45 43 54 73 20 6d 75 73 74 20 73 70 65 63 69  LECTs must speci
cba0: 66 79 20 74 68 65 0a 73 61 6d 65 20 6e 75 6d 62  fy the.same numb
cbb0: 65 72 20 6f 66 20 72 65 73 75 6c 74 20 63 6f 6c  er of result col
cbc0: 75 6d 6e 73 2e 20 20 54 68 65 72 65 20 6d 61 79  umns.  There may
cbd0: 20 62 65 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c   be only a singl
cbe0: 65 20 4f 52 44 45 52 20 42 59 0a 63 6c 61 75 73  e ORDER BY.claus
cbf0: 65 20 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20  e at the end of 
cc00: 74 68 65 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c  the compound SEL
cc10: 45 43 54 2e 20 20 54 68 65 20 55 4e 49 4f 4e 20  ECT.  The UNION 
cc20: 61 6e 64 20 55 4e 49 4f 4e 20 41 4c 4c 0a 6f 70  and UNION ALL.op
cc30: 65 72 61 74 6f 72 73 20 63 6f 6d 62 69 6e 65 20  erators combine 
cc40: 74 68 65 20 72 65 73 75 6c 74 73 20 6f 66 20 74  the results of t
cc50: 68 65 20 53 45 4c 45 43 54 73 20 74 6f 20 74 68  he SELECTs to th
cc60: 65 20 72 69 67 68 74 20 61 6e 64 20 6c 65 66 74  e right and left
cc70: 20 69 6e 74 6f 0a 61 20 73 69 6e 67 6c 65 20 62   into.a single b
cc80: 69 67 20 74 61 62 6c 65 2e 20 20 54 68 65 20 64  ig table.  The d
cc90: 69 66 66 65 72 65 6e 63 65 20 69 73 20 74 68 61  ifference is tha
cca0: 74 20 69 6e 20 55 4e 49 4f 4e 20 61 6c 6c 20 72  t in UNION all r
ccb0: 65 73 75 6c 74 20 72 6f 77 73 0a 61 72 65 20 64  esult rows.are d
ccc0: 69 73 74 69 6e 63 74 20 77 68 65 72 65 20 69 6e  istinct where in
ccd0: 20 55 4e 49 4f 4e 20 41 4c 4c 20 74 68 65 72 65   UNION ALL there
cce0: 20 6d 61 79 20 62 65 20 64 75 70 6c 69 63 61 74   may be duplicat
ccf0: 65 73 2e 0a 54 68 65 20 49 4e 54 45 52 53 45 43  es..The INTERSEC
cd00: 54 20 6f 70 65 72 61 74 6f 72 20 74 61 6b 65 73  T operator takes
cd10: 20 74 68 65 20 69 6e 74 65 72 73 65 63 74 69 6f   the intersectio
cd20: 6e 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 73  n of the results
cd30: 20 6f 66 20 74 68 65 0a 6c 65 66 74 20 61 6e 64   of the.left and
cd40: 20 72 69 67 68 74 20 53 45 4c 45 43 54 73 2e 20   right SELECTs. 
cd50: 20 45 58 43 45 50 54 20 74 61 6b 65 73 20 74 68   EXCEPT takes th
cd60: 65 20 72 65 73 75 6c 74 20 6f 66 20 6c 65 66 74  e result of left
cd70: 20 53 45 4c 45 43 54 20 61 66 74 65 72 0a 72 65   SELECT after.re
cd80: 6d 6f 76 69 6e 67 20 74 68 65 20 72 65 73 75 6c  moving the resul
cd90: 74 73 20 6f 66 20 74 68 65 20 72 69 67 68 74 20  ts of the right 
cda0: 53 45 4c 45 43 54 2e 20 20 57 68 65 6e 20 74 68  SELECT.  When th
cdb0: 72 65 65 20 61 72 65 20 6d 6f 72 65 20 53 45 4c  ree are more SEL
cdc0: 45 43 54 73 0a 61 72 65 20 63 6f 6e 6e 65 63 74  ECTs.are connect
cdd0: 65 64 20 69 6e 74 6f 20 61 20 63 6f 6d 70 6f 75  ed into a compou
cde0: 6e 64 2c 20 74 68 65 79 20 67 72 6f 75 70 20 66  nd, they group f
cdf0: 72 6f 6d 20 6c 65 66 74 20 74 6f 20 72 69 67 68  rom left to righ
ce00: 74 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69  t.</p>.}...Secti
ce10: 6f 6e 20 55 50 44 41 54 45 20 75 70 64 61 74 65  on UPDATE update
ce20: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74  ..Syntax {sql-st
ce30: 61 74 65 6d 65 6e 74 7d 20 7b 0a 55 50 44 41 54  atement} {.UPDAT
ce40: 45 20 5b 20 4f 52 20 3c 63 6f 6e 66 6c 69 63 74  E [ OR <conflict
ce50: 2d 61 6c 67 6f 72 69 74 68 6d 3e 20 5d 20 5b 3c  -algorithm> ] [<
ce60: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e  database-name> .
ce70: 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 0a 53  ] <table-name>.S
ce80: 45 54 20 3c 61 73 73 69 67 6e 6d 65 6e 74 3e 20  ET <assignment> 
ce90: 5b 2c 20 3c 61 73 73 69 67 6e 6d 65 6e 74 3e 5d  [, <assignment>]
cea0: 2a 0a 5b 57 48 45 52 45 20 3c 65 78 70 72 3e 5d  *.[WHERE <expr>]
ceb0: 0a 7d 20 7b 61 73 73 69 67 6e 6d 65 6e 74 7d 20  .} {assignment} 
cec0: 7b 0a 3c 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20  {.<column-name> 
ced0: 3d 20 3c 65 78 70 72 3e 0a 7d 0a 0a 70 75 74 73  = <expr>.}..puts
cee0: 20 7b 0a 3c 70 3e 54 68 65 20 55 50 44 41 54 45   {.<p>The UPDATE
cef0: 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 75 73   statement is us
cf00: 65 64 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65  ed to change the
cf10: 20 76 61 6c 75 65 20 6f 66 20 63 6f 6c 75 6d 6e   value of column
cf20: 73 20 69 6e 20 0a 73 65 6c 65 63 74 65 64 20 72  s in .selected r
cf30: 6f 77 73 20 6f 66 20 61 20 74 61 62 6c 65 2e 20  ows of a table. 
cf40: 20 45 61 63 68 20 61 73 73 69 67 6e 6d 65 6e 74   Each assignment
cf50: 20 69 6e 20 61 6e 20 55 50 44 41 54 45 20 73 70   in an UPDATE sp
cf60: 65 63 69 66 69 65 73 0a 61 20 63 6f 6c 75 6d 6e  ecifies.a column
cf70: 20 6e 61 6d 65 20 74 6f 20 74 68 65 20 6c 65 66   name to the lef
cf80: 74 20 6f 66 20 74 68 65 20 65 71 75 61 6c 73 20  t of the equals 
cf90: 73 69 67 6e 20 61 6e 64 20 61 6e 20 61 72 62 69  sign and an arbi
cfa0: 74 72 61 72 79 20 65 78 70 72 65 73 73 69 6f 6e  trary expression
cfb0: 0a 74 6f 20 74 68 65 20 72 69 67 68 74 2e 20 20  .to the right.  
cfc0: 54 68 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20  The expressions 
cfd0: 6d 61 79 20 75 73 65 20 74 68 65 20 76 61 6c 75  may use the valu
cfe0: 65 73 20 6f 66 20 6f 74 68 65 72 20 63 6f 6c 75  es of other colu
cff0: 6d 6e 73 2e 0a 41 6c 6c 20 65 78 70 72 65 73 73  mns..All express
d000: 69 6f 6e 73 20 61 72 65 20 65 76 61 6c 75 61 74  ions are evaluat
d010: 65 64 20 62 65 66 6f 72 65 20 61 6e 79 20 61 73  ed before any as
d020: 73 69 67 6e 6d 65 6e 74 73 20 61 72 65 20 6d 61  signments are ma
d030: 64 65 2e 0a 41 20 57 48 45 52 45 20 63 6c 61 75  de..A WHERE clau
d040: 73 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  se can be used t
d050: 6f 20 72 65 73 74 72 69 63 74 20 77 68 69 63 68  o restrict which
d060: 20 72 6f 77 73 20 61 72 65 20 75 70 64 61 74 65   rows are update
d070: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f  d.</p>..<p>The o
d080: 70 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74  ptional conflict
d090: 2d 63 6c 61 75 73 65 20 61 6c 6c 6f 77 73 20 74  -clause allows t
d0a0: 68 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e  he specification
d0b0: 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69   of an alternati
d0c0: 76 65 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f  ve.constraint co
d0d0: 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f  nflict resolutio
d0e0: 6e 20 61 6c 67 6f 72 69 74 68 6d 20 74 6f 20 75  n algorithm to u
d0f0: 73 65 20 64 75 72 69 6e 67 20 74 68 69 73 20 6f  se during this o
d100: 6e 65 20 63 6f 6d 6d 61 6e 64 2e 0a 53 65 65 20  ne command..See 
d110: 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69 74 6c  the section titl
d120: 65 64 0a 3c 61 20 68 72 65 66 3d 22 23 63 6f 6e  ed.<a href="#con
d130: 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49  flict">ON CONFLI
d140: 43 54 3c 2f 61 3e 20 66 6f 72 20 61 64 64 69 74  CT</a> for addit
d150: 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f  ional informatio
d160: 6e 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69  n.</p>.}...Secti
d170: 6f 6e 20 56 41 43 55 55 4d 20 76 61 63 75 75 6d  on VACUUM vacuum
d180: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74  ..Syntax {sql-st
d190: 61 74 65 6d 65 6e 74 7d 20 7b 0a 56 41 43 55 55  atement} {.VACUU
d1a0: 4d 20 5b 3c 69 6e 64 65 78 2d 6f 72 2d 74 61 62  M [<index-or-tab
d1b0: 6c 65 2d 6e 61 6d 65 3e 5d 0a 7d 0a 0a 70 75 74  le-name>].}..put
d1c0: 73 20 7b 0a 3c 70 3e 54 68 65 20 56 41 43 55 55  s {.<p>The VACUU
d1d0: 4d 20 63 6f 6d 6d 61 6e 64 20 69 73 20 61 6e 20  M command is an 
d1e0: 53 51 4c 69 74 65 20 65 78 74 65 6e 73 69 6f 6e  SQLite extension
d1f0: 20 6d 6f 64 65 6c 65 64 20 61 66 74 65 72 20 61   modeled after a
d200: 20 73 69 6d 69 6c 61 72 0a 63 6f 6d 6d 61 6e 64   similar.command
d210: 20 66 6f 75 6e 64 20 69 6e 20 50 6f 73 74 67 72   found in Postgr
d220: 65 53 51 4c 2e 20 20 49 66 20 56 41 43 55 55 4d  eSQL.  If VACUUM
d230: 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 69 74 68   is invoked with
d240: 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 0a 74   the name of a.t
d250: 61 62 6c 65 20 6f 72 20 69 6e 64 65 78 20 74 68  able or index th
d260: 65 6e 20 69 74 20 69 73 20 73 75 70 70 6f 73 65  en it is suppose
d270: 20 74 6f 20 63 6c 65 61 6e 20 75 70 20 74 68 65   to clean up the
d280: 20 6e 61 6d 65 64 20 74 61 62 6c 65 20 6f 72 20   named table or 
d290: 69 6e 64 65 78 2e 0a 49 6e 20 76 65 72 73 69 6f  index..In versio
d2a0: 6e 20 31 2e 30 20 6f 66 20 53 51 4c 69 74 65 2c  n 1.0 of SQLite,
d2b0: 20 74 68 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d   the VACUUM comm
d2c0: 61 6e 64 20 77 6f 75 6c 64 20 69 6e 76 6f 6b 65  and would invoke
d2d0: 20 0a 3c 62 3e 67 64 62 6d 5f 72 65 6f 72 67 61   .<b>gdbm_reorga
d2e0: 6e 69 7a 65 28 29 3c 2f 62 3e 20 74 6f 20 63 6c  nize()</b> to cl
d2f0: 65 61 6e 20 75 70 20 74 68 65 20 62 61 63 6b 65  ean up the backe
d300: 6e 64 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  nd database file
d310: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 56 41 43 55 55  .</p>..<p>.VACUU
d320: 4d 20 62 65 63 61 6d 65 20 61 20 6e 6f 2d 6f 70  M became a no-op
d330: 20 77 68 65 6e 20 74 68 65 20 47 44 42 4d 20 62   when the GDBM b
d340: 61 63 6b 65 6e 64 20 77 61 73 20 72 65 6d 6f 76  ackend was remov
d350: 65 64 20 66 72 6f 6d 0a 53 51 4c 49 54 45 20 69  ed from.SQLITE i
d360: 6e 20 76 65 72 73 69 6f 6e 20 32 2e 30 2e 30 2e  n version 2.0.0.
d370: 0a 56 41 43 55 55 4d 20 77 61 73 20 72 65 69 6d  .VACUUM was reim
d380: 70 6c 65 6d 65 6e 74 65 64 20 69 6e 20 76 65 72  plemented in ver
d390: 73 69 6f 6e 20 32 2e 38 2e 31 2e 0a 54 68 65 20  sion 2.8.1..The 
d3a0: 69 6e 64 65 78 20 6f 72 20 74 61 62 6c 65 20 6e  index or table n
d3b0: 61 6d 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20  ame argument is 
d3c0: 6e 6f 77 20 69 67 6e 6f 72 65 64 2e 0a 3c 2f 70  now ignored..</p
d3d0: 3e 0a 0a 3c 70 3e 57 68 65 6e 20 61 6e 20 6f 62  >..<p>When an ob
d3e0: 6a 65 63 74 20 28 74 61 62 6c 65 2c 20 69 6e 64  ject (table, ind
d3f0: 65 78 2c 20 6f 72 20 74 72 69 67 67 65 72 29 20  ex, or trigger) 
d400: 69 73 20 64 72 6f 70 70 65 64 20 66 72 6f 6d 20  is dropped from 
d410: 74 68 65 20 0a 64 61 74 61 62 61 73 65 2c 20 69  the .database, i
d420: 74 20 6c 65 61 76 65 73 20 62 65 68 69 6e 64 20  t leaves behind 
d430: 65 6d 70 74 79 20 73 70 61 63 65 2e 20 20 54 68  empty space.  Th
d440: 69 73 20 6d 61 6b 65 73 20 74 68 65 20 64 61 74  is makes the dat
d450: 61 62 61 73 65 20 0a 66 69 6c 65 20 6c 61 72 67  abase .file larg
d460: 65 72 20 74 68 61 6e 20 69 74 20 6e 65 65 64 73  er than it needs
d470: 20 74 6f 20 62 65 2c 20 62 75 74 20 63 61 6e 20   to be, but can 
d480: 73 70 65 65 64 20 75 70 20 69 6e 73 65 72 74 73  speed up inserts
d490: 2e 20 20 49 6e 20 74 69 6d 65 20 0a 69 6e 73 65  .  In time .inse
d4a0: 72 74 73 20 61 6e 64 20 64 65 6c 65 74 65 73 20  rts and deletes 
d4b0: 63 61 6e 20 6c 65 61 76 65 20 74 68 65 20 64 61  can leave the da
d4c0: 74 61 62 61 73 65 20 66 69 6c 65 20 73 74 72 75  tabase file stru
d4d0: 63 74 75 72 65 20 66 72 61 67 6d 65 6e 74 65 64  cture fragmented
d4e0: 2c 20 0a 77 68 69 63 68 20 73 6c 6f 77 73 20 64  , .which slows d
d4f0: 6f 77 6e 20 64 69 73 6b 20 61 63 63 65 73 73 20  own disk access 
d500: 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20  to the database 
d510: 63 6f 6e 74 65 6e 74 73 2e 0a 0a 54 68 65 20 56  contents...The V
d520: 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20 63 6c  ACUUM command cl
d530: 65 61 6e 73 0a 74 68 65 20 6d 61 69 6e 20 64 61  eans.the main da
d540: 74 61 62 61 73 65 20 62 79 20 63 6f 70 79 69 6e  tabase by copyin
d550: 67 20 69 74 73 20 63 6f 6e 74 65 6e 74 73 20 74  g its contents t
d560: 6f 20 61 20 74 65 6d 70 6f 72 61 72 79 20 64 61  o a temporary da
d570: 74 61 62 61 73 65 20 66 69 6c 65 20 61 6e 64 20  tabase file and 
d580: 0a 72 65 6c 6f 61 64 69 6e 67 20 74 68 65 20 6f  .reloading the o
d590: 72 69 67 69 6e 61 6c 20 64 61 74 61 62 61 73 65  riginal database
d5a0: 20 66 69 6c 65 20 66 72 6f 6d 20 74 68 65 20 63   file from the c
d5b0: 6f 70 79 2e 20 20 54 68 69 73 20 65 6c 69 6d 69  opy.  This elimi
d5c0: 6e 61 74 65 73 20 0a 66 72 65 65 20 70 61 67 65  nates .free page
d5d0: 73 2c 20 20 61 6c 69 67 6e 73 20 74 61 62 6c 65  s,  aligns table
d5e0: 20 64 61 74 61 20 74 6f 20 62 65 20 63 6f 6e 74   data to be cont
d5f0: 69 67 75 6f 75 73 2c 20 61 6e 64 20 6f 74 68 65  iguous, and othe
d600: 72 77 69 73 65 20 63 6c 65 61 6e 73 20 0a 75 70  rwise cleans .up
d610: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69   the database fi
d620: 6c 65 20 73 74 72 75 63 74 75 72 65 2e 20 49 74  le structure. It
d630: 20 69 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65   is not possible
d640: 20 74 6f 20 70 65 72 66 6f 72 6d 20 74 68 65 20   to perform the 
d650: 73 61 6d 65 0a 70 72 6f 63 65 73 73 20 6f 6e 20  same.process on 
d660: 61 6e 20 61 74 74 61 63 68 65 64 20 64 61 74 61  an attached data
d670: 62 61 73 65 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a  base file.</p>..
d680: 3c 70 3e 54 68 69 73 20 63 6f 6d 6d 61 6e 64 20  <p>This command 
d690: 77 69 6c 6c 20 66 61 69 6c 20 69 66 20 74 68 65  will fail if the
d6a0: 72 65 20 69 73 20 61 6e 20 61 63 74 69 76 65 20  re is an active 
d6b0: 74 72 61 6e 73 61 63 74 69 6f 6e 2e 20 20 54 68  transaction.  Th
d6c0: 69 73 20 0a 63 6f 6d 6d 61 6e 64 20 68 61 73 20  is .command has 
d6d0: 6e 6f 20 65 66 66 65 63 74 20 6f 6e 20 61 6e 20  no effect on an 
d6e0: 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62 61  in-memory databa
d6f0: 73 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 73 20 6f  se.</p>..<p>As o
d700: 66 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e  f SQLite version
d710: 20 33 2e 31 2c 20 61 6e 20 61 6c 74 65 72 6e 61   3.1, an alterna
d720: 74 69 76 65 20 74 6f 20 75 73 69 6e 67 20 74 68  tive to using th
d730: 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64  e VACUUM command
d740: 0a 69 73 20 61 75 74 6f 2d 76 61 63 75 75 6d 20  .is auto-vacuum 
d750: 6d 6f 64 65 2c 20 65 6e 61 62 6c 65 64 20 75 73  mode, enabled us
d760: 69 6e 67 20 74 68 65 20 0a 3c 61 20 68 72 65 66  ing the .<a href
d770: 3d 22 70 72 61 67 6d 61 2e 68 74 6d 6c 23 70 72  ="pragma.html#pr
d780: 61 67 6d 61 5f 61 75 74 6f 5f 76 61 63 75 75 6d  agma_auto_vacuum
d790: 22 3e 61 75 74 6f 5f 76 61 63 75 75 6d 20 70 72  ">auto_vacuum pr
d7a0: 61 67 6d 61 3c 2f 61 3e 2e 3c 2f 70 3e 0a 7d 0a  agma</a>.</p>.}.
d7b0: 0a 0a 53 65 63 74 69 6f 6e 20 7b 53 51 4c 69 74  ..Section {SQLit
d7c0: 65 20 6b 65 79 77 6f 72 64 73 7d 20 6b 65 79 77  e keywords} keyw
d7d0: 6f 72 64 73 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e  ords..puts {.<p>
d7e0: 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6b 65  The following ke
d7f0: 79 77 6f 72 64 73 20 61 72 65 20 75 73 65 64 20  ywords are used 
d800: 62 79 20 53 51 4c 69 74 65 2e 20 20 4d 6f 73 74  by SQLite.  Most
d810: 20 61 72 65 20 65 69 74 68 65 72 20 72 65 73 65   are either rese
d820: 72 76 65 64 20 0a 77 6f 72 64 73 20 69 6e 20 53  rved .words in S
d830: 51 4c 2d 39 32 20 6f 72 20 77 65 72 65 20 6c 69  QL-92 or were li
d840: 73 74 65 64 20 61 73 20 70 6f 74 65 6e 74 69 61  sted as potentia
d850: 6c 20 72 65 73 65 72 76 65 64 20 77 6f 72 64 73  l reserved words
d860: 2e 20 20 54 68 6f 73 65 20 77 68 69 63 68 20 0a  .  Those which .
d870: 61 72 65 6e 27 74 20 61 72 65 20 73 68 6f 77 6e  aren't are shown
d880: 20 69 6e 20 69 74 61 6c 69 63 73 2e 20 20 4e 6f   in italics.  No
d890: 74 20 61 6c 6c 20 6f 66 20 74 68 65 73 65 20 77  t all of these w
d8a0: 6f 72 64 73 20 61 72 65 20 61 63 74 75 61 6c 6c  ords are actuall
d8b0: 79 20 75 73 65 64 0a 62 79 20 53 51 4c 69 74 65  y used.by SQLite
d8c0: 2e 20 20 4b 65 79 77 6f 72 64 73 20 61 72 65 20  .  Keywords are 
d8d0: 6e 6f 74 20 72 65 73 65 72 76 65 64 20 69 6e 20  not reserved in 
d8e0: 53 51 4c 69 74 65 2e 20 20 41 6e 79 20 6b 65 79  SQLite.  Any key
d8f0: 77 6f 72 64 20 63 61 6e 20 62 65 20 75 73 65 64  word can be used
d900: 20 0a 61 73 20 61 6e 20 69 64 65 6e 74 69 66 69   .as an identifi
d910: 65 72 20 66 6f 72 20 53 51 4c 69 74 65 20 6f 62  er for SQLite ob
d920: 6a 65 63 74 73 20 28 63 6f 6c 75 6d 6e 73 2c 20  jects (columns, 
d930: 64 61 74 61 62 61 73 65 73 2c 20 69 6e 64 65 78  databases, index
d940: 65 73 2c 20 74 61 62 6c 65 73 2c 20 0a 74 72 69  es, tables, .tri
d950: 67 67 65 72 73 2c 20 76 69 65 77 73 2c 20 2e 2e  ggers, views, ..
d960: 2e 29 20 62 75 74 20 6d 75 73 74 20 67 65 6e 65  .) but must gene
d970: 72 61 6c 6c 79 20 62 65 20 65 6e 63 6c 6f 73 65  rally be enclose
d980: 64 20 62 79 20 62 72 61 63 6b 65 74 73 20 6f 72  d by brackets or
d990: 20 0a 71 75 6f 74 65 73 20 74 6f 20 61 76 6f 69   .quotes to avoi
d9a0: 64 20 63 6f 6e 66 75 73 69 6e 67 20 74 68 65 20  d confusing the 
d9b0: 70 61 72 73 65 72 2e 20 20 4b 65 79 77 6f 72 64  parser.  Keyword
d9c0: 20 6d 61 74 63 68 69 6e 67 20 69 6e 20 53 51 4c   matching in SQL
d9d0: 69 74 65 20 69 73 20 0a 63 61 73 65 2d 69 6e 73  ite is .case-ins
d9e0: 65 6e 73 69 74 69 76 65 2e 3c 2f 70 3e 0a 0a 3c  ensitive.</p>..<
d9f0: 70 3e 4b 65 79 77 6f 72 64 73 20 63 61 6e 20 62  p>Keywords can b
da00: 65 20 75 73 65 64 20 61 73 20 69 64 65 6e 74 69  e used as identi
da10: 66 69 65 72 73 20 69 6e 20 74 68 72 65 65 20 77  fiers in three w
da20: 61 79 73 3a 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65  ays:</p>..<table
da30: 3e 0a 3c 74 72 3e 09 3c 74 64 20 77 69 64 74 68  >.<tr>.<td width
da40: 3d 31 32 25 3e 20 27 6b 65 79 77 6f 72 64 27 0a  =12%> 'keyword'.
da50: 09 3c 74 64 3e 49 6e 74 65 72 70 72 65 74 65 64  .<td>Interpreted
da60: 20 61 73 20 61 20 6c 69 74 65 72 61 6c 20 73 74   as a literal st
da70: 72 69 6e 67 20 69 66 20 69 74 20 6f 63 63 75 72  ring if it occur
da80: 73 20 69 6e 20 61 20 6c 65 67 61 6c 20 73 74 72  s in a legal str
da90: 69 6e 67 20 0a 09 63 6f 6e 74 65 78 74 2c 20 6f  ing ..context, o
daa0: 74 68 65 72 77 69 73 65 20 61 73 20 61 6e 20 69  therwise as an i
dab0: 64 65 6e 74 69 66 69 65 72 2e 0a 3c 74 72 3e 09  dentifier..<tr>.
dac0: 3c 74 64 3e 20 22 6b 65 79 77 6f 72 64 22 0a 09  <td> "keyword"..
dad0: 3c 74 64 3e 49 6e 74 65 72 70 72 65 74 65 64 20  <td>Interpreted 
dae0: 61 73 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72  as an identifier
daf0: 20 69 66 20 69 74 20 6d 61 74 63 68 65 73 20 61   if it matches a
db00: 20 6b 6e 6f 77 6e 20 69 64 65 6e 74 69 66 69 65   known identifie
db10: 72 20 0a 09 61 6e 64 20 6f 63 63 75 72 73 20 69  r ..and occurs i
db20: 6e 20 61 20 6c 65 67 61 6c 20 69 64 65 6e 74 69  n a legal identi
db30: 66 69 65 72 20 63 6f 6e 74 65 78 74 2c 20 6f 74  fier context, ot
db40: 68 65 72 77 69 73 65 20 61 73 20 61 20 73 74 72  herwise as a str
db50: 69 6e 67 2e 20 0a 3c 74 72 3e 09 3c 74 64 3e 20  ing. .<tr>.<td> 
db60: 5b 6b 65 79 77 6f 72 64 5d 0a 09 3c 74 64 3e 20  [keyword]..<td> 
db70: 41 6c 77 61 79 73 20 69 6e 74 65 72 70 72 65 74  Always interpret
db80: 65 64 20 61 73 20 61 6e 20 69 64 65 6e 74 69 66  ed as an identif
db90: 69 65 72 2e 20 28 54 68 69 73 20 6e 6f 74 61 74  ier. (This notat
dba0: 69 6f 6e 20 69 73 20 75 73 65 64 20 0a 09 62 79  ion is used ..by
dbb0: 20 4d 53 20 41 63 63 65 73 73 20 61 6e 64 20 53   MS Access and S
dbc0: 51 4c 20 53 65 72 76 65 72 2e 29 0a 3c 2f 74 61  QL Server.).</ta
dbd0: 62 6c 65 3e 0a 0a 3c 68 32 3e 46 61 6c 6c 62 61  ble>..<h2>Fallba
dbe0: 63 6b 20 4b 65 79 77 6f 72 64 73 3c 2f 68 32 3e  ck Keywords</h2>
dbf0: 0a 0a 3c 70 3e 54 68 65 73 65 20 6b 65 79 77 6f  ..<p>These keywo
dc00: 72 64 73 20 63 61 6e 20 62 65 20 75 73 65 64 20  rds can be used 
dc10: 61 73 20 69 64 65 6e 74 69 66 69 65 72 73 20 66  as identifiers f
dc20: 6f 72 20 53 51 4c 69 74 65 20 6f 62 6a 65 63 74  or SQLite object
dc30: 73 20 77 69 74 68 6f 75 74 20 0a 64 65 6c 69 6d  s without .delim
dc40: 69 74 65 72 73 2e 3c 2f 70 3e 0a 7d 0a 0a 70 72  iters.</p>.}..pr
dc50: 6f 63 20 6b 65 79 77 6f 72 64 5f 6c 69 73 74 20  oc keyword_list 
dc60: 7b 78 7d 20 7b 0a 20 20 70 75 74 73 20 22 3c 70  {x} {.  puts "<p
dc70: 3e 22 0a 20 20 66 6f 72 65 61 63 68 20 6b 20 24  >".  foreach k $
dc80: 78 20 7b 0a 20 20 20 20 69 66 20 7b 5b 73 74 72  x {.    if {[str
dc90: 69 6e 67 20 69 6e 64 65 78 20 24 6b 20 30 5d 3d  ing index $k 0]=
dca0: 3d 22 2a 22 7d 20 7b 0a 20 20 20 20 20 20 73 65  ="*"} {.      se
dcb0: 74 20 6e 6f 6e 73 74 61 6e 64 61 72 64 20 31 0a  t nonstandard 1.
dcc0: 20 20 20 20 20 20 73 65 74 20 6b 20 5b 73 74 72        set k [str
dcd0: 69 6e 67 20 72 61 6e 67 65 20 24 6b 20 31 20 65  ing range $k 1 e
dce0: 6e 64 5d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b  nd].    } else {
dcf0: 0a 20 20 20 20 20 20 73 65 74 20 6e 6f 6e 73 74  .      set nonst
dd00: 61 6e 64 61 72 64 20 30 0a 20 20 20 20 7d 0a 20  andard 0.    }. 
dd10: 20 20 20 69 66 20 7b 24 6e 6f 6e 73 74 61 6e 64     if {$nonstand
dd20: 61 72 64 7d 20 7b 0a 20 20 20 20 20 20 70 75 74  ard} {.      put
dd30: 73 20 22 3c 69 3e 24 6b 3c 2f 69 3e 20 26 6e 62  s "<i>$k</i> &nb
dd40: 73 70 3b 26 6e 62 73 70 3b 22 0a 20 20 20 20 7d  sp;&nbsp;".    }
dd50: 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 70 75   else {.      pu
dd60: 74 73 20 22 24 6b 20 26 6e 62 73 70 3b 26 6e 62  ts "$k &nbsp;&nb
dd70: 73 70 3b 22 0a 20 20 20 20 7d 0a 20 20 7d 0a 20  sp;".    }.  }. 
dd80: 20 70 75 74 73 20 22 3c 2f 70 3e 5c 6e 22 0a 7d   puts "</p>\n".}
dd90: 0a 0a 6b 65 79 77 6f 72 64 5f 6c 69 73 74 20 7b  ..keyword_list {
dda0: 0a 20 20 2a 41 42 4f 52 54 0a 20 20 41 46 54 45  .  *ABORT.  AFTE
ddb0: 52 0a 20 20 41 53 43 0a 20 20 2a 41 54 54 41 43  R.  ASC.  *ATTAC
ddc0: 48 0a 20 20 42 45 46 4f 52 45 0a 20 20 42 45 47  H.  BEFORE.  BEG
ddd0: 49 4e 0a 20 20 44 45 46 45 52 52 45 44 0a 20 20  IN.  DEFERRED.  
dde0: 43 41 53 43 41 44 45 20 0a 20 20 2a 43 4c 55 53  CASCADE .  *CLUS
ddf0: 54 45 52 20 0a 20 20 2a 43 4f 4e 46 4c 49 43 54  TER .  *CONFLICT
de00: 0a 20 20 2a 43 4f 50 59 0a 20 20 43 52 4f 53 53  .  *COPY.  CROSS
de10: 0a 20 20 2a 44 41 54 41 42 41 53 45 0a 20 20 2a  .  *DATABASE.  *
de20: 44 45 4c 49 4d 49 54 45 52 53 0a 20 20 44 45 53  DELIMITERS.  DES
de30: 43 0a 20 20 2a 44 45 54 41 43 48 0a 20 20 45 41  C.  *DETACH.  EA
de40: 43 48 0a 20 20 45 4e 44 0a 20 20 2a 45 58 50 4c  CH.  END.  *EXPL
de50: 41 49 4e 0a 20 20 2a 46 41 49 4c 0a 20 20 46 4f  AIN.  *FAIL.  FO
de60: 52 0a 20 20 46 55 4c 4c 0a 20 20 49 47 4e 4f 52  R.  FULL.  IGNOR
de70: 45 0a 20 20 49 4d 4d 45 44 49 41 54 45 0a 20 20  E.  IMMEDIATE.  
de80: 49 4e 49 54 49 41 4c 4c 59 0a 20 20 49 4e 4e 45  INITIALLY.  INNE
de90: 52 0a 20 20 2a 49 4e 53 54 45 41 44 0a 20 20 4b  R.  *INSTEAD.  K
dea0: 45 59 0a 20 20 4c 45 46 54 0a 20 20 4d 41 54 43  EY.  LEFT.  MATC
deb0: 48 20 0a 20 20 4e 41 54 55 52 41 4c 0a 20 20 4f  H .  NATURAL.  O
dec0: 46 0a 20 20 2a 4f 46 46 53 45 54 0a 20 20 4f 55  F.  *OFFSET.  OU
ded0: 54 45 52 0a 20 20 2a 50 52 41 47 4d 41 0a 20 20  TER.  *PRAGMA.  
dee0: 2a 52 41 49 53 45 0a 20 20 2a 52 45 50 4c 41 43  *RAISE.  *REPLAC
def0: 45 0a 20 20 52 45 53 54 52 49 43 54 0a 20 20 52  E.  RESTRICT.  R
df00: 49 47 48 54 0a 20 20 2a 52 4f 57 0a 20 20 2a 53  IGHT.  *ROW.  *S
df10: 54 41 54 45 4d 45 4e 54 0a 20 20 2a 54 45 4d 50  TATEMENT.  *TEMP
df20: 0a 20 20 54 45 4d 50 4f 52 41 52 59 0a 20 20 54  .  TEMPORARY.  T
df30: 52 49 47 47 45 52 20 0a 20 20 2a 56 41 43 55 55  RIGGER .  *VACUU
df40: 4d 0a 20 20 56 49 45 57 0a 7d 0a 70 75 74 73 20  M.  VIEW.}.puts 
df50: 7b 0a 0a 3c 68 32 3e 4e 6f 72 6d 61 6c 20 6b 65  {..<h2>Normal ke
df60: 79 77 6f 72 64 73 3c 2f 68 32 3e 0a 0a 3c 70 3e  ywords</h2>..<p>
df70: 54 68 65 73 65 20 6b 65 79 77 6f 72 64 73 20 63  These keywords c
df80: 61 6e 20 62 65 20 75 73 65 64 20 61 73 20 69 64  an be used as id
df90: 65 6e 74 69 66 69 65 72 73 20 66 6f 72 20 53 51  entifiers for SQ
dfa0: 4c 69 74 65 20 6f 62 6a 65 63 74 73 2c 20 62 75  Lite objects, bu
dfb0: 74 20 0a 6d 75 73 74 20 62 65 20 65 6e 63 6c 6f  t .must be enclo
dfc0: 73 65 64 20 69 6e 20 62 72 61 63 6b 65 74 73 20  sed in brackets 
dfd0: 6f 72 20 71 75 6f 74 65 73 20 66 6f 72 20 53 51  or quotes for SQ
dfe0: 4c 69 74 65 20 74 6f 20 72 65 63 6f 67 6e 69 7a  Lite to recogniz
dff0: 65 20 74 68 65 6d 20 61 73 20 0a 61 6e 20 69 64  e them as .an id
e000: 65 6e 74 69 66 69 65 72 2e 3c 2f 70 3e 0a 7d 0a  entifier.</p>.}.
e010: 0a 6b 65 79 77 6f 72 64 5f 6c 69 73 74 20 7b 0a  .keyword_list {.
e020: 20 20 41 4c 4c 0a 20 20 41 4e 44 0a 20 20 41 53    ALL.  AND.  AS
e030: 0a 20 20 42 45 54 57 45 45 4e 0a 20 20 42 59 0a  .  BETWEEN.  BY.
e040: 20 20 43 41 53 45 0a 20 20 43 48 45 43 4b 0a 20    CASE.  CHECK. 
e050: 20 43 4f 4c 4c 41 54 45 0a 20 20 43 4f 4d 4d 49   COLLATE.  COMMI
e060: 54 0a 20 20 43 4f 4e 53 54 52 41 49 4e 54 0a 20  T.  CONSTRAINT. 
e070: 20 43 52 45 41 54 45 20 0a 20 20 44 45 46 41 55   CREATE .  DEFAU
e080: 4c 54 0a 20 20 44 45 46 45 52 52 41 42 4c 45 0a  LT.  DEFERRABLE.
e090: 20 20 44 45 4c 45 54 45 0a 20 20 44 49 53 54 49    DELETE.  DISTI
e0a0: 4e 43 54 0a 20 20 44 52 4f 50 0a 20 20 45 4c 53  NCT.  DROP.  ELS
e0b0: 45 0a 20 20 45 58 43 45 50 54 0a 20 20 46 4f 52  E.  EXCEPT.  FOR
e0c0: 45 49 47 4e 0a 20 20 46 52 4f 4d 20 0a 20 20 2a  EIGN.  FROM .  *
e0d0: 47 4c 4f 42 0a 20 20 47 52 4f 55 50 0a 20 20 48  GLOB.  GROUP.  H
e0e0: 41 56 49 4e 47 0a 20 20 49 4e 0a 20 20 2a 49 4e  AVING.  IN.  *IN
e0f0: 44 45 58 0a 20 20 49 4e 53 45 52 54 0a 20 20 49  DEX.  INSERT.  I
e100: 4e 54 45 52 53 45 43 54 0a 20 20 49 4e 54 4f 0a  NTERSECT.  INTO.
e110: 20 20 49 53 20 0a 20 20 2a 49 53 4e 55 4c 4c 0a    IS .  *ISNULL.
e120: 20 20 4a 4f 49 4e 0a 20 20 4c 49 4b 45 0a 20 20    JOIN.  LIKE.  
e130: 4c 49 4d 49 54 0a 20 20 4e 4f 54 0a 20 20 2a 4e  LIMIT.  NOT.  *N
e140: 4f 54 4e 55 4c 4c 0a 20 20 4e 55 4c 4c 0a 20 20  OTNULL.  NULL.  
e150: 4f 4e 0a 20 20 4f 52 0a 20 20 4f 52 44 45 52 20  ON.  OR.  ORDER 
e160: 0a 20 20 50 52 49 4d 41 52 59 0a 20 20 52 45 46  .  PRIMARY.  REF
e170: 45 52 45 4e 43 45 53 0a 20 20 52 4f 4c 4c 42 41  ERENCES.  ROLLBA
e180: 43 4b 0a 20 20 53 45 4c 45 43 54 0a 20 20 53 45  CK.  SELECT.  SE
e190: 54 0a 20 20 54 41 42 4c 45 0a 20 20 54 48 45 4e  T.  TABLE.  THEN
e1a0: 0a 20 20 54 52 41 4e 53 41 43 54 49 4f 4e 0a 20  .  TRANSACTION. 
e1b0: 20 55 4e 49 4f 4e 20 0a 20 20 55 4e 49 51 55 45   UNION .  UNIQUE
e1c0: 0a 20 20 55 50 44 41 54 45 0a 20 20 55 53 49 4e  .  UPDATE.  USIN
e1d0: 47 0a 20 20 56 41 4c 55 45 53 0a 20 20 57 48 45  G.  VALUES.  WHE
e1e0: 4e 0a 20 20 57 48 45 52 45 0a 7d 0a 0a 70 75 74  N.  WHERE.}..put
e1f0: 73 20 7b 0a 3c 68 32 3e 53 70 65 63 69 61 6c 20  s {.<h2>Special 
e200: 77 6f 72 64 73 3c 2f 68 32 3e 0a 0a 3c 70 3e 54  words</h2>..<p>T
e210: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 72 65  he following are
e220: 20 6e 6f 74 20 6b 65 79 77 6f 72 64 73 20 69 6e   not keywords in
e230: 20 53 51 4c 69 74 65 2c 20 62 75 74 20 61 72 65   SQLite, but are
e240: 20 75 73 65 64 20 61 73 20 6e 61 6d 65 73 20 6f   used as names o
e250: 66 20 0a 73 79 73 74 65 6d 20 6f 62 6a 65 63 74  f .system object
e260: 73 2e 20 20 54 68 65 79 20 63 61 6e 20 62 65 20  s.  They can be 
e270: 75 73 65 64 20 61 73 20 61 6e 20 69 64 65 6e 74  used as an ident
e280: 69 66 69 65 72 20 66 6f 72 20 61 20 64 69 66 66  ifier for a diff
e290: 65 72 65 6e 74 20 0a 74 79 70 65 20 6f 66 20 6f  erent .type of o
e2a0: 62 6a 65 63 74 2e 3c 2f 70 3e 0a 7d 0a 0a 6b 65  bject.</p>.}..ke
e2b0: 79 77 6f 72 64 5f 6c 69 73 74 20 7b 0a 20 20 2a  yword_list {.  *
e2c0: 5f 52 4f 57 49 44 5f 0a 20 20 2a 4d 41 49 4e 0a  _ROWID_.  *MAIN.
e2d0: 20 20 4f 49 44 0a 20 20 2a 52 4f 57 49 44 0a 20    OID.  *ROWID. 
e2e0: 20 2a 53 51 4c 49 54 45 5f 4d 41 53 54 45 52 0a   *SQLITE_MASTER.
e2f0: 20 20 2a 53 51 4c 49 54 45 5f 54 45 4d 50 5f 4d    *SQLITE_TEMP_M
e300: 41 53 54 45 52 0a 7d 0a 0a 66 6f 6f 74 65 72 20  ASTER.}..footer 
e310: 24 72 63 73 69 64 0a                             $rcsid.