Структура SQL

Автор работы: Пользователь скрыл имя, 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

Вложенные файлы: 1 файл

Структура SQL.doc

— 227.50 Кб (Скачать файл)

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. Чтобы достичь желаемого результата употребляется предложение ORDER BY , являющееся практически постоянно заключительным предложением в операторе SELECT. При всем при этом в перечне полей имеют все шансы указываться как фамилии полей, но и их порядковые позиции в перечне предложения SELECT. [2С.109]

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

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-мя истинностными  значениями выделяет минимальное  количество данных значений. К  примеру, TRUE AND UNKNOWN станет одинаково UNKNOWN.

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, можно переименовать. Это делает результаты более читабельными, поскольку имена полей в таблицах часто сокращают с целью упрощения набора. Ключевое слово AS, используемое для переименования, согласно стандарту можно и опустить, т.к. оно неявно подразумевается.

Например, запрос:

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 - позволяет принимать  не все записи сразу а по одной (указанной пользователем).

 

 

 

 

 

 

 

 

 

 

 

 

2 Операторы модификации данных

 

Язык манипуляции данными (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'). Теперь мы могли бы написать:

Информация о работе Структура SQL