Автор работы: Пользователь скрыл имя, 13 Февраля 2013 в 00:30, курсовая работа
Всякую текстуру этих разрешено изменить в элементарную двумерную таблицу. Главная мысль реляционного расклада состоит в том, чтоб доставить свободную текстуру этих в облике обычный двумерной таблицы либо, как говорят, восстановить текстуру. И как последствие появилась надобность применения всепригодного языка для доступа и управления данными в разных базах этих. Таковым языком стал SQL.
Основные данные о работе……………………………………………………….1
Содержание………………………………………………………………………..2
Введение…………………………………………………………………………..3
1 SQL…………………………………………………………………......………..5
1.1 Таблицы SQL ………………………………………………………………….7
1.2 Структура языка SQL…………………………………………………………7
1.3 Структура запросов SQL……………………………………………………..9
2 Операторы модификации данных …………………………………………….17
2.1 Транзакции в SQL…………………………………………………...……….25
2.2 Защита данных……………………………………………………………….26
2.3 Обработка ошибок…………………………………………………………...28
Заключение……………………………………………………………………….29
Глоссарий………………………………………………………………………...31
Список использованных источников…………………………………………...32
SELECT price, speed, hd, ram, cd, model, code
FROM Pc;
В таблице 1 приводится результат выполнения этого запроса.
Таблица 1 – Запрос SELECT
price |
speed |
hd |
ram |
cd |
model |
code |
600.0 |
500 |
5 |
64 |
12x |
1232 |
1 |
850.0 |
750 |
14 |
128 |
40x |
1121 |
2 |
600.0 |
500 |
5 |
64 |
12x |
1233 |
3 |
850.0 |
600 |
14 |
128 |
40x |
1121 |
4 |
850.0 |
600 |
8 |
128 |
40x |
1121 |
5 |
950.0 |
750 |
20 |
128 |
50x |
1233 |
6 |
400.0 |
500 |
10 |
32 |
12x |
1232 |
7 |
350.0 |
450 |
8 |
64 |
24x |
1232 |
8 |
350.0 |
450 |
10 |
32 |
24x |
1232 |
9 |
350.0 |
500 |
10 |
32 |
12x |
1260 |
10 |
980.0 |
900 |
40 |
128 |
40x |
1233 |
11 |
Вертикальную проекцию таблицы РC можнож обрести, когда перечислить лишь требуемые поля. К примеру, дабы обрести информацию исключительно о скорости процессора и размере своевременной памяти PC, идет сделать запрос:
SELECT speed, ram FROM PC;
который возвратит последующие эти:
Идет отметить, собственно вертикальная подборка сможет содержать дубликаты строчек в том случае, ежели она не имеет вероятного ключа, несомненно характеризующего запись. В таблице PC возможным ключом считается поле code, которое подобрано в виде изначального ключа таблицы. Потому что данное поле отсутствует в запросе, в приведенном повыше результирующем комплекте наличествуют дубликаты строчек (к примеру, строчки 1 и 3). В случае если потребуется обрести неповторимые строчки (заявим, нас интересуют исключительно разные композиции скорости процессора и размера памяти, но не данные всех своих PC), то применяют ключевое слово DISTINCT:
SELECT DISTINCT speed, ram FROM Pc;
что даст такой результат:
Таблица 3 – 1-й результат запроса SELECT DISTINCT speed
speed |
ram |
450 |
32 |
450 |
64 |
500 |
32 |
500 |
64 |
600 |
128 |
750 |
128 |
900 |
128 |
Кроме DISTINCT имеет возможность применяться и еще ключевое слово ALL (все строчки), которое воспринимается по умолчанию.
Чтоб упорядочить строчки
Так в случае если потребуется упорядочить результирующий набор по размеру своевременной памяти в норме убывания, можнож записать:
SELECT DISTINCT speed, ram
FROM Pc
ORDER BY ram DESC
или
SELECT DISTINCT speed, ram
FROM Pc
ORDER BY 2 DESC
Результат, приведенный ниже, будет одним и тем же.
Таблица 4 – 2-й результат запроса SELECT DISTINCT speed
speed |
ram |
600 |
128 |
750 |
128 |
900 |
128 |
450 |
64 |
500 |
64 |
450 |
32 |
500 |
32 |
Сортировку можнож проводить по возрастанию (параметр ASC воспринимается по умолчанию) либо по убыванию (параметр DESC). Сортировка по 2 полям:
SELECT DISTINCT speed, ram
FROM Pc
ORDER BY ram DESC, speed DESC
Горизонтальную подборку продает предложение WHERE , которое записывается опосля предложения FROM. При всем этом в результирующий набор попадут исключительно те строчки из источника записей, для любой из которых значение предиката одинаково TRUE. Т.е. предикат проверяется для любой записи.
Предикаты являют из себя выражения, принимающие истинностное значение. Им предоставляется возможность являть из себя как одно выражение, но и всякую комбинацию из нелимитированного численности выражений, возведенную при помощи булевых операторов AND, OR или же NOT. Помимо всего этого, в данных композициях имеет возможность употребляться SQL-оператор IS, и еще круглые скобки для конкретизации около исполнения операций [8.С.194]
Предикат в языке SQL сможет воспринимать одно из 3 значений TRUE (правда), FALSE (обман) либо UNKNOWN (безызвестно). Исключение сочиняют последующие предикаты: NULL (недоступность ценности), EXISTS (существование), UNIQUE (неповторимость) и MATCH (совпадение), которые не в состоянии брать на себя значение UNKNOWN.
Верховодила комбинирования всех 3 истинностных значений проще уяснить, обозначив TRUE как 1, FALSE как 0 и UNKNOWN как 1/2 (где то меж подлинным и неправильным).
AND с 2-мя истинностными
значениями выделяет
OR с 2-мя истинностными значениями выдает максимально данных значений. К примеру, FALSE OR UNKNOWN станет одинаково UNKNOWN.
Отрицание истинностного значения равно 1 минус данное истинностное значение. Например, NOT UNKNOWN будет равно UNKNOWN.
Помимо этого используются предикаты сравнения.
Предикат сравнения
Данные типа NUMERIC (числа) сравниваются в соответствии с их алгебраическим значением.
Данные типа CHARACTER STRING (символьные строки) сравниваются в соответствии с их алфавитной последовательностью. Если a1a2…an и b1b2…bn - две последовательности символов, то первая "меньше" второй, если а1<b1, или а1=b1 и а2<b2 и т.д. Считается также, что а1а2…аn<b1b2…bm, если n<m и а1а2…аn=b1b2…bn, т.е. если первая строка является префиксом второй. Например, 'folder'<'for', т.к. первые две буквы этих строк совпадают, а третья буква строки 'folder' предшествует третьей букве строки 'for'. Также справедливо неравенство 'bar' < 'barber', поскольку первая строка является префиксом второй.
Данные типа DATETIME (дата/время) сравниваются в хронологическом порядке.
Данные типа INTERVAL (временной интервал) преобразуются в соответствующие типы, а затем сравниваются как обычные числовые значения типа NUMERIC.
Пример. Получить информацию о компьютерах, имеющих частоту процессора не менее 500 Мгц и цену ниже $800:
SELECT * FROM Pc
WHERE speed >= 500 AND price < 800;
Существуют так же и другие предикаты, например BETWEEN, IN, LIKE …
Имена столбцов, указанные
в предложении SELECT, можно переименовать.
Это делает результаты более читабельными,
поскольку имена полей в
Например, запрос:
SELECT ram AS Mb, hd Gb
FROM Pc
WHERE cd = '24x';
переименует столбец ram в Mb (мегабайты), а столбец hd в Gb (гигабайты). Этот запрос возвратит объемы оперативной памяти и жесткого диска для тех компьютеров, которые имеют 24-скоростной CD-ROM:
Таблица 7 – Пример запроса SELECT AS
Mb |
Gb |
64 |
8 |
32 |
10 |
Получение итоговых значений:
Все эти функции возвращают единственное значение. При этом функции COUNT, MIN и MAX применимы к любым типам данных, в то время как SUM и AVG используются только для числовых полей. Разница между функцией COUNT(*) и COUNT() состоит в том, что вторая при подсчете не учитывает NULL-значения.
Пример. Найти минимальную и максимальную цену на персональные компьютеры:
SELECT MIN(price) AS Min_price, MAX(price) AS Max_price
FROM PC;
Результатом будет единственная строка, содержащая агрегатные значения:
Таблица 8 – Строка содержащая (агрегатные) значения
Min_price |
Max_price |
350.0 |
980.0 |
Для просмотра данных наиболее удобно использовать совместно значения оператора COUNT - счетчик (позволяет узнать количество записей в запросе), и оператора CURSOR - позволяет принимать не все записи сразу а по одной (указанной пользователем).
Язык манипуляции данными (DML - Data Manipulation Language) помимо оператора SELECT, осуществляющего извлечение информации из базы данных, включает операторы, изменяющие состояние данных. Этими операторами являются:
INSERT Добавление записей (строк) в таблицу БД
UPDATE Обновление данных в столбце таблицы БД
DELETE Удаление записей из таблицы БД
1) Оператор INSERT.
Оператор INSERT вставляет новые строки в таблицу. При этом значения столбцов могут представлять собой литеральные константы либо являться результатом выполнения подзапроса. В первом случае для вставки каждой строки используется отдельный оператор INSERT; во втором случае будет вставлено столько строк, сколько возвращается подзапросом.
Синтаксис оператора:
INSERT INTO <имя таблицы>[(<имя столбца>,...)]
{VALUES (< значение столбца>,…)}
| <выражение запроса>
| {DEFAULT VALUES};
Как видно из представленного синтаксиса, список столбцов не является обязательным. В том случае, если он отсутствует, список вставляемых значений должен быть полный, т.е. обеспечивать значения для всех столбцов таблицы. При этом порядок значений должен соответствовать порядку столбцов, заданному оператором CREATE TABLE для таблицы, в которую вставляются строки. Кроме того, каждое из этих значений должно быть того же типа (или приводиться к нему), что и тип, определенный для соответствующего столбца в операторе CREATE TABLE. [7.С.267]
В качестве примера рассмотрим вставку строки в таблицу Product, созданную следующим оператором CREATE TABLE:
CREATE TABLE [dbo].[product] (
[maker] [char] (1) NOT NULL ,
[model] [varchar] (4) NOT NULL ,
[type] [varchar] (7) NOT NULL )
Пусть требуется добавить в эту таблицу модель ПК 1157 производителя B. Это можно сделать следующим оператором:
INSERT INTO Product VALUES ('B', 1157, 'PC');
Если задать список столбцов, то можно изменить "естественный" порядок их следования:
INSERT INTO Product (type, model, maker) VALUES ('PC', 1157, 'B');
Казалось бы, это совершенно излишняя возможность, которая делает конструкцию только более громоздкой. Однако она становится выигрышной, если столбцы имеют значения по умолчанию. Рассмотрим следующую структуру таблицы:
CREATE TABLE [product_D] (
[maker] [char] (1) NULL ,
[model] [varchar] (4) NULL ,
[type] [varchar] (7) NOT NULL DEFAULT 'PC' )
Отметим, что здесь значения всех столбцов имеют значения по умолчанию (первые два - NULL, а последний столбец - type - 'PC'). Теперь мы могли бы написать: