Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие.doc
Скачиваний:
57
Добавлен:
14.05.2015
Размер:
1.51 Mб
Скачать

6. ОператорUpdate

Оператор UPDATE используется для обновления значе­ний столбцов в существующих строках таблицы. В операторе нужно указать обновляемую таблицу и столбцы, подлежащие обновлению, а также новые значения, присваиваемые этим столбцам, и критерии отбора модифицируемых строк.

Компоненты оператора UPDATE

UPDATE

Задает таблицу, подлежащую обновлению

SET

Задает обновляемые столбцы и их новые значения

FROM

Задает таблицы, включаемые в оператор UPDATE

WHERE

Задает критерий для определения, в каких строках должны быть модифицированы столбцы

Примеры:

1) Использование оператора UPDATE для присвоения столбцам фиксированных значений:

UPDATE newtitles

SET procdate=’1/1/1997’

WHERE procdate=NULL

2) Обновление столбцов с использованием значений существующих столбцов. В таблице titles требуется увеличить цену каждой книги на 10% от текущей цены:

UPDATE titles

SET price=price*10

7. ОператорDelete

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

Компоненты оператора DELETE:

DELETEFROM

Задает таблицу, из которой удаляются строки

WHERE

Задает критерий для определения критерия удаляемых строк

Примеры:

1) Использование оператора DELETE для удаления оп­ределенных строк таблицы: (удалить только те строки, в кото­рых идентификационный номер равен MC2222)

DELETE FROM titles

WHERE title_id=’MC2222’

2) Удалить все названия из таблицы titles, которые имеют автора:

DELETE FROM titles

WHERE title_id NOT IN

(SELECT title_id FROM titleauthor)

8. ОператорCreatetable

Оператор CREATETABLEпозволят создать в БД новую таблицу. Сама БД должна быть уже создана и подключена к системе администратором БД.

Компоненты оператора:

CREATETABLE– указывает имя создаваемой таблицы;

(список столбцов) – задает столбцы и их атрибуты.

Примеры:

1) Создание таблицы authors:

CREATE TABLE authors

(au_id INT NOT NULL PRIMARY KEY,

au_lname VARCHAR(40),

au_fname VARCHAR(20),

phone CHAR(12),

address VARCHAR(40),

city VARCHAR(20),

state CHAR(2),

zip CHAR(5),

contract BIT NOT NULL

2) Создание таблицы titleauthor:

CREATE TABLE titleauthor

(au_id INT NOT NULL FOREIGN KEY

REFERENCES authors(au_id),

title_id INT NOT NULL FOREIGN KEY

REFERENCES titles(title_id),

CONSTRAINT at PRIMARY KEY (au_id, title_id),

au_ord INT,

royaltyper money)

В SQLServer2000 можно выбирать таблицы из различных баз данных:

FROM <имя БД>.<имя владельца>.<имя таблицы>

Пример:

SELECT*

FROM pubs.dbo.Authors

В масках оператора LIKEвTransactSQLможно использовать сим­волы:

1) “%”- любые символы в любом количестве.

Пример:

SELECT*

FROM Authors

WHERE an_fname LIKE “Б%”

2) “-” (подчеркивание) - один любой символ, напри­мер маска

“_ _4_ _ _ _” означает 6 символов, третий из которых 4.

3) “[ ]” - диапазон значений, например, [Д-Н]% озна­чает строки, начинающиеся с букв между Д и Н.

4) “^” (каретка) - означает диапазон значений, кото­рые не должны содержаться в считываемых строках, напри­мер [^Д-Н]% означает те строки, которые начинаются с лю­бой буквы, кроме тех, что находятся между Д и Н.

Предложение COMPUTE BY в инструкции SELECT можно использовать с агрегатными функциями SUM(), AVG(), MIN(), MAX(),COUNT(). Оно генерирует итоговые значения, отображаемые как итоговые дополнительные строки. Предложе­ние COMPUTE удобно для получения итоговых значений в группах и для вычислений в каждой группе с помощью разнооб­разных функций.

Пример:

SELECT pub_id, type, title_id

FROM Titles

ORDER BY pub_id, type

COMPUTE COUNT(title_id) BY pub_id, type

COMPUTE COUNT(title_id) BY pub_id

Получим значения строк, итоги по группам и подгруппам.

Пример использования UNION:

Пусть цена книг до 7руб. снижается на 20%, от 7 руб. до 15 руб. – на 10%, более 15 руб. - на 30%.

SELECT ‘на 20%’, title, price, price*0.80

FROM Titles

WHERE price<7.00

UNION

SELECT ‘на 10%’, title, price, price*0.90

FROM Titles

WHERE price Between 7.00 AND 15.00

UNION

SELECT ‘на 30%’, title, price, price*0.70

FROM Titles

WHERE price.>15.00

Рассмотрим использование в подзапросах ключевых слов ANY и ALL.

Условие больше, чем ALL означает “больше каждого”, т.е. больше наибольшего, например, >ALL(1,2,3) означает “больше 3”. Условие больше, чем ANY означает – больше, чем наименьшее, т.е. >ANY(1,2,3) оз­начает “больше 1”.

Примеры:

1) Аванс за какие книги превышает наибольший аванс, выплаченный издательством “Орион”:

SELECT title

FROM Titles

WHERE advance> ALL

(SELECT advance

FROM Publishers, Titles

WHERE Publishers.pub_id= Titles.pub_id AND

pub_name=’Орион’)

2) если ALL заменить на ANY, то будут найдены книги, за которые выплачен аванс, превышающий минимальный аванс для издательства “Орион”.

Ключевое слово EXISTS в предложении WHERE вы­полняет проверку на существование данных, удовлетворяющих критериям соответствующего подзапроса. Если подзапрос воз­вращает хотя бы одну строку, то результат EXISTS –“истина”, иначе – “ложь”.

Пример: Вывести названия всех издательств, которые вы­пускают книги по бизнесу:

SELECT DISTINCT pub_name

FROM Publishers

WHERE EXISTS

(SELECT*

FROM Titles

WHERE pub_id= Publishers.pub_id AND type=’ бизнес’).