Мегаобучалка Главная | О нас | Обратная связь


Команды языка манипулирования данными



2019-07-03 232 Обсуждений (0)
Команды языка манипулирования данными 0.00 из 5.00 0 оценок




 

Команды языка манипулирования данными (DML)

Три хорошо известные операции над кортежами:

1. Добавление, реализуется в SQL с помощью команды, INSERT

2. Правка, реализуется в SQL с помощью команды, UPDATE

3. Удаление, реализуется в SQL с помощью команды, DELETE Команда вставки INSERT используется для ввода новых строк в таблицу. Команда UPDATE - предназначена для редактирования данных в таблице. Команда DELETE - удаляет записи в таблице.

Команды языка определения данных (DDL)

Команда ALTER TABLE используется для внесения изменений в описание таблицы, в том числе для: добавления и изменения столбцов, добавления, разрешения, запрета и удаления ограничений.

Команда DROP TABLE используется для удаления таблицы.

Команда вставки - INSERT. Команда языка DML - INSERT используется для ввода новых строк в таблицу. Синтаксис команды:

INSERT INTO {<имя таблицы>[(<имя столбца> [псевдоним] [, …n]] |[<подзапрос>]}

VALUES (<значение>[,…n]);

При реализации команды INSERT необходимо отслеживать, чтобы последовательность данных в предложение VALUES, соответствовала порядку столбцов в таблице.

Заполнение таблицы "Автобаза"

INSERT INTO Autobase(NameAutobase,Address) VALUES('Автобаза №1','г.Воркута, ул.Транспортная,10');

INSERT INTO Autobase(NameAutobase,Address) VALUES('Автобаза №2','г.Воркута, ул.Комсомольская,11');

Заполнение таблицы " Справочник состояний "

INSERT INTO Condition (NameCondition) VALUES ('ТО1');

INSERT INTO Condition (NameCondition) VALUES ('ТО2');

INSERT INTO Condition (NameCondition) VALUES ('СО');

INSERT INTO Condition (NameCondition) VALUES ('ТР');

Заполнение таблицы "Справочник технического обслуживания"

INSERT INTO Technical (NameTechnical,TO1,TO2) VALUES ('легковые', 3500, 14000);

INSERT INTO Technical (NameTechnical, TO1, TO2) VALUES ('автобусы',2600,13000);

INSERT INTO Technical (NameTechnical,TO1,TO2) VALUES ('грузовые, автобусы на базе грузовых автомобилей',2200,11000);          

Заполнение таблицы "Тип марок автотранспорта"

INSERT INTO TypeMarka (NameTypeMarka, IDTechnical) VALUES ('легковая',1);

INSERT INTO TypeMarka (NameTypeMarka, IDTechnical) VALUES ('мазутовоз',3);

INSERT INTO TypeMarka (NameTypeMarka, IDTechnical) VALUES ('молокоцистерна',3);

INSERT INTO TypeMarka (NameTypeMarka,IDTechnical) VALUES ('поливомоечная',3);

INSERT INTO TypeMarka (NameTypeMarka, IDTechnical) VALUES ('самосвал',3);

INSERT INTO TypeMarka (NameTypeMarka, IDTechnical) VALUES ('спец.фургон',3);

Заполнение таблицы " Марка автотранспорта "

INSERT INTO Marka (IDTypeMarka, NameMarka, Capacity) VALUES (1,'ГАЗ-31029',0.00);

INSERT INTO Marka (IDTypeMarka, NameMarka, Capacity) VALUES(1, УАЗ-2206',0.00);

INSERT INTO Marka (IDTypeMarka, NameMarka, Capacity) VALUES (22,'КАВЗуд ЛАЗ',0.00);

Заполнение таблицы " Автотранспорт "

INSERT INTO Transport (IDAutobase, IDMarka, Garage Number, Gos Number) VALUES (1,294, 502,'11ко3813');

INSERT INTO Transport (IDAutobase, IDMarka, GarageNumber, GosNumber) VALUES(1,294, 837,'11ко3866');

INSERT INTO Transport (IDAutobase, IDMarka, Garage Number, GosNumber) VALUES(1,483, 125,'14-51КМО');

INSERT INTO Transport (IDAutobase, IDMarka, GarageNumber, GosNumber) VALUES (1,483, 152,'14-52КМО');

Заполнение таблицы "Состояние единицы"

INSERT INTO Condition Unit (IDCondition, IDTransport, Working, Beginning, Theend) VALUES (2,1,'покраска переднего левого крыла; покраска крыши а/м','2008.09.15','2008.09.16');

INSERT INTO ConditionUnit (IDCondition, IDTransport, Working, Beginning, Theend) VALUES (2,2,'покраска передней левой двери; подготовка к покраске и покраска передней левой стойки','2008.09.15','2008.09.16');

INSERT INTO ConditionUnit (IDCondition, IDTransport, Working, Beginning, Theend) VALUES (2,3,'чистка хромированных деталей','2008.09.15','2008.09.16');


Запросы к базе данных

 

Команда SELECT позволяет реализовывать все операторы реляционной алгебры над отношениями (таблицами) базы данных. Обязательными предложениями команды SELECT являются предложения SELECT и FROM. В самой простой форме, команда SELECT используется для того, чтобы извлечь информацию из таблицы. Не обязательно использовать все предложения команды, но обязательно соблюдать их порядок следования, то есть предложение ORDER BY всегда завершает команду SELECT, а предложение HAVING всегда стоит после GROUP BY, которое, в свою очередь, не может предшествовать предложению WHERE и т.п.

Синтаксис команды SELECT:

SELECT [DISTINCT] *|<столбец> [<псевдоним>] [,<групповая функция>] [,…n]

FROM <таблица>[, …n]| (<подзапрос>)

[WHERE <условие>]

[GROUP BY<выражение группировки]

[HAVING <условие отбора группы>]

[ORDER BY < столбец >[,…n]]

Команда SELECT позволяет извлечь определенную информацию из таблицы. Например, просмотреть содержимое одного или нескольких столбцов, присвоив столбцам вывода имена, отличные от имен атрибутов в таблице, но более информативные. Чтобы вывести содержание всех столбцов, можно заменить их перечисление знаком *. В этом случае столбцы будут выведены в том порядке, в котором они следуют в таблице. Если вы хотите изменить порядок, то придется перечислить имена столбцов в нужном порядке.

Предложение FROM используется для указания перечня таблиц, используемых в запросе и условия их соединения.

Выбор всех автобаз

Select * from AutoBase

Выбор Гаражного номера, Госномера из таблицы "Автотранспорт", Имя марки из таблицы "Марка автотранспорта", Тип марки из таблицы "Тип марки автотранспорта"

Select T.IDTransport, T.GarageNumber[Гар.№], TM.NameTypeMarka+' '+M.NameMarka+' '+T.GosNumber[Тип марки, Имя марки, Гос.номер] from Transport T INNER JOIN Marka M ON T.IDmarka=M.IDmarka INNER JOIN TypeMarka TM ON M.IDTypeMarka=TM.IDTypeMarka where (T.IDAutobase=:IDAutoBase) ORDER BY T.GarageNumber;

Выбор Даты постановки в ремонт, Дата снятия с ремонта, Вид работ

Select LTrim(Str(Day(Beginning)))+'.'+LTrim(Str(Month(Beginning)))+'.' +LTrim(Str(Year(Beginning)))[Дата пост.],LTrim(Str(Day(Theend)))+'.' +LTrim(Str(Month(Theend)))+'.'+LTrim(Str(Year(Theend)))[Дата вых.], Working[Вид работ] from ConditionUnit where (IDTransport=:IDTransport);

Согласно приведенным выше запросам имеем некоторые выходные данные:

 


Хранимые процедуры

 

Хранимая процедура ещё один объект базы данных, которая представляет собой набор откомпилированных операторов SQL. Хранимая процедура не содержит информации из базы данных, но содержит ссылки на базовые таблицы, где хранятся нужные данные. Хранимые процедуры позволяют выделять какие-либо правила в отдельную структуру, которые затем могут использоваться многими приложениями.

В хранимые процедуры вводятся аргументы, возвращаются результирующие наборы данных. Если хранимая процедура не является триггером, то она вызывается приложением явно.

При создании процедур необходимо придерживаться следующих правил: во время выполнения хранимой процедуры все объекты, на которые она ссылается, должны присутствовать в базе данных. В хранимых процедурах нельзя применять операторы создания объектов: CREATE PROCEDURE, CREATE TRIGGER, CREATE VIEW.

Синтаксис команды:

CREATE PROC[EDURE ] имя_процедуры [; число ]

[ { @параметр тип_данных }

[ VARYING ] [ = значение_по_умолчанию ] [ OUTPUT ] ] [,...n ]

[ WITH { RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION } ]

AS оператор_SQL [ ...n ]

OUTPUT – означает, что соответствующий параметр может быть использован для возвращения данных из хранимой процедуры.

VARYING – определяет, что выходным параметром будет результирующее множество (используется совместно с параметром OUTPUT).

RECOMPILE – предписывает выполнять перекомпиляцию кода процедуры при ее запуске.

ENCRUPTION – предписывает серверу выполнить кодирование процедуры, сделав ее содержимое недоступным для пользователя. Автору процедуры при этом надо позаботиться о наличии у него исходного текста процедуры.

AS – индикатор начала собственно кода процедуры.

Вызов процедуры (исключение составляют триггеры) осуществляется по команде EXEC.

Синтаксис команды EXEC

EXEC <Имя процедуры> [<список параметров>]

- Создадим хранимую процедуру для таблицы "Марка автотранспорта"

CREATE PROC PMarkaINSERTFirst

@IDTypeMarka INT,

@NameMarka VARCHAR (15),

@Capacity FLOAT

AS

INSERT INTO Marka(IDTypeMarka,NameMarka,Capacity)VALUES( @IDTypeMarka, @NameMarka,@Capacity);

Теперь заполнение таблицы "Марка автотранспорта" через хранимые процедуры будет иметь следующий вид:

EXEC PMarkaINSERTFirst 1,'ГАЗ-31029',0.00

EXEC PMarkaINSERTFirst 22,'КАВЗ,ПАЗ',0.00

EXEC PMarkaINSERTFirst 22,'КАВЗуд ЛАЗ',0.00

EXEC PMarkaINSERTFirst 22,'КАВЗуд ЛАЗ',0.00

EXEC PMarkaINSERTFirst 22,'КАВЗ,ПАЗ',0.00

Создание хранимые процедуры для запросов Select

Создание хранимой процедуры для таблицы "Марка автотранспорта"

- Выбор всех автобаз

CREATE PROC PAutoBaseSelect

AS

Select * from AutoBase

Теперь выборка всех автобаз будет иметь следующий вид

Exec PAutoBaseSelect;

Выбор Гаражного номера, Госномера из таблицы "Автотранспорт", Имя марки из таблицы "Марка автотранспорта", Тип марки из таблицы "Тип марки автотранспорта"

CREATE PROC PTransportSelect1

@IDAutoBase INT

AS

Select T.GarageNumber[Гар.№], T.GosNumber[Гос.номер], M.NameMarka[Имя марки], TM.NameTypeMarka[Тип марки] from Transport T INNER JOIN Marka M ON T.IDmarka=M.IDmarka

INNER JOIN TypeMarka TM ON M.IDTypeMarka=TM.IDTypeMarka where (T.IDAutobase=@IDAutoBase);

Теперь выбор Гаражного номера, Госномера из таблицы "Автотранспорт", Имя марки из таблицы "Марка автотранспорта", Тип марки из таблицы "Тип марки автотранспорта" будет иметь следующий вид

Exec PTransportSelect1 1;

Выбор Даты постановки в ремонт, Дата снятия с ремонта, Вид работ

CREATE PROC PConditionUnit1

@IDTransport INT

AS

Select LTrim(Str(Day(Beginning)))+'.'+LTrim(Str(Month(Beginning)))+'.'+LTrim(Str(Year(Beginning)))[Дата пост.],

LTrim(Str(Day(Theend)))+'.'+LTrim(Str(Month(Theend)))+'.'+LTrim(Str(Year(Theend)))[Дата вых.], Working[Вид работ]

from ConditionUnit where (IDTransport=@IDTransport);

Теперь Выбор Даты постановки в ремонт, Дата снятия с ремонта, Вид работ примет следующий вид

Exec PConditionUnit1 1;


Триггеры

 

Триггер – это специальный тип хранимой процедуры, которая автоматически выполняется при возникновении некоторого события (попытке выполнить операции удаления, добавления, редактирования). Как и любой объект базы данных, триггер создается с помощью команды CREATE



2019-07-03 232 Обсуждений (0)
Команды языка манипулирования данными 0.00 из 5.00 0 оценок









Обсуждение в статье: Команды языка манипулирования данными

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы...
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...
Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (232)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)