Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Ввод в таблицу значений полей

Поиск

НАЗНАЧЕНИЕ ЯЗЫКА SQL

Первичным становится документ, а программа — это его часть. Цель программиста — не создание программы, а формирование конкретного выходного документа с широким спектром функций. Пользователь работает не с программой, а с документом.

Изменился смысл термина “документ”. Документ рассматривается теперь как объект в объектно-ориентированном программировании (единство данных различного типа и программ, которые их обрабатывают).

Процесс создания документа в среде MS Office называют “офисным программированием” (программированием без программирования). Документ становится “живым”, т. е. с данными, которые в нем зафиксированы, можно работать, их можно сменять, анализировать и т. д. Документ и его программные компоненты объединяются в единое целое — проект, который является частью документа и не существует отдельно от него.

Язык SQL — Structured Query Lanquaqe (структурированный язык запросов) разработан фирмой IBM в начале 70-х гг. Это современное средство для работы с базами данных, которое применяется в среде реляционных баз данных (создание, поиск, изменения, обновления, передачи данных). Язык SQL утвержден Американским национальным институтом стандартов (ANSI) и Международной организацией стандартов (ISO) в качестве официального стандарта для реляционных баз данных и не зависит от специфики компьютера.

СТРУКТУРА КОМАНД ЯЗЫКА SQL

Язык SQL состоит из команд (инструкций). Команды передаются программе, которая управляет работой базы данных, для выполнения конкретных действий. Объектом действия команды SQL может быть как одна таблица, так и группа таблиц. MS Access автоматически создает эквивалентные команды SQL во время создания запроса в режиме Конструктора.

Команды SQL (инструкции, операторы) делят на две группы:

язык определения данных (Data Definition Lanquaqe — DDL):

Create Table — создает новую таблицу; Create Index — создает новый индекс;

Alter Table — дополняет новое поле или индекс в существующую таблицу;

язык манипулирования данными (Data Manipulation Lanquaqe — DML):

Select — запрос к базе данных; запрос возвращает данные в виде набора записей;

Select Into — запрос к базе данных; запрос возвращает данные в виде новой таблицы;

Update — запрос на объединение; запрос изменяет значения полей таблицы;

Insert Into — запрос на добавление в таблицу одной или нескольких записей;

Delete — запрос на удаление записей с одной или нескольких таблиц.

Существуют две формы языка SQL: интерактивная и встроенная. Интерактивный SQL применяется непосредственно в базе данных для выполнения определенных действий над данными. Вводятся определенные команды, после выполнения которых тут же выводятся выходные данные (результат).

Встроенный SQL — это включение команд языка SQL в программы, которые написаны на другом языке программирования, например Pascal. Каждая команда включает в себя соответствующий перечень параметров (средств) для выбора, группировки и упорядочения записей из одной или нескольких таблиц. Любая команда имеет свой формат (синтаксис).

Основные термины

Ключевое слово это инструкция; слово, которое имеет специальное смысловое значение в SQL. В тексте книги ключевые слова выделены прописными буквами.

Команда — это инструкция, которая дается базе данных SQL. Команда состоит из одной или нескольких логически различных частей, называемых предложениями. Предложения начинаются с ключевого слова и кроме него содержат аргументы, например:

WHERE fio = 'Астрожский',

где fio = 'Астрожский' — аргумент; WHERE — ключевое слово.

Объекты это структуры в базе данных (таблицы, запросы, формы и др.), которые именуются и хранятся в памяти.

Соглашения по синтаксису команд:

[ ] — квадратные скобки — часть команды, которую при желании можно опустить;

() — круглые скобки — предшествующее им можно повторить любое количество раз;

< > — слова, заключенные в угловые скобки, — специальные термины, которые объясняются по мере вывода.

Ядром (главной командой) языка SQL является команда SELECT. Эта команда находит таблицу или несколько таблиц в базе данных, которая указана в ее параметрах, выбирает заданные столбцы, выделяет строки в соответствии с условиями отбора, сортирует и группирует строки результата в заданном порядке. Выполнение команды SELECT не изменяет данные в базе данных. Выбираемые столбцы с таблицы не удаляются, из них только извлекаются данные.

Синтаксис (формат) команды SELECT:

SELECT [предикат] { * [таблица.* | [таблица.] поле_1

[AS псевдоним_1] [,[таблица.] поле_2 [AS псевдоним_2] [,...] ]}

FROM выражение [,...] [IN Внешняя_База_данных ]

[WHERE.. условие_Отбора ] [GROUP BY.. список_полей_группировки]

[HAVING условие_Группировки] [ ORDER BY.. вполе_1 [ ASC | DESC ]. [, вполе_2 [ASC | DESC ]]...]

“Предикат” — задает ограничения на возвращаемые записи: ALL — по умолчанию, т. е. без ограничений; DISTINCT — все записи без их дублирования;

“Таблица” — имя таблицы-источника, из которой берутся записи;

“поле_1”, “поле_2”... — имена полей, из которых берутся записи;

“псевдоним_}”, “псевдоним_2”... — имена, которые станут заголовками столбцов вместо исходных названий столбцов в таблице;

“выражение” — имена одной или нескольких таблиц, из которых берутся данные;

“Внешняя_База_Данных” — имя базы данных с таблицами, которые указаны с помощью аргумента “выражение”, если они не находятся в текущей базе данных;

“условие_Отбора” — выражение с условием, которому должны соответствовать записи, включенные в результат исполняемого запроса;

“список_полей_группировки” — имена полей (до 10), которые применяются для группирования записей;

“условие_Группировки” — выражение, которое определяет, какие сгруппированные записи надлежить отображать;

“вполе_1, вполе_2” — поля, по значениям которых сортируются записи в результате запроса;

ASC— по возрастанию, DESC— по убыванию;

FROM— обязательный параметр.

Пример. Предположим, с базы данных (таблица Spisok) надо составить список всех студентов. Список должен иметь следующий вид:

Фамлия Курс Группа

SELECT fio, kurs, grupa FROM Spisok;

По этой команде выводятся заголовки столбцов (фамилия, курс, группа) и все данные (значения полей fio, kurs, grupa) будут выведены с таблицы Spisok.

ОПИСАНИЕ ТАБЛИЦ

Объекты SQL создаются с помощью языка определения данных (Data Definition Language — DDL), который применяется для описания атрибутов базы данных, таблиц, полей, индексов и способов сохранения данных.

Для создания таблицы, описания ее структуры предназначена команда CREATE TABLE. По этой команде:

• создается пустая таблица;

• присваивается имя пустой таблице;

• присваивается имя столбцам (полям) и определяется порядок их следования;

• устанавливается тип и размер каждого поля. Минимальное число столбцов в таблице — один. Формат команды CREATE TABLE:

CREATE TABLE <имя таблицы >

(<имя столбца> <тип данных> [(<размер>)],

<имя столбца> <тип данных> [(<размер >)]...);

Для данных символьного типа “размер” указывать обязательно, так как по умолчанию это 1 (один символ).

Пример команды CREATE TABLE для создания таблицы Spisok следующей структуры:

Факультет

Курс

Группа

ФИО

Стипендия (сумма)

Удержания

Перед созданием таблицы базы данных необходимо:

1) создать структуру таблицы, т. е. определить необходимый перечень полей и отношений между ними;

2) присвоить имена выбранным полям;

3) определить тип каждого поля (символьное, числовое, логическое и т. д.);

4) задать размер полей.

После этого приступаем к созданию таблицы. Для каждого поля структуры файла следует указать имя поля, его тип, длину, а для числовых данных — и количество цифр после десятичной точки, если это необходимо:

CREATE TABLE Spisok
fakultet char (4),
kurs char (l),
grupa char (4),
fio char (15),
stip decimal (7,2),
uderzana decimal (6,2);

Поля Stip и Uderzana описаны как десятичные, соответственно длина поля (field width) 7 и 6 десятичных цифр и точность (количество знаков после запятой в цифровых полях) — 2. Эту команду можно записать и в строку:

CREATE TABLE Spisok (fakultet char (4), kurschar(l), grupa char(4), fiochar(15), stip decimal (7,2), uderzana decimal (6,2);

Контрольный пример таблицы Spisok приведен на рис.1*.

Рис. 1. Контрольный пример таблицы Spisok

* Размер стипендий приведен в денежных знаках Республики Беларусь.

Индексирование

Записи в файлах базы данных размещены по ключам упорядочения. Возможны два вида упорядочения записей в таблице:

а) логическое (CREATE INDEX — индексирование);

б) физическое (SORT — сортирование).

Ключи сортирования должны быть сравнимыми, т. е. любые два ключа сортирования К1 и К2 должны удовлетворять одному из трех отношений:

К1 < К2, К1 = К2, К1 > К2.

Ключ, на который имеется ссылка в другой таблице, называется внешним.

Для манипулирования со значением строк таблицы предназначены индексы. Индексирование — это упорядочение записей по ключу (алфавиту, хронологии, в порядке возрастания или убывания). Для индексного поля создается упорядоченный список значений для этого поля. В таблице данных строки не упорядочены. Для поиска строки с заданным значением поля-ключа программа последовательно просматривает все записи таблицы, строка за строкой, пока не встретит строку с заданным значением поля. Это долгий путь. Индекс же сразу находит запись по значению поля-ключа.

Индекс (индексный файл) создается по команде:

CREATE INDEX <имя индекса> ON <имя таблицы> (<имя столбца>[,<имя столбца>].„);

Пример. Создать индекс по полю фамилия flo таблицы Spisok:

CREATE INDEX fio ON Spisok (fio);

Таблица индексов (индексный файл), созданная командой CREATE INDEX, для пользователя невидима. SQL сам автоматически обращается к таблице индексов по мере надобности.

Корректировка таблицы (добавление столбцов в таблицу, удаление столбцов, изменение их размера и др.) выполняется командой ALTER TABLE следующего формата:

ALTER TABLE <имя таблицы> ADD <имя столбца> <тип данных>,<размер>;

Новый столбец по этой команде в таблице становится последним; в него заносятся NULL-значения. Пользоваться этой командой следует осмотрительно, чтобы не повредить базу данных.

Удаление таблицы. Удалить можно только пустую таблицу, поэтому предварительно следует удалить ее данные. Формат команды:

DROP TABLE <имя таблицы>;

МАНИПУЛИРОВАНИЕ ДАННЫМИ

Для управления данными в таблице и их манипуляцией предназначены команды DML (Data Manipulation Language): INSERT (вставка), UPDATE (обновление), DELETE (удалить). С помощью этих команд данные заносятся в поля и исключаются из них.

Выбор по критерию

С помощью предложения WHERE в команде SELECT задается условие выбора записей из таблицы; предикат может принимать значение “истина” или “ложь”.

Пример. Команда SELECT для выбора из таблицы Spisok студентов группы ФФ1:

SELECT grupa, fio FROM Spisok WHERE grupa = 'ФФ1';

Программа просмотрит все записи таблицы Spisok, проверяя каждую из них, на истинность предиката grupa = 'ФФГ. Результат выполнения этого запроса приведен на рис. 3.

Рис. 3. Команда SELECT с предложением WHERE

Замечание. Столбец, используемый в предложении WHERE (в примере grupa) необязателен в выходных данных.

Операторы в сравнениях

Операторы сравнения

В SQL применяются операторы сравнения для задания типов сравнения между двумя значениями: = (равно), > (больше, чем), < (меньше), >= (больше или равно), <= (меньше или равно), <> (неравно).

Например, надо выбрать фамилии студентов, которые получают стипендию, превышающую 90 000 руб.

SELECT * FROM Spisok WHERE slip > 90 000;

Булевы операторы

Оператор AND сравнивает два выражения — A AND В— в качестве аргументов и в результате выдает истину только в случае истинности обоих.

Оператор OR сравнивает два выражения — A OR В — в качестве аргументов и оценивает результат как истину, если хотя бы один из них истинен.

Оператор NOT анализирует единственное булево выражение NOT A в качестве аргумента и изменяет его значение на противоположное (с истинного на противоположное или сложного на истинное).

Пример. Выбрать из таблицы Spisok всех студентов группы ФФ1,
которые получают стипендию менее 90 000 руб.:

SELECT * FROM Spisok WHERE gruppa = 'ФФ1' AND stip < 90 000;

Упорядочение выходных полей

Для вывода результатов в запросе в требуемой последовательности применяется команда ORDER BY. Сортировку можно задавать по значению одного или нескольких выбранных полей. Последовательность сортировки для каждого из столбцов задается ASC (по возрастанию) или DESC (по убыванию). Столбец, по значениям которого упорядочиваются возвращаемые строки, можно указывать именем столбца или его относительным порядковым номером.

Пример. Рассортировать все записи в таблице Spisok по алфавиту студентов:

SELECT * FROM Spisok ORDER BY fio ASC;

Выходные столбцы формируются в запросе, а не извлекаются непосредственно из базовой таблицы (их нет в таблице базы данных); они не имеют имен. Для ссылки на выходные столбцы в предложении ORDER BY используется порядковый номер выходного столбца из предложения SELECT. В этом случае в SELECT используются не имена столбцов для указания полей, а номера в выходных данных (это не номера в таблице базы данных).

Пример. Подсчитать количество отличников (по размеру стипендии — 15 000 руб.) на каждом курсе и вывести результат в порядке возрастания курса:

SELECT kurs, COUNT (DISTINCT 15 000) FROM Spisok GROUP BY kurs ORDER BY 2 ASC;

Соединение таблиц

Запрос может быть сформулирован (получен) на основе данных из нескольких таблиц. Между элементами таблиц устанавливаются связи; имена соединяемых таблиц перечисляются через запятую в запросе в предложении FROM. Предикат запроса может ссылаться на любой столбец любой соединяемой таблицы. Полное имя столбца соединяемых таблиц составляют:

<имя_таблицы>. <имя_столбца>

Примеры записи столбцов.

Spisok.fio
Sport.gimnast
Kultura.pevec

Пример соединения таблиц. Установить связь между таблицами Sport и Kultura для выбора студентов, которые играют в футбол и занимаются сольным пением:

SELECT Sport.fio, Kultura. pevec FROM Sport, Kultura WHERE Sport.fio = Kultura.fio;

 

Команда SELECT в данном примере берет первую запись из таблицы Sport, в которой перечислены студенты, увлекающиеся футболом, и ищет в таблице Kultura, в которой перечислены студенты, занимающиеся сольным пением, фамилию этого же студента. В операциях соединения таблиц кроме равенства (эквисоединения) можно использовать любые операции сравнения в предложении WHERE.

6. ОБЪЕДИНЕНИЕ ТАБЛИЦЫ ПО ПРИНЦИПУ “САМА С СОБОЙ”

Смысл этой операции в том, что любую одну строку (запись) таблицы можно комбинировать (соединять) с любой другой строкой этой же таблицы и с копией этой строки. В одной таблице устанавливаются связи между различными записями, например поиск и выбор пар строк с общим значением поля. Для указания имен столбцов в команде SELECT в предложении FROM применяются временные имена полей — алиясы (псевдонимы), которые позволяют рассматривать одну таблицу в команде SELECT как две независимые таблицы: первая (first) и вторая (second). Алиясы определяются в предложении FROM. Записываются имя таблицы, пробел и имя алияса для данной таблицы, например FROM Spisok first, Spisok second. Соединение таблицы по принципу “сама с собой” покажем на примере соединения всех пар одинаковых фамилий в разных группах:

SELECT first.fio, second.fio, first.grup FROM Spisok first, Spisok second;

Вложение запросов

Один запрос может быть вложен в другой запрос. Запрос, который вкладывается, — это подзапрос, а в который вкладывается — основной (внешний). Подзапрос записывается в предложении WHERE, выполняется первым по отношению к внешнему, и используется для определения истинности или ложности предиката.

Пример. Уточнить размер стипендии студента Сапега:

SELECT * FROM stip = (SELECT stip FROM Spisok WHERE fio = 'Canera');

Выполнение запроса начинается с подзапроса: просматриваются все записи таблицы Spisok и выбираются все записи, для которых значение поля fio равно “Сапега”; для этих записей выбирается значение для поля stip, выбранное значение подставляется в предикат основного запроса в предложение WHERE вместо самого подзапроса (предложение будет иметь вид: WHERE stip = 9005). Подзапрос возвращает одно и только одно значение. Необходимо быть уверенным, что подзапрос выдает только одну строку. Далее выполняется основной запрос.

Для гарантии того, что результатом подзапроса является единственное значение (строка), рекомендуется использовать аргумент DISTINCT:

(SELECT DISTINCT stip...)

ПРЕДСТАВЛЕНИЯ

Основу базы данных составляют базовые таблицы, т. е. таблицы с реальными данными. На основе данных базовых таблиц по запросам результаты представляются в таблицах, которые не содержат собственных данных. Представление (view) — это альтернативный способ просмотра данных из одной или нескольких таблиц; это виртуальная таблица, которая не содержит собственных данных; ее содержимое берется или выводится из других таблиц. Представления:

1) позволяют пользователям видеть данные базы данных по-разному, с позиций своих интересов;

2) упрощают доступ к базе данных: каждый пользователь видит данные определенной структуры, хранимые в базе данных;

3) являются одним из средств ограничения доступа к данным (пользователь видит не все столбцы и строки). Создается представление командой CREATE VIEW:

CREATE VIEW <имя_представления>

AS SELECT предикат [WITH CHECK OPTIONS];

На протяжении выполнения команды CREATE VIEW выполняется запрос, по результатам которого формируется содержимое таблицы-представления. Если указано WITH CHECK OPTIONS, то эти обновления должны удовлетворять условию запроса.

Пример. Создать представление с именем SportGimnast, отображающее пловцов и гимнастов 1-го курса:

CREATE VIEW SportGimnast AS SELECT plovec, gimnast FROM Sport WHERE kurs = 1;

Групповое представление содержит предложение GROUP BY или базируется на других групповых представлениях. Например, деканаты ежедневно отслеживают пропуски занятий студентами. Можно

получить соответствующую информацию по запросу, а можно создать представление и получать нужную информацию:

CREATE VIEW Propuski AS SELECT date, COUNT (propuski), SUM () FROM Spisok, GROUP BY date;

После этого можно получить необходимую информацию с помощью запроса:

SELECT * FROM Propuski;

СТАНДАРТНЫЕ ПРИВИЛЕГИИ

Привилегия Что может пользователь
INSERT SELECT UPDATE DELETE REFERENCES Может выполнять команду INSERT для таблицы Может выполнять запросы для таблицы Может выполнять команду UPDATE для таблицы Может выполнять команду DELETE для таблицы Может определить внешний ключ

Пример. Пользователь Kolas является владельцем таблицы Kultura и желает передать пользователю Genijz право на формирование запроса к этой таблице. Пользователь Kolas должен ввести такую команду:

GRANT SELECT ON Kultura TO Genijz;

Сам пользователь Genijz не может задать выполнение этой команды.

Лишение привилегий

Выполняется командой REVOKE, которая имеет формат, аналогичный формату команды GRANT, но с противоположным значением.

Пример. Лишим пользователя Zmagar привилегий на выполнение команды INSERT для таблицы Spisok:

REVOKE INSERT ON Spisok FROM Zmagar;

В командах GRANT и REVOKE списки привилегий и пользователей доступны.

Пример. REVOKE DELETE, INSERT ON Spisok FROM Janka, Janina;

Пользователь, который назначил привилегии, отменяет их последовательно по отношению ко всем пользователям (каскадно).

Системный каталог

База данных SQL состоит из множества объектов: таблицы, индексы, представления, синонимы, пользователи, привилегии и др. Все объекты имеют собственную организацию. Внутренняя структура базы данных представлена соответствующей информацией в таблицах, которая хранится в системном каталоге, состоящем из системных таблиц. Владельцем системного каталога является сама СУБД — суперпользователь (системный администратор). При выполнении операторов SQL СУБД постоянно обращается к данным системного каталога и проверяет, например, имеет ли пользователь право на доступ, существует ли запрашиваемая таблица базы данных и другая информация.

Таблицы системного каталога создаются автоматически при создании базы данных и принадлежат ей. Они объединяются под системными именами SYSTEM, MASTER, SYSIBM или DBA. Каждая таблица системного каталога содержит информацию об элементе базы данных. К основным относятся пять системных таблиц: таблицы, пользователи, столбцы, представления, привилегии. Таблицы системного каталога нельзя обновлять, но можно формулировать запросы.

НАЗНАЧЕНИЕ ЯЗЫКА SQL

Первичным становится документ, а программа — это его часть. Цель программиста — не создание программы, а формирование конкретного выходного документа с широким спектром функций. Пользователь работает не с программой, а с документом.

Изменился смысл термина “документ”. Документ рассматривается теперь как объект в объектно-ориентированном программировании (единство данных различного типа и программ, которые их обрабатывают).

Процесс создания документа в среде MS Office называют “офисным программированием” (программированием без программирования). Документ становится “живым”, т. е. с данными, которые в нем зафиксированы, можно работать, их можно сменять, анализировать и т. д. Документ и его программные компоненты объединяются в единое целое — проект, который является частью документа и не существует отдельно от него.

Язык SQL — Structured Query Lanquaqe (структурированный язык запросов) разработан фирмой IBM в начале 70-х гг. Это современное средство для работы с базами данных, которое применяется в среде реляционных баз данных (создание, поиск, изменения, обновления, передачи данных). Язык SQL утвержден Американским национальным институтом стандартов (ANSI) и Международной организацией стандартов (ISO) в качестве официального стандарта для реляционных баз данных и не зависит от специфики компьютера.

СТРУКТУРА КОМАНД ЯЗЫКА SQL

Язык SQL состоит из команд (инструкций). Команды передаются программе, которая управляет работой базы данных, для выполнения конкретных действий. Объектом действия команды SQL может быть как одна таблица, так и группа таблиц. MS Access автоматически создает эквивалентные команды SQL во время создания запроса в режиме Конструктора.

Команды SQL (инструкции, операторы) делят на две группы:

язык определения данных (Data Definition Lanquaqe — DDL):

Create Table — создает новую таблицу; Create Index — создает новый индекс;

Alter Table — дополняет новое поле или индекс в существующую таблицу;

язык манипулирования данными (Data Manipulation Lanquaqe — DML):

Select — запрос к базе данных; запрос возвращает данные в виде набора записей;

Select Into — запрос к базе данных; запрос возвращает данные в виде новой таблицы;

Update — запрос на объединение; запрос изменяет значения полей таблицы;

Insert Into — запрос на добавление в таблицу одной или нескольких записей;

Delete — запрос на удаление записей с одной или нескольких таблиц.

Существуют две формы языка SQL: интерактивная и встроенная. Интерактивный SQL применяется непосредственно в базе данных для выполнения определенных действий над данными. Вводятся определенные команды, после выполнения которых тут же выводятся выходные данные (результат).

Встроенный SQL — это включение команд языка SQL в программы, которые написаны на другом языке программирования, например Pascal. Каждая команда включает в себя соответствующий перечень параметров (средств) для выбора, группировки и упорядочения записей из одной или нескольких таблиц. Любая команда имеет свой формат (синтаксис).

Основные термины

Ключевое слово это инструкция; слово, которое имеет специальное смысловое значение в SQL. В тексте книги ключевые слова выделены прописными буквами.

Команда — это инструкция, которая дается базе данных SQL. Команда состоит из одной или нескольких логически различных частей, называемых предложениями. Предложения начинаются с ключевого слова и кроме него содержат аргументы, например:

WHERE fio = 'Астрожский',

где fio = 'Астрожский' — аргумент; WHERE — ключевое слово.

Объекты это структуры в базе данных (таблицы, запросы, формы и др.), которые именуются и хранятся в памяти.

Соглашения по синтаксису команд:

[ ] — квадратные скобки — часть команды, которую при желании можно опустить;

() — круглые скобки — предшествующее им можно повторить любое количество раз;

< > — слова, заключенные в угловые скобки, — специальные термины, которые объясняются по мере вывода.

Ядром (главной командой) языка SQL является команда SELECT. Эта команда находит таблицу или несколько таблиц в базе данных, которая указана в ее параметрах, выбирает заданные столбцы, выделяет строки в соответствии с условиями отбора, сортирует и группирует строки результата в заданном порядке. Выполнение команды SELECT не изменяет данные в базе данных. Выбираемые столбцы с таблицы не удаляются, из них только извлекаются данные.

Синтаксис (формат) команды SELECT:

SELECT [предикат] { * [таблица.* | [таблица.] поле_1

[AS псевдоним_1] [,[таблица.] поле_2 [AS псевдоним_2] [,...] ]}

FROM выражение [,...] [IN Внешняя_База_данных ]

[WHERE.. условие_Отбора ] [GROUP BY.. список_полей_группировки]

[HAVING условие_Группировки] [ ORDER BY.. вполе_1 [ ASC | DESC ]. [, вполе_2 [ASC | DESC ]]...]

“Предикат” — задает ограничения на возвращаемые записи: ALL — по умолчанию, т. е. без ограничений; DISTINCT — все записи без их дублирования;

“Таблица” — имя таблицы-источника, из которой берутся записи;

“поле_1”, “поле_2”... — имена полей, из которых берутся записи;

“псевдоним_}”, “псевдоним_2”... — имена, которые станут заголовками столбцов вместо исходных названий столбцов в таблице;

“выражение” — имена одной или нескольких таблиц, из которых берутся данные;

“Внешняя_База_Данных” — имя базы данных с таблицами, которые указаны с помощью аргумента “выражение”, если они не находятся в текущей базе данных;

“условие_Отбора” — выражение с условием, которому должны соответствовать записи, включенные в результат исполняемого запроса;

“список_полей_группировки” — имена полей (до 10), которые применяются для группирования записей;

“условие_Группировки” — выражение, которое определяет, какие сгруппированные записи надлежить отображать;

“вполе_1, вполе_2” — поля, по значениям которых сортируются записи в результате запроса;

ASC— по возрастанию, DESC— по убыванию;

FROM— обязательный параметр.

Пример. Предположим, с базы данных (таблица Spisok) надо составить список всех студентов. Список должен иметь следующий вид:

Фамлия Курс Группа

SELECT fio, kurs, grupa FROM Spisok;

По этой команде выводятся заголовки столбцов (фамилия, курс, группа) и все данные (значения полей fio, kurs, grupa) будут выведены с таблицы Spisok.

ОПИСАНИЕ ТАБЛИЦ

Объекты SQL создаются с помощью языка определения данных (Data Definition Language — DDL), который применяется для описания атрибутов базы данных, таблиц, полей, индексов и способов сохранения данных.

Для создания таблицы, описания ее структуры предназначена команда CREATE TABLE. По этой команде:

• создается пустая таблица;

• присваивается имя пустой таблице;

• присваивается имя столбцам (полям) и определяется порядок их следования;

• устанавливается тип и размер каждого поля. Минимальное число столбцов в таблице — один. Формат команды CREATE TABLE:

CREATE TABLE <имя таблицы >

(<имя столбца> <тип данных> [(<размер>)],

<имя столбца> <тип данных> [(<размер >)]...);

Для данных символьного типа “размер” указывать обязательно, так как по умолчанию это 1 (один символ).

Пример команды CREATE TABLE для создания таблицы Spisok следующей структуры:

Факультет

Курс

Группа

ФИО

Стипендия (сумма)

Удержания

Перед созданием таблицы базы данных необходимо:

1) создать структуру таблицы, т. е. определить необходимый перечень полей и отношений между ними;

2) присвоить имена выбранным полям;

3) определить тип каждого поля (символьное, числовое, логическое и т. д.);

4) задать размер полей.

После этого приступаем к созданию таблицы. Для каждого поля структуры файла следует указать имя поля, его тип, длину, а для числовых данных — и количество цифр после десятичной точки, если это необходимо:

CREATE TABLE Spisok
fakultet char (4),
kurs char (l),
grupa char (4),
fio char (15),
stip decimal (7,2),
uderzana decimal (6,2);

Поля Stip и Uderzana описаны как десятичные, соответственно длина поля (field width) 7 и 6 десятичных цифр и точность (количество знаков после запятой в цифровых полях) — 2. Эту команду можно записать и в строку:

CREATE TABLE Spisok (fakultet char (4), kurschar(l), grupa char(4), fiochar(15), stip decimal (7,2), uderzana decimal (6,2);

Контрольный пример таблицы Spisok приведен на рис.1*.

Рис. 1. Контрольный пример таблицы Spisok

* Размер стипендий приведен в денежных знаках Республики Беларусь.

Индексирование

Записи в файлах базы данных размещены по ключам упорядочения. Возможны два вида упорядочения записей в таблице:

а) логическое (CREATE INDEX — индексирование);

б) физическое (SORT — сортирование).

Ключи сортирования должны быть сравнимыми, т. е. любые два ключа сортирования К1 и К2 должны удовлетворять одному из трех отношений:

К1 < К2, К1 = К2, К1 > К2.

Ключ, на который имеется ссылка в другой таблице, называется внешним.

Для манипулирования со значением строк таблицы предназначены индексы. Индексирование — это упорядочение записей по ключу (алфавиту, хронологии, в порядке возрастания или убывания). Для индексного поля создается упорядоченный список значений для этого поля. В таблице данных строки не упорядочены. Для поиска строки с заданным значением поля-ключа программа последовательно просматривает все записи таблицы, строка за строкой, пока не встретит строку с заданным значением поля. Это долгий путь. Индекс же сразу находит запись по значению поля-ключа.

Индекс (индексный файл) создается по команде:

CREATE INDEX <имя индекса> ON <имя таблицы> (<имя столбца>[,<имя столбца>].„);

Пример. Создать индекс по полю фамилия flo таблицы Spisok:

CREATE INDEX fio ON Spisok (fio);

Таблица индексов (индексный файл), созданная командой CREATE INDEX, для пользователя невидима. SQL сам автоматически обращается к таблице индексов по мере надобности.

Корректировка таблицы (добавление столбцов в таблицу, удаление столбцов, изменение их размера и др.) выполняется командой ALTER TABLE следующего формата:

ALTER TABLE <имя таблицы> ADD <имя столбца> <тип данных>,<размер>;

Новый столбец по этой команде в таблице становится последним; в него заносятся NULL-значения. Пользоваться этой командой следует осмотрительно, чтобы не повредить базу данных.

Удаление таблицы. Удалить можно только пустую таблицу, поэтому предварительно следует удалить ее данные. Формат команды:

DROP TABLE <имя таблицы>;

МАНИПУЛИРОВАНИЕ ДАННЫМИ

Для управления данными в таблице и их манипуляцией предназначены команды DML (Data Manipulation Language): INSERT (вставка), UPDATE (обновление), DELETE (удалить). С помощью этих команд данные заносятся в поля и исключаются из них.

Ввод в таблицу значений полей

Команда добавления данных INSERT используется для вставки содержимого одной или нескольких новых строк в указанную таблицу или запрос. Упрощенный формат команды:

INSERT INTO <имя таблицы > VALUES (<значение>, <значение>...);

Имя таблицы в команде INSERT должно быть определено до выполнения команды INSERT в команде CREATE TABLE. Значения в списке значений (<значение>...) должны иметь тип данных, соответствующий типу данных столбцов таблицы. Значения вводятся в таблицу в порядке следования столбцов. Программа сообщает пользователю о добавлении записи.

Пример. Ввести запись в таблицу Spisok:

INSERT INTO Spisok VALUES ('УЭФ', 1, 'УП', 'Позняк', 5000, 400);

Если значение какого-либо поля неизвестно, то в списке значений можно вставлять NULL-значение. Предположим, неизвестен размер стипендии:

VALUES ('УЭФ', 1, 'УП', 'Позняк', NULL, 400);

Вставка результатов запроса (команда INSERT).

С помощью команды INSERT можно по запросу извлечь значения из одной таблицы и разместить их в другой. Для этого в команде INSERT предложение VALUES заменяется на SELECT. Столбцы таблиц должны быть одного типа данных.

Пример. Все строки таблицы Spisok 1-го курса расположить в таблице Spisok 1:

INSERT INTO Spisok1 FROM Spisok WHERE kurs=1;

Изменение значений полей (команда UPDATE). Командой UPDATE можно изменить в строке некоторые или все значения. В команде указываются имя таблицы и изменения. Предположим, приказом ректора всем студентам, которые получают стипендию, устанавливается новый (одинаковый для всех) размер стипендии в размере 50 000 руб. Для этого подается команда:

UPDATE Spisok SET stip = 50 000;,

В команде UPDATE в предложении WHERE можно задать обновление только определенных строк.

Пример.

UPDATE Spisok SET stip = 50 000 WHERE kurs = 1;

В предложении SET команды UPDATE можно через запятую указать любое количество значений для столбцов.

Одной командой UPDATE нельзя обновить несколько таблиц.

В команде UPDATE в предложении SET можно применять скалярные выражения для изменения значения поля. Предположим, всем студентам размер стипендии увеличен на 25%; требуется внести изменения:

UPDATE Spisok SET stip = (stip *25)/l00;

Итак, команда UPDATE предназначена для замены значений в строках (записях) таблицы.

Удаление строк из таблицы (команда DELETE).

Командой DELETE удаляются не отдельные значения полей строки, а целые строки. После выполнения команды DELETE для всей таблицы она становится пустой, например:

DELETE FROM Spisok;

Для удаления конкретно указанных строк можно использовать предикат

DELETE FROM Spisok. WHERE stip = 0;

или указать значение первичного ключа для удаления одной записи

DELETE FROM Spisok WHERE Мо='Позняк';

В командах INSERT, DELET



Поделиться:


Последнее изменение этой страницы: 2016-07-11; просмотров: 186; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.149.251.22 (0.014 с.)