SQLite
 sql >> база данни >  >> RDS >> SQLite

ТАБЛИЦА ЗА ПРОМЕНЯВАНЕ НА SQLite

Резюме :в този урок ще научите как да използвате SQLite ALTER TABLE оператор за промяна на структурата на съществуваща таблица.

За разлика от стандартния SQL и други системи за бази данни, SQLite поддържа много ограничена функционалност на ALTER TABLE изявление.

С помощта на SQLite ALTER TABLE изявление, можете да извършите две действия:

  1. Преименувайте таблица.
  2. Добавете нова колона към таблица.
  3. Преименувайте колона (добавено, поддържано във версия 3.20.0)

Използване на SQLite ALTER TABLE за преименуване на таблица

За да преименувате таблица, използвате следния ALTER TABLE RENAME TO изявление:

ALTER TABLE existing_table
RENAME TO new_table;Code language: SQL (Structured Query Language) (sql)

Това са важни точки, които трябва да знаете, преди да преименувате таблица:

  • ALTER TABLE само преименува таблица в база данни. Не можете да го използвате за преместване на таблицата между прикачените бази данни.
  • Обектите на базата данни, като индекси и тригери, свързани с таблицата, ще бъдат свързани с новата таблица.
  • Ако таблица се препраща от изгледи или изрази в тригери, трябва ръчно да промените дефиницията на изгледите и задействанията.

Да вземем пример за преименуване на таблица.

Първо създайте таблица с име devices който има три колони:name, model , serial; и поставете нов ред в devices таблица.

CREATE TABLE devices (
   name TEXT NOT NULL,
   model TEXT NOT NULL,
   Serial INTEGER NOT NULL UNIQUE
);

INSERT INTO devices (name, model, serial)
VALUES('HP ZBook 17 G3 Mobile Workstation','ZBook','SN-2015');Code language: SQL (Structured Query Language) (sql)

Опитайте го

Второ, използвайте ALTER TABLE RENAME TO изявление за промяна на devices таблица към equipment таблица, както следва:

ALTER TABLE devices
RENAME TO equipment;Code language: SQL (Structured Query Language) (sql)

Опитайте го

Трето, потърсете данни от equipment таблица, за да проверите RENAME операция.

SELECT
	name,
	model,
	serial
FROM
	equipment;Code language: SQL (Structured Query Language) (sql)

Опитайте го

Използване на SQLite ALTER TABLE за добавяне на нова колона към таблица

Можете да използвате SQLite ALTER TABLE изявление за добавяне на нова колона към съществуваща таблица. В този сценарий SQLite добавя новата колона в края на съществуващия списък с колони.

Следното илюстрира синтаксиса на ALTER TABLE ADD COLUMN изявление:

ALTER TABLE table_name
ADD COLUMN column_definition;Code language: SQL (Structured Query Language) (sql)

Има някои ограничения за новата колона:

  • Новата колона не може да има UNIQUE или PRIMARY KEY ограничение.
  • Ако новата колона има NOT NULL ограничение, трябва да посочите стойност по подразбиране за колоната, различна от NULL стойност.
  • Новата колона не може да има по подразбиране CURRENT_TIMESTAMP , CURRENT_DATE и CURRENT_TIME , или израз.
  • Ако новата колона е външен ключ и проверката за ограничаване на външния ключ е активирана, новата колона трябва да приеме стойност по подразбиране NULL .

Например, можете да добавите нова колона с име location към equipment таблица:

ALTER TABLE equipment 
ADD COLUMN location text;Code language: SQL (Structured Query Language) (sql)

Опитайте го

Използване на SQLite ALTER TABLE за преименуване на колона

SQLite добави поддръжката за преименуване на колона с помощта на ALTER TABLE RENAME COLUMN изявление във версия 3.20.0

Следното показва синтаксиса на ALTER TABLE RENAME COLUMN изявление:

ALTER TABLE table_name
RENAME COLUMN current_name TO new_name;

За повече информация как да преименувате колона, вижте урока за преименуване на колона.

Използване на SQLite ALTER TABLE за други действия

Ако искате да извършите други действия, например пускане на колона, използвайте следните стъпки:

Следният скрипт илюстрира стъпките по-горе:

-- disable foreign key constraint check
PRAGMA foreign_keys=off;

-- start a transaction
BEGIN TRANSACTION;

-- Here you can drop column
CREATE TABLE IF NOT EXISTS new_table( 
   column_definition,
   ...
);
-- copy data from the table to the new_table
INSERT INTO new_table(column_list)
SELECT column_list
FROM table;

-- drop the table
DROP TABLE table;

-- rename the new_table to the table
ALTER TABLE new_table RENAME TO table; 

-- commit the transaction
COMMIT;

-- enable foreign key constraint check
PRAGMA foreign_keys=on;Code language: SQL (Structured Query Language) (sql)

SQLite ALTER TABLE DROP COLUMN пример

SQLite не поддържа ALTER TABLE DROP COLUMN изявление. За да пуснете колона, трябва да използвате стъпките по-горе.

Следният скрипт създава две таблици users и favorites и вмъкнете данни в тези таблици:

CREATE TABLE users(
	UserId INTEGER PRIMARY KEY,
	FirstName TEXT NOT NULL,
	LastName TEXT NOT NULL,
	Email TEXT NOT NULL,
	Phone TEXT NOT NULL
);

CREATE TABLE favorites(
	UserId INTEGER,
	PlaylistId INTEGER,
	FOREIGN KEY(UserId) REFERENCES users(UserId),
	FOREIGN KEY(PlaylistId) REFERENCES playlists(PlaylistId)
);

INSERT INTO users(FirstName, LastName, Email, Phone)
VALUES('John','Doe','[email protected]','408-234-3456');

INSERT INTO favorites(UserId, PlaylistId)
VALUES(1,1);Code language: SQL (Structured Query Language) (sql)

Следното изявление връща данни от users таблица:

SELECT * FROM users;Code language: SQL (Structured Query Language) (sql)

И следното изявление връща данните от favorites таблица:

SELECT * FROM favorites;Code language: SQL (Structured Query Language) (sql)

Да предположим, че искате да премахнете колоната phone на users таблица.

Първо, деактивирайте проверката за ограничаване на външния ключ:

PRAGMA foreign_keys=off;

Второ, започнете нова транзакция:

BEGIN TRANSACTION;Code language: SQL (Structured Query Language) (sql)

Трето, създайте нова таблица, която да съхранява данни на users таблица с изключение на phone колона:

CREATE TABLE IF NOT EXISTS persons (
	UserId INTEGER PRIMARY KEY,
	FirstName TEXT NOT NULL,
	LastName TEXT NOT NULL,
	Email TEXT NOT NULL
);Code language: SQL (Structured Query Language) (sql)

Четвърто, копирайте данни от users до persons таблица:

INSERT INTO persons(UserId, FirstName, LastName, Email)
SELECT UserId, FirstName, LastName, Email 
FROM users;
Code language: SQL (Structured Query Language) (sql)

Пето, махнете users таблица:

DROP TABLE users;Code language: SQL (Structured Query Language) (sql)

Шесто, преименувайте persons таблица за users таблица:

ALTER TABLE persons RENAME TO users;Code language: SQL (Structured Query Language) (sql)

Седмо, извършете транзакцията:

COMMIT;Code language: SQL (Structured Query Language) (sql)

Осмо, активирайте проверката за ограничение на външния ключ:

PRAGMA foreign_keys=on;Code language: SQL (Structured Query Language) (sql)

Ето users таблица след пускане на phone колона:

SELECT * FROM users;Code language: SQL (Structured Query Language) (sql)

Резюме

  • Използвайте ALTER TABLE оператор за промяна на структурата на съществуваща таблица.
  • Използвайте ALTER TABLE table_name RENAME TO new_name оператор за преименуване на таблица.
  • Използвайте ALTER TABLE table_name ADD COLUMN column_definition оператор за добавяне на колона към таблица.
  • Използвайте ALTER TABLE table_name RENAME COLUMN current_name TO new_name за преименуване на колона.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Относно SQLite

  2. Как да използвате ROW_NUMBER в sqlite

  3. Как да извлечем изображение от база данни на SQLite?

  4. Android - По-добър подход при зареждане на изображения от SD КАРТА

  5. Добавете колона към съществуваща таблица в SQLite