PL / MySQL существует? - PullRequest
       10

PL / MySQL существует?

28 голосов
/ 21 марта 2012

В Oracle есть PL / SQL, мощный императивный язык.Есть ли что-нибудь подобное для MySQL?

Ответы [ 5 ]

14 голосов
/ 21 марта 2012

Хотя MySQL имеет аналогичные компоненты, нет, вы не можете использовать PL \ SQL в MySQL. То же самое касается T-SQL, используемого MS SQL Server.

MySQL имеет много документации на своем веб-сайте.

Как бы мне не хотелось ссылаться на ответы Yahoo, есть хорошее объяснение Здесь

Вы увидите, что и PL \ SQL, и T-SQL являются завершающими по Тьюрингу и, вероятно, предоставляют немного больше функциональности. Но у MySQL есть много способов выполнить подобные задачи.

Вот содержание из поста ответов Yahoo:

MySQL - многопоточная, многопользовательская система управления базами данных SQL. (СУБД) 1 , которая, согласно MySQL AB, насчитывает более 10 миллионов установок.

Библиотеки для доступа к базам данных MySQL доступны во всех основных языки программирования с языковыми API. Кроме того, Интерфейс ODBC под названием MyODBC позволяет использовать дополнительные языки программирования которые поддерживают интерфейс ODBC для связи с базой данных MySQL, такие как ASP или Coldfusion. Сервер MySQL и официальные библиотеки в основном реализовано в ANSI C.

MySQL популярен для веб-приложений и выступает в качестве базы данных. компонент платформ LAMP, MAMP и WAMP (Linux / Mac / Windows-Apache-MySQL-PHP / Perl ... и для ошибки с открытым исходным кодом инструменты отслеживания, такие как Bugzilla. Его популярность как веб-приложения тесно связан с популярностью PHP, который часто сочетается с MySQL. PHP и MySQL являются важными компонентами для запуска популярных Платформа блогов WordPress.

Следующие функции реализованы MySQL, но не некоторыми другими СУРБД:

  • Несколько механизмов хранения, позволяющих выбрать тот, который наиболее эффективен для каждой таблицы в приложении (в MySQL 5.0, механизмы хранения должны быть скомпилированы в; в MySQL 5.1 механизмы хранения могут быть динамически загруженным во время выполнения): o Собственные механизмы хранения (MyISAM, Сокол, Слияние, Память (куча), Федеративный, Архив, CSV, Черная дыра, Кластер) Разработанные для партнеров движки хранения (InnoDB, solidDB, NitroEDB, BrightHouse) -Собственные двигатели хранения
  • Кастомизированные двигатели хранения
  • Группировка коммитов, собирающая несколько транзакций из нескольких соединений вместе, чтобы увеличить количество коммитов в секунду.

Примечание: MySQL написан на C и C ++. Анализатор SQL использует yacc и доморощенный лексер. Документ, описывающий некоторые из внутренних структуры кода и руководящие принципы кодирования можно получить из Веб-сайт MySQL.

SQL


SQL, обычно расширяемый как язык структурированных запросов, - это компьютер язык, предназначенный для поиска и управления данными в системы управления реляционными базами данных, создание схем баз данных и модификация и управление доступом к объектам базы данных.

Язык SQL подразделяется на несколько языковых элементов, в том числе:

  • Операторы, которые могут оказывать постоянное влияние на схемы и данные или которые могут управлять транзакциями, потоком программ, соединениями, сеансы или диагностика.
  • Запросы, которые извлекают данные на основе определенных критериев.
  • Выражения, которые могут создавать скалярные значения или таблицы, состоящие из столбцов и строк данных.
  • Предикаты, которые определяют условия, которые могут быть оценены как значения булевой истинности SQL трехзначной логики (3VL) и обычно используются для ограничить влияние операторов и запросов или изменить программу течь.
  • Пункты, являющиеся (в некоторых случаях необязательными) составными компонентами операторов и запросов

работает в соответствии с ... концепцией определения данных манипулирования данными запроса управление транзакциями

Стандарт SQL: 2003 вносит незначительные изменения во все частиSQL: 1999, и официально вводит несколько новых функций, таких как: 1

  • Функции, связанные с XML
  • оконные функции
  • генератор последовательностей, который допускает стандартизированные последовательности
  • два новых типа столбцов: автоматически сгенерированные значения и identity-столбцы
  • новый оператор MERGE
  • расширения оператора CREATE TABLE, чтобы разрешить "CREATE TABLE AS" и "CREATE TABLE LIKE"
  • удаление плохо реализованных типов данных "BIT" и "BIT VARYING"

PL / SQL


PL / SQL - это собственное серверное процедурное расширение для корпорации Oracle до язык базы данных SQL. (Некоторые другие системы управления базами данных SQL предлагают языки, похожие на PL / SQL.) Синтаксис сильно напоминает Ада.

PL / SQL поддерживает переменные, условия, массивы и исключения. Реализации, начиная с версии 8 СУБД Oracle, имеют включены функции, связанные с объектной ориентацией.

Базовый SQL функционирует как декларативный язык. стандарт SQL - в отличие от некоторых функциональных языков программирования - не требует реализации для преобразования хвостовых вызовов в прыжки. SQL не готов предоставить методы доступа "первая строка" и "оставшаяся часть таблицы", и он не может легко выполнять некоторые конструкции, такие как петли. PL / SQL, однако, как Тьюринг-полный процедурный язык, который заполняет эти пробелы, позволяет Разработчики базы данных Oracle для взаимодействия с базовым реляционным базы данных в обязательном порядке. Операторы SQL могут сделать явными встроенные вызовы функций PL / SQL или могут вызвать триггеры PL / SQL запуск по заранее заданным событиям языка манипулирования данными (DML).

PL / SQL хранимые процедуры (функции, процедуры, пакеты и триггеры), которые выполняют DML, компилируются в базу данных Oracle: В этом случае их SQL-код может подвергаться синтаксической проверке. Программисты работая в среде базы данных Oracle, можно создавать блоки PL / SQL такой функциональности, чтобы служить процедурами, функциями; или они могут написать линейные сегменты PL / SQL в сценариях SQL * Plus.

Хотя программисты могут легко включать операторы SQL DML в PL / SQL (как определения курсора, например, или с помощью SELECT ... Синтаксис INTO), операторы языка определения данных (DDL), такие как CREATE TABLE / DROP INDEX и т. Д. Требуют использования «Динамического SQL». Ранее версии Oracle требовали использования сложной встроенной DBMS_SQL пакет для динамического SQL, где система должна была явно разобрать и выполнить инструкцию SQL. Более поздние версии включили EXECUTE НЕМЕДЛЕННЫЙ синтаксис под названием «Native Dynamic SQL», который значительно упрощает дела. Любое использование DDL в Oracle приведет к неявный коммит. Программисты также могут использовать динамический SQL для выполнения DML где они не знают точное содержание заявления заранее.

PL / SQL предлагает несколько предопределенных пакетов для определенных целей. такие Пакеты PL / SQL включают в себя:

  • DBMS_OUTPUT - для операций вывода в адресаты, не относящиеся к базе данных
  • DBMS_JOB - для запуска определенных процедур / функций в определенное время (т. Е. Планирование)
  • DBMS_XPLAN - для форматирования вывода «Объяснить план»
  • DBMS_SESSION - обеспечивает доступ к операторам SQL ALTER SESSION и SET ROLE и другой информации о сеансе.
  • DBMS_METADATA - для извлечения метаданных из словаря данных (например, операторов DDL)
  • UTL_FILE - для чтения и записи файлов на диск
  • UTL_HTTP - для отправки запросов к веб-серверам из базы данных
  • UTL_SMTP - для отправки почты из базы данных (через SMTP-сервер)

Oracle Corporation обычно добавляет дополнительные пакеты и / или расширяет функциональность пакета с каждым последующим выпуском СУБД Oracle.

3 голосов
/ 21 марта 2012

Я не знаю, насколько они мощные, но этот сайт дает информацию о написании хранимых процедур MySQL с использованием SQL;

http://www.mysqltutorial.org/mysql-stored-procedure-tutorial.aspx

* 1006 Е.Г. *

http://www.mysqltutorial.org/sql-cursor-in-stored-procedures.aspx

1 голос
/ 02 февраля 2018

Google для " Начало работы с хранимыми процедурами mysql ", синтаксис не так уж далек от PLSQL.

    DELIMITER //     
    CREATE PROCEDURE GetAllProducts()
       BEGIN
       SELECT *  FROM products;
    END //
    DELIMITER ;
1 голос
/ 21 марта 2012

Нет. pl / sql - это язык хранимых процедур, характерный для Oracle .Различные базы данных используют разные языки для хранимых процедур.См. страницу документации mySql для получения информации о хранимых процедурах.

0 голосов
/ 17 октября 2018

Терминологическая проблема

Некоторые поставщики реляционных баз данных следуют традиционному определению SQL, которое определяет его как декларативный язык . Примеры этих поставщиков включают PostgreSQL, IBM, Oracle. Для этих поставщиков баз данных вы пишете процедурный код на своих собственных процедурных языках, которые они предоставляют, что может или не может сделать доступным SQL.

Некоторые поставщики рассматривают свой процедурный язык как расширение SQL. Эти поставщики не имеют такой дифференциации. Например, в MySQL «Хранимая программа» объявляется с LANGUAGE SQL, хотя она предоставляет различные языковые функции (, такие как LEAVE, REPEAT и UNTIL, которые не предоставляются в других местах ). Таким образом, в «подпрограмме SQL» у вас по сути другой «язык SQL», чем в выражении запроса. Другие производители, такие как Microsoft, называют все, что они делают, одним термином - «T-SQL». Такое отбрасывание термина затрудняет поиск эквивалентных функций в других базах данных или понимание того, какие функции могут отличаться.

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

...