Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Выдать номера поставщиков поставляющих по крайне мере 1 деталь поставляемую поставщиком S2 .
SELECT distinct НомерПоставищка
FROM SP SPX
WHERE SPX.НомерДетали IN
(SELECT SPY.НомерДетали
FROM SP SPY
WHERE Spy.НомерПоставщика = S2)
(p1,p2)
Выдать номера поставщиков находящихся в том же городе что и поставщик S1
SELECT X.НомерПоставщика
FROM S X
WHERE X.Город =
(SELECT y.Город
FROM S Y
WHERE X.НомерПоставщика = S1)
Коррелированные подзапросы
Внешний подзапрос управляет внутренним.
Выдать фамилии поставщиком поставляющих деталь P2.
SELECT Фамилия
FROM S
WHERE p2 IN
(SELECT НомерДетали
FROM SP
WHERE НомерПоставщика = S.НомерПоставщика)
Выдать номер деталей поставляемых более чем одним поставщиком.
distinct(подавление повторяющихся значений)
SELECT distinct SPx.НомерДетали
FROM SP SPx
WHERE SPx.НомерДетали IN
(SELECT SPyНомерДетали
FROM SP Spy
WHERE Spy.НомерПоставщика <> SPx.НомерПоставщика.
EXIST квантор существования.
Exists (select*from) данное выражение истинно тогда, когда результат вычисления подзапроса представленного с помощью select*from является не пустым множеством,т.е. когда существует какая-либо строка в таблице указанная во фразе from подзапроса, которая удовлетворяет условию where этого подзапроса.
Выдать фамилию поставщиков поставляющих деталь P2
SELECT Фамилия
FROM S
WHERE EXISTS
(SElECT *
FROM SP
WHERE НомерПоставщика =S.НомерПоставщика
AND НомерДетали =p2)
Выдать фамилии поставщиков которые поставляют все виды деталей.
SELECT Фамилия
FROM S
WHERE NOT EXISTS
(SElECT *
FROM P
WHERE NOT EXISTS
(SELECT * FORM SP
WHERE SP.НомерПоставщика=S.НомерПоставщика
AND SP.НомерДетали = p.НомерДетали))
Использование функций в подзапросе
Выдать номера поставщика поле Рейтинг меньше чем максимальный Рейтинг таблицы S
Select НомерПоставщика
FROM S
WHERE Рейтинг <
(SELECT max (Рейтинг)
FROM S)
Выдать номер поставщика, рейтинг и город всех поставщиков у которых Рейтинг > либо = их конкретного Города.
Select НомерПоставщика,Рейтинг,Город
FROM S SX
WHERE Рейтинг >=
(SELECT avg (Рейтинг)
FROM S Sy
WHERE Sy.Город=SX.Город)
UNION объединяемые инструкции таблицы должны быть совместимы по объединению.
1.Должны иметь одинаковое число столбцов.
2.Соотвествующие столбцы должны иметь одинаковые типы.
Любое число предложений SELECT может быть объединено операторами UNION. Избыточные дубликаты исключаются из результатов объединения.
Выдать номера деталей которые имеют весь более 16 футов либо поставляются поставщиком S2.
SELECT НомерДетали
FROM
WHERE Вес =16
UNION
SELECT НомерДетали
FROM SP
WHERE НомерПоставщика=S
Delete может удалить одну и несколько строк из таблицы.
Truncate table удалит всю таблицу.
Удалить сведения о поставщике S1
DELETE FROM S
WHERE НомерПоставщика S1
Удалить сведения о всех поставщиках из Лондона
DELETE FROM S
WHERE Город=Лондон
Удаление с подзапросом.
Удалить все поставки поставщиков из Лондона.
DELETE FROM SP
WHERE Лондон=
(SELECT Город FROM S
WHERE S.НомерПоставщика=SP.НомерПоставки)
Еще один способ реализации:
DELETE FROM SP
FROM SP INNET JOIN S
ON SP.НомерПоставщика = S.НомерПоствщика
WHERE S.Город =Лондон
DELETE FROM S (значит удалятся все строки таблицы S)
SELECT *INTO S_COPY
FROM S
TRUNCATE TABLE S_COPY
UPDATE может вносить несколько измененных полей записей в таблицу.
Перевод веса деталей в граммы. (были в футах)
UPDATE P
SET Вес = Вес*545
UPDATE S
SET Рейтинг = NULL
WHERE НомерПоставщика = SP5
DECLARE @W smallint(тип, короткое целое )
UPDATE S
SET @W = Рейтинг=Рейтинг+10
WHERE НомерПоставщика = S5
PRINT = @W
SELECT *FROM S
WHERE НомерПоставщика = S5
Изменить цвет детали P2 на желтый, увеличить ее вес на 5, и установить значение города «Не определен»
UPDATE SP
SET Количество=0
WHERE Лондон=
(SELECT Город FROM S
WHERE S.НомерПоставщика =SP.НомерПоставщика)
UPDATE P
SET Цвет = Желтый, Вес=Вес+5
Город = NULL
WHERE НомерДетали = P2
Удвойте рейтинг всех поставщиков в Лондоне.
USE AdventureWork1
BEGIN TRANSACTION
SELECT ProductID, Name, List Price
FROM Prodution.Product
WHERE Weight = 2
UPDATE Pruduction.Product
SER ListPrice = 20
WHERE Weight = 2
SELECT ProductID, Name, LIsPrice
FORM Production.Product
WHERE Weight =2
ROLLBACK TRANSACTION
SELECT ProductID, Name, ListPrice
FROM Productoin.Product
INSERT
Вставить новую поставку с номером поставщика S2, номером детали P4, количеством 1000, на дату 30ноября 1995года.
INESRT INTO SP
VALUES (S2,P4, 11/30/95,1000)
Вставить строку о поставщике внеся лишь фамилию и город.
INSERT INTO S(НомерПоставщика, Фамилия, Город)
VALUES ( S6,Merson,Нью-Йорк)
Для каждой поставляемой детали получить ее номер и общий объем поставки. Сохранить результат в базе данных
CREATE TABLE temp
(НомерДетали char (5),ОбъемПоставки smallint)
INSERT INTO temp (НомерДетали, объем поставки)
SELECT НомерДетали, SUM (Количество)
FROM SP
GROUP BY НомерДетали
ADD CONSTRAINT имя файла
PRIMARY [CLUSTERED| NONCLUSTERED]
(столбец[,столбец, ]
ADD CONSTRAINT
CHECK синтаксис проверки
DEFAULT значение по умолчанию
FOR имя столбца
ALTER TABLE
ADD CONSTRAINT PK_S_НомерПоставщика
PRIMARY KEY (НомерПоставщика)
Ограничение проверки используется для ограничения данных принимаемых полем даже если они имеют корректный вид.
ALTER TABLE SP WITH NOCHECK
ADD CONSTRAINT DF_SP_ДатаПоставки
DEFAULT (GET DATE ()+10) FOR ДатаПоставки
(НИАСИЛИЛ)
Представление это виртуальная таблица, или хранимый запрос SELECT.
Использование представления
CREATE VIEW V1
AS
SELECT НомерПоставщика, Фамилия, Рейтинг
FROM S
WHERE Рейтинг LIKE 2%
Select * from v1
Create view v2
As
Select top 100 percent
НомерПоставщика, Фамилия, Город.
FROM
Where Город=Лондон
Order by = Фамилии
Использование представлений для объединения таблиц
Create view v3
As
Select SP.НомерПоставщика, S.Фамилия, S.Город, S.Рейтинг, SP.НомерДетали, SP.количество
FROM SP INEER JION S
ON SP.Номер Поставщика =S.НомерПоставщика
Модификация данных через представление.
Ограничения:
Create view v4
As
Select
НомерПоставщика, Фамилия, город, Рейтинг
FROM S
INSERT into v4
Valves (s7,Jons,Amenc,10)
Соединение таблицы с представлением
Create view v5
As
Select SP.НомерПоставщика, V4.Фамилия, V4.Город, V4.Рейтинг, SP.НомерДетали, SP.количество
V4.НомерПоставщика AS НП, SP.ДатаПоставки
FROM SP INEER JION v4
ON SP.Номер Поставщика =V4.НомерПоставщика
Индексированное представление
Первый индекс должен быть уникальным и кластеризованным(поддерживается физич.упорядочивание данных,)
Представление должно быть определено параметром
Запрещает изменять структуру базовой таблицы (SCHEMABIDING)
Представление не может ссылать на другое представление
Базовые таблицы должны находиться в той же базе данных и в той же схеме что и представление (иметь того же владельца).
Схема для обеспечение безопасности.
Ссылка на таблицы и определенные пользователям функции в представлении должны выполняться с помощью составных имен СХЕМА.ОБЪЕКТ
Create viw v6 with schemabinding
As
Select НомерДетали,Название,Вес, Цвет, Город,
From dbo.p
Create unique clustered index
IX_v6_НомерДетали_ON_dbo.V6(НомерДетали)
Преимущества:
1.Сосредоточенность пользователя на данных
2.Маскировка сложности базы данных
3.Упращение управления пользовательскими разрешениями (обеспечение безопасности)
4.Повышение производительности
5.Организация данных для экспорта в другие приложения.
Хранимая процедура - именованная коллекция инструкции транзакт SQL
Alter procedure VB_SP
@НПост char (5)
AS
SELECT НомерПоставщика, НомерДетали, ДатаПоставки, Количество
From sp
Where НомерПоставщика = @НПост
1)Execute vb_sp s1
2)Execute vb_sp @НПост=S1
Alter table s
Add bankkredit money null
Введем входной параметр
Create procedure adds
@НП char (5),
@BankBalance money output
As
Select @bankBalance = BankKredit
Where Номер.Поставщика = @НП
IF @@ Rowcount =1
RETURN
SET @ BankBalance = 0
Return 1
Declare @RetStatus int
Declare @ BK money
Execute @ RetStatus =ADDS s3,@bk output