71185

Индексы. Ограничения. Создание и удаление

Лабораторная работа

Информатика, кибернетика и программирование

Причина состоит в том, что для поля id нет индекса, поэтому не может быть создано ограничение типа FOREIGN KEY. Попробуйте создать внешний ключ на поле id в следующих случаях (Внимание: перед выполнением каждого нового пункта из данного раздела удалите сначала все сделанные изменения)...

Русский

2014-11-03

52.08 KB

0 чел.

Лабораторные работы по дисциплине «Управление данными»

Лабораторной работе №5

«Индексы. Ограничения. Создание и удаление».

1. Создадим ограничение уникальности .

 ALTER TABLE  smallTbl

 ADD UNIQUE KEY unq_Id(Id);

2. Ограничение первичный ключ

ALTER TABLE  smallTbl

 ADD PRIMARY KEY (id) ;

Удаление ключа

ALTER TABLE smallTbl

DROP PRIMARY KEY;

3. Ограничение внешний  ключ

 ALTER TABLE  smallTbl

 ADD CONSTRAINT fk_d FOREIGN KEY (d)

 REFERENCES smallTbl (id) ;

Удаление ключа

ALTER TABLE  smallTbl

 DROP FOREIGN KEY fk_d ;

4. Простое создание индекса.

ALTER TABLE  smallTbl

 ADD INDEX  (id);

Или 

ALTER TABLE  smallTbl

 ADD KEY ind_id(id);

Если не передавать имя индекса, (как в первом случае), то его именем по умолчанию станет таким же, как и название поле.

Удаление индекса:

ALTER TABLE  smallTbl

 DROP INDEX  id;

Ход работы

1. Создадим таблицу 

CREATE TABLES SmallToInt (

id smallint

sid int);

2. Поменяем тип столбца на int

ALTER TABLE  smallToInt

 MODIFY id int;

3. Создадим еще одно поле в этой таблице

ALTER TABLE  smallToInt

 ADD d int;

4. Попробуем добавить ограничение внешний ключ

ALTER TABLE  smallToInt

 ADD CONSTRAINT fk_d

FOREIGN KEY (d)

REFERENCES smallToInt(id) ;

5. Ошибка. Причина состоит в том, что для поля id нет индекса, поэтому не может быть создано ограничение типа FOREIGN KEY.

6.  Попробуйте создать внешний ключ на поле id в следующих случаях (Внимание: перед выполнением каждого нового пункта из данного раздела удалите сначала все сделанные изменения):

6.1. поле id - PRIMARY KEY 

6.2. составной первичный ключ из полей  id  и sid (Внимание: перед добавлением индекса удалите сначала ограничение внешнего ключа, а затем ограничение PRIMARY KEY)

6.3. у не ключевого поля id создайте индекс (Внимание: перед добавлением индекса удалите сначала ограничение внешнего ключа, а затем ограничение PRIMARY KEY)

6.4. у не индексованного поля id создайте UNIQUE KEY (Внимание: перед добавлением ограничения  UNIQUE KEY удалите сначала ограничение внешнего ключа, а затем индекс).

После каждого запроса отображайте состояние таблицы (SHOW CREATE  TABLE smallToInt;)

7. Попробуйте выполнить следующий запрос

SELECT a.Catalog_name, b.Catalog_parent

FROM  lab3.ListCatalog as a INNER  JOIN

(SELECT  Catalog_parent

   FROM lab3.my_files

      GROUP BY lab3.my_files.Catalog_parent

      ORDER BY lab3.my_files.Catalog_parent

          LIMIT 10 )  as b

ON  a.Catalog_ID=b.Catalog_parent;

Теперь создайте индекс для поля lab3.my_files.Catalog_parent.

После чего перезагрузите сервер и повторите попытку выполнение запроса из этого пункта . Как сильно изменилось время выполнения запроса? Сформулируйте основное назначение индексов.

Номер задания

Комментарий

1

Условие отбора

=1

2

Условие отбора

<2000

3

Условие отбора

<=#30.09.2000# And >=#01.09.2000#

4

Условие отбора

>100 And <200

5

Поле

CheckSum: [экземляров]-([колОст]+[взяли])

Условие отбора

<>0

6

В свойствах запроса

«набор значений»

3

Сортировка

по убыванию

7

В свойствах запроса

«набор значений»

1

Сортировка

По возрастанию

Условие отбора

5 (из за того что ключ внешний)

8

В свойствах запроса

«набор значений»

1

Сортировка

По возрастанию

9

Поле

поступило в ноябре 2001года: Count(*)

Условие отбора

<=#30.11.2001# And >=#01.11.2001#

Это поле на экран не выводим

10

Условие отбора

<=#30.09.2000# And >=#01.09.2000#

Групповая операция

Sum (экземпляров)

Групповая операция

Условие (дата поступления)

Вывод на экран

нет(дата поступления)

11

Условие отбора

>="10" And <="32"

Условие отбора

>"20" And <"30"

12

Поле

Кол-во: Count(*)

Условие отбора

>="23" And <="32"

Условие отбора

>"20" And <"30"

13

Условие отбора

>4*30

14

Условие отбора

>Date()


6

9. SELECT a.Фамилия

FROM Фамилии a, Фамилии b

Where a.Фамилия=b.Фамилия and a.Код>b.Код ;

10.  SELECT Фамилии.Фамилия, Count(Фамилии.Фамилия) AS [Count-Фамилия]

 FROM Фамилии

GROUP BY Фамилии.Фамилия

HAVING (((Count(Фамилии.Фамилия))>1));


 

А также другие работы, которые могут Вас заинтересовать

64938. К вопросу о численности и этническом составе монгольской армии в 1-й четверти XIII века 57.5 KB
  Видимо они руководили соединениями численностью менее 10 тысяч воинов. После этого согласно Тайной истории монголов на реке Халха Тэмуджин произвел пересчет и реорганизацию армии сформировал личную тысячу тургаутов назначил новых офицеров в том числе 6 черби...
64940. «Яса» Чингисхана и ее роль в монгольской правовой системе 105.5 KB
  Свод законов и установлений получил название Великая Яса или просто Яса Чингисхана. Яса Чингисхана санкционированный Чингисханом монгольский свод законов и установлений. Вместе взятые все эти реформы и их воплощение создали основу нового монгольского императорского закона Великой Ясы Чингисхана...
64941. Отечественная историография монгольского завоевания Руси 289.5 KB
  После монгольского завоевания Руси само возникновение Московского княжества его территориальный рост и усиление выдвижение на ведущие позиции в Северо-Восточной Руси объединение под властью московских великих князей значительной части северных русских земель происходили на фоне отношений...
64945. Чингисхан - неожиданный ракурс 1.48 MB
  Основным парадоксальным выводом в историографии евразийцев стал абсолютно новый взгляд на ту роль которую сыграло военно-политическое наследие Чингисхана в русской истории. Правильнее будет однако утверждать что подлинные предпосылки миссии Чингиса заключались не в умах общества а в...