DELETE FROM Peers; // удалит все содержимое таблицы Peers.
DELETE FROM FinR where day Like "20120415%"; //
DELETE FROM prices WHERE ratesheet_id NOT IN (SELECT id FROM ratesheets);
ALTER
Функции агрегирования используются как имена полей в предложении запроса SELECT, но с одним исключением: имена полей применяются как аргументы. Функции SUM и AVG могут работать только с цифровыми полями. Функции COUNT, MAX, MIN работают как с цифровыми так и с символьными полями. При применении к символьным полям функции MAX и MIN могут работают с ASCII эквивалентами символов.
Использование CROUP BY позволяет применять агрегатные функции к группам записей.
Представление (VIEW) - объект данных который не содержит никаких данных его владельца. Это - тип таблицы, чье содержание выбирается из других таблиц с помощью выполнения запроса.
Базовые таблицы - это таблицы, которые содержат данные. Однако имеется другой вид таблиц: - представления (VIEW). Представления - это таблицы чье содержание выбирается или получается из других таблиц. Они работают в запросах и операторах DML точно также как и основные таблицы, но не содержат никаких собственных данных. Представления - подобны окнам, через которые вы просматриваете информацию, которая фактически хранится в базовой таблице.
Команда CREATE VIEW
. Представление создается командой CREATE VIEW. Она состоит из слов CREATE VIEW (СОЗДАТЬ ПРЕДСТАВЛЕНИЕ), имени представления которое нужно создать, слова AS (КАК), и далее запроса. Создадим представление Londonstaff: CREATE VIEW Londonstaff
AS SELECT *
FROM Salespeople
WHERE city = "London";
Это представление используется точно так же как и любая другая таблица. Она может быть запрошена, модифицирована, вставлена в, удалена из, и соединена с, другими таблицами и представлениями. Запрос представления.
Одним из самых распространенных языков программирования на сегодняшний день является SQL. Он может использоваться для создания и управления базой данных, а также для выполнения различных операций над самими данными. Практика показывает, что данный язык довольно прост в освоении. Он по максимуму использует стандартную лексику английского языка. SQL, как и любой другой язык программирования, имеет свой синтаксис, логику, правила использования и набор основных команд.
Язык SQL: классификация команд
Стандартные команды SQL можно рассматривать, отталкиваясь от их назначения. За основу классификации можно взять следующие наборы:
— команды для построения запросов;
— команды встроенных функций и процедур;
— команды системных таблиц и триггеров;
— наборы комбинаций, предназначенных для работы со строковыми переменными и датой;
— команды для работы с таблицами и данными.
Эту классификацию можно продолжать бесконечно долго, однако основные наборы команд языка SQL будут строиться именно исходя из представленных типов. Рассматривая классификацию языка, нельзя не сказать о том, что он универсален. Об этом лишний раз свидетельствует сфера его применения. Данный язык программирования и его разновидности используются не только в стандартной среде, но и в других программах, которые вы использовали, так или иначе. Можно рассматривать сферу использования SQL с точки зрения офисного программного обеспечения. Речь идет о MicrosoftAccess. Данный язык, а если говорить точнее, его разновидность MySQL, дает возможность администрировать базы данных в Интернете. Среда разработки Oracle использует команды SQL на основе своих запросов.
Применение SQL в Microsoft Access
Пакет программного обеспечения Microsoft Office считается одним из самых простых примеров использования языка программирования баз данных. Изучение данного программного продукта предусмотрено даже в школьном курсе информатики. Система управления базой данных Microsoft Access рассматривается в одиннадцатом классе. При изучении данного приложения школьники могут ознакомиться с языком разработки баз данных. Именно тогда они получают базовое понимание процесса управления базами данных.
SQL-команды в Microsoft Access довольно примитивны, если рассматривать их на профессиональном уровне. Выполнение данных команд осуществляется очень просто. Создаются они в специальном редакторе кода. Давайте рассмотрим конкретный пример:
SELECTPe_SurName
WHEREPe_Name = ‘Мери’;
Рассматривая синтаксис данной программы, можно сказать, что она вернет пользователю фамилию человека. В данном случае речь идет о женщине по имени Мери, имя которой хранится в базе данных Contacts. Хотя использование SQL в Access ограничено, такие простые запросы иногда сильно упрощают выполнение поставленного задания.
Использование команд SQL в Oracle
Oracle является наверное единственным серьезным конкурентом Microsoft SQL Server. Эта среда разработки и управления БД постоянно приводит к усовершенствованию функций программного продукта от компании Microsoft, поскольку конкуренция является двигателем прогресса. Команды SQL Oracle, несмотря на постоянное соперничество, повторяют SQL. Необходимо отметить, что хотя Oracle практически считается копией SQL, логика данной системы и в целом языка считается проще. При использовании определенного набора команд система Oracle не имеет такой сложной структуры. Если рассматривать возможности этих сред разработки баз данных, то у Oracle нет сложной структуры вложенных запросов. Подобная разница дает возможность во много раз ускорить работу с данными. Однако в противовес это в некоторых случаях может привести к нерациональному использованию памяти в отдельных случаях. В основном структура Oracle построена на временных таблицах и их применении. К примеру, SQL команды в данной системе строятся по аналогии со стандартами языка SQL, хотя и отличаются от него.
SELECTCONCAT(CONCAT(CONCAT(‘Сотрудник ‘, sname),
CONCAT(SUBSTR(fname, 0, 1), SUBSTR(otch, 0, 1))),
CONCAT(‘принят на работу ‘, acceptdate))
FROM employees WHERE acceptdate>to_date(‘01.01.80′,’dd.mm.yyyy’);
Такой запрос возвращает данные о сотрудниках, которые были приняты на работу в определенный промежуток времени. Хотя структура запроса и отличается от MicrosoftSQLServer, выполнение SQL-команд в этих системах похоже. Исключение составляют лишь мелкие детали.
Применение SQL в сети Internet
После появления всемирной паутины, или иначе говоря, интернета, сфера применения языка SQL была существенно расширена. В сети, как известно, хранится большой объем информации. При этом она расположена не хаотично, а размещена на серверах и сайтах по определенным критериям. За хранение информации в Интернете и других местах отвечают непосредственно базы данных. Сайты представляют собой системы управления. Сайты и их программный код, как правило, организованы на разных языках программирования. В основе баз данных лежит одна из разновидностей SQL, а именно язык создания баз данных, который ориентирован на веб-интерфейсы MySQL. Основной набор команд и синтаксис данного языка полностью копируют SQL. Однако имеются некоторые дополнения, которые и придают ему отличие от Microsoft SQL Server. Команды SQL похожи не только по синтаксису, но и по набору служебных слов. Разница заключается только в структурировании и вызове запроса. Можно рассмотреть для примера запрос для создания новой таблицы. Именно этому прежде всего и учат детей на уроках информатики.
$link = mysqli_connect(‘localhost’, «root», », ‘tester’);
if (!$link) die(«Error»);
$query = ‘create table users(
login VARCHAR(20),
password VARCHAR(20))’;
if (mysqli_query($link, $query)) echo «Таблицасоздана.»;
elseecho «Таблица не создана: «.mysqli_error();
mysqli_close($link);
Результатом выполнения такого запроса будет создание новой таблицы Users с двумя полями: логин и пароль. В данном случае синтаксис изменен под Веб. В основе лежат команды MicrosoftSQLServer.
Microsoft SQL Server: построение запросов
Одной из основных задач SQL является выборка из таблиц определенного набора данных. Для выполнения таких операций в SQL предусмотрена команда select. О ней и будет идти речь ниже. Правила построения команд довольно просты. Сама команда select в SQL строится следующим образом. Предположим, у вас имеется таблица, в которой присутствуют данные о сотруднике. Таблица имеет имя Person. Вам нужно выбрать данные о сотрудниках, дата рождения которых лежит в промежутке с первого января по первое сентября текущего года. Чтобы осуществить такую выборку необходимо выполнить команду SQL, в которой будет использоваться не только стандартная конструкция, но и примерно такое условие выбора: Select * fromPersonWhereP_BirthDay>=’01/01/2016’ andP_BirthDay=’01/01/2016’ andP_BirthDay= @DB and P_BerthDay= B AND
3;
SELECT * FROM course WHERE dept_name="Comp. Sci." AND credits>3;
16. GROUP BYОператор GROUP BY часто используется с агрегатными функциями, такими как COUNT , MAX , MIN , SUM и AVG , для группировки выходных значений.
SELECT , , …
FROM
GROUP BY ;
ПримерВыведем количество курсов для каждого факультета:
SELECT COUNT(course_id), dept_name
FROM course
GROUP BY dept_name;
17. HAVINGКлючевое слово HAVING было добавлено в SQL потому, что WHERE не может быть использовано для работы с агрегатными функциями.
SELECT , , ...
FROM
GROUP BY
HAVING
ПримерВыведем список факультетов, у которых более одного курса:
SELECT COUNT(course_id), dept_name
FROM course
GROUP BY dept_name
HAVING COUNT(course_id)>1;
18. ORDER BYORDER BY используется для сортировки результатов запроса по убыванию или возрастанию. ORDER BY отсортирует по возрастанию, если не будет указан способ сортировки ASC или DESC .
SELECT , , …
FROM
ORDER BY , , … ASC|DESC;
ПримерВыведем список курсов по возрастанию и убыванию количества кредитов:
SELECT * FROM course ORDER BY credits;
SELECT * FROM course ORDER BY credits DESC;
19. BETWEENBETWEEN используется для выбора значений данных из определённого промежутка. Могут быть использованы числовые и текстовые значения, а также даты.
SELECT , , …
FROM
WHERE BETWEEN AND ;
ПримерВыведем список инструкторов, чья зарплата больше 50 000, но меньше 100 000:
SELECT * FROM instructor
WHERE salary BETWEEN 50000 AND 100000;
20. LIKEОператор LIKE используется в WHERE , чтобы задать шаблон поиска похожего значения.
Есть два свободных оператора, которые используются в LIKE:
- % (ни одного, один или несколько символов);
- _ (один символ).
SELECT , , …
FROM
WHERE LIKE ;
ПримерВыведем список курсов, в имени которых содержится «to» , и список курсов, название которых начинается с «CS-»:
SELECT * FROM course WHERE title LIKE ‘%to%’;
SELECT * FROM course WHERE course_id LIKE "CS-___";
21. INС помощью IN можно указать несколько значений для оператора WHERE:
SELECT , , …
FROM
WHERE IN (, , …);
ПримерВыведем список студентов с направлений Comp. Sci., Physics и Elec. Eng.:
SELECT * FROM student
WHERE dept_name IN (‘Comp. Sci.’, ‘Physics’, ‘Elec. Eng.’);
22. JOINJOIN используется для связи двух или более таблиц с помощью общих атрибутов внутри них. На изображении ниже показаны различные способы объединения в SQL. Обратите внимание на разницу между левым внешним объединением и правым внешним объединением:
SELECT , , …
FROM
JOIN
ON = ;
Пример 1Выведем список всех курсов и соответствующую информацию о факультетах:
SELECT * FROM course
JOIN department
ON course.dept_name=department.dept_name;
Пример 2Выведем список всех обязательных курсов и детали о них:
SELECT prereq.course_id, title, dept_name, credits, prereq_id
FROM prereq
LEFT OUTER JOIN course
ON prereq.course_id=course.course_id;
Пример 3Выведем список всех курсов вне зависимости от того, обязательны они или нет:
SELECT course.course_id, title, dept_name, credits, prereq_id
FROM prereq
RIGHT OUTER JOIN course
ON prereq.course_id=course.course_id;
23. ViewView - это виртуальная таблица SQL, созданная в результате выполнения выражения. Она содержит строки и столбцы и очень похожа на обычную SQL-таблицу. View всегда показывает самую свежую информацию из базы данных.
Создание CREATE VIEW AS
SELECT , , …
FROM
WHERE ;
Удаление DROP VIEW ;
ПримерСоздадим view , состоящую из курсов с 3 кредитами:
24. Агрегатные функцииЭти функции используются для получения совокупного результата, относящегося к рассматриваемым данным. Ниже приведены общеупотребительные агрегированные функции:
- COUNT (col_name) - возвращает количество строк;
- SUM (col_name) - возвращает сумму значений в данном столбце;
- AVG (col_name) - возвращает среднее значение данного столбца;
- MIN (col_name) - возвращает наименьшее значение данного столбца;
- MAX (col_name) - возвращает наибольшее значение данного столбца.
25. Вложенные подзапросыВложенные подзапросы - это SQL-запросы, которые включают выражения SELECT , FROM и WHERE , вложенные в другой запрос.
ПримерНайдём курсы, которые преподавались осенью 2009 и весной 2010 годов:
SELECT DISTINCT course_id
FROM section
WHERE semester = ‘Fall’ AND year= 2009 AND course_id IN (SELECT course_id
FROM section
WHERE semester = ‘Spring’ AND year= 2010);
Кирилл Поздеев , переводчик
Как Яндекс использует ваши данные и машинное обучение для персонализации сервисов - .
Выделяют следующие группы команд SQL
:
Команды языка определения данных
Команды языка определения данных
DDL
(Data Definition Language
, язык определения данных) — это подмножество SQL
, используемое для определения и модификации различных структур данных.
К данной группе относятся команды предназначенные для создания, изменения и удаления различных объектов базы данных. Команды CREATE
(создание), ALTER
(модификация) и DROP
(удаление) имеют большинство типов объектов баз данных (таблиц, представлений, процедур, триггеров, табличных областей, пользователей и др.). Т.е. существует множество команд DDL
, например, CREATE TABLE
, CREATE VIEW
, CREATE PROCEDURE
, CREATE TRIGGER
, CREATE USER
, CREATE ROLE
и т.д.
Некоторым кажется, что применение DDL
является прерогативой администраторов базы данных, а операторы DML
должны писать разработчики, но эти два языка не так-то просто разделить. Сложно организовать аффективный доступ к данным и их обработку, не понимая, какие структуры доступны и как они связаны. Также сложно проектировать соответствующие структуры, не зная, как они будут обрабатываться.
Команды языка управления данными
С помощью команд языка управления данными (DCL (Data Control Language)) можно управлять доступом пользователей к базе данных. Операторы управления данными включают в себя применяемые для предоставления и отмены полномочий команды GRANT
и REVOKE
, а также команду SET ROLE
, которая разрешает или запрещает роли для текущего сеанса.
Команды языка управления транзакциями
Команды языка управления транзакциями
(TCL (Тгаnsасtiоn Соntrol Language)) команды позволяют определить исход транзакции.
Команды управления транзакциями управляют изменениями в базе данных, которые осуществляются командами манипулирования данными.
Транзакция
(или логическая единица работы) – неделимая с точки зрения воздействия на базу данных последовательность операторов манипулирования данными (чтения, удаления, вставки, модификации) такая, что либо результаты всех операторов, входящих в транзакцию, отображаются в БД
, либо воздействие всех этих операторов полностью отсутствует.
COMMIT
— заканчивает («подтверждает») текущую транзакцию и делает постоянными (сохраняет в базе данных) изменения, осуществленные этой транзакцией. Также стирает точки сохранения этой транзакции и освобождает ее блокировки. Можно также использовать эту команду для того, чтобы вручную подтвердить сомнительную распределенную транзакцию.
ROLLBACK
— выполняет откат транзакции, т.е. отменяет все изменения, сделанные в текущей транзакции. Можно также использовать эту команду для того, чтобы вручную отменить работу, проделанную сомнительной распределенной транзакцией.
Понятие транзакции имеет непосредственную связь с понятием целостности базы данных. Очень часто база данных может обладать такими ограничениями целостности, которые просто невозможно не нарушить, выполняя только один оператор изменения БД
. Например, невозможно принять сотрудника в отдел, название и код которого отсутствует в базе данных.
В системах с развитыми средствами ограничения и контроля целостности каждая транзакция начинается при целостном состоянии базы данных и должна оставить это состояние целостными после своего завершения. Несоблюдение этого условия приводит к тому, что вместо фиксации результатов транзакции происходит ее откат (т.е. вместо оператора COMMIT
выполняется оператор ROLLBACK
), и база данных остается в таком состоянии, в котором находилась к моменту начала транзакции, т.е. в целостном состоянии.
В связи со свойством сохранения целостности БД
транзакции являются подходящими единицами изолированности пользователей, т.е., если с каждым сеансом работы с базой данных ассоциируется транзакция, то каждый пользователь начинает работу с согласованным состоянием базы данных, т.е. с таким состоянием, в котором база данных могла бы находиться, даже если бы пользователь работал с ней в одиночку.
Команды языка манипулирования данными DML (Data Manipulation Language) позволяют пользователю перемещать данные в базу данных и из нее:
- INSERT
- осуществляет вставку строк в таблицу.
- DELETE
- осуществляет удаление строк из таблицы.
- UPDATE
- осуществляет модификацию данных в таблице.
- SELECT
- осуществляет выборку данных из таблиц по запросу.
Каждый, кто работает с SQL
в среде Oracle
, должен вооружиться книгами: справочником по языку SQL, таким как «Oracle SQL: The Essential Reference? (O’Reilly), руководством по оптимизации производительности, например «Oracle SQL Tuning Pocket Reference» (O’Reilly).
Последние материалы раздела: