SQLite Създаване, промяна, пускане на таблица с примери
⚡ Умно обобщение
SQLite Управлението на таблици разчита на три команди за дефиниране на данни: CREATE TABLE за дефиниране на таблица, ALTER TABLE за преименуването ѝ или добавянето и промяната на колони и DROP TABLE за пълното ѝ премахване от базата данни.
Разделите по-долу показват как да създавате таблици, да променяте структурата им и да пускате таблици в SQLite3 с примери, обхващащи командите CREATE TABLE, ALTER TABLE и DROP TABLE.
SQLite Създайте таблица
Синтаксис
По-долу е синтаксисът на оператора CREATE TABLE.
CREATE TABLE table_name( column1 datatype, column1 datatype );
За да създадете таблица, трябва да използвате заявката „CREATE TABLE“, както следва:
CREATE TABLE guru99 ( Id Int, Name Varchar );
В рамките на двете скоби след името на таблицата вие дефинирате колоните на таблиците, всяка колона трябва да има следните свойства:
- Име, името на колоната трябва да е уникално сред колоните на таблицата.
- Тип данни – типът данни на колоната.
- Незадължителни ограничения на колоните, както ще обясним в по-късните раздели на този урок.
SQLite СЪЗДАВАНЕ НА ТАБЛИЦА, АКО НЕ СЪЩЕСТВУВА
Когато даден скрипт се изпълнява повече от веднъж, обикновен оператор CREATE TABLE се проваля, ако таблицата вече съществува, и спира с грешка. SQLite решава това с опционалната клауза IF NOT EXISTS, която създава таблицата само когато тя липсва и не прави нищо, когато тя вече е там.
CREATE TABLE IF NOT EXISTS guru99 ( Id Int, Name Varchar );
Горното твърдение никога не повдига грешката „таблицата вече съществува“, което го прави безопасно да се съхранява в началото на скрипт за настройка или миграция.
Същата идея работи и в обратен ред, когато премахвате таблица. Добавянето на IF EXISTS към DROP TABLE избягва грешка, когато таблицата вече е премахната:
DROP TABLE IF EXISTS guru99;
И двете клаузи са често срещани в автоматизираните скриптове, защото позволяват на един и същ файл да се изпълнява многократно без ръчно почистване между изпълненията.
Падаща маса
За да премахнете таблица, използвайте командата „DROP TABLE“, последвана от името на таблицата, както следва:
DROP TABLE guru99;
Промяна на масата
Можете да използвате командата „ALTER TABLE“, за да преименувате таблица, както следва:
ALTER TABLE guru99 RENAME TO guru100;
За да проверите дали името на таблицата е променено, можете да използвате командата „.tables“, за да покажете списъка с таблици, а името на таблицата трябва да бъде променено сега, както следва:
Както можете да видите, името на таблицата „guru99“ се променя на „guru100“ след командата „alter table“.
SQLite добавяне на колони - Използване на командата ALTER TABLE
Можете също да използвате командата „ALTER TABLE“, за да добавите колони:
ALTER TABLE guru100 ADD COLUMN Age INT;
Това ще промени таблицата „guru100“ и ще добави нова колона „Възраст“ към нея.
Ако не сте видели никакъв резултат, това означава, че командата е била успешна и колоната е била добавена. „Няма резултат“ означава, че курсорът ще бъде позициониран след „sqlite>“ без текст след него, ето така:
Въпреки това, за да проверим дали колоната е добавена, можем да използваме командата „.schema guru100“. Това ще ви даде дефиницията на таблицата и би трябвало да видите новата колона, която току-що добавихме:
SQLite ПРОМЯНА НА ТАБЛИЦА: Преименуване и премахване на колона
Освен добавянето на колона, съвременните версии на SQLite може също да преименувате една колона и да премахнете друга. Преименуването на колона е достъпно от SQLite 3.25 и актуализира името в дефиницията на таблицата, както и във всеки индекс, тригер и изглед, които препращат към колоната.
ALTER TABLE guru100 RENAME COLUMN Name TO FullName;
За да премахнете колона, SQLite 3.35 и по-нови версии поддържат директна клауза DROP COLUMN:
ALTER TABLE guru100 DROP COLUMN Age;
Колона не може да бъде премахната, когато е част от първичен ключ, уникално ограничение или индекс. В по-стари версии SQLite версии, на които липсва DROP COLUMN, класическото решение е да създадете нова таблица с желаните колони, да копирате редовете, да премахнете старата таблица и накрая да преименувате новата.
Как да копирате таблица в SQLite Използване на CREATE TABLE AS SELECT
Понякога се нуждаете от копие на таблица, било то като резервно копие преди рискована промяна или като отправна точка за нова таблица. SQLite изгражда това в една стъпка с CREATE TABLE AS SELECT, което създава нова таблица, чиито колони идват от заявка и я запълва с редовете, върнати от заявката.
CREATE TABLE guru100_backup AS SELECT * FROM guru100;
Новата таблица „guru100_backup“ получава същите колони и всеки ред от „guru100“. За да копирате само някои редове, добавете клауза WHERE към SELECT:
CREATE TABLE known_ages AS SELECT * FROM guru100 WHERE Age IS NOT NULL;
Едно нещо, което трябва да се запомни, е, че CREATE TABLE AS SELECT копира имената на колоните, типовете и данните, но не копира първични ключове, други ограничения или индекси. Трябва сами да ги добавите към новата таблица, ако копието трябва да налага същите правила като оригинала.
SQLite Вмъкване на стойност в таблица
За да вмъкнем стойности в таблица, използваме командата „INSERT INTO“, както следва:
INSERT INTO Tablename(colname1, colname2, ….) VALUES(valu1, value2, ….);
Можете да пропуснете имената на колоните след името на таблицата и да го напишете по следния начин:
INSERT INTO Tablename VALUES(value1, value2, ….);
В такъв случай, когато пропускате имената на колоните от таблиците, броят на вмъкнатите стойности трябва да бъде същият точен брой на колоните в таблицата. След това всяка стойност ще бъде вмъкната в колоната за съответствие. Например за следния оператор за вмъкване:
INSERT INTO guru100 VALUES(1, 'Mike', 25);
Резултатът от това твърдение ще бъде следният:
- Стойността 1 ще бъде вмъкната в колоната „id“.
- Стойността „Майк“ ще бъде вмъкната в колоната „Име“ и
- Стойността 25 ще бъде вмъкната в колоната „Възраст“.
INSERT … DEFAULT VALUES оператор
Можете да попълните таблицата със стойностите по подразбиране за колоните наведнъж, както следва:
INSERT INTO Tablename DEFAULT VALUES;
Ако дадена колона не позволява нито null стойност, нито стойност по подразбиране, ще получите грешка „NOT NULL contrast failed“ за тази колона. Както следва:






