Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Recursive syntax diagram display. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
87e7eb3d0d2ca98727a304db8190ed7e |
User & Date: | drh 2014-01-23 15:25:02.511 |
Context
2014-01-23
| ||
15:29 | Fix a link in the with-clause syntax diagram. (check-in: 3598251c1c user: drh tags: trunk) | |
15:25 | Recursive syntax diagram display. (check-in: 87e7eb3d0d user: drh tags: trunk) | |
2014-01-17
| ||
23:50 | Update the syntax bubble diagrams to show that the WITH clause is allowed. (check-in: 3f48c6857f user: drh tags: trunk) | |
Changes
Changes to art/syntax/bubble-generator-data.tcl.
︙ | ︙ | |||
79 80 81 82 83 84 85 | line RELEASE {optx SAVEPOINT} /savepoint-name } create-index-stmt { stack {line CREATE {opt UNIQUE} INDEX {opt IF NOT EXISTS}} {line {optx /database-name .} /index-name ON /table-name ( {loop indexed-column ,} )} | | | 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | line RELEASE {optx SAVEPOINT} /savepoint-name } create-index-stmt { stack {line CREATE {opt UNIQUE} INDEX {opt IF NOT EXISTS}} {line {optx /database-name .} /index-name ON /table-name ( {loop indexed-column ,} )} {line {optx WHERE expr}} } indexed-column { line /column-name {opt COLLATE /collation-name} {or nil ASC DESC} } create-table-stmt { stack {line CREATE {or {} TEMP TEMPORARY} TABLE {opt IF NOT EXISTS}} |
︙ | ︙ | |||
218 219 220 221 222 223 224 | delete-stmt-limited { stack {line {opt with-clause} DELETE FROM qualified-table-name} {optx WHERE expr} {optx {stack {optx ORDER BY {loop ordering-term ,}} | | | 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 | delete-stmt-limited { stack {line {opt with-clause} DELETE FROM qualified-table-name} {optx WHERE expr} {optx {stack {optx ORDER BY {loop ordering-term ,}} {line LIMIT expr {optx {or OFFSET ,} expr}} } } } detach-stmt { line DETACH {optx DATABASE} /database-name } drop-index-stmt { |
︙ | ︙ | |||
337 338 339 340 341 342 343 | } } select-stmt { stack {line {opt with-clause} {loop simple-query-stmt {nil compound-operator nil}}} {optx ORDER BY {loop ordering-term ,}} | | | 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 | } } select-stmt { stack {line {opt with-clause} {loop simple-query-stmt {nil compound-operator nil}}} {optx ORDER BY {loop ordering-term ,}} {optx LIMIT expr {optx {or OFFSET ,} expr}} } simple-query-stmt { stack {line SELECT {or nil DISTINCT ALL} {loop result-column ,}} {optx FROM join-source} {optx WHERE expr} {optx GROUP BY {loop expr ,} {optx HAVING expr}} |
︙ | ︙ | |||
414 415 416 417 418 419 420 | {line OR FAIL} {line OR IGNORE}} qualified-table-name} {line SET {loop {line /column-name = expr} ,} {optx WHERE expr}} {optx {stack {optx ORDER BY {loop ordering-term ,}} | | | 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 | {line OR FAIL} {line OR IGNORE}} qualified-table-name} {line SET {loop {line /column-name = expr} ,} {optx WHERE expr}} {optx {stack {optx ORDER BY {loop ordering-term ,}} {line LIMIT expr {optx {or OFFSET ,} expr}} } } } qualified-table-name { line {optx /database-name .} /table-name {or nil {line INDEXED BY /index-name} {line NOT INDEXED}} } |
︙ | ︙ |
Changes to art/syntax/create-index-stmt.gif.
cannot compute difference between binary files
Changes to art/syntax/delete-stmt-limited.gif.
cannot compute difference between binary files
Changes to art/syntax/select-stmt.gif.
cannot compute difference between binary files
Changes to art/syntax/syntax_linkage.tcl.
1 2 3 4 5 6 7 8 9 10 | set syntax_linkage(alter-table-stmt) {column-def sql-stmt} set syntax_linkage(analyze-stmt) {{} sql-stmt} set syntax_linkage(attach-stmt) {expr sql-stmt} set syntax_linkage(begin-stmt) {{} sql-stmt} set syntax_linkage(column-constraint) {{conflict-clause expr foreign-key-clause literal-value signed-number} column-def} set syntax_linkage(column-def) {{column-constraint type-name} {alter-table-stmt create-table-stmt}} set syntax_linkage(comment-syntax) {{} {}} set syntax_linkage(commit-stmt) {{} sql-stmt} set syntax_linkage(compound-operator) {{} select-stmt} set syntax_linkage(conflict-clause) {{} {column-constraint table-constraint}} | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | set syntax_linkage(alter-table-stmt) {column-def sql-stmt} set syntax_linkage(analyze-stmt) {{} sql-stmt} set syntax_linkage(attach-stmt) {expr sql-stmt} set syntax_linkage(begin-stmt) {{} sql-stmt} set syntax_linkage(column-constraint) {{conflict-clause expr foreign-key-clause literal-value signed-number} column-def} set syntax_linkage(column-def) {{column-constraint type-name} {alter-table-stmt create-table-stmt}} set syntax_linkage(comment-syntax) {{} {}} set syntax_linkage(commit-stmt) {{} sql-stmt} set syntax_linkage(compound-operator) {{} select-stmt} set syntax_linkage(conflict-clause) {{} {column-constraint table-constraint}} set syntax_linkage(create-index-stmt) {{expr indexed-column} sql-stmt} set syntax_linkage(create-table-stmt) {{column-def select-stmt table-constraint} sql-stmt} set syntax_linkage(create-trigger-stmt) {{delete-stmt expr insert-stmt select-stmt update-stmt} sql-stmt} set syntax_linkage(create-view-stmt) {select-stmt sql-stmt} set syntax_linkage(create-virtual-table-stmt) {{} sql-stmt} set syntax_linkage(delete-stmt) {{expr qualified-table-name with-clause} {create-trigger-stmt sql-stmt}} set syntax_linkage(delete-stmt-limited) {{expr ordering-term qualified-table-name with-clause} sql-stmt} set syntax_linkage(detach-stmt) {{} sql-stmt} set syntax_linkage(drop-index-stmt) {{} sql-stmt} set syntax_linkage(drop-table-stmt) {{} sql-stmt} set syntax_linkage(drop-trigger-stmt) {{} sql-stmt} set syntax_linkage(drop-view-stmt) {{} sql-stmt} set syntax_linkage(expr) {{literal-value raise-function select-stmt type-name} {attach-stmt column-constraint create-index-stmt create-trigger-stmt delete-stmt delete-stmt-limited insert-stmt join-constraint ordering-term result-column select-stmt simple-query-stmt table-constraint update-stmt update-stmt-limited}} set syntax_linkage(foreign-key-clause) {{} {column-constraint table-constraint}} set syntax_linkage(indexed-column) {{} {create-index-stmt table-constraint}} set syntax_linkage(insert-stmt) {{expr select-stmt with-clause} {create-trigger-stmt sql-stmt}} set syntax_linkage(join-constraint) {expr join-source} set syntax_linkage(join-op) {{} join-source} set syntax_linkage(join-source) {{join-constraint join-op simple-join-source} {simple-join-source simple-query-stmt}} set syntax_linkage(literal-value) {{} {column-constraint expr}} set syntax_linkage(numeric-literal) {{} {}} set syntax_linkage(ordering-term) {expr {delete-stmt-limited select-stmt update-stmt-limited}} set syntax_linkage(pragma-stmt) {pragma-value sql-stmt} set syntax_linkage(pragma-value) {signed-number pragma-stmt} set syntax_linkage(qualified-table-name) {{} {delete-stmt delete-stmt-limited update-stmt update-stmt-limited}} set syntax_linkage(raise-function) {{} expr} set syntax_linkage(reindex-stmt) {{} sql-stmt} set syntax_linkage(release-stmt) {{} sql-stmt} set syntax_linkage(result-column) {expr simple-query-stmt} set syntax_linkage(rollback-stmt) {{} sql-stmt} set syntax_linkage(savepoint-stmt) {{} sql-stmt} set syntax_linkage(select-stmt) {{compound-operator expr ordering-term simple-query-stmt with-clause} {create-table-stmt create-trigger-stmt create-view-stmt expr insert-stmt simple-join-source sql-stmt}} set syntax_linkage(signed-number) {{} {column-constraint pragma-value type-name}} set syntax_linkage(simple-join-source) {{join-source select-stmt} join-source} set syntax_linkage(simple-query-stmt) {{expr join-source result-column} select-stmt} set syntax_linkage(sql-stmt) {{alter-table-stmt analyze-stmt attach-stmt begin-stmt commit-stmt create-index-stmt create-table-stmt create-trigger-stmt create-view-stmt create-virtual-table-stmt delete-stmt delete-stmt-limited detach-stmt drop-index-stmt drop-table-stmt drop-trigger-stmt drop-view-stmt insert-stmt pragma-stmt reindex-stmt release-stmt rollback-stmt savepoint-stmt select-stmt update-stmt update-stmt-limited vacuum-stmt} sql-stmt-list} set syntax_linkage(sql-stmt-list) {sql-stmt {}} set syntax_linkage(table-constraint) {{conflict-clause expr foreign-key-clause indexed-column} create-table-stmt} set syntax_linkage(type-name) {signed-number {column-def expr}} set syntax_linkage(update-stmt) {{expr qualified-table-name with-clause} {create-trigger-stmt sql-stmt}} set syntax_linkage(update-stmt-limited) {{expr ordering-term qualified-table-name with-clause} sql-stmt} set syntax_linkage(vacuum-stmt) {{} sql-stmt} set syntax_linkage(with-clause) {{} {delete-stmt delete-stmt-limited insert-stmt select-stmt update-stmt update-stmt-limited}} set syntax_order {sql-stmt-list sql-stmt alter-table-stmt analyze-stmt attach-stmt begin-stmt commit-stmt rollback-stmt savepoint-stmt release-stmt create-index-stmt indexed-column create-table-stmt column-def type-name column-constraint signed-number table-constraint foreign-key-clause conflict-clause create-trigger-stmt create-view-stmt create-virtual-table-stmt with-clause delete-stmt delete-stmt-limited detach-stmt drop-index-stmt drop-table-stmt drop-trigger-stmt drop-view-stmt expr raise-function literal-value numeric-literal insert-stmt pragma-stmt pragma-value reindex-stmt select-stmt simple-query-stmt result-column join-source simple-join-source join-op join-constraint ordering-term compound-operator update-stmt update-stmt-limited qualified-table-name vacuum-stmt comment-syntax} |
Changes to art/syntax/update-stmt-limited.gif.
cannot compute difference between binary files
Changes to pages/lang.in.
︙ | ︙ | |||
116 117 118 119 120 121 122 | hd_puts {<p><a href="lang.html">[Top]</a></p>} hd_puts "<h2>$name</h2>" } ############################################################################### Section {ALTER TABLE} altertable {{ALTER TABLE} {*ALTER}} | | | < | 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | hd_puts {<p><a href="lang.html">[Top]</a></p>} hd_puts "<h2>$name</h2>" } ############################################################################### Section {ALTER TABLE} altertable {{ALTER TABLE} {*ALTER}} RecursiveBubbleDiagram alter-table-stmt </tcl> <p>SQLite supports a limited subset of ALTER TABLE. The ALTER TABLE command in SQLite allows the user to rename a table or to add a new column to an existing table. </p> <p> ^(The RENAME TO syntax is used to rename the table identified by <i>[database-name.]table-name</i> to <i>new-table-name</i>.)^ This command cannot be used to move a table between attached databases, only to rename a table within the same database.</p> |
︙ | ︙ | |||
181 182 183 184 185 186 187 | <p>After ADD COLUMN has been run on a database, that database will not be readable by SQLite version 3.1.3 and earlier.</p> <tcl> ############################################################################## Section {ANALYZE} analyze ANALYZE | | | 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 | <p>After ADD COLUMN has been run on a database, that database will not be readable by SQLite version 3.1.3 and earlier.</p> <tcl> ############################################################################## Section {ANALYZE} analyze ANALYZE RecursiveBubbleDiagram analyze-stmt </tcl> <p> ^The ANALYZE command gathers statistics about tables and indices and stores the collected information in [internal tables] of the database where the query optimizer can access the information and use it to help make better query planning choices. ^If no arguments are given, all attached databases are |
︙ | ︙ | |||
243 244 245 246 247 248 249 | <p> <tcl> ############################################################################## Section {ATTACH DATABASE} attach *ATTACH | | | 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 | <p> <tcl> ############################################################################## Section {ATTACH DATABASE} attach *ATTACH RecursiveBubbleDiagram attach-stmt </tcl> <p> ^The ATTACH DATABASE statement adds another database file to the current [database connection]. ^The filename for the database to be attached is the value of the expression that occurs before the AS keyword. ^The filename of the database follows the same semantics as the |
︙ | ︙ | |||
294 295 296 297 298 299 300 | [SQLITE_LIMIT_ATTACHED], to the number of databases that can be simultaneously attached to a single database connection.</p> <tcl> ############################################################################### Section {BEGIN TRANSACTION} transaction {*BEGIN COMMIT ROLLBACK} | | < < | 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 | [SQLITE_LIMIT_ATTACHED], to the number of databases that can be simultaneously attached to a single database connection.</p> <tcl> ############################################################################### Section {BEGIN TRANSACTION} transaction {*BEGIN COMMIT ROLLBACK} RecursiveBubbleDiagram begin-stmt commit-stmt rollback-stmt </tcl> <p> ^No changes can be made to the database except within a transaction. ^Any command that changes the database (basically, any SQL command other than [SELECT]) will automatically start a transaction if one is not already in effect. ^Automatically started transactions |
︙ | ︙ | |||
441 442 443 444 445 446 447 | choose to simplify the interface in future versions of SQLite by causing the errors above to force an unconditional rollback.</p> <tcl> ############################################################################### Section {SAVEPOINT} savepoint {SAVEPOINT RELEASE} | | < < | 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 | choose to simplify the interface in future versions of SQLite by causing the errors above to force an unconditional rollback.</p> <tcl> ############################################################################### Section {SAVEPOINT} savepoint {SAVEPOINT RELEASE} RecursiveBubbleDiagram savepoint-stmt release-stmt rollback-stmt </tcl> <p> ^SAVEPOINTs are a method of creating transactions, similar to [BEGIN] and [COMMIT], except that the SAVEPOINT and RELEASE commands are named and may be nested.</p> <p> ^The SAVEPOINT command starts a new transaction with a name. |
︙ | ︙ | |||
556 557 558 559 560 561 562 | match any SAVEPOINT on the stack, then the ROLLBACK command fails with an error and leaves the state of the database unchanged.</p> <tcl> ############################################################################### Section comment comment {comment *comments} | | | 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 | match any SAVEPOINT on the stack, then the ROLLBACK command fails with an error and leaves the state of the database unchanged.</p> <tcl> ############################################################################### Section comment comment {comment *comments} RecursiveBubbleDiagram comment-syntax </tcl> <p>^Comments are not SQL commands, but can occur within the text of SQL queries passed to [sqlite3_prepare_v2()] and related interfaces. ^Comments are treated as whitespace by the parser. ^Comments can begin anywhere whitespace can be found, including inside expressions that span multiple lines. |
︙ | ︙ | |||
585 586 587 588 589 590 591 | </p> <tcl> ############################################################################## Section {CREATE INDEX} createindex {{CREATE INDEX}} | | < | 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 | </p> <tcl> ############################################################################## Section {CREATE INDEX} createindex {{CREATE INDEX}} RecursiveBubbleDiagram create-index-stmt </tcl> <p>^The CREATE INDEX command consists of the keywords "CREATE INDEX" followed by the name of the new index, the keyword "ON", the name of a previously created table that is to be indexed, and a parenthesized list of names of columns in the table that are used for the index key. If the optional WHERE clause is included, then the index is a "[partial index]". |
︙ | ︙ | |||
641 642 643 644 645 646 647 | <p>^Indexes are removed with the [DROP INDEX] command.</p> <tcl> ############################################################################## Section {CREATE TABLE} {createtable} {{CREATE TABLE}} | | < < < < < | 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 | <p>^Indexes are removed with the [DROP INDEX] command.</p> <tcl> ############################################################################## Section {CREATE TABLE} {createtable} {{CREATE TABLE}} RecursiveBubbleDiagram create-table-stmt </tcl> <p>The "CREATE TABLE" command is used to create a new table in an SQLite database. A CREATE TABLE command specifies the following attributes of the new table: <ul> |
︙ | ︙ | |||
964 965 966 967 968 969 970 | <p>^(The [parent key] of a [foreign key constraint] is not allowed to use the rowid. The parent key must used named columns only.)^</p> <tcl> ############################################################################## Section {CREATE TRIGGER} createtrigger {{CREATE TRIGGER}} | | | 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 | <p>^(The [parent key] of a [foreign key constraint] is not allowed to use the rowid. The parent key must used named columns only.)^</p> <tcl> ############################################################################## Section {CREATE TRIGGER} createtrigger {{CREATE TRIGGER}} RecursiveBubbleDiagram create-trigger-stmt </tcl> <p>^The CREATE TRIGGER statement is used to add triggers to the database schema. ^Triggers are database operations that are automatically performed when a specified database event occurs. </p> |
︙ | ︙ | |||
1176 1177 1178 1179 1180 1181 1182 | in the TEMP trigger being reattached to a table with the same name in another database whenever any schema change occurs.</p> <tcl> ############################################################################### Section {CREATE VIEW} {createview} {{CREATE VIEW} view *views} | | | 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 | in the TEMP trigger being reattached to a table with the same name in another database whenever any schema change occurs.</p> <tcl> ############################################################################### Section {CREATE VIEW} {createview} {{CREATE VIEW} view *views} RecursiveBubbleDiagram create-view-stmt </tcl> <p>^The CREATE VIEW command assigns a name to a pre-packaged [SELECT] statement. ^Once the view is created, it can be used in the FROM clause of another [SELECT] in place of a table name. </p> |
︙ | ︙ | |||
1206 1207 1208 1209 1210 1211 1212 | the same thing. ^Views are removed with the [DROP VIEW] command.</p> <tcl> ############################################################################## Section {CREATE VIRTUAL TABLE} {createvtab} {{CREATE VIRTUAL TABLE}} | | | 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 | the same thing. ^Views are removed with the [DROP VIEW] command.</p> <tcl> ############################################################################## Section {CREATE VIRTUAL TABLE} {createvtab} {{CREATE VIRTUAL TABLE}} RecursiveBubbleDiagram create-virtual-table-stmt </tcl> <p>A [virtual table] is an interface to an external storage or computation engine that appears to be a table but does not actually store information in the database file.</p> <p>In general, you can do anything with a [virtual table] that can be done |
︙ | ︙ | |||
1241 1242 1243 1244 1245 1246 1247 | [DROP TABLE] statement. There is no DROP VIRTUAL TABLE statement.</p> <tcl> ############################################################################## Section DELETE delete {DELETE *DELETEs} | | < | 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 | [DROP TABLE] statement. There is no DROP VIRTUAL TABLE statement.</p> <tcl> ############################################################################## Section DELETE delete {DELETE *DELETEs} RecursiveBubbleDiagram delete-stmt </tcl> <p>The DELETE command removes records from the table identified by the <i>qualified-table-name</i>. <p>^If the WHERE clause is not present, all records in the table are deleted. ^If a WHERE clause is supplied, then only those rows for which the |
︙ | ︙ | |||
1343 1344 1345 1346 1347 1348 1349 | the DELETE operation will proceed but the truncate optimization will be bypassed and rows will be deleted one by one.</p> <tcl> ############################################################################### Section {DETACH DATABASE} detach *DETACH | | | | | 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 | the DELETE operation will proceed but the truncate optimization will be bypassed and rows will be deleted one by one.</p> <tcl> ############################################################################### Section {DETACH DATABASE} detach *DETACH RecursiveBubbleDiagram detach-stmt </tcl> <p>^This statement detaches an additional database connection previously attached using the [ATTACH] statement. ^When not in [shared cache mode], it is possible to have the same database file attached multiple times using different names, and detaching one connection to a file will leave the others intact.</p> ^In [shared cache mode], attempting to attach the same database file more than once results in an error. <p>^This statement will fail if SQLite is in the middle of a transaction.</p> <tcl> ############################################################################## Section {DROP INDEX} dropindex {{DROP INDEX}} RecursiveBubbleDiagram drop-index-stmt </tcl> <p>^The DROP INDEX statement removes an index added with the [CREATE INDEX] statement. The index is completely removed from the disk. The only way to recover the index is to reenter the appropriate [CREATE INDEX] command.</p> <tcl> ############################################################################## Section {DROP TABLE} droptable {{DROP TABLE}} RecursiveBubbleDiagram drop-table-stmt </tcl> <p>^The DROP TABLE statement removes a table added with the [CREATE TABLE] statement. The name specified is the table name. ^The dropped table is completely removed from the database schema and the disk file. The table can not be recovered. ^All indices and triggers |
︙ | ︙ | |||
1406 1407 1408 1409 1410 1411 1412 | exist when the transaction is committed, an error is returned at the time of commit. <tcl> ############################################################################## Section {DROP TRIGGER} droptrigger {{DROP TRIGGER}} | | | | 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 | exist when the transaction is committed, an error is returned at the time of commit. <tcl> ############################################################################## Section {DROP TRIGGER} droptrigger {{DROP TRIGGER}} RecursiveBubbleDiagram drop-trigger-stmt </tcl> <p>^The DROP TRIGGER statement removes a trigger created by the [CREATE TRIGGER] statement. ^Once removed, the trigger definition is no longer present in the sqlite_master (or sqlite_temp_master) table and is not fired by any subsequent INSERT, UPDATE or DELETE statements. <p>^Note that triggers are automatically dropped when the associated table is dropped. <tcl> ############################################################################## Section {DROP VIEW} dropview {{DROP VIEW}} RecursiveBubbleDiagram drop-view-stmt </tcl> <p>^The DROP VIEW statement removes a view created by the [CREATE VIEW] statement. ^The view definition is removed from the database schema, but no actual data in the underlying base tables is modified. <p>^(The view to drop is identified by the view-name and optional |
︙ | ︙ | |||
1521 1522 1523 1524 1525 1526 1527 | The EXPLAIN QUERY PLAN command is described in [explain query plan|more detail here]. <tcl> ############################################################################## Section expression expr {*expression {expression syntax}} | | < < < | 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 | The EXPLAIN QUERY PLAN command is described in [explain query plan|more detail here]. <tcl> ############################################################################## Section expression expr {*expression {expression syntax}} RecursiveBubbleDiagram expr 1 </tcl> <p>This section is different from the others. Most other sections of this document talks about a particular SQL command. This section does not talk about a standalone command but about "expressions" which are subcomponents of most other commands.</p> |
︙ | ︙ | |||
2846 2847 2848 2849 2850 2851 2852 | </tcl> </table> <tcl> ############################################################################## Section INSERT insert {INSERT *INSERTs} | | | 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 | </tcl> </table> <tcl> ############################################################################## Section INSERT insert {INSERT *INSERTs} RecursiveBubbleDiagram insert-stmt </tcl> <p>The INSERT statement comes in three basic forms. <ul> <li><p>^The first form (with the "VALUES" keyword) creates one or more new rows in an existing table. ^If no column-list is specified then the number |
︙ | ︙ | |||
2905 2906 2907 2908 2909 2910 2911 | triggers. <p> <tcl> ############################################################################## Section {ON CONFLICT clause} conflict {{conflict clause} {ON CONFLICT}} | | | 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 | triggers. <p> <tcl> ############################################################################## Section {ON CONFLICT clause} conflict {{conflict clause} {ON CONFLICT}} RecursiveBubbleDiagram conflict-clause </tcl> <p>The ON CONFLICT clause is not a separate SQL command. It is a non-standard clause that can appear in many other SQL commands. It is given its own section in this document because it is not part of standard SQL and therefore might not be familiar.</p> |
︙ | ︙ | |||
3003 3004 3005 3006 3007 3008 3009 | overrides any algorithm specified in a CREATE TABLE. ^If no algorithm is specified anywhere, the ABORT algorithm is used.</p> <tcl> ############################################################################## Section REINDEX reindex REINDEX | | | 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 | overrides any algorithm specified in a CREATE TABLE. ^If no algorithm is specified anywhere, the ABORT algorithm is used.</p> <tcl> ############################################################################## Section REINDEX reindex REINDEX RecursiveBubbleDiagram reindex-stmt </tcl> <p>^The REINDEX command is used to delete and recreate indices from scratch. This is useful when the definition of a collation sequence has changed. </p> <p>^If the REINDEX keyword is not followed by a collation-sequence or database |
︙ | ︙ | |||
3042 3043 3044 3045 3046 3047 3048 | This alias is provided for compatibility other SQL database engines. See the [INSERT] command documentation for additional information.</p> <tcl> ############################################################################### Section SELECT select {SELECT query} | | < < < < < < < < | 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 | This alias is provided for compatibility other SQL database engines. See the [INSERT] command documentation for additional information.</p> <tcl> ############################################################################### Section SELECT select {SELECT query} RecursiveBubbleDiagram select-stmt simple-query-stmt </tcl> <p>The SELECT statement is used to query the database. The result of a SELECT is zero or more rows of data where each row has a fixed number of columns. |
︙ | ︙ | |||
3443 3444 3445 3446 3447 3448 3449 | the two expressions is the OFFSET and the first the LIMIT. This is intentional - it maximizes compatibility with other SQL database systems. <tcl> ############################################################################## Section UPDATE update {UPDATE *UPDATEs} | | < | 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 | the two expressions is the OFFSET and the first the LIMIT. This is intentional - it maximizes compatibility with other SQL database systems. <tcl> ############################################################################## Section UPDATE update {UPDATE *UPDATEs} RecursiveBubbleDiagram update-stmt </tcl> <p>^An UPDATE statement is used to modify a subset of the values stored in zero or more rows of the database table identified by the <i>qualified-table-name</i> specified as part of the UPDATE statement. <p>^If the UPDATE statement does not have a WHERE clause, all rows in the |
︙ | ︙ | |||
3531 3532 3533 3534 3535 3536 3537 | rows fall within the LIMIT. The order in which rows are modified is arbitrary and is not influenced by the ORDER BY clause.)^ <tcl> ############################################################################## Section VACUUM vacuum VACUUM | | | 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 | rows fall within the LIMIT. The order in which rows are modified is arbitrary and is not influenced by the ORDER BY clause.)^ <tcl> ############################################################################## Section VACUUM vacuum VACUUM RecursiveBubbleDiagram vacuum-stmt </tcl> <p> The VACUUM command rebuilds the entire database. There are several reasons an application might do this: <ul> |
︙ | ︙ |
Changes to pages/partialindex.in.
︙ | ︙ | |||
22 23 24 25 26 27 28 | <h2>2.0 Creating Partial Indexes</h2> <p> ^Create a partial index by adding a WHERE clause to the end of an ordinary [CREATE INDEX] statement. </p> | | | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <h2>2.0 Creating Partial Indexes</h2> <p> ^Create a partial index by adding a WHERE clause to the end of an ordinary [CREATE INDEX] statement. </p> <tcl>RecursiveBubbleDiagram create-index-stmt</tcl> <p> Any index that includes the WHERE clause at the end is considered to be a partial index. Indexes that omit the WHERE clause (or indexes that are created by UNIQUE or PRIMARY KEY constraints inside of CREATE TABLE statements) are ordinary full indexes. </p> |
︙ | ︙ |
Changes to pages/pragma.in.
︙ | ︙ | |||
87 88 89 90 91 92 93 | [sqlite3_file_control | file control] which gives [VFS] implementations the opportunity to add new PRAGMA statements or to override the meaning of built-in PRAGMA statements.</p> <tcl> Section {PRAGMA command syntax} syntax {PRAGMA} | | < | 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | [sqlite3_file_control | file control] which gives [VFS] implementations the opportunity to add new PRAGMA statements or to override the meaning of built-in PRAGMA statements.</p> <tcl> Section {PRAGMA command syntax} syntax {PRAGMA} RecursiveBubbleDiagram pragma-stmt pragma-value </tcl> <p> ^A pragma can take either zero or one argument. ^The argument is may be either in parentheses or it may be separated from the pragma name by an equal sign. ^The two syntaxes yield identical results. ^(In many pragmas, the argument is a boolean. The boolean can be one of: |
︙ | ︙ |
Changes to wrap.tcl.
︙ | ︙ | |||
355 356 357 358 359 360 361 362 363 364 365 366 367 368 | # characters from each line. It also does variable substitution in # the namespace of its calling procedure. # proc putsin4 {fd text} { regsub -all "\n " $text \n text puts $fd [uplevel 1 [list subst -noback -nocom $text]] } # A procedure to write the common header found on every HTML file on # the SQLite website. # ##################### # NOTE: This code is copied and reused in matrix.tcl. When making # changes to this implementation, be sure to also change matrix.tcl. | > > > > > > > > > | 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 | # characters from each line. It also does variable substitution in # the namespace of its calling procedure. # proc putsin4 {fd text} { regsub -all "\n " $text \n text puts $fd [uplevel 1 [list subst -noback -nocom $text]] } # Return a globally unique object id # set hd_id_counter 0 proc hd_id {} { global hd_id_counter incr hd_id_counter return x$hd_id_counter } # A procedure to write the common header found on every HTML file on # the SQLite website. # ##################### # NOTE: This code is copied and reused in matrix.tcl. When making # changes to this implementation, be sure to also change matrix.tcl. |
︙ | ︙ | |||
485 486 487 488 489 490 491 492 493 494 495 496 497 498 | var q = document.getElementById("q"); if( q.value == "" ) { q.value = gMsg q.style.color = "#044a64" q.style.fontStyle = "italic" } } </script>} } if {1} { putsin4 $fd {<td> <div style="padding:0 1em 0px 0;white-space:nowrap"> <form name=f method="GET" action="http://www.sqlite.org/search"> <input id=q name=q type=text | > > > > > > > > > > > > | 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 | var q = document.getElementById("q"); if( q.value == "" ) { q.value = gMsg q.style.color = "#044a64" q.style.fontStyle = "italic" } } function hideorshow(btn,obj){ var x = document.getElementById(obj); var b = document.getElementById(btn); if( x.style.display!='none' ){ x.style.display = 'none'; b.innerHTML='show'; }else{ x.style.display = ''; b.innerHTML='hide'; } return false; } </script>} } if {1} { putsin4 $fd {<td> <div style="padding:0 1em 0px 0;white-space:nowrap"> <form name=f method="GET" action="http://www.sqlite.org/search"> <input id=q name=q type=text |
︙ | ︙ | |||
522 523 524 525 526 527 528 | # proc BubbleDiagram {name {anonymous_flag 0}} { global hd #if {!$anonymous_flag} { # hd_resolve "<h4>\[$name:\]</h4>" #} | | | | | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 | # proc BubbleDiagram {name {anonymous_flag 0}} { global hd #if {!$anonymous_flag} { # hd_resolve "<h4>\[$name:\]</h4>" #} hd_resolve "<p><b>\[$name:\]</b></p>" set alt "alt=\"syntax diagram $name\"" if {$hd(enable-main)} { puts $hd(main) "<blockquote>\n\ <img $alt src=\"$hd(rootpath-main)images/syntax/$name.gif\"></img>\n\ </blockquote>" } if {$hd(enable-aux)} { puts $hd(aux) "<blockquote>\n\ <img $alt src=\"$hd(rootpath-aux)images/syntax/$name.gif\"></img>\n\ </blockquote>" } } proc HiddenBubbleDiagram {name} { global hd set alt "alt=\"syntax diagram $name\"" hd_resolve "<p><b>\[$name:\]</b> " if {$hd(enable-main)} { set a [hd_id] set b [hd_id] puts $hd(main) \ "<button id='$a' onclick='hideorshow(\"$a\",\"$b\")'>show</button>\ </p>\n\ <blockquote id='$b' style='display:none;'>\n\ <img $alt src=\"$hd(rootpath-main)images/syntax/$name.gif\"></img>\n\ </blockquote>" } if {$hd(enable-aux)} { set a [hd_id] set b [hd_id] puts $hd(aux) \ "<button id='$a' onclick='hideorshow(\"$a\",\"$b\")'>show</button>\ </p>\n\ <blockquote id='$b' style='display:none;'>\n\ <img $alt src=\"$hd(rootpath-aux)images/syntax/$name.gif\"></img>\n\ </blockquote>" } } proc RecursiveBubbleDiagram_helper {class name openflag exclude} { global hd syntax_linkage set alt "alt=\"syntax diagram $name\"" hd_resolve "<p><b>\[$name:\]</b>\n" set a [hd_id] set b [hd_id] if {$openflag} { puts $hd($class) \ "<button id='$a' onclick='hideorshow(\"$a\",\"$b\")'>hide</button></p>\n\ <blockquote id='$b'>\n\ <img $alt src=\"$hd(rootpath-$class)images/syntax/$name.gif\" />" } else { puts $hd($class) \ "<button id='$a' onclick='hideorshow(\"$a\",\"$b\")'>show</button></p>\n\ <blockquote id='$b' style='display:none;'>\n\ <img $alt src=\"$hd(rootpath-$class)images/syntax/$name.gif\" />" } if {[info exists syntax_linkage($name)]} { foreach {cx px} $syntax_linkage($name) break foreach c $cx { if {[lsearch $exclude $c]>=0} continue RecursiveBubbleDiagram_helper $class $c 0 [concat $exclude $c] } } puts $hd($class) "</blockquote>" } proc RecursiveBubbleDiagram {args} { global hd foreach name $args { if {$hd(enable-main)} { RecursiveBubbleDiagram_helper main $name 1 $args } if {$hd(enable-aux)} { RecursiveBubbleDiagram_helper aux $name 1 $args } } } # Insert a See Also line for related bubble # Record a requirement. This procedure is active only for the first # pass. This procedure becomes a no-op for the second pass. During # the second pass, requirements listing report generators can use the # data accumulated during the first pass to construct their reports. # # If the "verbatim" argument is true, then the requirement text is |
︙ | ︙ |