> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-detect-table-modification.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# إنشاء الجداول في ClickHouse

> تعرّف على كيفية إنشاء الجداول في ClickHouse

<a href="/get-started/quickstarts/home" onClick={(e) => { e.preventDefault(); window.location.href = (window.location.pathname.startsWith('/docs') ? '/docs' : '') + '/get-started/quickstarts/home'; }} className="inline-flex items-center gap-1.5 text-sm text-gray-500 dark:text-zinc-500 hover:text-gray-900 dark:hover:text-[#fdff75] transition-colors font-normal no-underline"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className="shrink-0"><path d="M19 12H5" /><path d="M12 19l-7-7 7-7" /></svg>All quickstarts</a>

<div className="mt-2 flex flex-wrap gap-2">
  <Badge size="lg" color="blue">التحليلات اللحظية</Badge>
  <Badge size="lg" color="blue">مستودعات البيانات</Badge>
  <Badge size="lg" color="blue">قابلية الرصد</Badge>
  <Badge size="lg" color="blue">الذكاء الاصطناعي/تعلّم الآلة</Badge>
  <Badge size="lg" color="orange">OSS</Badge>
</div>

مثل معظم أنظمة قواعد البيانات، ينظّم ClickHouse الجداول منطقيًا ضمن **قواعد بيانات**. استخدم الأمر `CREATE DATABASE` لإنشاء قاعدة بيانات جديدة في ClickHouse:

```sql theme={null}
CREATE DATABASE IF NOT EXISTS helloworld
```

وبالمثل، استخدم `CREATE TABLE` لتعريف جدول جديد. إذا لم تحدد اسم قاعدة البيانات، فسيُنشأ الجدول في قاعدة البيانات
`default`.

يُنشأ الجدول التالي المسمى `my_first_table` في قاعدة البيانات `helloworld`:

```sql theme={null}
  CREATE TABLE helloworld.my_first_table
  (
      user_id UInt32,
      message String,
      timestamp DateTime,
      metric Float32
  )
  ENGINE = MergeTree()
  PRIMARY KEY (user_id, timestamp)
```

في المثال أعلاه، `my_first_table` هو جدول `MergeTree` يحتوي على أربعة أعمدة:

* `user_id`:  عدد صحيح غير موقّع من 32 بت
* `message`: نوع بيانات `String`، يحل محل أنواع مثل `VARCHAR` و`BLOB` و`CLOB` وغيرها في أنظمة قواعد البيانات الأخرى
* `timestamp`: قيمة `DateTime`، تمثل نقطة زمنية محددة
* `metric`: عدد عشري من 32 بت

<Note>
  يحدد محرك الجدول ما يلي:

  * كيف وأين تُخزَّن البيانات
  * الاستعلامات التي يدعمها
  * ما إذا كانت البيانات مكررة أم لا

  هناك العديد من المحركات للاختيار من بينها، ولكن بالنسبة إلى جدول بسيط على خادم ClickHouse أحادي العقدة، فمن المرجح أن يكون [MergeTree](/ar/reference/engines/table-engines/mergetree-family/mergetree) هو خيارك الأنسب.
</Note>

<div id="a-brief-intro-to-primary-keys">
  ## مقدمة موجزة عن المفاتيح الأساسية
</div>

قبل المتابعة، من المهم فهم كيفية عمل المفاتيح الأساسية في ClickHouse (فطريقة تنفيذها قد تبدو غير متوقعة!):

* المفاتيح الأساسية في ClickHouse ***ليست فريدة*** لكل صف في الجدول

يحدِّد المفتاح الأساسي في جدول ClickHouse كيفية ترتيب البيانات عند كتابتها إلى القرص. فكل 8,192 صفًا أو 10 ميغابايت من
البيانات (ويُشار إلى ذلك باسم **index granularity**) يُنشئ إدخالًا في ملف فهرس المفتاح الأساسي. وينتج عن مفهوم الحبيبية هذا
**فهرسًا متناثرًا** يمكن أن يتسع في الذاكرة بسهولة، كما تمثل الـ granules مقطعًا يضم أصغر قدر من
بيانات الأعمدة التي تُعالَج أثناء استعلامات `SELECT`.

يمكن تعريف المفتاح الأساسي باستخدام المعلَمة `PRIMARY KEY`. وإذا أنشأت جدولًا من دون تحديد `PRIMARY KEY`،
فسيكون المفتاح هو الـ tuple المحددة في عبارة `ORDER BY`. وإذا حددت كلًا من `PRIMARY KEY` و`ORDER BY`، فيجب أن يكون المفتاح الأساسي بادئةً لترتيب الفرز.

المفتاح الأساسي هو أيضًا مفتاح الفرز، وهو tuple مكوّنة من `(user_id, timestamp)`. لذلك ستكون البيانات المخزنة في كل
ملف عمود مرتبة حسب `user_id` ثم `timestamp`.

<Tip>
  لمزيد من التفاصيل، اطّلع على [وحدة التدريب Modeling Data](https://learn.clickhouse.com/visitor_catalog_class/show/1328860/?utm_source=clickhouse\&utm_medium=docs) في ClickHouse Academy.
</Tip>

<div className="mt-8">
  <a href="/get-started/quickstarts/home" onClick={(e) => { e.preventDefault(); window.location.href = (window.location.pathname.startsWith('/docs') ? '/docs' : '') + '/get-started/quickstarts/home'; }} className="inline-flex items-center gap-1.5 text-sm text-gray-500 dark:text-zinc-500 hover:text-gray-900 dark:hover:text-[#fdff75] transition-colors font-normal no-underline"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className="shrink-0"><path d="M19 12H5" /><path d="M12 19l-7-7 7-7" /></svg>All quickstarts</a>
</div>
