- •Лабораторная работа №5
- •Основные директивы sql-запросов: create table - создать таблицу.
- •Primary key – объявление первичного ключа
- •Alter table - изменить таблицу.
- •Drop table - удалить таблицу.
- •Insert вставить
- •Delete - удалить
- •Select - выбрать.
- •Пример1
- •Пример3
- •Операция join
- •Создание запросов sql
- •Редактирование запросов sql
- •Порядок выполнения работы
Drop table - удалить таблицу.
Общий синтаксис директивы DROP TABLE выглядит так:
DROP TABLE Имя_Таблицы
DROP TABLE - это зарезервированные слова SQL-языка, которые и определяют саму директиву.
Имя_Таблицы - имя той таблицы, которую необходимо удалить.
Директива простая. Но относиться к ней надо осторожно, потому что таблицы удаляются безвозвратно вместе со всеми данными, накопленными в них.
Пример
Если рассматривая примеры 1 и 2 вы создали таблицу Tabl1, то теперь можете ее спокойно удалить:
DROP TABLE Tabl1
Insert вставить
Общий синтаксис директивы INSERT выглядит так:
INSERT INTO Имя_Таблицы ( Имя_Столбца1 [ , Имя_Столбца2 ... , Имя_Столбца-nn ] ) VALUES ( Значение1 [ , Значение2 ... , Значение-nn ] )
INSERT INTO - это зарезервированные слова SQL-языка, которые и определяют саму директиву.
Имя_Таблицы - это имя таблицы, в которую будет добавлена новая запись.
Имя_Столбца1 ... Имя_Столбца-nn - в круглых скобках перечисляется список столбцов, существующих в таблице на момент добавления записи. Список столбцов должен быть обязательно заключен в круглые скобки.
VALUES - это зарезервированное ключевое слово SQL-языка, означающее, что после него в круглых скобках будет перечислен список значений, присваиваемых ранее перечисленным столбцам таблицы в новой записи (VALUES - значения).
Значение1 ... Значение-nn - после ключевого слова VALUES в круглых скобках (обязательно в скобках) перечисляются значения, которые будут присвоены ранее перечисленным полям в новой записи.
Пример
Вначале создадим некую пустую таблицу с различными типами полей:
CREATE TABLE Proba (Name Char(16), Famil Char(24), Vozrast Integer , Ind_Kod Integer)
Выглядеть она будет примерно так:
-
Name
Famil
Vozrast
Ind_Kod
Добавим в таблицу новую запись:
INSERT INTO Proba ( Name , Famil , Vozrast , Ind_Kod ) VALUES ( 'Антон', 'Иванов', 22, 100 )
-
Name
Famil
Vozrast
Ind_Kod
Антон
Иванов
22
100
Добавим еще запись:
INSERT INTO Proba ( Name , Famil ) VALUES ( 'Павел', 'Гущин' )
-
Name
Famil
Vozrast
Ind_Kod
Антон
Иванов
22
100
Павел
Гущин
Или вот таким образом:
INSERT INTO Proba ( Famil , Vozrast , Ind_Kod ) VALUES ('Петров', 44, 102)
-
Name
Famil
Vozrast
Ind_Kod
Антон
Иванов
22
100
Павел
Гущин
Петров
44
102
Вам необязательно перечислять все столбцы таблицы для вставки новой записи. Достаточно указать только те столбцы, которым вы присваиваете значение на момент создания новой записи. На двух предыдущих примерах вы в этом убедились. Следует помнить, что каждому столбцу, указаному в списке столбцов новой записи, должно быть задано присваиваемое значение в списке VALUES. Следующий запрос...
INSERT INTO Proba ( Name , Famil , Vozrast , Ind_Kod ) VALUES ( 'Владимир', 24, 103 )
...не будет исполнен, потому что в списке столбцов перечислены четыре столбца, а в списке VALUES перечислены только три задаваемых значения. Также и запрос...
INSERT INTO Proba ( Famil ) VALUES ( 'Владимир', 'Кузьмин')
...тоже не будет исполнен, потому что в списке столбцов указан один столбец, а в списке VALUES - два значения.
Порядок перечисления самих столбцов в директиве INSERT INTO не имеет значения. Следующий запрос будет исполнен вполне корректно...
INSERT INTO Proba ( Vozrast , Famil , Name , Ind_Kod ) VALUES ( 24, 'Кузьмин', 'Владимир', 103 )
-
Name
Famil
Vozrast
Ind_Kod
Антон
Иванов
22
100
Павел
Гущин
Петров
44
102
Владимир
Кузьмин
24
103
...Но обратите внимание: в каком порядке перечислены столбцы и в каком порядке перечислены присваиваемые значения. Это очень важно. Порядок перечисления столбцов должен соответсвовать порядку перечисления значений. Еще раз. Первому столбцу из списка столбцов присваивается первое значение из списка VALUES, второму столбцу - второе значение и так далее. Если вы попытаетесь выполнить следующий запрос:
INSERT INTO Proba ( Vozrast , Famil , Name , Ind_Kod ) VALUES ( 'Андрей', 'Гусев', 26, 113 )
...то получите сообщение об ошибке. Причина простая. Столбец Vozrast - первый в списке столбцов. Для него при создании таблицы определен тип данных Integer. А первое значение в списке VALUES - строка символов. Несоответствие типов данных столбца и присваиваемого значения обязательно вызовет сообщение о такой ошибке.
Другой немаловажный момент - это Размер_Данных для столбцов, чей Тип_Данных предусматривает это. Например, для столбца Name при создании таблицы мы определили тип Char(16). То есть задали размер данных для столбца в 16 символов. И если попытаться выполнить следующий запрос...
INSERT INTO Proba ( Name ) VALUES ( 'Константин Константинович' )
...то задаваемое для столбца Name значение будет обрезано до длины в 16 символов.
-
Name
Famil
Vozrast
Ind_Kod
Антон
Иванов
22
100
Павел
Гущин
Петров
44
102
Владимир
Кузьмин
24
103
Константин Конст
Возможен второй синтаксис директивы INSERT:
INSERT INTO Имя_Таблицы VALUES ( Значение1 [ , Значение2 ... , Значение-nn ] )
В этой синтаксической форме пропускается список столбцов и сразу следует список значений. При этом интерпретатор SQL-языка на SQL-сервере самостоятельно анализирует таблицу, в которую добавляется запись, и неявным образом подставляет в полученный запрос полный список столбцов таблицы. Список столбцов таблицы формируется в порядке их определения. Так, в отношении нашей таблицы Proba неявным образом будет сформирован следующий полный список столбцов: (Name , Famil , Vozrast , Ind_Kod).
Формируя директиву INSERT таким образом в обязательном порядке в списке VALUES необходимо перечислить значения для всех столбцов таблицы. Порядок перечисления значений должен соответствовать порядку определения столбцов таблицы.
Пример
Следующий запрос будет выполнен успешно:
INSERT INTO Proba VALUES ( 'Семен', 'Семенов', 27, 133 )
Name |
Famil |
Vozrast |
Ind_Kod |
Антон |
Иванов |
22 |
100 |
Павел |
Гущин |
|
|
|
Петров |
44 |
102 |
Владимир |
Кузьмин |
24 |
103 |
Константин Конст |
|
|
|
Семен |
Семенов |
27 |
133 |
А вот запрос...
INSERT INTO Proba VALUES ( 'Юрий', 'Зайцев', 33 )
... уже не будет выполнен по той причине, что для полного списка столбцов таблицы (всего 4 столбца) мы определяем в списке VALUES только три значения.
