Utolsó frissítés: 2020. február 26. 08:08:49 (UTC/GMT +8 óra)
Bevezetés
Az SQLite CREATE TABLE parancs egy új tábla létrehozására szolgál az SQLite adatbázisban. Emellett indexek, nézetek és triggerek létrehozására is használható. A CREATE TABLE parancs az új tábla következő attribútumait adja meg:.
- Az új tábla neve.
- Az adatbázis, amelyben az új táblát létrehozzuk. A táblák létrehozhatók a fő adatbázisban, a temp adatbázisban vagy bármely csatolt adatbázisban.
- A tábla minden egyes oszlopának neve.
- A tábla minden egyes oszlopának deklarált típusa, és minden oszlopnak egy adattípussal kell rendelkeznie, amely lehet NULL – az érték NULL érték, INTEGER – előjeles egész szám, REAL – lebegőpontos érték, TEXT – szöveges karakterlánc vagy BLOB – adathalmaz.
- Egy alapértelmezett érték vagy kifejezés a tábla minden egyes oszlopához.
- Egy alapértelmezett kollációs sorrend, amelyet minden oszlophoz használni kell.
- Előlegesen egy PRIMARY KEY a táblázathoz. Mind az egy oszlopos, mind az összetett (több oszlopos) elsődleges kulcsok támogatottak.
- Egy SQL-kényszerek készlete minden egyes táblához. Az SQLite támogatja az UNIQUE, NOT NULL, CHECK és FOREIGN KEY korlátozásokat.
- Az egyedi indexek automatikusan létrejönnek az UNIQUE vagy PRIMARY KEY korlátozás érvényesítésére. és nem lehet őket manuálisan törölni a DROP INDEX paranccsal.
Tartalomjegyzék
Nevezési konvenciók
Szintaktika
Példa
ALTER TABLE
DROP TABLE
Nevezési konvenciók
Minden adatbázisnak, táblának, oszlopnak, indexnek, triggernek vagy nézetnek rendelkeznie kell egy névvel, amellyel azonosítható. Az azonosító névnek egy betűvel vagy az aláhúzás karakterrel kell kezdődnie, amelyet több alfanumerikus karakter vagy aláhúzás követhet. Más karakterek nem szerepelhetnek ebben a névben.
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. A táblák és oszlopok nevei nagybetűvel, kisbetűvel vagy vegyesen írhatók, és ugyanazon adatbázis-objektum nevének különböző nagybetűi felcserélhetők.
Megjegyzések:
Az új tábla létrehozásakor annak egy adatbázisban kell lennie, és az adatbázis neve lehet akár “main”, akár “temp”, vagy egy csatolt adatbázis neve.Ha a “CREATE” és a “TABLE” között a “TEMP” vagy “TEMPORARY” kulcsszó szerepel, akkor az új tábla az ideiglenes adatbázisban jön létre.Az adatbázis neve és a TEMP vagy TEMPORARY kulcsszó nem használható.Ha nincs megadva adatbázisnév és a TEMP kulcsszó nincs jelen, akkor a tábla a fő adatbázisban jön létre.
Hiba lép fel, ha olyan adatbázisban próbálunk táblát létrehozni, amely tartalmaz azonos nevű táblát, indexet vagy nézetet, de ha a CREATE TABLE utasítás részeként az “IF NOT EXISTS” záradékot adjuk meg, akkor nem lesz hatása.
Szintaxis:
CREATE TABLE table-name (column-def);
TEMPORARY – a táblázatot kívánság szerint ideiglenesnek lehet deklarálni.
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. Itt lásd alább-
sqlite> create table TEMPORARY company( ...> com_id text(4), ...> com_name text(15));Error: near "company": syntax error
Másolat készítése egy meglévő tábláról a fő adatbázisban
Egy fejlesztőnek nagyon fontos, hogy biztonsági másolatot készítsen az eredeti tábláról, amely működik, és mivel a fejlesztés során nem történt meggondolatlanul vagy figyelmetlenül káros intézkedés. Ezenkívül előfordulhat, hogy meg kell változtatni az oszlopneveket, vagy el kell távolítani egy vagy több oszlopot egy sqlite-táblából, ezért jó gyakorlat, hogy időről időre biztonsági másolatot készítünk a működő táblázatról.
Ha az összes rekordot tartalmazó cégtábláról szeretnénk biztonsági mentést készíteni, akkor a következő utasítás használható
CREATE TABLE backup_company AS SELECT * FROM company ;
Ha csak a cégtábla szerkezetéről szeretnénk biztonsági mentést készíteni, a következő utasítás használható
CREATE TABLE backup_company AS SELECT * FROM company LIMIT 0;
ALTER TABLE
Az ALTER TABLE parancs csak arra használható az SQLite-ban, hogy a felhasználó csak egy táblát nevezzen át, vagy egy meglévő táblához új oszlopot adjon hozzá. Nem lehetséges oszlop átnevezése vagy oszlop eltávolítása, illetve korlátozások hozzáadása vagy eltávolítása egy táblázatból.
A RENAME TO parancs arra szolgál, hogy a table-name által azonosított táblázatot átnevezzük new-table-name-re. Ez a parancs nem használható egy tábla két adatbázison belüli áthelyezésére, csak ugyanazon az adatbázison belüli átnevezésre.
Ha az átnevezendő tábla tartalmaz triggereket vagy indexeket, akkor ezekre nem lesz hatással, és ezek megmaradnak az átnevezés előtti állapotukban. Az átnevezett táblára hivatkozó nézetdefiníciók vagy triggerek által végrehajtott utasítások azonban nem módosulnak automatikusan.
Itt létrehozunk egy új cég táblát.
sqlite> create table company( ...> com_id text(4), ...> com_name text(15));
Új oszlop hozzáadása:
ALTER TABLE company ADD com_add VARCHAR(50);
Az oszlop hozzáadása után lásd a cég tábla szerkezetét.
sqlite> .schemaCREATE TABLE company(com_id text(4),com_name text(15), com_add VARCHAR(50));
Tábla átnevezése:
sqlite> .tablescompany hrdb.departments hrdb.jobshrdb.countries hrdb.employees hrdb.locationshrdb.department hrdb.job_history hrdb.regions
Most nevezzük át a táblát company_new névre. Itt van az alábbi utasítás.
ALTER TABLE company RENAME TO company_new;
Az átnevezés után lásd a táblák alábbi listáját.
sqlite> .tablescompany_new hrdb.departments hrdb.jobshrdb.countries hrdb.employees hrdb.locationshrdb.department hrdb.job_history hrdb.regions
Átnevezés vagy oszlop elhagyása egy táblázatból:
Megjegyzés : A Sqlite csak korlátozottan támogatja az ALTER TABLE-t. Az oszlopok elhagyását és átnevezését az SQLite nem támogatja. Ezért jobb megoldás, ha létrehoz egy új táblát az igényeinek megfelelő változtatásokkal, majd elhagyja az eredeti táblát, és újra átnevezi az éppen létrehozott új táblát az eredeti tábla nevére. Egy dolgot nem szabad elfelejteni: ha egy tábla törlésre kerül, a hozzá tartozó triggerek elvesznek, ezért ezzel tisztában kell lenni. Jó ötlet, hogy mielőtt átnevezné vagy eldobná a táblát, készítsen egy másolatot a tábla létrehozására vonatkozó utasításról. Íme az utasítás, amelyből megkapja az utasítást.
SELECT sql FROM sqlite_master WHERE tbl_name = 'table_name';
DROP TABLE
A DROP TABLE parancs eltávolít egy táblát az adatbázisból.
Szintaxis:
DROP TABLE table_name orDROP TABLE table_name
Paraméterek:
table_name – A meglévő tábla neve, amelyet törölni szeretne. You may drop more than one tables by specifying their names seperated by a comma.
DROP TABLE company_new;
Previous: Data Types
Next: Constraint