Курс по SQL и основам реляцион.. - Кирилл Антонов

          123/147 Видео
132
SQL команды. Импорт баз данных SQLite

Базы данных для начинающих Создание уникальных индексов в базе данных: UNIQUE INDEX Переиндексация

5 Просмотры· 06/18/20
Кирилл Антонов
Кирилл Антонов
Подписчики
0

Рубрика SQLite на сайте: http://zametkinapolyah.ru/zametki-o-mysql/sqlite/
Текстовая версия: http://zametkinapolyah.ru/zame....tki-o-mysql/chast-11
Паблик блога в ВК: https://vk.com/zametkinapolyah
Тематическая группа в ВК: https://vk.com/zametki_bd

Помощь проекту:
WMR: R288272666982
WMZ: Z293550531456
Яндекс.Деньги: 410011531129223


-- Использование индексов в базах данных SQLite. Уникальные индексы. Переиндексация таблиц.


-- Можем убедиться в том, что индекс для таблицы table1 действительно существует и в том,
-- что это столбец «а», воспользуемся командой PRAGMA
PRAGMA index_list(users);

-- еще можно так:
.indices
.indices users
SELECT * FROM sqlite_master WHERE type = 'index';


/*
Но SQLite позволяет создавать индексы с ограничение уникальности, давайте создадим индекс в базе данных,
значения которого должны быть уникальными, обратите внимание: индекс не будет являться ключевым атрибутом
таблицы, он будет просто уникальным:
*/


CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
pro TEXT NOT NULL,

sex TEXT NOT NULL,
sal REAL CHECK (sal (знак больше) 15000)
);

CREATE UNIQUE INDEX iXname ON users (name);


INSERT INTO users (name, pro,sex, sal)
VALUES ('Пупкин Матвей', 'Дантист', 'м', 55000.00);

INSERT INTO users (name, pro,sex, sal)
VALUES ('Cумкин Денис', 'Юрист', 'м', 35040.90);

INSERT INTO users (name, pro,sex, sal)
VALUES ('Иван Иванов', 'Младший юрист', 'м', 16000.00);

INSERT INTO users (name, pro,sex, sal)
VALUES ('Ирина Маркова', 'Бухгалтер', 'ж', 31200.10);

INSERT INTO users (name, pro,sex, sal)
VALUES ('Алина Петрова', 'Менеджер продаж', 'ж', 21200.10);

INSERT INTO users (name, pro,sex, sal)
VALUES ('Любовь Михайлова', 'Секретарь', 'ж', 16200.10);

INSERT INTO users (name, pro,sex, sal)
VALUES ('Инна Сидорова', 'Руководитель отдела обслуживания', 'ж', 66200.10);
-- дублирующееся значение
INSERT INTO users (name, pro,sex, sal)
VALUES ('Пупкин Матвей ', 'Дантист', 'м', 55000.00);



/*
В базах данных SQLite нельзя применять к индексу команду ALTER, то есть никаких изменений в структуру
индекса вы внести не сможете. Поэтому для переименования индекса в базах данных SQLite вам необходимо
сперва удалить старый индекс, а затем создать новый.
*/

/*
Но иногда бывает необходимость сделать переиндексацию таблиц.
Переиндексация полезна в том случае, когда изменился порядок сортировки данных в столбце,
который объявлен, как индекс таблицы. Общий синтаксис переиндексации данных в базах данных под
управлением SQLite выглядит так:
*/

REINDEX tblname;
REINDEX table1;
REINDEX table2;
REINDEX table3;
-- допустим и такой вариант
REINDEX indexname1;
REINDEX indexname2;

/*
У нас есть два варианта переиндексации таблиц, если мы указываем имя таблицы, то
SQLite сделает переиндексацию для всех столбцов таблицы, которые указаны, как индекс.
Если мы делаем переиндексацию, указывая имя индекса, то значения последовательность
будет удалена и сформирована заново для конкретного индекса.
*/

Показать больше

 0 Комментарии sort   Сортировать