Laatste update op 26 februari 2020 08:08:49 (UTC/GMT +8 uur)
Inleiding
Het SQLite CREATE TABLE commando wordt gebruikt om een nieuwe tabel in een SQLite database aan te maken. Het wordt ook gebruikt om indexen, views en triggers te maken. Een CREATE TABLE commando specificeert de volgende attributen van de nieuwe tabel:.
- De naam van de nieuwe tabel.
- De database waarin de nieuwe tabel wordt aangemaakt. Tabellen kunnen worden aangemaakt in de hoofddatabase, de temp-database of in een gekoppelde database.
- De naam van elke kolom in de tabel.
- Het gedeclareerde type van elke kolom in de tabel en elke kolom moet één datatype hebben, dat kan zijn NULL – de waarde is een NULL-waarde, INTEGER – een ondertekend geheel getal, REAL – een drijvende kommawaarde, TEXT – een tekststring of BLOB – een blob van gegevens.
- Een standaardwaarde of expressie voor elke kolom in de tabel.
- Een standaard collatievolgorde om met elke kolom te gebruiken.
- Optioneel, een PRIMARY KEY voor de tabel. Zowel single column als composite (meerdere kolommen) primary keys worden ondersteund.
- Een set van SQL constraints voor elke tabel. SQLite ondersteunt UNIQUE, NOT NULL, CHECK en FOREIGN KEY constraints.
- Een unieke index zal automatisch worden aangemaakt om een UNIQUE of PRIMARY KEY constraint af te dwingen. en ze kunnen niet handmatig worden verwijderd met het DROP INDEX commando.
Inhoudsopgave
Naming Conventions
Syntax
Example
ALTER TABLE
DROP TABLE
Naming Conventions
Elke database, tabel, kolom, index, trigger, of view moet een naam hebben waarmee hij kan worden geïdentificeerd. Een naam voor een identifier moet beginnen met een letter of het underscore-teken, dat mag worden gevolgd door een aantal alfanumerieke tekens of underscores. Andere tekens zijn bij deze naam niet toegestaan.
The valid identifier names are :
- tsttable
- tst_table
- table456
- z
However the following are invalid identifier:
- tst table
- tst-table
- 456table
Other characters can be used in identifiers if they are enclosed in double quotes (or square brackets), for example:
- “test table”
- “tst table”
- “123 456”
Reserved Keywords
Each CREATE TABLE statement must specify a name for the new table. Table names that begin with “sqlite_” are reserved for internal use. It is an error to attempt to create a table with a name that starts with “sqlite_”.
Name Length
In SQLite there is not restricted upper limit on the length of an identifier name, so you can use a manageable length of identifier name to be use.
Case Sensitivity
For the most part, case sensitivity in SQLite is off. Tabel namen en kolom namen kunnen worden getypt in hoofdletters, kleine letters, of gemengde hoofdletters, en verschillende kapitalisaties van dezelfde database object naam kunnen door elkaar worden gebruikt.
Noten:
Wanneer een nieuwe tabel wordt gemaakt, moet deze in een database staan en de database naam kan ofwel “main”, “temp”, of de naam van een gekoppelde database zijn.Als het sleutelwoord “TEMP” of “TEMPORARY” wordt gebruikt tussen “CREATE” en “TABLE”, dan wordt de nieuwe tabel aangemaakt in de temp database.Zowel database naam als TEMP of TEMPORARY sleutelwoord kunnen niet worden gebruikt.Als geen database naam is opgegeven en het TEMP sleutelwoord niet aanwezig is, dan wordt de tabel aangemaakt in de hoofd database.
Probeert u een tabel te maken in een database die een tabel of index of view met dezelfde naam bevat, dan treedt er een fout op, maar als de “IF NOT EXISTS”-clausule is opgegeven als onderdeel van het CREATE TABLE statement, heeft dit geen effect.
Syntax:
CREATE TABLE table-name (column-def);
TEMPORARY – een tabel kan, indien gewenst, als tijdelijk worden gedeclareerd.
Column-def. – A column definition consists of the name of the column, and followed by the declared type of the column which is optional, then one or more optional column constraints.
A column definition can be defined as follows:
name column-constraint]
Example
Here is a simple Create Table Statement:
CREATE TABLE company(com_id text(4),com_name text(15));
To see the structure of the table, use the following commands:
Sample Output:
sqlite> .mode columnsqlite> .header onsqlite> PRAGMA table_info(company);cid name type notnull dflt_value pk---------- ---------- ---------- ---------- ---------- ----------0 com_id text(4) 0 01 com_name text(15) 0 0
Here the .mode command shows the columns and .header on command shows the header on.
Create a table to use TEMPORARY clause
CREATE TABLE TEMPORARY (com_id text(4),com_name text(15));
This time table is created in temp databases. If you want to see the created table execute the following command-
sqlite> .tablesTEMPORARY
If you use the table name with TEMPORARY keyword an error message will appear. Zie hier onder-
sqlite> create table TEMPORARY company( ...> com_id text(4), ...> com_name text(15));Error: near "company": syntax error
Een kopie maken van een bestaande tabel in de hoofd database
Het is zeer noodzakelijk voor een ontwikkelaar om een backup te maken van de originele tabel die nog werkt, en als geen schadelijke maatregel onbedoeld of accedient is gebeurd op het moment van ontwikkelen. Bovendien kan het nodig zijn om kolomnamen te wijzigen of een of meer kolommen uit een sqlite tabel te verwijderen, dus het is een goede gewoonte om van tijd tot tijd een back-up van de werkende tabel te nemen.
Als u een backup wilt maken van de bedrijfstabel inclusief alle records, kunt u het volgende statement gebruiken
CREATE TABLE backup_company AS SELECT * FROM company ;
Als u een backup wilt maken van alleen de structuur van de bedrijfstabel, kan het volgende statement worden gebruikt
CREATE TABLE backup_company AS SELECT * FROM company LIMIT 0;
ALTER TABLE
Het ALTER TABLE commando kan in SQLite alleen worden gebruikt om de gebruiker in staat te stellen een tabel een andere naam te geven of een nieuwe kolom aan een bestaande tabel toe te voegen. Het is niet mogelijk om een kolom te hernoemen of een kolom te verwijderen, of om constraints aan een tabel toe te voegen of te verwijderen.
Het RENAME TO commando wordt gebruikt om de tabel geïdentificeerd door table-name te hernoemen naar new-table-name. Dit commando kan niet worden gebruikt om een tabel te verplaatsen binnen twee databases alleen worden hernoemd binnen dezelfde database.
Indien de tabel die wordt hernoemd triggers of indexen bevat, zal dit geen effect hebben en blijven deze intact zoals ze waren voordat ze werden hernoemd. Echter, alle view definities, of statements uitgevoerd door triggers die verwijzen naar de tabel die wordt hernoemd, worden niet automatisch gewijzigd.
Hier maken we een nieuwe tabel bedrijf.
sqlite> create table company( ...> com_id text(4), ...> com_name text(15));
Om een nieuwe kolom toe te voegen:
ALTER TABLE company ADD com_add VARCHAR(50);
Na het toevoegen van een kolom zie de structuur van de tabel bedrijf.
sqlite> .schemaCREATE TABLE company(com_id text(4),com_name text(15), com_add VARCHAR(50));
Om een tabel te hernoemen:
sqlite> .tablescompany hrdb.departments hrdb.jobshrdb.countries hrdb.employees hrdb.locationshrdb.department hrdb.job_history hrdb.regions
Noem nu de tabel company naar nieuwe naam company_new. Hieronder staat het statement.
ALTER TABLE company RENAME TO company_new;
Na het hernoemen, zie de lijst van de tabellen hieronder.
sqlite> .tablescompany_new hrdb.departments hrdb.jobshrdb.countries hrdb.employees hrdb.locationshrdb.department hrdb.job_history hrdb.regions
Hernoemen of verwijderen van kolom uit een tabel:
Note : Sqlite heeft slechts beperkte ondersteuning voor ALTER TABLE. Het verwijderen van kolommen en hernoemen wordt niet ondersteund door SQLite. Het is dus beter om een nieuwe tabel te maken met de wijzigingen volgens uw eisen, dan de originele tabel te laten vallen en de zojuist gemaakte nieuwe tabel weer te hernoemen naar de originele tabel naam. Een ding om te onthouden is dat, eens een tabel gedropt wordt, alle geassocieerde triggers verloren zullen gaan, dus wees hiervan bewust. Het is een goed idee om, alvorens de tabel te hernoemen of te laten vallen, een kopie te nemen van het statement waarin de tabel werd aangemaakt. Hier is het statement waarvan u het statement krijgt.
SELECT sql FROM sqlite_master WHERE tbl_name = 'table_name';
DROP TABLE
Het DROP TABLE commando verwijdert een tabel uit een database.
Syntax:
DROP TABLE table_name orDROP TABLE table_name
Parameters:
table_name – De naam van een bestaande tabel die u wilt laten vallen. You may drop more than one tables by specifying their names seperated by a comma.
DROP TABLE company_new;
Previous: Data Types
Next: Constraint