SQLite Skapa, ändra och ta bort tabell

Senaste uppdatering den 26 februari 2020 08:08:49 (UTC/GMT +8 timmar)

Introduktion

SQLite CREATE TABLE-kommandot används för att skapa en ny tabell i en SQLite-databas. Det används också för att skapa index, vyer och triggers. Ett CREATE TABLE-kommando anger följande attribut för den nya tabellen:.

  • Namnet på den nya tabellen.
  • Databasen där den nya tabellen skapas. Tabeller kan skapas i huvuddatabasen, temp-databasen eller i en bifogad databas.
  • Namnet på varje kolumn i tabellen.
  • Den deklarerade typen för varje kolumn i tabellen och varje kolumn måste ha en datatyp, som kan vara NULL – värdet är ett NULL-värde, INTEGER – ett signerat heltal, REAL – ett flyttal, TEXT – en textsträng eller BLOB – en dataklump.
  • En standardvärde eller ett uttryck för varje kolumn i tabellen.
  • En standardkollationssekvens som ska användas för varje kolumn.
  • Optionellt ett PRIMARY KEY för tabellen. Både primära nycklar med en kolumn och sammansatta primära nycklar (flera kolumner) stöds.
  • En uppsättning SQL-begränsningar för varje tabell. SQLite stöder UNIQUE-, NOT NULL-, CHECK- och FOREIGN KEY-begränsningar.
  • En unika index skapas automatiskt för att upprätthålla en UNIQUE- eller PRIMARY KEY-begränsning och de kan inte tas bort manuellt med kommandot DROP INDEX.

Innehållsförteckning

Namnkonventioner

Syntax

Exempel

ALTER TABLE

DROP TABLE

Namnkonventioner

Alla databaser, tabeller, kolumner, index, utlösare eller vyer bör ha ett namn genom vilket de kan identifieras. Ett identifieringsnamn måste börja med en bokstav eller ett underscore-tecken, som kan följas av ett antal alfanumeriska tecken eller underscore-tecken. Inga andra tecken får tillåtas med detta namn.

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. Tabellnamn och kolumnnamn kan skrivas med versaler, små bokstäver eller blandade bokstäver, och olika versaler av samma databasobjektnamn kan användas omväxlande.

Anmärkningar:

När en ny tabell skapas måste den finnas i en databas och databasnamnet kan vara antingen ”main”, ”temp” eller namnet på en ansluten databas.Om nyckelordet ”TEMP” eller ”TEMPORARY” används mellan ”CREATE” och ”TABLE” skapas den nya tabellen i temp-databasen.Både databasnamn och nyckelordet TEMP eller TEMPORARY kan inte användas.Om inget databasnamn anges och nyckelordet TEMP inte finns med skapas tabellen i huvuddatabasen.

Vetar du att skapa en tabell i en databas som innehåller en tabell, ett index eller en vy med samma namn kommer ett fel att uppstå, men om ”IF NOT EXISTS”-klausulen anges som en del av CREATE TABLE-angivelsen kommer det inte att ha någon effekt.

Syntax:

CREATE TABLE table-name (column-def);

TEMPORARY – en tabell kan deklareras som temporär om så önskas.

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. Se nedan-

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

Göra en kopia av en befintlig tabell i huvuddatabasen

Det är mycket nödvändigt för en utvecklare att ta en säkerhetskopia av den ursprungliga tabellen som fungerar, och som ingen skadlig åtgärd hände omedvetet eller oavsiktligt vid tiden för utvecklingen. Dessutom kan du behöva ändra kolumnnamn eller ta bort en eller flera kolumner från en sqlite-tabell, så det är bra praxis att ta en säkerhetskopia av den fungerande tabellen då och då.

Om du vill ta en säkerhetskopia av företagstabellen inklusive alla poster kan följande uttalande användas

CREATE TABLE backup_company AS SELECT * FROM company ;

Om du vill ta en säkerhetskopia av endast strukturen i företagstabellen, kan du använda följande instruktion

CREATE TABLE backup_company AS SELECT * FROM company LIMIT 0;

ALTER TABLE

Kommandot ALTER TABLE kan endast användas i SQLite för att tillåta användaren att byta namn på en tabell eller lägga till en ny kolumn i en befintlig tabell. Det är inte möjligt att byta namn på en kolumn, ta bort en kolumn eller lägga till eller ta bort begränsningar från en tabell.

Kommandot RENAME TO används för att byta namn på den tabell som identifieras av table-name till new-table-name. Det här kommandot kan inte användas för att flytta en tabell inom två databaser, endast för att byta namn inom samma databas.

Om tabellen som byts ut innehåller triggers eller index, kommer ingen effekt att ske och dessa förblir intakta som de var innan de byttes ut. Alla visningsdefinitioner eller uttalanden som utförs av triggers och som hänvisar till den omdöpta tabellen kommer dock inte att ändras automatiskt.

Här skapar vi en ny tabell Company.

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

För att lägga till en ny kolumn:

ALTER TABLE company ADD com_add VARCHAR(50);

När du har lagt till en kolumn kan du se strukturen för tabellen company.

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

För att byta namn på en tabell:

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

Nu byter du namn på tabellen company till det nya namnet company_new. Här är meddelandet nedan.

ALTER TABLE company RENAME TO company_new;

Efter att du har bytt namn kan du se listan över tabellerna nedan.

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

Omdöpa eller ta bort kolumnen från en tabell:

Note : Sqlite har endast begränsat stöd för ALTER TABLE. Släppande av kolumner och namnbyte stöds inte av SQLite. Så det är bättre att skapa en ny tabell med ändringarna enligt dina krav, sedan släppa den ursprungliga tabellen och återigen byta namn på den nyss skapade tabellen till det ursprungliga tabellnamnet. En sak att komma ihåg är att när en tabell släpps kommer alla associerade triggers att gå förlorade, så var medveten om detta. Innan du byter namn på eller släpper en tabell är det bra om du tar en kopia av det uttalande som skapades när tabellen skapades. Här är det uttalande som du kommer att få uttalande från.

SELECT sql FROM sqlite_master WHERE tbl_name = 'table_name';

DROP TABLE

Kommandot DROP TABLE tar bort en tabell från en databas.

Syntax:

DROP TABLE table_name orDROP TABLE table_name 

Parametrar:

table_name – Namnet på den existerande tabell som du vill ta bort. You may drop more than one tables by specifying their names seperated by a comma.

DROP TABLE company_new;

Previous: Data Types
Next: Constraint

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *