إس كيو إل
Paradigm | Declarative |
---|---|
Family | Query language |
Designed by | Donald D. Chamberlin Raymond F. Boyce |
Developer | ISO/IEC |
First appeared | 1974 |
الإصدار المستقر | SQL:2016
/ ديسمبر 2016 |
Typing discipline | Static, strong |
OS | Cross-platform |
Website | www |
Major implementations | |
Many | |
اللهجات | |
Influenced by | |
Datalog | |
Influenced | |
CQL, LINQ, SPARQL, SOQL, PowerShell,[1] JPQL, jOOQ, N1QL | |
|
امتداد اسم الملف | .sql |
---|---|
نوع وسائط الإنترنت | application/sql[2][3] |
طوره | ISO/IEC |
أول إصدار | 1986 |
نوع الصيغة | Database |
Standard | ISO/IEC 9075 |
Open format? | Yes |
الموقع الإلكتروني | www |
SQL ( /ˌɛsˌkjuːˈɛl/ S-Q-L,[4] /ˈsiːkwəl/ "sequel"؛ Structured Query Language وتعني لغة الاستعلامات البنيوية)[5][6][7][8] هي لغة برمجة غير إجرائية Non Procedural Language، وهي بذلك تختلف عن لغات البرمجة المعتادة مثل سي أو جافا، حيث أن اللغات الغير إجرائية هي لغات متخصصة. ولذلك فإن تركيب لغة الاستعلامات البنائية هي لغة للتعامل والتحكم مع قواعد البيانات المترابطة من خلال التعامل مع تراكيب البيانات و إجراء عمليات إدخال البيانات والحذف و الفرز و البحث و التصفية وخلافه.
تاريخ
في يونيو 1970 نشر العالم الأمريكي إدگار كود Edgar F. Codd ورقة علمية بعنوان "نموذج مترابط للبيانات في مستودعات البيانات الضخمة المشتركة A Relational Model of Data for Large Shared Data Banks" قدم فيها نموذج لإنشاء وإدارة قواعد البيانات عرف باسم نموذج قاعدة البيانات المترابطة Relational Database Model، ووفقا لهذا النموذج يتم الاحتفاظ بالبيانات في جداول متفرقة ترتبط فيما بينها بعلاقات. حقق نموذج قاعدة البيانات المترابطة نجاحًا سريعًا بين المختصين، لكنه كان من الصعب التعامل مع هذا النموذج من خلال لغات البرمجة المألوفة آنذاك مثل لغة سي ولغة بيزيك ، لذلك سعى المختصين في ابتكار لغة برمجة جديدة تكون قادرة على إنشاء قواعد البيانات والتعامل معها وفق نموذج قاعدة البيانات المترابطة. قامت جماعة من الباحثين في مختبرات شركة IBM بإنتاج أول لغة برمجة تحقق هذا الهدف وأطلقوا عليها الاسم SEQUEL وهذا اللفظ اختصار لعبارة اللغة الإنجليزية للاستعلامات البنيوية Structured English Query Language لكنهم تخلوا عن هذا الاسم سريعًا عندما اكتشفوا أنه علامة تجارية لشركة بريطانية تعمل في حقل الطيران واستبدلوه بالاسم الذي أصبح مستخدم حتى اليوم وهو تركيب لغة الاستعلامات البنائية SQL. قامت شركة IBM باستخدام تركيب لغة الاستعلامات البنائية في إنتاج عدد من نظم إدارة قواعد البيانات المترابطة وتوزيعها مثل النظام System R والنظام System/38 والنظام SQL/DS وأخيرًا النظام DB2. لكن النظام الذي حقق النجاح الأكبر هو النظام الذي اعتمدته شركة أوراكل Oracle وحمل اسمها والذي طرحته لأول مرة عام 1979. منذ ابتكار لغة الاستعلامات البنيوية في مطلع السبعينات، خضعت للعديد من التعديلات والتطويرات، كما قامت العديد من الشركات والمؤسسات البحثية بتصميم نسختها الخاصة من تركيب لغة الاستعلامات البنائية، ولمجابهة هذا الموقف قام المعهد الوطني الأمريكي للمعايير American National Standards Institute ANSI بإصدار أول نسخة معيارية من تركيب لغة الاستعلامات البنائية عام 1987 وهي التي عرفت باسم SQL1987، ثم توالت التعديلات والطبعات المعيارية، وحاليًا فإن اللغة المعيارية المعتمدة هي SQL2003.
التصميم
SQL deviates in several ways from its theoretical foundation, the relational model and its tuple calculus. In that model, a table is a set of tuples, while in SQL, tables and query results are lists of rows: the same row may occur multiple times, and the order of rows can be employed in queries (e.g. in the LIMIT clause).
Critics argue that SQL should be replaced with a language that strictly returns to the original foundation: for example, see The Third Manifesto.
بنية الجملة
The SQL language is subdivided into several language elements, including:
- Clauses, which are constituent components of statements and queries. (In some cases, these are optional.)[9]
- Expressions, which can produce either scalar values, or tables consisting of columns and rows of data
- Predicates, which specify conditions that can be evaluated to SQL three-valued logic (3VL) (true/false/unknown) or Boolean truth values and are used to limit the effects of statements and queries, or to change program flow.
- Queries, which retrieve the data based on specific criteria. This is an important element of SQL.
- Statements, which may have a persistent effect on schemata and data, or may control transactions, program flow, connections, sessions, or diagnostics.
- SQL statements also include the semicolon (";") statement terminator. Though not required on every platform, it is defined as a standard part of the SQL grammar.
- Insignificant whitespace is generally ignored in SQL statements and queries, making it easier to format SQL code for readability.
امتدادات إجرائية
SQL is designed for a specific purpose: to query data contained in a relational database. SQL is a set-based, declarative programming language, not an imperative programming language like C or BASIC. However, extensions to Standard SQL add procedural programming language functionality, such as control-of-flow constructs. These include:
Source | Common name | Full name |
---|---|---|
ANSI/ISO Standard | SQL/PSM | SQL/Persistent Stored Modules |
Interbase / Firebird | PSQL | Procedural SQL |
IBM DB2 | SQL PL | SQL Procedural Language (implements SQL/PSM) |
IBM Informix | SPL | Stored Procedural Language |
IBM Netezza | NZPLSQL[10] | (based on Postgres PL/pgSQL) |
Invantive | PSQL[11] | Invantive Procedural SQL (implements SQL/PSM and PL/SQL) |
Microsoft / Sybase | T-SQL | Transact-SQL |
Mimer SQL | SQL/PSM | SQL/Persistent Stored Module (implements SQL/PSM) |
MySQL | SQL/PSM | SQL/Persistent Stored Module (implements SQL/PSM) |
MonetDB | SQL/PSM | SQL/Persistent Stored Module (implements SQL/PSM) |
NuoDB | SSP | Starkey Stored Procedures |
Oracle | PL/SQL | Procedural Language/SQL (based on Ada) |
PostgreSQL | PL/pgSQL | Procedural Language/PostgreSQL Structured Query Language (implements SQL/PSM) |
SAP R/3 | ABAP | Advanced Business Application Programming |
SAP HANA | SQLScript | SQLScript |
Sybase | Watcom-SQL | SQL Anywhere Watcom-SQL Dialect |
Teradata | SPL | Stored Procedural Language |
تركيب لغة الاستعلامات البنائية
تتركب لغة الاستعلامات البنائية من عدد من الكلمات المحجوزة، ويمكن تقسيم هذه الكلمات المحجوزة تبعًا لوظائفها التي تقوم بها إلى ثلاثة أقسام رئيسة هي:
- لغة تعريف البيانات (Data Definition Language (DDL
- لغة معالجة البيانات (Data Manipulation Language (DML
- لغة التحكم بالبيانات (Data Control Language (DCL
لغة تعريف البيانات
Data Definition Language DDL
وهي مجموعة من الكلمات المحجوزة التي تقوم بإدارة الكائنات في قاعدة البيانات سواء بالإنشاء أو التعديل أو الحذف وتشتمل هذه المجموعة على الكلمات المحجوزة التالية:
- ALTER DATABASE
- ALTER TABLE
- CREATE DATABASE
- CREATE INDEX
- CREATE TABLE
- DROP DATABASE
- DROP INDEX
- DROP TABLE
- RENAME TABLE
التشغيل عبر المنصات والمعيارية
Year | Name | Alias | Comments |
---|---|---|---|
1986 | SQL-86 | SQL-87 | First formalized by ANSI. |
1989 | SQL-89 | FIPS 127-1 | Minor revision that added integrity constraints, adopted as FIPS 127-1. |
1992 | SQL-92 | SQL2, FIPS 127-2 | Major revision (ISO 9075), Entry Level SQL-92 adopted as FIPS 127-2. |
1999 | SQL:1999 | SQL3 | Added regular expression matching, recursive queries (e.g. transitive closure), triggers, support for procedural and control-of-flow statements, non-scalar types (arrays), and some object-oriented features (e.g. structured types). Support for embedding SQL in Java (SQL/OLB) and vice versa (SQL/JRT). |
2003 | SQL:2003 | Introduced XML-related features (SQL/XML), window functions, standardized sequences, and columns with auto-generated values (including identity-columns). | |
2006 | SQL:2006 | ISO/IEC 9075-14:2006 defines ways that SQL can be used with XML. It defines ways of importing and storing XML data in an SQL database, manipulating it within the database, and publishing both XML and conventional SQL-data in XML form. In addition, it lets applications integrate queries into their SQL code with XQuery, the XML Query Language published by the World Wide Web Consortium (W3C), to concurrently access ordinary SQL-data and XML documents.[12] | |
2008 | SQL:2008 | Legalizes ORDER BY outside cursor definitions. Adds INSTEAD OF triggers, TRUNCATE statement,[13] FETCH clause. | |
2011 | SQL:2011 | Adds temporal data (PERIOD FOR)[14] (more information at: Temporal database#History). Enhancements for window functions and FETCH clause.[15] | |
2016 | SQL:2016 | Adds row pattern matching, polymorphic table functions, JSON. |
انتقادات حول لغة الاستعلامات البنائية
وجهت العديد من الانتقادات إلى لغة الاستعلامات البنائية، وجميع هذه الانتقادات تتمحور حول فكرة أن لغة الاستعلامات البنائية قد صممت لتكون لغة غير إجرائية مخصصة لبرمجة قواعد البيانات المترابطة وهو ما تحققه لغة الاستعلامات البنائية، إلا أن بعض أدواتها تظهر قصور عن تحقيق هذه الفكرة، وقد عمل الكثير من الباحثين على معالجة هذه القصور، إلا أن المنتقدين يكررون باستمرار أن علة القصور ترجع إلى خلل في التصميم الأساسي للغة الاستعلامات البنائية وهو خلل لا يمكن معالجته لأنه جزء من مكونات لغة الاستعلامات البنائية الأساسية.
بدائل لغة الاستعلامات البنائية
اقترح منتقدي لغة الاستعلامات البنائية تصميم بدائل لها يتم فيها تفادي القصور الذي تعاني منه لغة الاستعلامات البنائية، وقد ضمت البدائل التي اقترحوها:
- IBM Business System 12 من شركة IBM
- EJB-QL من شركة سن ميكروسيستمز Sun Microsystems
- لغة استعلامات الكائنات Object Query Language
النظم التي تدعم لغة الاستعلامات البنائية
تصمم معظم نظم أدارة قواعد البيانات المترابطة بحيث تكون متوافقة مع لغة الاستعلامات البنائية، ويعتبر التوافق مع النسخة المعيارية للغة الاستعلامات البنائية ANSI SQL من الميزات التي تحقق بها النظم شعبيتها. تضم هذه النظم عدد كبير من البرمجيات بعضها ذات سمعة كبيرة وبعضها الآخر قد لا يزيد عدد مستخدميه عن مطوريه وأصدقائهم. أهم هذه النظم هي:
- Oracle من الشركة المعروفة بنفس الاسم
- MySQL من شركة MySQL AB
- MS SQL Server من شركة Microsoft
- DB2 من شركة IBM
- Borland Interbase من شركة (Borland)
انظر أيضاً
- Comparison of object-relational database management systems
- Comparison of relational database management systems
- D (data language specification)
- D4 (programming language)
- Hierarchical model
- List of relational database management systems
- MUMPS
- NoSQL
- Transact-SQL
- Online analytical processing (OLAP)
- Online transaction processing (OLTP)
- Data warehouse
- Relational data stream management system
- Star schema
- Snowflake schema
ملاحظات
المراجع
- ^ Paul, Ryan. "A guided tour of the Microsoft Command Shell". Ars Technica. Retrieved 10 April 2011.
- ^ "Media Type registration for application/sql". Internet Assigned Numbers Authority. 10 April 2013. Retrieved 10 April 2013.
- ^ "The application/sql Media Type, RFC 6922". Internet Engineering Task Force. April 2013. p. 3. Retrieved 10 April 2013.
- ^ Beaulieu, Alan (April 2009). Mary E Treseler (ed.). Learning SQL (2nd ed.). Sebastapol, CA, USA: O'Reilly. ISBN 978-0-596-52083-0.
- ^ "SQL". Britannica.com. Retrieved 2013-04-02.
- ^ "SQL". Oxforddictionaries.com. Retrieved 2017-01-16.
- ^ "SQL Guide". Publib.boulder.ibm.com. Retrieved 2017-01-16.
- ^ "Structured Query Language (SQL)". Msdn.microsoft.com. Retrieved 2017-01-16.
- ^ ANSI/ISO/IEC International Standard (IS). Database Language SQL—Part 2: Foundation (SQL/Foundation). 1999.
- ^ "IBM PureData System for Analytics, Version 7.0.3".
- ^ "Invantive Procedural SQL".
- ^ Wagner, Michael (2010). SQL/XML:2006 - Evaluierung der Standardkonformität ausgewählter Datenbanksysteme. Diplomica Verlag. p. 100. ISBN 3-8366-9609-6.
- ^ "SQL:2008 now an approved ISO international standard". Sybase. July 2008. Archived from the original on 2011-06-28.
{{cite journal}}
: Cite journal requires|journal=
(help); Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ Krishna Kulkarni, Jan-Eike Michels (2012). "Temporal features in SQL:2011" (PDF).
{{cite journal}}
: Cite journal requires|journal=
(help) - ^ Fred Zemke (2012). "What's new in SQL:2011" (PDF).
{{cite journal}}
: Cite journal requires|journal=
(help)
خطأ استشهاد: الوسم <ref>
ذو الاسم "codd-relational-model" المُعرّف في <references>
غير مستخدم في النص السابق.
خطأ استشهاد: الوسم <ref>
ذو الاسم "SQL-Fundamentals" المُعرّف في <references>
غير مستخدم في النص السابق.
خطأ استشهاد: الوسم <ref>
ذو الاسم "IBM-sql" المُعرّف في <references>
غير مستخدم في النص السابق.
خطأ استشهاد: الوسم <ref>
ذو الاسم "ISO/IEC" المُعرّف في <references>
غير مستخدم في النص السابق.
خطأ استشهاد: الوسم <ref>
ذو الاسم "chamberlin-boyce-sequel" المُعرّف في <references>
غير مستخدم في النص السابق.
خطأ استشهاد: الوسم <ref>
ذو الاسم "oppel-databases" المُعرّف في <references>
غير مستخدم في النص السابق.
خطأ استشهاد: الوسم <ref>
ذو الاسم "IBM-history" المُعرّف في <references>
غير مستخدم في النص السابق.
خطأ استشهاد: الوسم <ref>
ذو الاسم "PostgreSQL server programming" المُعرّف في <references>
غير مستخدم في النص السابق.
خطأ استشهاد: الوسم <ref>
ذو الاسم "PROLE" المُعرّف في <references>
غير مستخدم في النص السابق.
خطأ استشهاد: الوسم <ref>
ذو الاسم "About PostgreSQL" المُعرّف في <references>
غير مستخدم في النص السابق.
خطأ استشهاد: الوسم <ref>
ذو الاسم "Mimer SQL, Built on Standards" المُعرّف في <references>
غير مستخدم في النص السابق.
خطأ استشهاد: الوسم <ref>
ذو الاسم "Ora DATE" المُعرّف في <references>
غير مستخدم في النص السابق.
خطأ استشهاد: الوسم <ref>
ذو الاسم "Ora DATETIME" المُعرّف في <references>
غير مستخدم في النص السابق.
خطأ استشهاد: الوسم <ref>
ذو الاسم "Ora TIME" المُعرّف في <references>
غير مستخدم في النص السابق.
خطأ استشهاد: الوسم <ref>
ذو الاسم "X3H2" المُعرّف في <references>
غير مستخدم في النص السابق.
خطأ استشهاد: الوسم <ref>
ذو الاسم "Doll" المُعرّف في <references>
غير مستخدم في النص السابق.
خطأ استشهاد: الوسم <ref>
ذو الاسم "Gillespie" المُعرّف في <references>
غير مستخدم في النص السابق.
خطأ استشهاد: الوسم <ref>
ذو الاسم "Melton" المُعرّف في <references>
غير مستخدم في النص السابق.
خطأ استشهاد: الوسم <ref>
ذو الاسم "ISO/IEC 9075-2:2016" المُعرّف في <references>
غير مستخدم في النص السابق.
خطأ استشهاد: الوسم <ref>
ذو الاسم "Whitemarsh" المُعرّف في <references>
غير مستخدم في النص السابق.
<ref>
ذو الاسم "ISO/IEC 9075-11:2008" المُعرّف في <references>
غير مستخدم في النص السابق.المصادر
- Codd, Edgar F (June 1970). "A Relational Model of Data for Large Shared Data Banks". Communications of the ACM. 13 (6): 377–87. doi:10.1145/362384.362685. Archived from the original on 2007-06-12.
{{cite journal}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - Discussion on alleged SQL flaws (C2 wiki)
- C. J. Date with Hugh Darwen: A Guide to the SQL standard : a users guide to the standard database language SQL, 4th ed., Addison Wesley, USA 1997, ISBN 978-0-201-96426-4
SQL standards documents
ITTF publicly available standards and technical reports
The ISO/IEC Information Technology Task Force publishes publicly available standards including SQL. Technical Corrigenda (corrections) and Technical Reports (discussion documents) are published there.
SQL -- Part 1: Framework (SQL/Framework)
Draft documents
Formal SQL standards are available from ISO and ANSI for a fee. For informative use, as opposed to strict standards compliance, late drafts often suffice.
وصلات خارجية
- CS1 errors: unsupported parameter
- Articles with hatnote templates targeting a nonexistent page
- Missing redirects
- Short description with empty Wikidata description
- SQL
- Articles with example SQL code
- لغات نمذجة البيانات
- لغات برمجة تصريحية
- Programming languages with an ISO standard
- لغات الاستعلام
- Relational database management systems
- برمجة
- برمجيات متعددة المنصات
- معالجة البيانات
- حوسبة