SQLite Create, Alter and Drop table

Poslední aktualizace 26. února 2020 08:08:49 (UTC/GMT +8 hodin)

Úvod

Příkaz SQLite CREATE TABLE slouží k vytvoření nové tabulky v databázi SQLite. Používá se také k vytváření indexů, pohledů a triggerů. Příkaz CREATE TABLE určuje následující atributy nové tabulky:.

  • Název nové tabulky.
  • Databáze, ve které se nová tabulka vytváří. Tabulky mohou být vytvořeny v hlavní databázi, v dočasné databázi nebo v libovolné připojené databázi.
  • Název každého sloupce v tabulce.
  • Deklarovaný typ každého sloupce v tabulce, přičemž každý sloupec musí mít jeden datový typ, který může být NULL – hodnota je NULL, INTEGER – celé číslo se znaménkem, REAL – hodnota s pohyblivou řádovou čárkou, TEXT – textový řetězec nebo BLOB – blob dat.
  • Výchozí hodnotu nebo výraz pro každý sloupec v tabulce.
  • Volitelná sekvence collation, která se použije pro každý sloupec.
  • Volitelně PRIMÁRNÍ KLÍČ pro tabulku. Podporovány jsou jak jednosloupcové, tak složené (vícesloupcové) primární klíče.
  • Sada omezení SQL pro každou tabulku. SQLite podporuje omezení UNIQUE, NOT NULL, CHECK a FOREIGN KEY.
  • Jedinečné indexy se automaticky vytvoří pro vynucení omezení UNIQUE nebo PRIMARY KEY. a nelze je ručně zrušit příkazem DROP INDEX.

Obsah

Pojmenovací konvence

Syntaxe

Příklad

ALTER TABLE

DROP TABLE

Pojmenovací konvence

Každá databáze, tabulka, sloupec, index, trigger nebo zobrazení by měly mít název, podle kterého je lze identifikovat. Název identifikátoru musí začínat písmenem nebo znakem podtržítka, za kterým může následovat řada alfanumerických znaků nebo podtržítek. S tímto názvem nesmí být spojeny žádné další znaky.

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. Názvy tabulek a sloupců lze psát velkými, malými nebo smíšenými písmeny a různá velká písmena stejného názvu databázového objektu lze používat zaměnitelně.

Poznámky:

Při vytváření nové tabulky musí být v databázia název databáze může být buď „main“, „temp“, nebo název připojené databáze.Pokud je mezi příkazy „CREATE“ a „TABLE“ použito klíčové slovo „TEMP“ nebo „TEMPORARY“, pak je nová tabulka vytvořena v dočasné databázi. nelze použít jak název databáze, tak klíčové slovo TEMP nebo TEMPORARY. pokud není uveden název databáze a klíčové slovo TEMP, pak je tabulka vytvořena v hlavní databázi.

Pokus o vytvoření tabulky do databáze, která obsahuje tabulku, index nebo pohled stejného jména, dojde k chybě, ale pokud je jako součást příkazu CREATE TABLE uvedena klauzule „IF NOT EXISTS“, nevytvoří se žádný efekt.

Syntaxe:

CREATE TABLE table-name (column-def);

TEMPORARY – tabulka může být v případě potřeby deklarována jako dočasná

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. Zde viz níže-

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

Vytvoření kopie existující tabulky v rámci hlavní databáze

Pro vývojáře je velmi potřebné pořídit zálohu původní tabulky, která je v provozu, a jako žádné škodlivé opatření se nestalo neúmyslně nebo náhodně v době vývoje. Navíc se může stát, že bude třeba změnit názvy sloupců nebo odstranit jeden či více sloupců z tabulky sqlite, takže je dobrým zvykem čas od času pořídit zálohu pracovní tabulky.

Pokud chcete provést zálohu tabulky firmy včetně všech záznamů, můžete použít následující příkaz

CREATE TABLE backup_company AS SELECT * FROM company ;

Pokud chcete provést zálohu pouze struktury tabulky firmy, lze použít následující příkaz

CREATE TABLE backup_company AS SELECT * FROM company LIMIT 0;

ALTER TABLE

Příkaz ALTER TABLE lze v SQLite použít pouze k tomu, aby uživatel mohl tabulku pouze přejmenovat nebo přidat nový sloupec do existující tabulky. Není možné přejmenovat sloupec nebo odebrat sloupec nebo přidat či odebrat omezení z tabulky.

Příkaz RENAME TO slouží k přejmenování tabulky identifikované názvem tabulky na název nové tabulky. Tento příkaz nelze použít k přesunu tabulky v rámci dvou databází, pouze k přejmenování v rámci téže databáze.

Pokud přejmenovávaná tabulka obsahuje spouštěče nebo indexy, nedojde k žádnému ovlivnění a tyto zůstanou zachovány tak, jak byly před přejmenováním. Definice pohledů nebo příkazy spouštěné spouštěči, které odkazují na přejmenovávanou tabulku, však nebudou automaticky změněny.

Zde vytvoříme novou tabulku company.

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

Přidání nového sloupce:

ALTER TABLE company ADD com_add VARCHAR(50);

Po přidání sloupce si prohlédněte strukturu tabulky company.

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

Přejmenování tabulky:

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

Nyní přejmenujte tabulku company na nový název company_new. Zde je příkaz níže.

ALTER TABLE company RENAME TO company_new;

Po přejmenování se podívejte na seznam tabulek níže.

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

Přejmenování nebo vypuštění sloupce z tabulky:

Poznámka : Sqlite má pouze omezenou podporu ALTER TABLE. Vypuštění sloupců a přejmenování SQLite nepodporuje. Proto je lepší způsob vytvořit novou tabulku se změnami podle vašeho požadavku, poté původní tabulku vypustit a právě vytvořenou novou tabulku opět přejmenovat na původní název tabulky. Je třeba mít na paměti, že po zrušení tabulky se ztratí všechny přidružené spouštěče, takže si toho buďte vědomi. Je dobré, abyste si před přejmenováním nebo vypuštěním tabulky pořídili kopii příkazu k vytvoření tabulky. Zde je příkaz, ze kterého získáte výpis.

SELECT sql FROM sqlite_master WHERE tbl_name = 'table_name';

DROP TABLE

Příkaz DROP TABLE odstraní tabulku z databáze.

Syntaxe:

DROP TABLE table_name orDROP TABLE table_name 

Parametry:

název_tabulky – Název existující tabulky, kterou chcete zrušit. You may drop more than one tables by specifying their names seperated by a comma.

DROP TABLE company_new;

Previous: Data Types
Next: Constraint

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *