к 4GL - визуальному программированию   Kylix   RUNTU   ОС  

Основы языка SQL в Kylix

Основные сведения о языке SQL
Функции языка SQL
Операторы определения данных
Операторы манипулирования данными


В этой главе мы рассмотрим команды языка структурированных запросов (Structured Query Language). Вы узнаете, что такое запрос и как с ним работать.

Основные сведения о языке SQL
Язык SQL существует в нескольких стандартах. Наиболее поддерживаемыми и распространенными являются стандарты SQL-89 и
SQL-92. Последний стандарт также называют стандартом ANSI. Из-за наличия множества стандртов языка существует множество его диалектов. Мы рассмотрим только основные команды SQL для простых операций с таблицами баз данных.
В языке SQL нет многих типов команд, которые присущи большинству языков программирования. Так, в нем нет операторов цикла, перехода и т. д.
SQL-запрос - это команда на языке SQL.
Язык SQL по своей сути ориентирован на доступ к данным, и его обычно включают в состав различных средств разработки. Среда Kylix не осталась в стороне. Более того, все ее компоненты для работы с базами данных поддерживают язык SQL.
Все SQL-запросы можно условно разделить на два вида:

статический SQL-запрос - включается в код приложения во время его разработки и не изменяется во время выполнения приложения. Единственным способом изменить что-либо в запросе такого типа является включение в SQL-запрос параметров и их дальнейшее изменение в ходе работы приложения;

динамический SQL-запрос - создается и изменяется в ходе выполнения приложения. Эти запросы являются наиболее гибкими и могут отвечать конкретным действиям пользователя.
Все операторы и команды языка SQL можно разделить на три группы. Рассмотрим эти группы, а также операторы, входящие в каждую из групп.
Операторы определения данных - предназначены для создания, удаления и изменения структуры данных. Основные из них перечислены в табл. 17.1.

Таблица 17.1. Основные операторы определения данных

Оператор Описание
CREATE TABLE Предназначен для создания таблицы базы данных
ALTER TABLE Удаляет таблицу
DROP TABLE Изменяет структуру таблицы
CREATE INDEX Создает индекс
DROP INDEX Удаляет индекс
CREATE VIEW Создает представление
DROP VIEW Удаляет представление

Операторы управления данными - предназначены для управления привилегиями доступа к данным. Основные операторы представлены в табл. 17.2.

Таблица 17.2. Основные операторы управления данными

Оператор Описание
GRAND Назначает привилегии пользователям
REVOKE Удаляет привилегии пользователей

Операторы манипулирования данными - предназначены для работы с записями таблиц. Основные операторы кратко описаны
в табл. 17.3.

Таблица 17.3. Основные операторы манипулирования данными

Оператор Описание
SELECT Предназначен для выборки записей по определенному
формату
UPDATE Предназначен для изменения и обновления записей
INSERT Вставляет новые записи в таблицу
DELETE Удаляет записи из таблицы

Использование приведенных в табл. 17.1-17.3 операторов мы рассмотрим далее в этой главе.

Примечание
Обратите внимание на тот факт, что проверка синтаксиса запроса происходит только во время работы приложения. Компилятор Kylix не обрабатывает SQL-запросы во время разработки приложения.

Результатом выполнения запроса обычно является набор данных, который называется результирующим набором данных.
Осталось отметить, что регистр букв команд SQL-запросов не влияет на их выполнение. Мы для наглядности будем применять заглавные буквы для Операторов языка SQL. Точка с запятой также не обязательна в конце каждой SQL-команды. Элементы списков, такие как имена таблиц и полей, обязательно разделяются запятыми. Имена таблиц и полей заключаются в одинарные или двойные кавычки, например 'Number', "Table 1". В случае если имя не содержит пробелов и других специальных символов, его можно не заключать в кавычки.

Функции языка SQL
В языке SQL, кроме операторов, имеется несколько функций, основные из которых будут рассмотрены далее.
Статистические функции - функции, предназначенные для статистической обработки данных. Наиболее часто используемые статистические функции Перечислены в табл. 17.4.

Таблица 17.4. Основные статистические функции

Функция

Описание
AVG() Получение среднего значения
COUNT () Определяет количество значений
COUNT(*) Определяет количество ненулевых значений
МАХ() Максимальное значение
MIN() Минимальное значение
SUM () Сумма значений

Строковые функции - функции, предназначенные для работы со строковыми чачениями. Наиболее часто используемые из них представлены в табл. 17.5.

Таблица 17.5. Основные строковые функции

Функция

Описание
I I Слияние (конкатенация) двух строк
CAST (<Выражение> AS <Тип>) Приводит выражение <Выражение> к типу
<Тип>
LOWER(S)

Преобразует символы строки S в символы нижнего регистра

SUBSTRING (S FROM Nl то N2) Выделяет из строки s подстроку, начиная с символа N1 и заканчивая символом N2
TRIM (S) Удаляет в начале и конце строки s лишние пробелы
UPPER (S) Преобразует символы строки s в символы верхнего регистра

Операторы определения данных
Давайте рассмотрим более подробно операторы определения данных.
Оператор CREATE TABLE служит для создания новой таблицы базы данных и имеет следующий формат:

CREATE TABLE <Имя таблицы>
<Имя поля> <Тип данных>,

<Имя поля> <Тип данных>);

В этом операторе обязательно указание хотя бы одного имени поля и его типа данных.
Приведем пример создания простой таблицы:

CREATE TABLE MyTable
(Number INTEGER, Name CHAR(20),
Surname CHAR(20));

При этом в каталоге текущей базы данных создастся новая таблица муТаblе, состоящая из полей Number, Name и Surname. Первое поле имеет целочисленный тип (INTEGER), остальные поля - символьного типа и ограничены длиной в 20 символов.
Если при выполнении этого запроса выяснится, что таблица с таким именем уже существует, будет сгенерирована исключительная ситуация.
Оператор DROP TABLE <имя таблицы> служит для удаления имеющейся таблицы. Если таблицы с таким именем не существует, будет сгенерирована исключительная ситуация:
DROP TABLE МуТаЫе;

При выполнении этой операции будут удалены все файлы, относящиеся к таблице МуТаЫе.
Оператор ALTER TABLE предназначен для добавления или удаления полей действующей таблицы базы данных. Во время действия этого оператора никакие другие приложения не должны обращаться к таблице. Этот оператор имеет следующий формат:

ALTER TABLE <Имя таблицы>
ADD <Имя поля> <Тип данных>,
DROP <Имя поля>,

ADD <Имя поля> <Тип данных>,
DROP <Имя поля>;

При этом операнд ADD добавляет к таблице новое поле, а оператор DROP удаляет из таблицы существующее поле. Операнды могут располагаться внутри оператора ALTER TABLE произвольно:

ALTER TABLE МуТаblе
ADD Telefon INTEGER,
ADD Address CHAR (50),
DROP Number;

При выполнении данного примера в таблицу МуТаblе добавятся два поля: felefon и Address, целочисленного и символьного типа соответственно. Кроме того, будет удалено поле Number.

Операторы манипулирования данными
Главным оператором манипулирования данными является оператор SELECT. ЭТот оператор используется для отбора данных, соответствующих сложным условиям. Оператор SELECT имеет вид:

SELECT [DISTINCT]
<Список полей> или *
FROM <Список таблиц>
[WHERE <Условия выбора записей>]
[ORDER BY <Список полей для сортировки>]
[GROUP BY <Список полей для группировки:"]
[HAVING <Условия группировки полей>]
[UNION <Вложенный оператор SELECT >]

Результатом выполнения данного оператора будет набор записей, удовлетворяющих заданным условиям.
Параметр DISTINCT определяет, будут ли включаться в результирующий набор данных повторяющиеся записи. Если он присутствует в операторе SELECT, то повторяющиеся записи будут исключены из набора данных.
Если в список полей входят поля нескольких таблиц, для указания принадлежности поля к той или иной таблице используют составной оператор, включающий имя таблицы и, через точку, имя поля:

<Имя таблицы>.<Имя поля>

Операнд WHERE определяет критерии, которым должны удовлетворять записи в результирующем наборе данных.
Операнд GROUP BY позволяет группировать записи. Иногда бывает необходимо выполнить какие-либо операции над группой записей.
Операнд HAVING используется вместе с GROUP BY и позволяет выбирать записи внутри групп.
Операнд ORDER BY содержит список полей, определяющих порядок сортировки записей результирующего набора данных. По умолчанию сортировка выполняется в порядке возрастания значений. Для сортировки в порядке убывания значений необходимо после имени поля поставить параметр DESC.
Операнд UNION используется для организации вложенных операторов SELECT. Вложенные операторы SELECT называют иногда подзапросами.
Приведем примеры выбора записей с использованием оператора SELECT.

Пример 17.1. Выбор всех полей таблицы
SELECT * FROM MyTable

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

Пример 17.2. Выбор данных из трех полей таблицы
SELECY Number, Surname, Telefon
FROM MyTable

В результате выполнения примера 17.2 будут выбраны все записи из полей
Number, Surname И Telefon таблицы MyTable .

Пример 17.3. Выбор уникальных значений
SELECT DISTINCT Surname
FROM MyTable

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

Пример 17.4. Выбор данных из двух таблиц
SELECT * FROM МуТаЫе!, МуТаЫе2

Выбирает все данные из таблиц МуТаblе1 и МуТаЫе2. Первыми будут располагаться поля таблицы MyTable1, а затем - поля второй таблицы.

Пример 17.5. Выбор записей по значениям числового поля
SELECT Name, Surname
FROM MyTable
WHERE (Number>l) and (Number<100) ;

Результирующим набором данных будут имена и фамилии первых ста человек, занесенных в таблицу МуТаblе.

Пример 17.6. Выбор записей по значению символьного поля
SELECT Name
FROM МуТаЫе
WHERE Surname='Иванов';

Результатом будет набор имен, фамилии которых Иванов.

Пример 17.7. Проверка частичного совпадения по символьному полю
SELECT Name, Surname
FROM MyTable
WHERE Surname LIKE 'И';

Будут выбраны имена и фамилии людей, занесенных в таблицу МуТаblе, фамилии которых начинаются на букву И.
В выражениях операции LIKE можно использовать шаблоны. Символы шаблонов:
% - замещает любое количество символов, в том числе и нулевое;
_ - замещает один символ.

Пример 17.8. Проверка частичного совпадения по шаблону
SELECT Name, Surname
FROM MyTable
WHERE Surname LIKE '%' I I 'ов' I I '%';

Будут выбраны имена и фамилии людей, в состав фамилий которых входя символы ов.
Операнд ORDER BY служит для упорядочения (сортировки) значений полей.

Пример 17.9. Сортировка записей по полю
SELECT * FROM MyTable
ORDER BY Name
Таким образом, набор данных будет отсортирован в порядке возрастания по полю Name.

Пример 17.10. Сортировка по двум полям
SELECT * FROM MyTable
ORDER BY Name, Surname DESC

Будет произведена сортировка данных сначала по полю Name в порядке возрастания, затем по полю Surname в порядке убывания.
Оператор UPDATE служит для изменения значений полей в группе записей и имеет следующий формат:

UPDATE <Имя таблицы>
SET <Имя поля> = <Выражение>,

SET <Имя поля> = <Выражение>
[WHERE <Условия выбора>];

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

Пример 17.11. Изменение значений поля
UPDATE MyTable
SET Oklad = Oklad + 1000;
WHERE Cklad < 1000;

Изменит сумму оклада (oklad) сотрудника, если оклад менее 1000 руб. К сумме оклада прибавится еще 1000 руб. Оператор INSERT служит для вставки записей в таблицу и имеет следующий формат:

INSERT INTO <Имя таблицы>
(<Список полей>)
VALUES (<Список значений>);

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

Пример 17.12. Добавление записи в таблицу
INSERT INTO MyTable
(Name, Surname, Telefon)
VALUES ('Иван', 'Иванов', 2341234);
В таблицу MyTable будет добавлена новая запись, содержащая имя и фамилию нового сотрудника, а также номер его телефона.
Оператор DELETE служит для удаления записей из таблицы и имеет следующий формат:

DELETE FROM <Имя таблицы>
[WHERE <Условия выбора>];

Из таблицы будут удалены все записи, которые удовлетворяют условию выбора.

Пример 17.13. Удаление записей из таблицы
DELETE FROM MyTable
WHERE Surname = 'Иванов';

Удаляет из таблицы MyTable все записи, содержащие фамилию Иванов.
На этом мы заканчиваем обзор основных операторов и функций языка SQL. Дополнительную информацию вы можете почерпнуть из специальной литературы, посвященной данному языку.

к 4GL - визуальному программированию   Kylix   RUNTU   ОС  

Знаете ли Вы, в чем фокус эксперимента Майкельсона?

Эксперимент А. Майкельсона, Майкельсона - Морли - действительно является цирковым фокусом, загипнотизировавшим физиков на 120 лет.

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

В эксперименте Майкельсона ставится вопрос о движении эфира относительно покоящегося в лабораторной системе интерферометра. Однако, если мы ищем эфир, как базовую материю, из которой состоит всё вещество интерферометра, лаборатории, да и Земли в целом, то, естественно, эфир тоже будет неподвижен, так как земное вещество есть всего навсего определенным образом структурированный эфир, и никак не может двигаться относительно самого себя.

Удивительно, что этот цирковой трюк овладел на 120 лет умами физиков на полном серьезе, хотя его прототипы есть в сказках-небылицах всех народов всех времен, включая барона Мюнхаузена, вытащившего себя за волосы из болота, и призванных показать детям возможные жульничества и тем защитить их во взрослой жизни. Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution