أوامر SQL الأساسية - قائمة استعلامات قاعدة البيانات والبيانات التي يجب أن تعرفها

SQL لتقف على لغة الاستعلام الهيكلية. أوامر SQL هي التعليمات المستخدمة للتواصل مع قاعدة بيانات لأداء المهام والوظائف والاستعلامات مع البيانات.

يمكن استخدام أوامر SQL للبحث في قاعدة البيانات والقيام بوظائف أخرى مثل إنشاء الجداول وإضافة البيانات إلى الجداول وتعديل البيانات وإفلات الجداول.

فيما يلي قائمة بأوامر SQL الأساسية (تسمى أحيانًا الجمل) يجب أن تعرف ما إذا كنت ستعمل مع SQL.

اختر ومن

يحدد SELECTجزء الاستعلام أعمدة البيانات التي سيتم عرضها في النتائج. هناك أيضًا خيارات يمكنك تطبيقها لإظهار البيانات التي ليست عمود جدول.

المثال التالي يبين ثلاثة أعمدة SELECTإد FROMعلى "طالب" الجدول والعمود حساب واحد. تخزن قاعدة البيانات معرف الطالب والاسم الأول واسم العائلة للطالب. يمكننا دمج عمودي الاسم الأول والأخير لإنشاء عمود الاسم الكامل المحسوب.

SELECT studentID, FirstName, LastName, FirstName + ' ' + LastName AS FullName FROM student;
+-----------+-------------------+------------+------------------------+ | studentID | FirstName | LastName | FullName | +-----------+-------------------+------------+------------------------+ | 1 | Monique | Davis | Monique Davis | | 2 | Teri | Gutierrez | Teri Gutierrez | | 3 | Spencer | Pautier | Spencer Pautier | | 4 | Louis | Ramsey | Louis Ramsey | | 5 | Alvin | Greene | Alvin Greene | | 6 | Sophie | Freeman | Sophie Freeman | | 7 | Edgar Frank "Ted" | Codd | Edgar Frank "Ted" Codd | | 8 | Donald D. | Chamberlin | Donald D. Chamberlin | | 9 | Raymond F. | Boyce | Raymond F. Boyce | +-----------+-------------------+------------+------------------------+ 9 rows in set (0.00 sec)

اصنع جدول

CREATE TABLEيفعل فقط ما يبدو عليه: يقوم بإنشاء جدول في قاعدة البيانات. يمكنك تحديد اسم الجدول والأعمدة التي يجب أن تكون في الجدول.

CREATE TABLE table_name ( column_1 datatype, column_2 datatype, column_3 datatype );

تغيير الجدول

ALTER TABLEيغير هيكل الجدول. إليك كيفية إضافة عمود إلى قاعدة البيانات:

ALTER TABLE table_name ADD column_name datatype;

التحقق من

و CHECKيستخدم القيد للحد من نطاق القيمة التي يمكن وضعها في عمود.

إذا قمت بتعريف CHECKقيد على عمود واحد ، فإنه يسمح فقط بقيم معينة لهذا العمود. إذا قمت بتعريف CHECKقيد على جدول ، فيمكنه تحديد القيم في أعمدة معينة بناءً على القيم الموجودة في أعمدة أخرى في الصف.

ينشئ SQL التالي CHECKقيدًا على عمود "العمر" عند إنشاء جدول "الأشخاص". و CHECKيضمن القيد الذي لا يمكن أن يكون أي شخص دون سن 18 عاما.

CREATE TABLE Persons ( ID int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int, CHECK (Age>=18) );

للسماح بتسمية CHECKالقيد ولتحديد CHECKقيد على أعمدة متعددة ، استخدم بناء جملة SQL التالي:

CREATE TABLE Persons ( ID int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int, City varchar(255), CONSTRAINT CHK_Person CHECK (Age>=18 AND City="Sandnes") );

أين

(AND ،OR ، IN، BETWEEN، و LIKE)

و WHEREيستخدم بند للحد من عدد الصفوف التي يتم إرجاعها.

وكمثال على ذلك، أولا نحن سوف تظهر لك SELECTبيان والنتائج دون و WHEREبيان. ثم سنضيف WHEREبيانًا يستخدم جميع التصفيات الخمسة المذكورة أعلاه.

SELECT studentID, FullName, sat_score, rcd_updated FROM student;
+-----------+------------------------+-----------+---------------------+ | studentID | FullName | sat_score | rcd_updated | +-----------+------------------------+-----------+---------------------+ | 1 | Monique Davis | 400 | 2017-08-16 15:34:50 | | 2 | Teri Gutierrez | 800 | 2017-08-16 15:34:50 | | 3 | Spencer Pautier | 1000 | 2017-08-16 15:34:50 | | 4 | Louis Ramsey | 1200 | 2017-08-16 15:34:50 | | 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 | | 6 | Sophie Freeman | 1200 | 2017-08-16 15:34:50 | | 7 | Edgar Frank "Ted" Codd | 2400 | 2017-08-16 15:35:33 | | 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 | | 9 | Raymond F. Boyce | 2400 | 2017-08-16 15:35:33 | +-----------+------------------------+-----------+---------------------+ 9 rows in set (0.00 sec)

الآن ، سنكرر SELECTالاستعلام ولكننا سنحد من الصفوف التي يتم إرجاعها باستخدام WHEREتعليمة.

STUDENT studentID, FullName, sat_score, recordUpdated FROM student WHERE (studentID BETWEEN 1 AND 5 OR studentID = 8) AND sat_score NOT IN (1000, 1400);
+-----------+----------------------+-----------+---------------------+ | studentID | FullName | sat_score | rcd_updated | +-----------+----------------------+-----------+---------------------+ | 1 | Monique Davis | 400 | 2017-08-16 15:34:50 | | 2 | Teri Gutierrez | 800 | 2017-08-16 15:34:50 | | 4 | Louis Ramsey | 1200 | 2017-08-16 15:34:50 | | 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 | | 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 | +-----------+----------------------+-----------+---------------------+ 5 rows in set (0.00 sec)

تحديث

لتحديث سجل في جدول تستخدم UPDATEالعبارة.

استخدم WHEREالشرط لتحديد السجلات التي تريد تحديثها. من الممكن تحديث عمود أو أكثر في وقت واحد. الصيغة هي:

UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;

فيما يلي مثال لتحديث اسم السجل بالمعرف 4:

UPDATE Person SET Name = “Elton John” WHERE Id = 4;

يمكنك أيضًا تحديث الأعمدة في جدول باستخدام قيم من جداول أخرى. استخدم JOINالجملة للحصول على بيانات من جداول متعددة. الصيغة هي:

UPDATE table_name1 SET table_name1.column1 = table_name2.columnA table_name1.column2 = table_name2.columnB FROM table_name1 JOIN table_name2 ON table_name1.ForeignKey = table_name2.Key

فيما يلي مثال لتحديث مدير جميع السجلات:

UPDATE Person SET Person.Manager = Department.Manager FROM Person JOIN Department ON Person.DepartmentID = Department.ID

مجموعة من

GROUP BY يسمح لك بدمج الصفوف وتجميع البيانات.

هنا بناء الجملة GROUP BY:

SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name;

نأخذ

HAVINGيسمح لك بتصفية البيانات التي تم تجميعها بواسطة GROUP BYالفقرة بحيث يحصل المستخدم على مجموعة محدودة من السجلات لعرضها.

هنا بناء الجملة HAVING:

SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name HAVING COUNT(*) > value;

AVG ()

يتم استخدام "المتوسط" لحساب متوسط ​​عمود رقمي من مجموعة الصفوف التي يتم إرجاعها بواسطة عبارة SQL.

فيما يلي بناء الجملة لاستخدام الوظيفة:

SELECT groupingField, AVG(num_field) FROM table1 GROUP BY groupingField

فيما يلي مثال باستخدام جدول الطالب:

SELECT studentID, FullName, AVG(sat_score) FROM student GROUP BY studentID, FullName;

مثل

AS يسمح لك بإعادة تسمية عمود أو جدول باستخدام اسم مستعار.

SELECT user_only_num1 AS AgeOfServer, (user_only_num1 - warranty_period) AS NonWarrantyPeriod FROM server_table

ينتج عن هذا الإخراج على النحو التالي.

+-------------+------------------------+ | AgeOfServer | NonWarrantyPeriod | +-------------+------------------------+ | 36 | 24 | | 24 | 12 | | 61 | 49 | | 12 | 0 | | 6 | -6 | | 0 | -12 | | 36 | 24 | | 36 | 24 | | 24 | 12 | +-------------+------------------------+

يمكنك أيضًا استخدام AS لتعيين اسم لجدول لتسهيل الرجوع إليه في الصلات.

SELECT ord.product, ord.ord_number, ord.price, cust.cust_name, cust.cust_number FROM customer_table AS cust JOIN order_table AS ord ON cust.cust_number = ord.cust_number

ينتج عن هذا الإخراج على النحو التالي.

+-------------+------------+-----------+-----------------+--------------+ | product | ord_number | price | cust_name | cust_number | +-------------+------------+-----------+-----------------+--------------+ | RAM | 12345 | 124 | John Smith | 20 | | CPU | 12346 | 212 | Mia X | 22 | | USB | 12347 | 49 | Elise Beth | 21 | | Cable | 12348 | 0 | Paul Fort | 19 | | Mouse | 12349 | 66 | Nats Back | 15 | | Laptop | 12350 | 612 | Mel S | 36 | | Keyboard| 12351 | 24 | George Z | 95 | | Keyboard| 12352 | 24 | Ally B | 55 | | Air | 12353 | 12 | Maria Trust | 11 | +-------------+------------+-----------+-----------------+--------------+

ترتيب حسب

ORDER BY gives us a way to sort the result set by one or more of the items in the SELECT section. Here is an SQL sorting the students by FullName in descending order. The default sort order is ascending (ASC) but to sort in the opposite order (descending) you use DESC.

SELECT studentID, FullName, sat_score FROM student ORDER BY FullName DESC;

COUNT

COUNT will count the number of rows and return that count as a column in the result set.

Here are examples of what you would use COUNT for:

  • Counting all rows in a table (no group by required)
  • Counting the totals of subsets of data (requires a Group By section of the statement)

This SQL statement provides a count of all rows. Note that you can give the resulting COUNT column a name using “AS”.

SELECT count(*) AS studentCount FROM student; 

DELETE

DELETE is used to delete a record in a table.

Be careful. You can delete all records of the table or just a few. Use the WHERE condition to specify which records you want to delete. The syntax is:

DELETE FROM table_name WHERE condition;

Here is an example deleting from the table Person the record with Id 3:

DELETE FROM Person WHERE Id = 3;

INNER JOIN

JOIN, also called Inner Join, selects records that have matching values in two tables.

SELECT * FROM A x JOIN B y ON y.aId = x.Id

LEFT JOIN

A LEFT JOIN returns all rows from the left table, and the matched rows from the right table. Rows in the left table will be returned even if there was no match in the right table. The rows from the left table with no match in the right table will have null for right table values.

SELECT * FROM A x LEFT JOIN B y ON y.aId = x.Id

RIGHT JOIN

A RIGHT JOIN returns all rows from the right table, and the matched rows from the left table. Opposite of a left join, this will return all rows from the right table even where there is no match in the left table. Rows in the right table that have no match in the left table will have null values for left table columns.

SELECT * FROM A x RIGHT JOIN B y ON y.aId = x.Id 

FULL OUTER JOIN

A FULL OUTER JOIN returns all rows for which there is a match in either of the tables. So if there are rows in the left table that do not have matches in the right table, those will be included. Also, if there are rows in the right table that do not have matches in the left table, those will be included.

SELECT Customers.CustomerName, Orders.OrderID FROM Customers FULL OUTER JOIN Orders ON Customers.CustomerID=Orders.CustomerID ORDER BY Customers.CustomerName

INSERT

INSERT is a way to insert data into a table.

INSERT INTO table_name (column_1, column_2, column_3) VALUES (value_1, 'value_2', value_3);

LIKE

LIKE  يستخدم في WHEREأو HAVING(كجزء من GROUP BY) لقصر الصفوف المحددة على العناصر عندما يحتوي العمود على نمط معين من الأحرف الموجودة فيه.

سيختار SQL هذا الطلاب الذين FullNameبدأوا بـ "Monique" أو ينتهي بـ "Greene".

SELECT studentID, FullName, sat_score, rcd_updated FROM student WHERE FullName LIKE 'Monique%' OR FullName LIKE '%Greene'; 
+-----------+---------------+-----------+---------------------+ | studentID | FullName | sat_score | rcd_updated | +-----------+---------------+-----------+---------------------+ | 1 | Monique Davis | 400 | 2017-08-16 15:34:50 | | 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 | +-----------+---------------+-----------+---------------------+ 2 rows in set (0.00 sec)

يمكنك وضع NOTقبل LIKEاستبعاد الصفوف بنمط السلسلة بدلاً من تحديدها. يستثني SQL السجلات التي تحتوي على "cer Pau" و "Ted" في عمود الاسم الكامل.

SELECT studentID, FullName, sat_score, rcd_updated FROM student WHERE FullName NOT LIKE '%cer Pau%' AND FullName NOT LIKE '%"Ted"%';
+-----------+----------------------+-----------+---------------------+ | studentID | FullName | sat_score | rcd_updated | +-----------+----------------------+-----------+---------------------+ | 1 | Monique Davis | 400 | 2017-08-16 15:34:50 | | 2 | Teri Gutierrez | 800 | 2017-08-16 15:34:50 | | 4 | Louis Ramsey | 1200 | 2017-08-16 15:34:50 | | 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 | | 6 | Sophie Freeman | 1200 | 2017-08-16 15:34:50 | | 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 | | 9 | Raymond F. Boyce | 2400 | 2017-08-16 15:35:33 | +-----------+----------------------+-----------+---------------------+ 7 rows in set (0.00 sec)