ClickHouse/docs/fa/sql_reference/syntax.md
2020-04-04 12:15:31 +03:00

15 KiB
Raw Blame History

machine_translated machine_translated_rev toc_priority toc_title
true d734a8e46d 31 نحو

نحو

دو نوع تجزیه کننده در سیستم وجود دارد: تجزیه کننده کامل مربع (تجزیه کننده نزول بازگشتی) و تجزیه کننده فرمت داده (تجزیه کننده جریان سریع). در تمام موارد به جز INSERT پرس و جو, تنها تجزیه کننده کامل گذاشتن استفاده شده است. این INSERT پرس و جو از هر دو تجزیه کننده استفاده می کند:

INSERT INTO t VALUES (1, 'Hello, world'), (2, 'abc'), (3, 'def')

این INSERT INTO t VALUES قطعه توسط تجزیه کننده کامل و داده ها تجزیه می شود (1, 'Hello, world'), (2, 'abc'), (3, 'def') توسط تجزیه کننده جریان سریع تجزیه می شود. شما همچنین می توانید تجزیه کننده کامل برای داده ها با استفاده از در حال خواندن: تنظیمات. چه زمانی input_format_values_interpret_expressions = 1 کلیک هاوس اول سعی می کند به تجزیه ارزش با تجزیه کننده جریان سریع. در صورت عدم موفقیت کلیک هاوس تلاش می کند تا از تجزیه کننده کامل برای داده ها استفاده کند و مانند یک مربع درمان شود عبارت.

داده ها می توانند هر فرمت داشته باشند. هنگامی که یک پرس و جو را دریافت کرده است, سرور محاسبه بیش از بیشینه_کرکی_سیز بایت از درخواست در رم (به طور پیش فرض, 1 مگابایت), و بقیه جریان تجزیه. این به این معنی است که سیستم با مشکلات بزرگ ندارد INSERT نمایش داده شد, مانند خروجی زیر می کند.

هنگام استفاده از Values قالب در یک INSERT پرس و جو, ممکن است به نظر می رسد که داده ها همان عبارات در تجزیه SELECT پرس و جو, اما این درست نیست. این Values فرمت بسیار محدود تر است.

بعد ما تجزیه کننده کامل را پوشش خواهیم داد. برای کسب اطلاعات بیشتر در مورد تجزیه کننده فرمت, دیدن فرشها بخش.

فاصلهها

ممکن است هر تعداد از نمادهای فضایی بین سازه های نحوی (از جمله شروع و پایان پرس و جو) وجود دارد. علامت فضا شامل فضا, باریکه, خوراک خط, کروم, و خوراک فرم.

توضیحات

گذاشتن به سبک و ج سبک نظرات پشتیبانی می شوند. گذاشتن به سبک نظرات: از -- به انتهای خط فضای پس از -- می توان حذف. نظرات در ج سبک: از /* به */. این نظرات می تواند چند خطی باشد. فضاهای اینجا مورد نیاز نیست, هم.

کلیدواژهها

کلمات کلیدی حساس به حروف هستند که مربوط به:

  • استاندارد گذاشتن. به عنوان مثال, SELECT, select و SeLeCt همه معتبر هستند.
  • پیاده سازی در برخی از پایگاه داده محبوب (خروجی زیر و یا پست). به عنوان مثال, DateTime همان است datetime.

این که نام نوع داده حساس به حروف باشد را میتوان در system.data_type_families جدول

در مقایسه با استاندارد گذاشتن تمام کلمات کلیدی دیگر (از جمله نام توابع) عبارتند از حساس به حالت.

کلمات کلیدی محفوظ نیست (فقط به عنوان کلمات کلیدی در زمینه مربوطه تجزیه می شوند). در صورت استفاده شناسهها همان کلمات کلیدی را به نقل قول محصور. برای مثال پرس و جو SELECT "FROM" FROM table_name معتبر است اگر جدول table_name دارای ستون با نام "FROM".

شناسهها

شناسه ها عبارتند از:

شناسه را می توان به نقل و یا غیر نقل. توصیه می شود از شناسه های غیر نقل قول استفاده کنید.

شناسه های غیر نقل قول باید عبارت منظم مطابقت ^[a-zA-Z_][0-9a-zA-Z_]*$ و نمی تواند برابر باشد کلیدواژهها. مثالها: x, _1, X_y__Z123_.

اگر شما می خواهید به استفاده از شناسه همان کلمات کلیدی و یا شما می خواهید به استفاده از نمادهای دیگر در شناسه, نقل قول با استفاده از دو نقل قول و یا پشت پرده, مثلا, "id", `id`.

Literals

وجود دارد: عددی, رشته, ترکیب و NULL literals.

عددی

تحت اللفظی عددی تلاش می کند به تجزیه شود:

  • برای اولین بار به عنوان یک شماره امضا 64 بیتی, با استفاده از استرتول تابع.
  • اگر ناموفق, به عنوان یک عدد بدون علامت 64 بیتی, با استفاده از استرول تابع.
  • اگر ناموفق, به عنوان یک عدد شناور نقطه با استفاده از رشته تابع.
  • در غیر این صورت, یک خطا بازگشته است.

مقدار مربوطه کوچکترین نوع است که متناسب با ارزش داشته باشد. مثلا, 1 به عنوان تجزیه UInt8 اما 256 به عنوان تجزیه شده است UInt16. برای کسب اطلاعات بیشتر, دیدن انواع داده ها.

مثالها: 1, 18446744073709551615, 0xDEADBEEF, 01, 0.1, 1e100, -1e-100, inf, nan.

رشته

فقط رشته های رشته ای در نقل قول های تک پشتیبانی می شوند. شخصیت های محصور می تواند بک اسلش فرار. توالی فرار زیر یک مقدار خاص مربوطه: \b, \f, \r, \n, \t, \0, \a, \v, \xHH. در تمام موارد دیگر, فرار توالی در قالب \c کجا c است هر شخصیت, به تبدیل c. این به این معنی است که شما می توانید توالی استفاده کنید \'و\\. ارزش خواهد شد که رشته نوع.

حداقل مجموعه ای از شخصیت های که شما نیاز به فرار در لیتر رشته: ' و \. نقل قول تنها را می توان با نقل قول تنها فرار, لیتر 'It\'s' و 'It''s' برابر هستند.

ترکیب

سازه ها برای ارریس پشتیبانی می شوند: [1, 2, 3] و تاپل: (1, 'Hello, world!', 2).. در واقع این نیست literals اما عبارات با آرایه ایجاد اپراتور و چند تایی ایجاد اپراتور بود. مجموعه ای باید شامل حداقل یک مورد باشد و یک تاپل باید حداقل دو مورد داشته باشد. تاپل یک هدف خاص برای استفاده در IN بند یک SELECT پرس و جو. توپلس می تواند به عنوان نتیجه یک پرس و جو به دست, اما نمی توان به یک پایگاه داده ذخیره (به غیر از حافظه جدول).

NULL

نشان می دهد که ارزش از دست رفته است.

به منظور ذخیره NULL در یک میدان جدول باید از Nullable نوع.

بسته به فرمت داده (ورودی یا خروجی), NULL ممکن است نمایندگی های مختلف. برای کسب اطلاعات بیشتر, اسناد و مدارک برای دیدن قالبهای داده.

بسیاری از تفاوت های ظریف برای پردازش وجود دارد NULL. مثلا, اگر حداقل یکی از استدلال از یک عملیات مقایسه است NULL نتیجه این عملیات نیز خواهد بود NULL. همان درست است برای ضرب است, بعلاوه, و عملیات دیگر. برای کسب اطلاعات بیشتر, خواندن اسناد و مدارک برای هر عملیات.

در نمایش داده شد, شما می توانید بررسی کنید NULL با استفاده از IS NULL و IS NOT NULL اپراتورها و توابع مرتبط isNull و isNotNull.

توابع

توابع مانند یک شناسه با یک لیست از استدلال نوشته شده (احتمالا خالی) در داخل پرانتز. در مقابل به گذاشتن استاندارد, براکت مورد نیاز است, حتی برای یک لیست استدلال خالی. مثال: now(). توابع منظم و جمع وجود دارد (بخش را ببینید “Aggregate functions”). برخی از توابع دانه می تواند شامل دو لیست از استدلال در براکت. مثال: quantile (0.9) (x). این توابع مجموع نامیده می شوند “parametric” توابع, و استدلال در لیست اول نامیده می شوند “parameters”. نحو توابع کل بدون پارامتر همان است که برای توابع به طور منظم است.

اپراتورها

اپراتورها در حال تبدیل به توابع مربوط به خود را طی پرس و جو و تجزیه گرفتن اولویت خود را و associativity به حساب آورد. برای مثال بیان 1 + 2 * 3 + 4 تبدیل به plus(plus(1, multiply(2, 3)), 4).

انواع داده ها و موتورهای جدول پایگاه داده

انواع داده ها و موتورهای جدول در CREATE پرس و جو به همان شیوه به عنوان شناسه و یا توابع نوشته شده است. به عبارت دیگر, ممکن است یا ممکن است حاوی یک لیست استدلال در براکت نیست. برای کسب اطلاعات بیشتر به بخش ها مراجعه کنید “Data types,” “Table engines,” و “CREATE”.

نامگردانهای بیان

نام مستعار یک نام تعریف شده توسط کاربر برای بیان در پرس و جو است.

expr AS alias
  • AS — The keyword for defining aliases. You can define the alias for a table name or a column name in a SELECT بند بدون استفاده از AS کلمه کلیدی.

    For example, `SELECT table_name_alias.column_name FROM table_name table_name_alias`.
    
    In the [CAST](sql_reference/functions/type_conversion_functions.md#type_conversion_function-cast) function, the `AS` keyword has another meaning. See the description of the function.
    
  • expr — Any expression supported by ClickHouse.

    For example, `SELECT column_name * 2 AS double FROM some_table`.
    
  • alias — Name for expr. نام مستعار باید با پیروی از شناسهها نحو.

    For example, `SELECT "table t".column_name FROM table_name AS "table t"`.
    

نکاتی در مورد استفاده

نام مستعار جهانی برای یک پرس و جو و یا زیرخاکی هستند و شما می توانید یک نام مستعار در هر بخشی از یک پرس و جو برای هر بیان تعریف. به عنوان مثال, SELECT (1 AS n) + 2, n.

نام مستعار قابل مشاهده نیست در subqueries و بین subqueries. مثلا, در حالی که اجرای پرس و جو SELECT (SELECT sum(b.a) + num FROM b) - a.a AS num FROM a تاتر استثنا را تولید می کند Unknown identifier: num.

اگر یک نام مستعار برای ستون نتیجه در تعریف SELECT بند یک خرده فروشی, این ستون ها در پرس و جو بیرونی قابل مشاهده هستند. به عنوان مثال, SELECT n + m FROM (SELECT 1 AS n, 2 AS m).

مراقب باشید با نام مستعار است که همان نام ستون یا جدول می باشد. بیایید مثال زیر را در نظر بگیریم:

CREATE TABLE t
(
    a Int,
    b Int
)
ENGINE = TinyLog()
SELECT
    argMax(a, b),
    sum(b) AS b
FROM t
Received exception from server (version 18.14.17):
Code: 184. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Aggregate function sum(b) is found inside another aggregate function in query.

در این مثال ما اعلام جدول t با ستون b. سپس, در هنگام انتخاب داده, ما تعریف sum(b) AS b نام مستعار. به عنوان نام مستعار جهانی هستند, خانه را جایگزین تحت اللفظی b در عبارت argMax(a, b) با بیان sum(b). این جایگزینی باعث استثنا.

ستاره

در یک SELECT پرس و جو, ستاره می تواند عبارت جایگزین. برای کسب اطلاعات بیشتر به بخش مراجعه کنید “SELECT”.

عبارتها

بیان یک تابع است, شناسه, تحت اللفظی, استفاده از یک اپراتور, بیان در داخل پرانتز, خرده فروشی, یا ستاره. همچنین می تواند شامل یک نام مستعار. لیستی از عبارات یک یا چند عبارت از هم جدا شده توسط کاما است. توابع و اپراتورهای, به نوبه خود, می توانید عبارات به عنوان استدلال دارند.

مقاله اصلی