Язык структурированных запросов SQL

 

SQL (Structure Query Language) – является общепринятом языком написания запросов к реляционной базе данных. Не является языком программирования и СУБД, т. к. не содержит команд создания интерфейса, а имеет только команды обработки данных.
SQL запрос — команды, написанные на языке SQL
Способы применения SQL в прикладных программах:
1.Встроенные – SQL запрос записываются в тексте программы. Компиляция приложения специальным препроцессором SQL преобразует исходный текст в исполняемую программу. SQL встроен почти во все СУБД и языки программирования, способные работать с базой данных (Delphi, FoxPro, Access и т.д.).
2.Интерактивный– имеются специальные оболочки мгновенного создания и выполнения SQL запроса. Прикладная программа, передает SQL запрос и при помощи специальных функций SQL получает результат запроса без применения препроцессора.
Этапы выполнения операторов SQL


Nom
Fam
Name
Grupа
Predmet
mark
101
Иванов
Олег
В-11
История
5
102
Васина
Анна
В-12
Физика
4
103
Петров
Иван
С-11
Физика
5
Пример: запрос для поиска списка отличников
Содержимое таблицы базы данных stud (см. таблицу)
ТекстSQL запроса:

Select fam, grupаFrom stud Where mark=5;  fam, grupа From stud Where mark=5;

 

Синтаксический анализ проверяет корректность текста SQLкоманды на соответствие правилам, выполняется очень быстро, т. к. нет обращения к серверу базы (в примере проверяется правильность слов Select, From, Whereи их расположение в тексте).
Проверка параметрованализирует корректность параметров SQL-запроса (имена полей, таблицы, права пользователя и т. д.). Находятся семантические ошибки. Выполняется медленно, т. к. необходимы обращения к системным константам базы данных. (в примере проверяется правильность имени таблицыstud, нахождение в ней полей fam, grupа, mark, а так же целый тип данных поля mark).
Оптимизация оператораразбивает целостный запрос на элементарные операции и производится составление наилучшей последовательности их выполнений. Выполняется очень медленно, т. к. требуется работа не только со словарем данных, но и использовать спастическую информацию о базе, характеризующую текущее состояние связи, расположение данных на терминалах и т. д. (в примере с начала фильтруются записи, для которых поле markимеет значение 5, а затем формируется виртуальная таблица из двух поле и в нее записываются значения из полей таблицы fam, grupа)
Fam
Grupа
Иванов
В-11
Петров
С-11

 

При Генерации плана выполнениясоздается двоичный код (на внутреннем машинном языке) созданного оптимального плана. Выполняется очень быстро.

Исполнение плана запроса– реализуется выполнение закодированного плана и получается результат запроса. (для примера получается виртуальная (временная) таблица
Структура языка SQL(типы команд):
  1. Язык определения данных (DDLData Definition Language) – команды создания (удаление, изменение структуры) объектов базы данных (таблицы, триггеры и т. д.) Create, Drop, Alter
  2. Язык изменения данных (DMLData Manipulition Language) – команды для обработки записей (т.е. метаданных). Insert, Delete, UpDate, Select, Commit, RollBack,
  3. Команды администрирования базы данных – команды по разграничению прав и архивированию данных GRAND, Revoke
Типы данных используемых в SQL
    • Smallint – короткое целое число размером 2 байта с диапазоном — 3200 + 3200;
    • Integer – целые числа размером 4 байта — 2.000000000 +2.000000000;
    • Float – число с плавающей точкой;
    • Date – формат дата/время размер 4 – 6 байт;
    • Char (N)– текстовое значение, где N – максимально допустимое количество символов
Основные команды SQL
Имя
Тип языка
Название
Синтаксис
Create table
DDL
Создание таблицы в базе данных
Create table имя таблицы (имя поля1 характеристики поле1, остальные поля
Primary key (имя поля))
Drop table
Удаление таблицы
Drop table имя таблицы
Alter table
Изменение структуры таблицы
Alter table имя таблицы Опция имя поля
Delete
Удаляет запись из одной таблицы
Delete from имя таблицы
Insert
Добавление новых значений в базу данных
Insert Into имя таблицы (список полей) VALUES (список значений)
UpDate
Изменение значения в записях таблицы
UpDate имя таблицы
Set имя поля = новое значение
Commit
Сохраняет результаты выполнения транзакции
Commit
RollBack
Отказ от сохранения результатов транзакции
RollBack
Select
Простая выборка данных
Select список полей from список таблиц опции
Примечание (CreateTable):таблица создается пустая, только структура, ключевые поля является не обязательным.
Характеристики полей:
  1. Тип данных (тип Char требует указание длины);
  2. Ограничения хранимых значений (Check). Check ((Value>=2)) или Check ((mark>=2));
  3. Требования к пусным значениям поля, т.е. является ли обязательным и не может хранить пустые значения. (для ключевых полей надо not null)
Пример: Create Tablestudent (nomer integer not null Check (Value>0), name char(20), primary key (nomer))
Примечание (DropTable):если в удаляемой таблице находятся записи, то они не нуждаются в предварительном удалении. Имя удаляемой таблицы должно быть в базе данных.
Пример:DropTablestudent;
Примечание (AlterTable):действия по изменению структуры таблицы.
  1. Добавить новое поле: ADD имя нового поля характеристики;
  2. Удаление поля: Drop имя существенного поля;
  3. Изменение структуры существенного поля: Alter имя поля характеристики.
Пример:В таблицу «Студент» добавить поле fam(20), удалить поле fioи добавить ограничения номера не меньше 100.
Alter Tablestudent
ADD fam char(20),
Drop name,
Alter nomer integer not null check(Value > = 100);
Примечание (Delete):если в дополнительных параметрах не указано, то удаляются все записи. Если в удалении нуждаются некоторые записи, то в конец команды записывается условие и если оно выполняется, запись будет удалена.
DeleteFrom имя таблицы WHERE условия выборки записи
Пример:удаление из таблицы studentвсе записи о студентах с фамилией Иванов
DeleteFrom student
WHEREfam =”Иванов
Пример:удалить всех студентов с двухзначными номерами
DeleteFrom student
WHERE (nom > = 10)
Примечание (Insert):список полей указывается в любом порядке разделительными запятыми. А список значений для нового поля указывается в том же порядке, что и списке полей. Так как происходит проверка на соответствие типов.
Пример:добавить в таблицу студента Сидорова с номером 520
Insert Intostudent (Fam, nomer) VALUES(‘Сидоров’, 520)
Примечание (UpDate):изменять можно значение не всех записей, только неуоторых записи. Для этого в конец команды надо дописать WHEREусловие
Пример:изменить фамилию для студента с номером 520 на Иванов
UpDatestudent
Setfam=‘Иванов’
WHEREnomer=520;
Примечание (Select):Selectсоздает на экране виртуальную таблицу, колонки которой соответствуют полям в перечисленном списке полей.
Пример:вывести список студентов с указанием фамилии и группы.
Selectfam, group FROMstudent;
  • Если нужно вывести все поля из таблицы
Select*FROMstudent
  • При необходимости можно отфильтровать отображаемые записи по какому-либо условию. Для этого в конец команды надо дописать WHERE условие
Select* FROMstudent WHEREnomer<520 span=»»></520>
  • Е сли необходимо вывести поля из нескольких таблиц, то они должны быть связаны следующим образом:
  1. В главной таблице поле связи должно быть Primary Key
  2. В команде связь устанавливается следующим образом:
1 способ:
Select имя поля FROM имя главной таблицы
INNERjoin имя подчиненной таблицы
ON выражение связи
Пример: из связных таблиц «Группа» и «Студент» по полю ‘Код группы’ вывести поля фамилии студента, название Группы и Фамилию Кл. руководителя.
Select fam, group.name, fio_kl
FROM group INNER join student
ON group.kod_gr = student.kod_gr
2 способ:
Select имя поля
FROM имя главной таблицы, имя подчиненной таблицы
WHERE выражение связи
Пример: из связных таблиц «Группа» и «Студент» по полю ‘Код группы’ вывести поля фамилии студента, название Группы и Фамилию Кл. руководителя.
SELECT fam, group.name, fio_kl
FROM group, student
WHERE group.kod_gr = student.kod_gr
Пример:если необходимо вывести нужные записи.
Select fam
FROM group INNER join student
ON group kod_gr = student.kod_gr
WHEREgroup= “В-21”
  • Команды SQL позволяют отображать не только существующие поля, но и виртуальные поля существующие только при просмотре и рассчитанные по нужным формулам.
Select (создание вычисления полей)
Select выражение As подпись
Пример:в таблице товар вычислить стоимость на основании цены и количества, вывести на экран с названием.
Select name AS fio_stud, cena*kol As sum FROM tovar;
  • Отображенные данные можно отсортировать по выборному полю для этого,
ORDER B поле
Пример:отсортировать список фамилий по алфавиту.
ORDER By fam
ORDERBy поле DESС – по убыванию;
ORDERBy поле ASK– по возрастанию;
ORDER By поле1 ASK, поле2 DESK.
Пример: отсортировать студентов по группам.
Select fam, group FROM student
ORDER By group,Fam
  • Отображаемые данные могут быть сгруппированы по определенному полю, при этом поле группировки будет отображать только уникальные значения.
GROUP поле
Пример: сгруппировать студентов по группам.
Select fam, group FROM student
GROUP By group
Если в таблице две группы по четыре студента в каждой, то будет отображено только две записи.
При группировке обычно испытывают вычисления итоговых значений с помощью агрегатных функций.
Count– подсчет количества записей в каждой группе.
Пример:подсчитать количества студентов в каждой группе.
Select group, count (*) as Kol FROM student
GROUP By group;
Sum– подсчет суммы значений, указанных записей по указанному полю.
Пример:найти сумму общего количества каждого товара.
Select name, Sum (kol) FROM tovar
GROUPByname;
Avg– подсчет средне арифметического значения.
Пример:найти среднюю цену каждого товара.
Select name, Avg(cena) FROM Tovar
GROUP By name;
Min, max– минимум и максимум.
Пример:Найти наименьшую цену каждого товара
Select name, Min (cena) From Tovar GROUP By name;
Nazario

Я — Nazario, создатель и автор сайта linuxwin.ru, специализируюсь на информационных технологиях с акцентом на системное администрирование Linux и Windows, веб-разработку и настройку различных систем.

Linux и Windows
Выскажите своё мнение или присоединяйтесь к обсуждению:

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