SQLite Create, Alter and Drop table

Ultima actualizare la 26 februarie 2020 08:08:49 (UTC/GMT +8 ore)

Introducere

Comanda SQLite CREATE TABLE este utilizată pentru a crea un tabel nou într-o bază de date SQLite. De asemenea, este utilizată pentru a crea indici, vizualizări și declanșatori. O comandă CREATE TABLE specifică următoarele atribute ale noii tabele:.

  • Numele noii tabele.
  • Baza de date în care este creată noua tabelă. Tabelele pot fi create în baza de date principală, în baza de date temporară sau în orice bază de date atașată.
  • Numele fiecărei coloane din tabel.
  • Tipul declarat al fiecărei coloane din tabel și fiecare coloană trebuie să aibă un singur tip de date, care poate fi NULL – valoarea este o valoare NULL, INTEGER – un număr întreg cu semn, REAL – o valoare în virgulă mobilă, TEXT – un șir de text sau BLOB – un blob de date.
  • O valoare sau o expresie implicită pentru fiecare coloană din tabel.
  • O secvență de colaționare implicită de utilizat cu fiecare coloană.
  • Opțional, o PRIMARY KEY pentru tabel. Sunt acceptate atât cheile primare cu o singură coloană, cât și cele compozite (mai multe coloane).
  • Un set de constrângeri SQL pentru fiecare tabel. SQLite acceptă constrângerile UNIQUE, NOT NULL, CHECK și FOREIGN KEY.
  • Un index unic va fi creat automat pentru a impune o constrângere UNIQUE sau PRIMARY KEY. și nu pot fi eliminate manual cu comanda DROP INDEX.

Carte de materii

Convenții de denumire

Sintaxa

Exemplu

ALTER TABLE

DROP TABLE

Convenții de denumire

Care bază de date, tabel, coloană, index, declanșator sau vizualizare trebuie să aibă un nume prin care să poată fi identificat. Un nume de identificare trebuie să înceapă cu o literă sau cu caracterul de subliniere, care poate fi urmat de un număr de caractere alfanumerice sau de caractere de subliniere. Acest nume nu poate fi însoțit de alte caractere.

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. Numele tabelelor și numele coloanelor pot fi tastate cu majuscule, minuscule sau cu majuscule mixte, iar diferite majuscule ale aceluiași nume de obiect al bazei de date pot fi folosite interschimbabil.

Note:

Când se creează o nouă tabelă, aceasta trebuie să se afle într-o bază de dateși numele bazei de date poate fi fie „main”, „temp”, fie numele unei baze de date atașate.Dacă se folosește cuvântul cheie „TEMP” sau „TEMPORARY” între „CREATE” și „TABLE”, atunci noua tabelă este creată în baza de date temporară.Nu se poate folosi atât numele bazei de date, cât și cuvântul cheie TEMP sau TEMPORARY.Dacă nu este specificat numele bazei de date și cuvântul cheie TEMP nu este prezent, atunci tabela este creată în baza de date principală.

Încercarea de a crea o tabelă într-o bază de date care conține o tabelă, un index sau o vizualizare cu același nume, va apărea o eroare, dar dacă clauza „IF NOT EXISTS” este specificată ca parte a instrucțiunii CREATE TABLE nu va crea nici un efect.

Sintaxa:

CREATE TABLE table-name (column-def);

TEMPORARY – un tabel poate fi declarat ca fiind temporar, dacă se dorește.

Columna-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. Aici vedeți mai jos-

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

Facerea unei copii a unui tabel existent în cadrul bazei de date principale

Este foarte necesar ca un dezvoltator să facă o copie de siguranță a tabelului original care este în lucru și ca nici o măsură dăunătoare nu s-a întâmplat în mod neintenționat sau accesoriu în momentul dezvoltării. În plus, este posibil să aveți nevoie să schimbați numele coloanelor sau să eliminați una sau mai multe coloane dintr-un tabel sqlite, astfel încât este o bună practică să faceți din când în când o copie de rezervă a tabelului de lucru.

Dacă doriți să faceți o copie de rezervă a tabelului companiei, inclusiv a tuturor înregistrărilor, se poate utiliza următoarea instrucțiune

CREATE TABLE backup_company AS SELECT * FROM company ;

Dacă doriți să faceți o copie de rezervă doar a structurii tabelului companiei, se poate utiliza următoarea instrucțiune

CREATE TABLE backup_company AS SELECT * FROM company LIMIT 0;

ALTER TABLE

Comanda ALTER TABLE poate fi utilizată în SQLite doar pentru a permite utilizatorului doar să redenumească un tabel sau să adauge o nouă coloană la un tabel existent. Nu este posibil să redenumiți o coloană sau să eliminați o coloană, sau să adăugați sau să eliminați constrângeri dintr-un tabel.

Comanda RENAME TO este utilizată pentru a redenumi tabelul identificat prin nume-tabel în nume-tabel nou. Această comandă nu poate fi utilizată pentru a muta un tabel între două baze de date, ci doar pentru a fi redenumit în cadrul aceleiași baze de date.

Dacă tabelul care este redenumit conține declanșatori sau indici, nu se va produce niciun efect și aceștia rămân intacți așa cum erau înainte de redenumire. Cu toate acestea, orice definiții de vizualizări sau instrucțiuni executate de declanșatori care se referă la tabelul redenumit nu vor fi modificate automat.

Aici creăm o nouă tabelă company.

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

Pentru a adăuga o nouă coloană:

ALTER TABLE company ADD com_add VARCHAR(50);

După adăugarea unei coloane vedeți structura tabelului company.

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

Pentru a redenumi un tabel:

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

Acum redenumiți tabelul company cu noul nume company_new. Iată declarația de mai jos.

ALTER TABLE company RENAME TO company_new;

După redenumire, vedeți lista tabelelor de mai jos.

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

Renumirea sau renunțarea la coloana dintr-un tabel:

Nota : Sqlite are doar un suport limitat pentru ALTER TABLE. Renunțarea la coloane și redenumirea nu este suportată de SQLite. Deci, este mai bine să creați un nou tabel cu modificările conform cerințelor dumneavoastră, apoi să renunțați la tabelul original și să redenumiți din nou noul tabel abia creat cu numele tabelului original. Un lucru de reținut este că, odată ce o tabelă este eliminată, toate declanșatoarele asociate vor fi pierdute, așa că trebuie să țineți cont de acest lucru. Este o idee bună ca, înainte de redenumirea sau eliminarea tabelului, să faceți o copie a declarației de creare a tabelului. Iată declarația din care veți obține declarația.

SELECT sql FROM sqlite_master WHERE tbl_name = 'table_name';

DROP TABLE

Comanda DROP TABLE elimină un tabel dintr-o bază de date.

Sintaxa:

DROP TABLE table_name orDROP TABLE table_name 

Paremetri:

nume_tabel – Numele unui tabel existent pe care doriți să îl eliminați. You may drop more than one tables by specifying their names seperated by a comma.

DROP TABLE company_new;

Previous: Data Types
Next: Constraint

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *