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

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

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

مثل معظم أنظمة قواعد البيانات، ينظّم 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>
