لإنشاء مشروع جديد في واجهة Welcome to PyCharm نضغط على:
- New Script
- New Project
- Open
- Clone Repository
رتّب خطوات إنشاء مشروع جديد في PyCharm:
- إنشاء مشروع جديد New Project
- تحديد مكان المشروع
- كتابة اسم المشروع
لإنشاء ملف Python: نضغط بالزر الأيمن على مجلد المشروع ونختار من القائمة المختصرة New ثم:
- Jupyter Notebook
- Python File
- File
- New Project
برنامج PyCharm يعمل على أجهزة I-Pad والهاتف.
مجموعة من البيانات المرتبة والمنظمة التي تخزن داخل جداول مرتبطة مع بعضها بحيث يمكن الإضافة والتعديل والحذف بسهولة هي:
- المفتاح الأساسي Primary Key
- الحقل Field
- العلاقات Relationships
- قواعد البيانات
صِل كل مكوّن من مكونات قاعدة البيانات العلائقية بوصفه:
- جدول البيانات = يتكون من صفوف وأعمدة
- الأعمدة Columns = وحدة بيانات رأسية في الجدول تمثل خاصية معينة لها اسم ونوع بيانات محدد
- الصفوف Rows = مكون أفقي في الجدول يستخدم لتمثيل سجل واحد من البيانات
- الحقول Fields = نقطة تقاطع الصف مع العمود وتحتوي على قيمة واحدة
- المفتاح الأساسي Primary Key = قيد على عمود ذي قيم فريدة لا يمكن أن تتكرر أو تكون فارغة
- المفتاح الخارجي Foreign Key = قيد يستخدم لربط الجداول ويرتبط مع المفتاح الأساسي
- العلاقات Relationships = ربط الجداول لتنظيم البيانات بطريقة منطقية لتجنب التكرار
نقطة تقاطع الصف Row مع العمود Column وتحتوي على قيمة واحدة هي:
- الجدول
- المفتاح الخارجي
- الحقل Field
- العلاقة
القيد الذي يطبق على عمود ذي قيم فريدة في الجدول لا يمكن أن تتكرر أو تكون فارغة هو:
- المفتاح الأساسي Primary Key
- المفتاح الخارجي Foreign Key
- الحقل Field
- الصف Row
في جدول المثال (id, name, age, country) يمثل السجل (2, Ali, 16, Kuwait):
- عمودًا Column
- صفًا Row
- حقلًا Field
- جدولًا
في جدول المثال (id, name, age, country) تمثل الكلمة age:
- صفًا Row
- جدولًا
- قاعدة بيانات
- عمودًا Column
صِل كل نوع علاقة بين الجداول بوصفه:
- واحد إلى واحد One to One = كل سجل في الجدول الأول مرتبط بسجل واحد في الجدول الثاني والعكس صحيح
- واحد إلى متعدد One to Many = لكل سجل بالجدول الأول عدة سجلات في الجدول الثاني وكل سجل في الثاني مرتبط بسجل واحد فقط بالأول
- متعدد إلى متعدد Many to Many = كل سجل في الجدول الأول يرتبط بسجل أو أكثر في الثاني والعكس صحيح
تعليمة استيراد مكتبة sqlite3 هي:
- import sqlite3
- import connect
- sqlite3.connect()
- connection.close()
تعليمة إنشاء قاعدة بيانات باسم kuwait هي:
- connection=sqlite3.close("kuwait.db")
- import kuwait.db
- connection=sqlite3.connect("kuwait.db")
- connection.commit("kuwait.db")
تعليمة إغلاق قاعدة البيانات هي:
- connection.commit()
- connection.cursor()
- connection.close()
- import sqlite3
رتّب خطوات إنشاء قاعدة البيانات:
- استيراد مكتبة sqlite3
- إنشاء ملف قاعدة البيانات
- إغلاق قاعدة البيانات
- تنفيذ التعليمات البرمجية (تشغيل البرنامج)
- التأكد من إنشاء ملف قاعدة البيانات بمجلد المشروع
تعليمة إنشاء ملف قاعدة البيانات إذا كان الملف موجودًا بالمشروع يتم الاتصال بقاعدة البيانات فقط.
امتداد ملف قاعدة البيانات الذي يجب كتابته مع اسم الملف عند الإنشاء أو الاتصال هو:
في مثال الاتصال بقاعدة البيانات grade11، وظيفة التعليمة connection = None هي:
- اتصال أو إنشاء قاعدة بيانات باسم grade11.db
- إغلاق قاعدة البيانات
- في حال وجود اتصال بقاعدة البيانات
- تعريف متغير قيمته None مما يعني غير متصل بقاعدة بيانات
في المثال نفسه، وظيفة التعليمة except Exception as e: هي:
- إذا حدث خطأ عند اتصال أو إنشاء قاعدة البيانات
- محاولة لتنفيذ التعليمات التابعة لها
- إغلاق قاعدة البيانات
- استيراد مكتبة sqlite3
في المثال نفسه، وظيفة التعليمة try: هي:
- إذا حدث خطأ عند الاتصال
- إغلاق قاعدة البيانات
- محاولة لتنفيذ التعليمات التابعة لها
- حفظ التعديلات
في المثال نفسه، وظيفة التعليمة if connection is not None: هي:
- في حال عدم وجود اتصال
- إذا حدث خطأ عند الاتصال
- في حال وجود اتصال بقاعدة البيانات
- استيراد مكتبة sqlite3
import sqlite3
connection = None
try:
connection = sqlite3.connect('grade11.db')
print("Connected to the database successfully:)")
except Exception as e:
print("An unexpected error occurred",e)
finally:
if connection is not None:
connection.close()
print("DataBase Is Closed")
عند نجاح الاتصال تكون النتيجة:
- Connected to the database successfully:)
- Connected to the database successfully:) DataBase Is Closed
- An unexpected error occurred DataBase Is Closed
- DataBase Is Closed
في المثال نفسه، الجملة DataBase Is Closed تُطبع:
- فقط عند فشل الاتصال
- في جميع الحالات سواء نجح الاتصال أو فشل
- فقط عند نجاح الاتصال
- لا تُطبع أبدًا
صِل كل نوع بيانات في SQLite بوصفه:
- INTEGER = تخزين أرقام صحيحة
- REAL = تخزين أرقام بفاصلة عشرية
- TEXT = تخزين النصوص
- BLOB = تخزين كائنات ثنائية كبيرة
- NULL = تمثيل القيم الفارغة
نوع البيانات المناسب لسعر الكتاب 1.75 هو:
نوع البيانات المناسب لعدد الكتب 1800 هو:
نوع البيانات المناسب لاسم المؤلف Rami هو:
نوع البيانات المناسب لتخزين الصور JPEG و PNG والملفات الصوتية MP3 هو:
القيود Constraints هي:
- أنواع البيانات في SQLite
- تعليمات استرجاع البيانات
- أسماء الجداول
- قواعد تطبق على الحقول لمنع إدخال بيانات غير صحيحة لضمان الدقة
صِل كل قيد بوصفه:
- NOT NULL = لا يسمح بترك الحقل فارغ
- UNIQUE = يضمن عدم تكرار القيم بالحقل
- PRIMARY KEY = يجعل الحقل مفتاحًا أساسيًا بحيث يكون NOT NULL و UNIQUE
- DEFAULT = يحدد قيمة افتراضية عند عدم الإدخال
- CHECK = يتحقق من شرط معين عند إدخال قيمة
مثال على القيد CHECK هو:
- nationality TEXT DEFAULT 'KUWAIT'
- email TEXT UNIQUE
- name TEXT NOT NULL
- age INTEGER CHECK (age<30)
مثال على القيد DEFAULT هو:
- age INTEGER CHECK (age<30)
- email TEXT UNIQUE
- id INTEGER PRIMARY KEY
- nationality TEXT DEFAULT 'KUWAIT'
تعليمة إنشاء مؤشر الكتابة في قاعدة البيانات هي:
- cursor=connection.cursor()
- connection.commit()
- connection.close()
- cursor.fetchall()
تعليمة إنشاء جدول باسم book هي:
- INSERT INTO book
- SELECT * FROM book
- UPDATE book
- CREATE TABLE IF NOT EXISTS book
تعليمة إضافة حقل (عامود) الاسم id ونوع البيانات INTEGER والقيد مفتاح أساسي هي:
- id INTEGER NOT NULL,
- id INTEGER PRIMARY KEY,
- id TEXT PRIMARY KEY,
- id REAL UNIQUE,
تعليمة إضافة حقل (عامود) الاسم title ونوع البيانات TEXT والقيد لا يقبل قيم فارغة هي:
- title TEXT UNIQUE,
- title INTEGER NOT NULL,
- title TEXT NOT NULL,
- title TEXT PRIMARY KEY,
تعليمة إضافة حقل (عامود) الاسم author ونوع البيانات TEXT هي:
- author REAL,
- author TEXT,
- author INTEGER,
- author BLOB,
تعليمة إضافة حقل (عامود) الاسم price ونوع البيانات REAL هي:
- price TEXT,
- price INTEGER,
- price NULL,
- price REAL,
تعليمة حفظ التعديلات على قاعدة البيانات connection هي:
- connection.close()
- connection.cursor()
- cursor.execute()
- connection.commit()
وظيفة التعليمة cursor.execute(...) في برنامج إنشاء الجدول:
- حفظ التعديلات على قاعدة البيانات
- إغلاق قاعدة البيانات
- تنفيذ المؤشر للتعليمات التالية
- إنشاء مؤشر التعامل مع قاعدة البيانات
في تعليمة إنشاء الجدول يمكن الاستغناء عن جملة IF NOT EXISTS.
في تعليمة إنشاء الجدول (مثل CREATE TABLE IF NOT EXISTS) يمكن كتابة الكلمات بأحرف كبيرة أو صغيرة ولا يوجد فرق بينهما.
صِل كل حرف من الكلمة CRUD بالعملية:
- C - CREATE (INSERT) = إنشاء وإضافة بيانات
- R - READ (SELECT) = استعلام عن البيانات
- U - UPDATE = تحديث البيانات
- D - DELETE = حذف البيانات
cursor.execute('''
INSERT INTO book (title,author,year,category,price)
VALUES(?,?,?,?,?)''',
("English","UULA",2035,"Cultural",10)
)
وظيفة السطر VALUES(?,?,?,?,?) هي:
- القيم المطلوب إضافتها للجدول
- إضافة البيانات على جدول book مع كتابة عناوين الأعمدة
- حفظ التعديلات
- قيمة مؤقتة ويتم وضع إشارة ? بعدد الأعمدة المطلوبة
في تعليمة إضافة سجل واحد، السطر ("English","UULA",2035,"Cultural",10) يمثل:
- قيمة مؤقتة بعدد الأعمدة
- القيم المطلوب إضافتها للجدول
- عناوين الأعمدة
- اسم الجدول
يشترط إضافة البيانات لجميع أعمدة الجدول.
الكلمات sql و parameters تظهر بشكل تلقائي من البرنامج عند اكتمال تعليمة الإضافة للبيانات.
يمكن كتابة تعليمة إضافة البيانات في سطر واحد.
عند إضافة أكثر من سجل نستخدم بدل execute:
- fetchall
- commit
- executemany
- fetchmany
عند إضافة أكثر من سجل، تبدأ قائمة السجلات بوضع:
- القوس الدائري (
- علامة ?
- القوس المربع [
- الفاصلة ,
عند إضافة أكثر من سجل، يُكتب كل سجل داخل:
- قوسين دائريين ()
- قوسين مربعين []
- علامتي استفهام ??
- علامات اقتباس ''
عند إضافة أكثر من سجل، يُفصل بين كل سجل وآخر بـ:
- فاصلة
- علامة ?
- قوس مربع
- نقطتين
cursor.execute('''
........
VALUES(?,?)''',
("Math","UULA")
)
لإضافة بيانات سجل واحد على الجدول book للحقلين title و author، التعليمة الناقصة هي:
- INSERT INTO book (title,author)
- SELECT title,author FROM book
- UPDATE book SET title,author
- DELETE FROM book
لإضافة أكثر من سجل على الجدول book:
cursor.____('''
INSERT INTO book (title,author,price)
...
الكلمة الناقصة هي:
- executemany
- execute
- fetchall
- commit
insert_sql = 'INSERT INTO book (title,author,year,category,price) VALUES (?,?,?,?,?)'
book_list = [ ... ]
التعليمة الصحيحة لتنفيذ الإضافة هي:
- cursor.execute(book_list)
- cursor.executemany(insert_sql, book_list)
- connection.commit(insert_sql, book_list)
- cursor.fetchall(insert_sql, book_list)
تصفية البيانات وفق شروط ومعايير محددة هو:
- الحذف
- التحديث
- الإضافة
- الاستعلام
تعبيرات منطقية لتحديد السجلات التي يجب التعامل معها عند عملية الحذف والتحديث بقاعدة البيانات هي:
- القيود Constraints
- العلاقات Relationships
- أنواع البيانات
- الشروط
الشرط الذي يقارن بين قيمة وحقل أو بين حقلين باستخدام عوامل المقارنة هو:
- الشرط المركب
- المفتاح الأساسي
- القيد DEFAULT
- الشرط البسيط
الشرط الذي يتكون من شرطين أو أكثر يتم الربط بينهما باستخدام AND أو OR هو:
- الشرط البسيط
- الشرط المركب
- المفتاح الخارجي
- القيد CHECK
العامل الشرطي = يعني:
- عدم المساواة
- أكبر من أو يساوي
- المساواة
- أصغر من أو يساوي
العامل الشرطي <> أو != يعني:
- أكبر من
- أصغر من
- التحقق من القيم الفارغة
- عدم المساواة
العامل الشرطي > يعني:
- أكبر من أو يساوي
- أصغر من أو يساوي
- أكبر من
- التحقق من القيم غير الفارغة
العامل الشرطي >= يعني:
- أصغر من
- أكبر من أو يساوي
- التحقق من القيم الفارغة
- المساواة
العامل الشرطي < يعني:
- أصغر من أو يساوي
- أصغر من
- التحقق من القيم غير الفارغة
- عدم المساواة
العامل الشرطي <= يعني:
- التحقق من القيم الفارغة
- المساواة
- أكبر من
- أصغر من أو يساوي
العامل الشرطي IS NULL يعني:
- التحقق من القيم الفارغة
- التحقق من القيم غير الفارغة
- عدم المساواة
- أكبر من أو يساوي
العامل الشرطي IS NOT NULL يعني:
- التحقق من القيم غير الفارغة
- المساواة
- أكبر من
- أصغر من
cursor.execute('''
SELECT *
FROM book''')
وظيفة السطر SELECT * هي:
- استعلام أو اختيار جميع الحقول
- تحديد الجدول للاستعلام
- استرجاع البيانات وتخزينها في متغير
- كتابة الشرط
التعليمة التي تسترجع البيانات وتخزنها في متغير books هي:
- books=cursor.execute()
- books=connection.commit()
- books=cursor.fetchall()
- books=connection.cursor()
لطباعة السجلات المسترجعة نستخدم الحلقة التكرارية:
- print(books.fetchall)
- books=cursor.fetchall()
- for book in books: print(book)
- connection.close()
صِل كل كلمة بوظيفتها في تعليمة الاستعلام:
- SELECT = تحديد الحقول (الأعمدة المطلوبة)
- FROM = تحديد الجدول المطلوب
- WHERE = كتابة الشرط
صِل كل دالة بوظيفتها:
- fetchall = استرجاع الكل
- fetchmany = استرجاع عدد معين من السجلات
- fetchone = استرجاع سجل واحد فقط
التعليمة الصحيحة لتحديد (استعلام) بيانات حقلي العنوان title والسعر price لجميع سجلات الجدول book:
- SELECT * FROM book
- SELECT book FROM title , price
- SELECT title , price WHERE book
- SELECT title , price FROM book
التعليمة الصحيحة لتحديد البيانات التي طبعت بعد سنة 2022 من جدول book:
- SELECT * FROM book WHERE year <2022
- SELECT year FROM 2022
- SELECT * FROM book WHERE year >2022
- SELECT * FROM book WHERE year IS NULL
التعليمة الصحيحة لتحديد بيانات الجدول book التي ليس لها قيمة فارغة في الحقل category:
- SELECT * FROM book WHERE category IS NULL
- SELECT category FROM book
- SELECT * FROM category WHERE book IS NOT NULL
- SELECT * FROM book WHERE category IS NOT NULL
صِل كل كلمة بوظيفتها في تعليمة التحديث:
- UPDATE = اسم الجدول
- SET = الحقل المطلوب تعديل قيمتها
- WHERE = الشرط أو القيد للتحديث
رتّب الكلمات حسب القاعدة الأساسية لتعليمة التحديث:
التعليمة الصحيحة لتعديل قيمة السعر price لتصبح 40 في جدول book وفقًا للشرط id=7:
- UPDATE book SET price =? WHERE id=? ''', (7,40)
- UPDATE book SET id =? WHERE price=? ''', (40,7)
- DELETE FROM book WHERE id=? ''', (40,7)
- UPDATE book SET price =? WHERE id=? ''', (40,7)
UPDATE book
SET price =?, year = ?
WHERE category =? ''', (8,2035,"Art")
هذه التعليمة تجعل:
- price تساوي 2035 و year تساوي 8 للكتب التي category فيها Art
- category تساوي Art للكتب التي price فيها 8
- price تساوي 8 و year تساوي 2035 للكتب التي category فيها Art
- حذف الكتب التي category فيها Art
UPDATE book
SET price =?
WHERE category =? and price = ?''', (10,"Art",8)
القيمة 10 في هذه التعليمة هي:
- قيمة الشرط الأول
- قيمة الشرط الثاني
- القيمة الجديدة للسعر
- رقم السجل id
UPDATE book
SET category = ? , price =?
WHERE category =? and price = ?''', ("Science",33,"Art",4))
القيمة Art في هذه التعليمة هي:
- قيمة جديدة للحقل category
- قيمة جديدة للحقل price
- الشرط لحقل price
- الشرط لحقل category
في الشرط المركب لتعليمة التحديث (category = Art و price = 4) يُربط بين الشرطين بـ:
التعليمة الصحيحة لتعديل قيمة السعر price لتصبح 200 لجميع السجلات التي قيمة year لها فارغة:
- UPDATE book SET price =? WHERE year IS NOT NULL ''', (200,)
- UPDATE book SET year =? WHERE price IS NULL ''', (200,)
- UPDATE book SET price =? WHERE year = 200 '''
- UPDATE book SET price =? WHERE year IS NULL ''', (200,)
رتّب الكلمات حسب القاعدة الأساسية لتعليمة الحذف:
في تعليمة الحذف، الكلمة WHERE تُستخدم لـ:
- الشرط للحذف
- اسم الجدول
- الحقل المطلوب تعديل قيمته
- طباعة عدد السجلات
التعليمة التي تطبع عدد السجلات التي تم حذفها هي:
- print((cursor.rowcount))
- print(cursor.fetchall())
- print(connection.commit())
- print(books)
التعليمة الصحيحة لحذف السجلات من جدول book وفقًا للشرط title = Arabic:
- DELETE FROM book WHERE title= ? ''', ("Arabic",))
- DELETE FROM book WHERE title IS NULL ''')
- UPDATE book SET title= ? ''', ("Arabic",))
- SELECT * FROM book WHERE title= ? ''', ("Arabic",))
التعليمة الصحيحة لحذف السجلات من جدول book وفقًا للشرط (year < 2020 و price > 20):
- DELETE FROM book WHERE price<? and year > ? ''', (20,2020))
- DELETE FROM book WHERE price>? and year < ? ''', (2020,20))
- DELETE FROM book WHERE price>? and year < ? ''', (20,2020))
- DELETE FROM book WHERE price>? or year < ? ''', (20,2020))
التعليمة الصحيحة لحذف جميع السجلات من جدول book التي قيمة حقل year فارغة:
- DELETE FROM book WHERE year IS NOT NULL ''')
- DELETE FROM book WHERE year IS NULL ''')
- DELETE FROM year WHERE book IS NULL ''')
- UPDATE book WHERE year IS NULL ''')