SQLite Cookbook: Difference between revisions
No edit summary |
|||
| (3 intermediate revisions by the same user not shown) | |||
| Line 34: | Line 34: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== | == Exporting and importing == | ||
=== Saving database properties to text file === | |||
==== Database objects only ==== | |||
From the command line: | |||
<syntaxhighlight lang="bash"> | |||
$ sqlite3 [database_name] '.schema' > /path/to/export-file.txt | |||
</syntaxhighlight> | |||
==== Database objects and data ==== | |||
From the command line: | |||
<syntaxhighlight lang="bash"> | |||
$ sqlite3 [database_name] '.dump' > /path/to/export-file.txt | |||
</syntaxhighlight> | |||
From the `sqlite` command prompt <ref>[http://www.sqlitetutorial.net/sqlite-dump/|How To Use The SQLite Dump Command] — SQLite Tutorial</ref>: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
sqlite> .output /path/to/export-file.sql | |||
sqlite> .dump | |||
</syntaxhighlight> | |||
==== Single table definition ==== | |||
From the command line: | |||
<syntaxhighlight lang="bash"> | |||
$ sqlite3 [database_name] '.schema [tablename]' > /path/to/export-file.txt | |||
</syntaxhighlight> | |||
=== Import from a .sql file === | |||
From a sqlite3 prompt: | |||
<syntaxhighlight lang="sql"> | |||
sqlite> .read db.sql | |||
</syntaxhighlight> | </syntaxhighlight> | ||
| Line 71: | Line 108: | ||
<syntaxhighlight lang="sql"> | <syntaxhighlight lang="sql"> | ||
CREATE TABLE my_table | CREATE TABLE my_table ( | ||
id INTEGER PRIMARY KEY, | id INTEGER PRIMARY KEY, | ||
val TEXT | val TEXT | ||
); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Insert a new row in the table, placing a value one greater than the highest existing primary key in the `id` column, by assigning `NULL` to the `id` column <ref>[http://www.sqlite.org/faq.html#q1|SQLite Frequently Asked Questions] — sqlite.org</ref>: | Insert a new row in the table, placing a value one greater than the highest existing primary key in the `id` column, by assigning `NULL` to the `id` column <ref>[http://www.sqlite.org/faq.html#q1|SQLite Frequently Asked Questions]—sqlite.org</ref>: | ||
<syntaxhighlight lang="sql"> | <syntaxhighlight lang="sql"> | ||
INSERT INTO my_table (id, val) VALUES (NULL, 'some value'); | INSERT INTO my_table (id, val) VALUES (NULL, 'some value'); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== `ON DELETE CASCADE` === | |||
Sqlite3 turns off foreign key support by default. With foreign key support off even when a table definition specifies `ON DELETE CASCADE` the rows in the foreign key tables will not be deleted.<ref>[https://stackoverflow.com/questions/15301643/sqlite3-forgets-to-use-foreign-keys SQLite3 forgets to use foreign keys]—StackOverflow</ref> | |||
Before each command where foreign key support is needed it's necessary to issue the following command: `PRAGMA foreign_keys = ON;` | |||
==== Turning on FK support by default ==== | |||
To turn on foreign key support by default, add the following line to the sqlite configuration file, `~/.sqliterc`: | |||
<pre> | |||
PRAGMA foreign_keys = ON; | |||
</pre> | |||
==== pyCharm ==== | |||
* Right click on the database connection > '''Properties''' | |||
* '''Advanced''' tab > `foreign_keys` option: `true` | |||
''N.B. I tried this with no effect, e.g. tested some code that deleted a record with FKs that were not deleted along with it.'' | |||
== Quitting the `sqlite3` program == | == Quitting the `sqlite3` program == | ||
Latest revision as of 12:10, 18 April 2022
Overview[edit]
Task that have been tackled in the past with SQLite.
Running sqlite from the command line in Windows 7[edit]
Run a bash shell, e.g.GIT Bashsqlite3can be run in Powershell- If the
sqlite3program isn't in the system path, it can be run using the full path to the executable:
$ /c/path/to/django/install/sqlite/sqlite3 [database_name]
Displaying table properties[edit]
Show tables in the database[edit]
.tables
Show table definition[edit]
.schema [tablename]
Display columns in table[edit]
PRAGMA table_info(table_name);
Exporting and importing[edit]
Saving database properties to text file[edit]
Database objects only[edit]
From the command line:
$ sqlite3 [database_name] '.schema' > /path/to/export-file.txt
Database objects and data[edit]
From the command line:
$ sqlite3 [database_name] '.dump' > /path/to/export-file.txt
From the sqlite command prompt [1]:
sqlite> .output /path/to/export-file.sql sqlite> .dump
Single table definition[edit]
From the command line:
$ sqlite3 [database_name] '.schema [tablename]' > /path/to/export-file.txt
Import from a .sql file[edit]
From a sqlite3 prompt:
sqlite> .read db.sql
Queries[edit]
Controlling query results format[edit]
.mode columns .header on
Defining and altering tables[edit]
Renaming or deleting a column from a SQLite table[edit]
- SQLite supports
ALTER TABLE [table_name] ADD COLUMN ([column_name] [column_properties]). - SQLite does not support
UPDATE COLUMNorDROP COLUMN.
BEGIN TRANSACTION; CREATE TEMPORARY TABLE t1_backup(a,b); INSERT INTO t1_backup SELECT a,b FROM t1; DROP TABLE t1; CREATE TABLE t1(a,b); INSERT INTO t1 SELECT a,b FROM t1_backup; DROP TABLE t1_backup; COMMIT;
Autoincrement primary key[edit]
Create a primary key with
CREATE TABLE my_table (
id INTEGER PRIMARY KEY,
val TEXT
);
Insert a new row in the table, placing a value one greater than the highest existing primary key in the id column, by assigning NULL to the id column [2]:
INSERT INTO my_table (id, val) VALUES (NULL, 'some value');
ON DELETE CASCADE[edit]
Sqlite3 turns off foreign key support by default. With foreign key support off even when a table definition specifies ON DELETE CASCADE the rows in the foreign key tables will not be deleted.[3]
Before each command where foreign key support is needed it's necessary to issue the following command: PRAGMA foreign_keys = ON;
Turning on FK support by default[edit]
To turn on foreign key support by default, add the following line to the sqlite configuration file, ~/.sqliterc:
PRAGMA foreign_keys = ON;
pyCharm[edit]
- Right click on the database connection > Properties
- Advanced tab >
foreign_keysoption:true
N.B. I tried this with no effect, e.g. tested some code that deleted a record with FKs that were not deleted along with it.
Quitting the sqlite3 program[edit]
.quit
or
.exit
Notes[edit]
- ↑ To Use The SQLite Dump Command — SQLite Tutorial
- ↑ Frequently Asked Questions—sqlite.org
- ↑ SQLite3 forgets to use foreign keys—StackOverflow