> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> يتيح إجراء استعلامات على البيانات المخزنة في قاعدة بيانات SQLite.

# sqlite

يتيح إجراء استعلامات على البيانات المخزنة في قاعدة بيانات [SQLite](/ar/reference/engines/database-engines/sqlite).

## البنية

```sql theme={null}
sqlite('db_path', 'table_name')
```

## الوسيطات

* `db_path` — مسار ملف يحتوي على قاعدة بيانات SQLite. [String](/ar/reference/data-types/string).
* `table_name` — اسم جدول في قاعدة بيانات SQLite، أو استعلام يُمرَّر إلى SQLite كما هو (انظر [تمرير استعلام بدلًا من اسم جدول](#passing-a-query)). [String](/ar/reference/data-types/string).

## القيمة المعادة

* كائن من نوع جدول يحتوي على الأعمدة نفسها الموجودة في جدول `SQLite` الأصلي.

## تمرير استعلام بدلًا من اسم جدول

بدلًا من اسم جدول، يمكن أن تكون الوسيطة الثانية استعلام `SELECT` يُمرَّر إلى SQLite كما هو. ويُستنتج هيكل الجدول الناتج من نتيجة الاستعلام. ويمكن كتابة الاستعلام إما على هيئة استعلام فرعي، أو بتغليفه داخل الدالة `query`:

```sql theme={null}
SELECT * FROM sqlite('sqlite.db', (SELECT col1, col2 FROM table1 WHERE col2 > 1));
SELECT * FROM sqlite('sqlite.db', query('SELECT col1, col2 FROM table1 WHERE col2 > 1'));
```

مثل هذا الجدول للقراءة فقط: لا يُسمح بتنفيذ `INSERT` عليه. كما يدعم محرك جدول [`SQLite`](/ar/reference/engines/table-engines/integrations/sqlite) البنية نفسها.

<Note>
  تُحلَّل صيغة الاستعلام الفرعي `(SELECT ...)` من قِبل ClickHouse ثم يُعاد تسلسلها قبل إرسالها إلى SQLite. لذلك يجب أن تكون صالحة في ClickHouse SQL. ولتمرير بنية خاصة بـ SQLite لا يستطيع ClickHouse تحليلها، استخدم بنية `query('...')`، إذ يُرسل نصها إلى SQLite حرفيًا.

  أي `WHERE` أو `LIMIT` أو aggregation أو غير ذلك في استعلام ClickHouse المحيط **لا** يُدفَع إلى داخل الاستعلام المُمرَّر — بل يُطبَّق في ClickHouse بعد جلب نتيجة الاستعلام كاملة. ولتقييد البيانات المقروءة من SQLite، ضع شرط التصفية داخل الاستعلام المُمرَّر. عند استخدام [`external_table_strict_query = 1`](/ar/reference/settings/session-settings/external-table#external_table_strict_query)، يُرفَض شرط تصفية خارجي على أعمدة دالة الجدول مع exception بدلًا من تطبيقه محليًا، لأنه لا يمكن دفعه إلى الاستعلام المُمرَّر. يغطي الفحص predicate ذي المستوى الأعلى في `WHERE` وكل conjunct في `AND` ذي المستوى الأعلى. لا تُعد `PREWHERE` على أعمدة هذا الجدول حالةً لهذا الإعداد: إذ لا يدعم محرك الجدول هذا `PREWHERE`، ويُرفَض مثل هذا الاستعلام باستخدام `ILLEGAL_PREWHERE` بغض النظر عن الإعداد. لا يُجرى الفحص إلا حيث يمكن دفع شرط التصفية أصلًا: عندما يكون هذا الجدول هو الجدول الوحيد في الاستعلام، أو على أي من جانبي `INNER JOIN`، أو على الجانب الحافظ في outer join (الجانب الأيسر من `LEFT JOIN`، والجانب الأيمن من `RIGHT JOIN`). على الجانب غير الحافظ من `LEFT`/`RIGHT JOIN` وعلى أي من جانبي `FULL JOIN` لا يُدفَع شيء ولا يُفحَص شيء، لذا يُطبَّق شرط التصفية على أعمدة هذا الجدول محليًا بعد join حتى في الوضع الصارم. حيث يُجرى الفحص، لا يُدفَع predicate الذي يشير إلى جداول أخرى موصولة في الاستعلام المحيط ويُستبعد من الفحص، سواء أشار إلى الجانب الموصول فقط أو مزجه مع هذا الجدول ضمن expression واحد غير `AND` (مثل `OR`)؛ ويحافظ مثل هذا predicate على نقطة تقييمه المعتادة في ClickHouse (`WHERE` بعد join، و`PREWHERE` قبله) ولا يُرفَض.
</Note>

## مثال

```sql title="Query" theme={null}
SELECT * FROM sqlite('sqlite.db', 'table1') ORDER BY col2;
```

```text title="Response" theme={null}
┌─col1──┬─col2─┐
│ line1 │    1 │
│ line2 │    2 │
│ line3 │    3 │
└───────┴──────┘
```

## ذات صلة

* محرك جدول [SQLite](/ar/reference/engines/table-engines/integrations/sqlite)
* [محرك قاعدة البيانات SQLite](/ar/reference/engines/database-engines/sqlite) — قسم دعم أنواع البيانات
