SQLite Tabelle erstellen, ändern und löschen

Letzte Aktualisierung am 26. Februar 2020 08:08:49 (UTC/GMT +8 Stunden)

Einführung

Der SQLite Befehl CREATE TABLE wird verwendet, um eine neue Tabelle in einer SQLite Datenbank zu erstellen. Er wird auch zum Erstellen von Indizes, Views und Triggern verwendet. Ein CREATE TABLE Befehl spezifiziert die folgenden Attribute der neuen Tabelle:

  • Der Name der neuen Tabelle.
  • Die Datenbank, in der die neue Tabelle erstellt wird. Tabellen können in der Hauptdatenbank, der temporären Datenbank oder in jeder angeschlossenen Datenbank erstellt werden.
  • Der Name jeder Spalte in der Tabelle.
  • Der deklarierte Typ jeder Spalte in der Tabelle und jede Spalte muss einen Datentyp haben, der NULL – der Wert ist ein NULL-Wert, INTEGER – eine Ganzzahl mit Vorzeichen, REAL – ein Fließkommawert, TEXT – ein Textstring oder BLOB – ein Datenblob sein kann.
  • Ein Standardwert oder Ausdruck für jede Spalte in der Tabelle.
  • Eine Standardsortierreihenfolge, die für jede Spalte verwendet werden soll.
  • Optional ein PRIMARY KEY für die Tabelle. Es werden sowohl einspaltige als auch zusammengesetzte (mehrspaltige) Primärschlüssel unterstützt.
  • Ein Satz von SQL-Einschränkungen für jede Tabelle. SQLite unterstützt UNIQUE-, NOT NULL-, CHECK- und FOREIGN KEY-Beschränkungen.
  • Einzigartige Indizes werden automatisch erstellt, um eine UNIQUE- oder PRIMARY KEY-Beschränkung zu erzwingen, und sie können nicht manuell mit dem Befehl DROP INDEX gelöscht werden.

Inhaltsverzeichnis

Benennungskonventionen

Syntax

Beispiel

ALTER TABLE

DROP TABLE

Benennungskonventionen

Jede Datenbank, Tabelle, Spalte, Index, Trigger oder Ansicht sollte einen Namen haben, durch den sie identifiziert werden kann. Ein Bezeichnername muss mit einem Buchstaben oder dem Unterstrich beginnen, dem eine Reihe von alphanumerischen Zeichen oder Unterstrichen folgen kann. Andere Zeichen sind in diesem Namen nicht erlaubt.

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. Tabellennamen und Spaltennamen können in Großbuchstaben, Kleinbuchstaben oder gemischter Groß- und Kleinschreibung eingegeben werden, und verschiedene Großbuchstaben desselben Datenbankobjektnamens können austauschbar verwendet werden.

Hinweise:

Wenn eine neue Tabelle erstellt wird, muss sie sich in einer Datenbank befinden, und der Datenbankname kann entweder „main“, „temp“ oder der Name einer angeschlossenen Datenbank sein.Wenn das Schlüsselwort „TEMP“ oder „TEMPORARY“ zwischen „CREATE“ und „TABLE“ verwendet wird, wird die neue Tabelle in der temporären Datenbank erstellt, wobei der Datenbankname und das Schlüsselwort TEMP oder TEMPORARY nicht verwendet werden können.

Versucht man, eine Tabelle in einer Datenbank zu erstellen, die eine Tabelle, einen Index oder einen View mit demselben Namen enthält, tritt ein Fehler auf, aber wenn die „IF NOT EXISTS“-Klausel als Teil der CREATE TABLE-Anweisung angegeben wird, hat dies keine Auswirkungen.

Syntax:

CREATE TABLE table-name (column-def);

TEMPORARY – eine Tabelle kann als temporär deklariert werden, falls gewünscht.

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. Siehe unten-

sqlite> create table TEMPORARY company( ...> com_id text(4), ...> com_name text(15));Error: near "company": syntax error 

Eine Kopie einer existierenden Tabelle innerhalb der Hauptdatenbank zu erstellen

Es ist für einen Entwickler sehr wichtig, eine Sicherheitskopie der ursprünglichen Tabelle zu erstellen, die in Betrieb ist, und da keine schädliche Maßnahme unbedacht oder versehentlich während der Entwicklung geschehen ist. Außerdem kann es notwendig sein, Spaltennamen zu ändern oder eine oder mehrere Spalten aus einer Sqlite-Tabelle zu entfernen, so dass es eine gute Praxis ist, von Zeit zu Zeit ein Backup der Arbeitstabelle zu erstellen.

Wenn Sie eine Sicherung der Firmentabelle mit allen Datensätzen machen wollen, kann folgende Anweisung verwendet werden

CREATE TABLE backup_company AS SELECT * FROM company ;

Wenn Sie nur die Struktur der Firmentabelle sichern wollen, kann die folgende Anweisung verwendet werden

CREATE TABLE backup_company AS SELECT * FROM company LIMIT 0;

ALTER TABLE

Der ALTER TABLE-Befehl kann in SQLite nur verwendet werden, um dem Benutzer zu erlauben, eine Tabelle umzubenennen oder einer bestehenden Tabelle eine neue Spalte hinzuzufügen. Es ist nicht möglich, eine Spalte umzubenennen oder zu entfernen, oder Einschränkungen zu einer Tabelle hinzuzufügen oder zu entfernen.

Der RENAME TO Befehl wird verwendet, um die Tabelle, die durch table-name identifiziert wird, in new-table-name umzubenennen. Dieser Befehl kann nicht verwendet werden, um eine Tabelle zwischen zwei Datenbanken zu verschieben, sondern nur innerhalb derselben Datenbank.

Wenn die Tabelle, die umbenannt wird, Trigger oder Indizes enthält, hat dies keine Auswirkungen und diese bleiben intakt, wie sie vor der Umbenennung waren. Allerdings werden alle View-Definitionen oder von Triggern ausgeführte Anweisungen, die sich auf die umbenannte Tabelle beziehen, nicht automatisch geändert.

Hier erstellen wir eine neue Tabelle Firma.

sqlite> create table company( ...> com_id text(4), ...> com_name text(15));

Um eine neue Spalte hinzuzufügen:

ALTER TABLE company ADD com_add VARCHAR(50);

Nach dem Hinzufügen einer Spalte sehen Sie die Struktur der Tabelle Firma.

sqlite> .schemaCREATE TABLE company(com_id text(4),com_name text(15), com_add VARCHAR(50));

Um eine Tabelle umzubenennen:

sqlite> .tablescompany hrdb.departments hrdb.jobshrdb.countries hrdb.employees hrdb.locationshrdb.department hrdb.job_history hrdb.regions

Nun benennen Sie die Tabelle Firma in den neuen Namen Firma_neu um. Hier ist die Anweisung unten.

ALTER TABLE company RENAME TO company_new;

Nach der Umbenennung sehen Sie die Liste der Tabellen unten.

sqlite> .tablescompany_new hrdb.departments hrdb.jobshrdb.countries hrdb.employees hrdb.locationshrdb.department hrdb.job_history hrdb.regions

Umbenennen oder Löschen von Spalten aus einer Tabelle:

Hinweis: Sqlite hat nur eine begrenzte ALTER TABLE Unterstützung. Das Löschen von Spalten und Umbenennen wird von SQLite nicht unterstützt. Daher ist es besser, eine neue Tabelle mit den Änderungen gemäß Ihren Anforderungen zu erstellen, dann die ursprüngliche Tabelle zu löschen und die gerade erstellte neue Tabelle wieder in den ursprünglichen Tabellennamen umzubenennen. Denken Sie daran, dass nach dem Löschen einer Tabelle alle zugehörigen Trigger verloren gehen, seien Sie sich dessen bewusst. Es ist eine gute Idee, dass Sie vor dem Umbenennen oder Löschen einer Tabelle eine Kopie der Anweisung zum Erstellen der Tabelle machen.

SELECT sql FROM sqlite_master WHERE tbl_name = 'table_name';

DROP TABLE

Der Befehl DROP TABLE entfernt eine Tabelle aus einer Datenbank.

Syntax:

DROP TABLE table_name orDROP TABLE table_name 

Parameter:

Tabellenname – Der Name einer bestehenden Tabelle, die Sie löschen möchten. You may drop more than one tables by specifying their names seperated by a comma.

DROP TABLE company_new;

Previous: Data Types
Next: Constraint

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.