blob: 766c41314fce439aa9bd232cec534e136da7fe3d [file] [log] [blame]
<!doctype html>
<html lang="en-US" data-theme="light">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<meta name="generator" content="VuePress 2.0.0-rc.14" />
<meta name="theme" content="VuePress Theme Hope 2.0.0-rc.52" />
<style>
html {
background: var(--bg-color, #fff);
}
html[data-theme="dark"] {
background: var(--bg-color, #1d1e1f);
}
body {
background: var(--bg-color);
}
</style>
<script>
const userMode = localStorage.getItem("vuepress-theme-hope-scheme");
const systemDarkMode =
window.matchMedia &&
window.matchMedia("(prefers-color-scheme: dark)").matches;
if (userMode === "dark" || (userMode !== "light" && systemDarkMode)) {
document.documentElement.setAttribute("data-theme", "dark");
}
</script>
<link rel="alternate" hreflang="zh-cn" href="https://iotdb.apache.org/zh/UserGuide/V1.0.x/Reference/SQL-Reference.html"><meta property="og:url" content="https://iotdb.apache.org/UserGuide/V1.0.x/Reference/SQL-Reference.html"><meta property="og:site_name" content="IoTDB Website"><meta property="og:title" content="SQL Reference"><meta property="og:description" content="SQL Reference In this part, we will introduce you IoTDB's Query Language. IoTDB offers you a SQL-like query language for interacting with IoTDB, the query language can be devide..."><meta property="og:type" content="article"><meta property="og:locale" content="en-US"><meta property="og:locale:alternate" content="zh-CN"><meta property="og:updated_time" content="2023-11-07T08:05:06.000Z"><meta property="article:modified_time" content="2023-11-07T08:05:06.000Z"><script type="application/ld+json">{"@context":"https://schema.org","@type":"Article","headline":"SQL Reference","image":[""],"dateModified":"2023-11-07T08:05:06.000Z","author":[]}</script><link rel="icon" href="/favicon.ico"><meta name="Description" content="Apache IoTDB: Time Series Database for IoT"><meta name="Keywords" content="TSDB, time series, time series database, IoTDB, IoT database, IoT data management,时序数据库, 时间序列管理, IoTDB, 物联网数据库, 实时数据库, 物联网数据管理, 物联网数据"><meta name="baidu-site-verification" content="wfKETzB3OT"><meta name="google-site-verification" content="mZWAoRY0yj_HAr-s47zHCGHzx5Ju-RVm5wDbPnwQYFo"><script type="text/javascript">
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(["setDoNotTrack", true]);
_paq.push(["disableCookies"]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://analytics.apache.org/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '56']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script><title>SQL Reference | IoTDB Website</title><meta name="description" content="SQL Reference In this part, we will introduce you IoTDB's Query Language. IoTDB offers you a SQL-like query language for interacting with IoTDB, the query language can be devide...">
<link rel="preload" href="/assets/style-DABxmu5B.css" as="style"><link rel="stylesheet" href="/assets/style-DABxmu5B.css">
<link rel="modulepreload" href="/assets/app-8RDGKaEm.js"><link rel="modulepreload" href="/assets/SQL-Reference.html-DxdxtZxI.js">
</head>
<body>
<div id="app"><!--[--><!--[--><!--[--><span tabindex="-1"></span><a href="#main-content" class="vp-skip-link sr-only">Skip to main content</a><!--]--><!--[--><div class="theme-container external-link-icon pure has-toc"><!--[--><header id="navbar" class="vp-navbar"><div class="vp-navbar-start"><button type="button" class="vp-toggle-sidebar-button" title="Toggle Sidebar"><span class="icon"></span></button><!----><!--[--><a class="route-link vp-brand" href="/"><img class="vp-nav-logo" src="/logo.png" alt><!----><span class="vp-site-name hide-in-pad">IoTDB Website</span></a><!--]--><!----></div><div class="vp-navbar-center"><!----><!--[--><!--]--><!----></div><div class="vp-navbar-end"><!----><!--[--><!--[--><div id="docsearch-container" style="display:none;"></div><div><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"><svg width="15" height="15" class="DocSearch-Control-Key-Icon"><path d="M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953" stroke-width="1.2" stroke="currentColor" fill="none" stroke-linecap="square"></path></svg></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--><nav class="vp-nav-links"><div class="vp-nav-item hide-in-mobile"><div class="vp-dropdown-wrapper"><button type="button" class="vp-dropdown-title" aria-label="Documentation"><!--[--><!---->Documentation<!--]--><span class="arrow"></span><ul class="vp-dropdown"><li class="vp-dropdown-item"><a class="route-link auto-link" href="/UserGuide/latest/QuickStart/QuickStart.html" aria-label="v1.3.0/1/2"><!---->v1.3.0/1/2<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/UserGuide/V1.2.x/QuickStart/QuickStart.html" aria-label="v1.2.x"><!---->v1.2.x<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/UserGuide/V1.1.x/QuickStart/QuickStart.html" aria-label="v1.1.x"><!---->v1.1.x<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/UserGuide/V1.0.x/QuickStart/QuickStart.html" aria-label="v1.0.x"><!---->v1.0.x<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/UserGuide/V0.13.x/QuickStart/QuickStart.html" aria-label="v0.13.x"><!---->v0.13.x<!----></a></li></ul></button></div></div><div class="vp-nav-item hide-in-mobile"><a class="auto-link external-link" href="https://cwiki.apache.org/confluence/display/IOTDB/System+Design" aria-label="Design" rel="noopener noreferrer" target="_blank"><!---->Design<!----></a></div><div class="vp-nav-item hide-in-mobile"><a class="route-link auto-link" href="/Download/" aria-label="Download"><!---->Download<!----></a></div><div class="vp-nav-item hide-in-mobile"><div class="vp-dropdown-wrapper"><button type="button" class="vp-dropdown-title" aria-label="Community"><!--[--><!---->Community<!--]--><span class="arrow"></span><ul class="vp-dropdown"><li class="vp-dropdown-item"><a class="route-link auto-link" href="/Community/About-the-Community.html" aria-label="About the Community"><!---->About the Community<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/Community/Development-Guide.html" aria-label="Development Guide"><!---->Development Guide<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/Community/Community-Partners.html" aria-label="Community Partners"><!---->Community Partners<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/Community/Communication-Channels.html" aria-label="Communication Channels"><!---->Communication Channels<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/Community/Events-and-Reports.html" aria-label="Events and Reports"><!---->Events and Reports<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/Community/Commiters.html" aria-label="Commiters"><!---->Commiters<!----></a></li></ul></button></div></div><div class="vp-nav-item hide-in-mobile"><div class="vp-dropdown-wrapper"><button type="button" class="vp-dropdown-title" aria-label="ASF"><!--[--><!---->ASF<!--]--><span class="arrow"></span><ul class="vp-dropdown"><li class="vp-dropdown-item"><a class="auto-link external-link" href="https://www.apache.org/" aria-label="Foundation" rel="noopener noreferrer" target="_blank"><!---->Foundation<!----></a></li><li class="vp-dropdown-item"><a class="auto-link external-link" href="https://www.apache.org/licenses/" aria-label="License" rel="noopener noreferrer" target="_blank"><!---->License<!----></a></li><li class="vp-dropdown-item"><a class="auto-link external-link" href="https://www.apache.org/security/" aria-label="Security" rel="noopener noreferrer" target="_blank"><!---->Security<!----></a></li><li class="vp-dropdown-item"><a class="auto-link external-link" href="https://www.apache.org/foundation/sponsorship.html" aria-label="Sponsorship" rel="noopener noreferrer" target="_blank"><!---->Sponsorship<!----></a></li><li class="vp-dropdown-item"><a class="auto-link external-link" href="https://www.apache.org/foundation/thanks.html" aria-label="Thanks" rel="noopener noreferrer" target="_blank"><!---->Thanks<!----></a></li><li class="vp-dropdown-item"><a class="auto-link external-link" href="https://www.apache.org/events/current-event" aria-label="Current Events" rel="noopener noreferrer" target="_blank"><!---->Current Events<!----></a></li><li class="vp-dropdown-item"><a class="auto-link external-link" href="https://privacy.apache.org/policies/privacy-policy-public.html" aria-label="Privacy" rel="noopener noreferrer" target="_blank"><!---->Privacy<!----></a></li></ul></button></div></div></nav><div class="vp-nav-item"><div class="vp-dropdown-wrapper"><button type="button" class="vp-dropdown-title" aria-label="Select language"><!--[--><svg xmlns="http://www.w3.org/2000/svg" class="icon i18n-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="i18n icon" name="i18n" style="width:1rem;height:1rem;vertical-align:middle;"><path d="M379.392 460.8 494.08 575.488l-42.496 102.4L307.2 532.48 138.24 701.44l-71.68-72.704L234.496 460.8l-45.056-45.056c-27.136-27.136-51.2-66.56-66.56-108.544h112.64c7.68 14.336 16.896 27.136 26.112 35.84l45.568 46.08 45.056-45.056C382.976 312.32 409.6 247.808 409.6 204.8H0V102.4h256V0h102.4v102.4h256v102.4H512c0 70.144-37.888 161.28-87.04 210.944L378.88 460.8zM576 870.4 512 1024H409.6l256-614.4H768l256 614.4H921.6l-64-153.6H576zM618.496 768h196.608L716.8 532.48 618.496 768z"></path></svg><!--]--><span class="arrow"></span><ul class="vp-dropdown"><li class="vp-dropdown-item"><a class="route-link route-link-active auto-link" href="/UserGuide/V1.0.x/Reference/SQL-Reference.html" aria-label="English"><!---->English<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/zh/UserGuide/V1.0.x/Reference/SQL-Reference.html" aria-label="简体中文"><!---->简体中文<!----></a></li></ul></button></div></div><div class="vp-nav-item hide-in-mobile"><button type="button" class="vp-color-mode-switch" id="color-mode-switch"><svg xmlns="http://www.w3.org/2000/svg" class="icon auto-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="auto icon" name="auto" style="display:none;"><path d="M512 992C246.92 992 32 777.08 32 512S246.92 32 512 32s480 214.92 480 480-214.92 480-480 480zm0-840c-198.78 0-360 161.22-360 360 0 198.84 161.22 360 360 360s360-161.16 360-360c0-198.78-161.22-360-360-360zm0 660V212c165.72 0 300 134.34 300 300 0 165.72-134.28 300-300 300z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" class="icon dark-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="dark icon" name="dark" style="display:none;"><path d="M524.8 938.667h-4.267a439.893 439.893 0 0 1-313.173-134.4 446.293 446.293 0 0 1-11.093-597.334A432.213 432.213 0 0 1 366.933 90.027a42.667 42.667 0 0 1 45.227 9.386 42.667 42.667 0 0 1 10.24 42.667 358.4 358.4 0 0 0 82.773 375.893 361.387 361.387 0 0 0 376.747 82.774 42.667 42.667 0 0 1 54.187 55.04 433.493 433.493 0 0 1-99.84 154.88 438.613 438.613 0 0 1-311.467 128z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" class="icon light-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="light icon" name="light" style="display:block;"><path d="M952 552h-80a40 40 0 0 1 0-80h80a40 40 0 0 1 0 80zM801.88 280.08a41 41 0 0 1-57.96-57.96l57.96-58a41.04 41.04 0 0 1 58 58l-58 57.96zM512 752a240 240 0 1 1 0-480 240 240 0 0 1 0 480zm0-560a40 40 0 0 1-40-40V72a40 40 0 0 1 80 0v80a40 40 0 0 1-40 40zm-289.88 88.08-58-57.96a41.04 41.04 0 0 1 58-58l57.96 58a41 41 0 0 1-57.96 57.96zM192 512a40 40 0 0 1-40 40H72a40 40 0 0 1 0-80h80a40 40 0 0 1 40 40zm30.12 231.92a41 41 0 0 1 57.96 57.96l-57.96 58a41.04 41.04 0 0 1-58-58l58-57.96zM512 832a40 40 0 0 1 40 40v80a40 40 0 0 1-80 0v-80a40 40 0 0 1 40-40zm289.88-88.08 58 57.96a41.04 41.04 0 0 1-58 58l-57.96-58a41 41 0 0 1 57.96-57.96z"></path></svg></button></div><div class="vp-nav-item vp-action"><a class="vp-action-link" href="https://github.com/apache/iotdb" target="_blank" rel="noopener noreferrer" aria-label="GitHub"><svg xmlns="http://www.w3.org/2000/svg" class="icon github-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="github icon" name="github" style="width:1.25rem;height:1.25rem;vertical-align:middle;"><path d="M511.957 21.333C241.024 21.333 21.333 240.981 21.333 512c0 216.832 140.544 400.725 335.574 465.664 24.49 4.395 32.256-10.07 32.256-23.083 0-11.69.256-44.245 0-85.205-136.448 29.61-164.736-64.64-164.736-64.64-22.315-56.704-54.4-71.765-54.4-71.765-44.587-30.464 3.285-29.824 3.285-29.824 49.195 3.413 75.179 50.517 75.179 50.517 43.776 75.008 114.816 53.333 142.762 40.79 4.523-31.66 17.152-53.377 31.19-65.537-108.971-12.458-223.488-54.485-223.488-242.602 0-53.547 19.114-97.323 50.517-131.67-5.035-12.33-21.93-62.293 4.779-129.834 0 0 41.258-13.184 134.912 50.346a469.803 469.803 0 0 1 122.88-16.554c41.642.213 83.626 5.632 122.88 16.554 93.653-63.488 134.784-50.346 134.784-50.346 26.752 67.541 9.898 117.504 4.864 129.834 31.402 34.347 50.474 78.123 50.474 131.67 0 188.586-114.73 230.016-224.042 242.09 17.578 15.232 33.578 44.672 33.578 90.454v135.85c0 13.142 7.936 27.606 32.854 22.87C862.25 912.597 1002.667 728.747 1002.667 512c0-271.019-219.648-490.667-490.71-490.667z"></path></svg></a></div><!--]--><!----><button type="button" class="vp-toggle-navbar-button" aria-label="Toggle Navbar" aria-expanded="false" aria-controls="nav-screen"><span><span class="vp-top"></span><span class="vp-middle"></span><span class="vp-bottom"></span></span></button></div></header><!----><!--]--><!----><div class="toggle-sidebar-wrapper"><span class="arrow start"></span></div><aside id="sidebar" class="vp-sidebar"><!----><ul class="vp-sidebar-links"><li><section class="vp-sidebar-group"><p class="vp-sidebar-header"><!----><span class="vp-sidebar-title">IoTDB User Guide (V1.0.x)</span><!----></p><ul class="vp-sidebar-links"></ul></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">About IoTDB</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Quick Start</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Data Concept</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Syntax Conventions</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">API</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Operate Metadata</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Write Data (Update Data)</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Delete Data</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Query Data</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Operators and Functions</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Trigger</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Monitor and Alert</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Administration Management</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Maintenance Tools</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Collaboration of Edge and Cloud</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Ecosystem Integration</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Cluster</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">FAQ</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable active" type="button"><!----><span class="vp-sidebar-title">Reference</span><span class="vp-arrow down"></span></button><ul class="vp-sidebar-links"><li><a class="route-link auto-link vp-sidebar-link" href="/UserGuide/V1.0.x/Reference/Common-Config-Manual.html" aria-label="Common Config Manual"><!---->Common Config Manual<!----></a></li><li><a class="route-link auto-link vp-sidebar-link" href="/UserGuide/V1.0.x/Reference/ConfigNode-Config-Manual.html" aria-label="ConfigNode Config Manual"><!---->ConfigNode Config Manual<!----></a></li><li><a class="route-link auto-link vp-sidebar-link" href="/UserGuide/V1.0.x/Reference/DataNode-Config-Manual.html" aria-label="DataNode Config Manual"><!---->DataNode Config Manual<!----></a></li><li><a class="route-link route-link-active auto-link vp-sidebar-link active" href="/UserGuide/V1.0.x/Reference/SQL-Reference.html" aria-label="SQL Reference"><!---->SQL Reference<!----></a></li><li><a class="route-link auto-link vp-sidebar-link" href="/UserGuide/V1.0.x/Reference/Status-Codes.html" aria-label="Status Codes"><!---->Status Codes<!----></a></li><li><a class="route-link auto-link vp-sidebar-link" href="/UserGuide/V1.0.x/Reference/Keywords.html" aria-label="Keywords"><!---->Keywords<!----></a></li><li><a class="route-link auto-link vp-sidebar-link" href="/UserGuide/V1.0.x/Reference/TSDB-Comparison.html" aria-label="TSDB Comparison"><!---->TSDB Comparison<!----></a></li></ul></section></li></ul><!----></aside><!--[--><!--[--><main id="main-content" class="vp-page"><!--[--><!----><!----><nav class="vp-breadcrumb disable"></nav><div class="vp-page-title"><h1><!---->SQL Reference</h1><div class="page-info"><!----><!----><span class="page-date-info" aria-label="Writing Date"><svg xmlns="http://www.w3.org/2000/svg" class="icon calendar-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="calendar icon" name="calendar"><path d="M716.4 110.137c0-18.753-14.72-33.473-33.472-33.473-18.753 0-33.473 14.72-33.473 33.473v33.473h66.993v-33.473zm-334.87 0c0-18.753-14.72-33.473-33.473-33.473s-33.52 14.72-33.52 33.473v33.473h66.993v-33.473zm468.81 33.52H716.4v100.465c0 18.753-14.72 33.473-33.472 33.473a33.145 33.145 0 01-33.473-33.473V143.657H381.53v100.465c0 18.753-14.72 33.473-33.473 33.473a33.145 33.145 0 01-33.473-33.473V143.657H180.6A134.314 134.314 0 0046.66 277.595v535.756A134.314 134.314 0 00180.6 947.289h669.74a134.36 134.36 0 00133.94-133.938V277.595a134.314 134.314 0 00-133.94-133.938zm33.473 267.877H147.126a33.145 33.145 0 01-33.473-33.473c0-18.752 14.72-33.473 33.473-33.473h736.687c18.752 0 33.472 14.72 33.472 33.473a33.145 33.145 0 01-33.472 33.473z"></path></svg><span><!----></span><meta property="datePublished" content="2023-07-10T03:11:17.000Z"></span><!----><span class="page-reading-time-info" aria-label="Reading Time"><svg xmlns="http://www.w3.org/2000/svg" class="icon timer-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="timer icon" name="timer"><path d="M799.387 122.15c4.402-2.978 7.38-7.897 7.38-13.463v-1.165c0-8.933-7.38-16.312-16.312-16.312H256.33c-8.933 0-16.311 7.38-16.311 16.312v1.165c0 5.825 2.977 10.874 7.637 13.592 4.143 194.44 97.22 354.963 220.201 392.763-122.204 37.542-214.893 196.511-220.2 389.397-4.661 5.049-7.638 11.651-7.638 19.03v5.825h566.49v-5.825c0-7.379-2.849-13.981-7.509-18.9-5.049-193.016-97.867-351.985-220.2-389.527 123.24-37.67 216.446-198.453 220.588-392.892zM531.16 450.445v352.632c117.674 1.553 211.787 40.778 211.787 88.676H304.097c0-48.286 95.149-87.382 213.728-88.676V450.445c-93.077-3.107-167.901-81.297-167.901-177.093 0-8.803 6.99-15.793 15.793-15.793 8.803 0 15.794 6.99 15.794 15.793 0 80.261 63.69 145.635 142.01 145.635s142.011-65.374 142.011-145.635c0-8.803 6.99-15.793 15.794-15.793s15.793 6.99 15.793 15.793c0 95.019-73.789 172.82-165.96 177.093z"></path></svg><span>About 21 min</span><meta property="timeRequired" content="PT21M"></span><!----><!----></div><hr></div><div class="vp-toc-placeholder"><aside id="toc"><!----><div class="vp-toc-header">On This Page<button type="button" class="print-button" title="Print"><svg xmlns="http://www.w3.org/2000/svg" class="icon print-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="print icon" name="print"><path d="M819.2 364.8h-44.8V128c0-17.067-14.933-32-32-32H281.6c-17.067 0-32 14.933-32 32v236.8h-44.8C145.067 364.8 96 413.867 96 473.6v192c0 59.733 49.067 108.8 108.8 108.8h44.8V896c0 17.067 14.933 32 32 32h460.8c17.067 0 32-14.933 32-32V774.4h44.8c59.733 0 108.8-49.067 108.8-108.8v-192c0-59.733-49.067-108.8-108.8-108.8zM313.6 160h396.8v204.8H313.6V160zm396.8 704H313.6V620.8h396.8V864zM864 665.6c0 25.6-19.2 44.8-44.8 44.8h-44.8V588.8c0-17.067-14.933-32-32-32H281.6c-17.067 0-32 14.933-32 32v121.6h-44.8c-25.6 0-44.8-19.2-44.8-44.8v-192c0-25.6 19.2-44.8 44.8-44.8h614.4c25.6 0 44.8 19.2 44.8 44.8v192z"></path></svg></button><div class="arrow end"></div></div><div class="vp-toc-wrapper"><ul class="vp-toc-list"><!--[--><li class="vp-toc-item"><a class="route-link vp-toc-link level2" href="#show-version">Show Version</a></li><!----><!--]--><!--[--><li class="vp-toc-item"><a class="route-link vp-toc-link level2" href="#schema-statement">Schema Statement</a></li><!----><!--]--><!--[--><li class="vp-toc-item"><a class="route-link vp-toc-link level2" href="#data-management-statement">Data Management Statement</a></li><!----><!--]--><!--[--><li class="vp-toc-item"><a class="route-link vp-toc-link level2" href="#database-management-statement">Database Management Statement</a></li><!----><!--]--><!--[--><li class="vp-toc-item"><a class="route-link vp-toc-link level2" href="#functions">Functions</a></li><!----><!--]--><!--[--><li class="vp-toc-item"><a class="route-link vp-toc-link level2" href="#ttl">TTL</a></li><!----><!--]--><!--[--><li class="vp-toc-item"><a class="route-link vp-toc-link level2" href="#kill-query">Kill query</a></li><!----><!--]--><!--[--><li class="vp-toc-item"><a class="route-link vp-toc-link level2" href="#set-system-to-readonly-writable">SET SYSTEM TO READONLY / WRITABLE</a></li><!----><!--]--><!--[--><li class="vp-toc-item"><a class="route-link vp-toc-link level2" href="#identifiers">Identifiers</a></li><!----><!--]--><!--[--><li class="vp-toc-item"><a class="route-link vp-toc-link level2" href="#literals">Literals</a></li><!----><!--]--></ul><div class="vp-toc-marker" style="top:-1.7rem;"></div></div><!----></aside></div><!----><div class="theme-hope-content"><h1 id="sql-reference" tabindex="-1"><a class="header-anchor" href="#sql-reference"><span>SQL Reference</span></a></h1><p>In this part, we will introduce you IoTDB&#39;s Query Language. IoTDB offers you a SQL-like query language for interacting with IoTDB, the query language can be devided into 4 major parts:</p><ul><li>Schema Statement: statements about schema management are all listed in this section.</li><li>Data Management Statement: statements about data management (such as: data insertion, data query, etc.) are all listed in this section.</li><li>Database Management Statement: statements about database management and authentication are all listed in this section.</li><li>Functions: functions that IoTDB offers are all listed in this section.</li></ul><p>All of these statements are write in IoTDB&#39;s own syntax, for details about the syntax composition, please check the <code>Reference</code> section.</p><h2 id="show-version" tabindex="-1"><a class="header-anchor" href="#show-version"><span>Show Version</span></a></h2><div class="language-sql line-numbers-mode" data-highlighter="prismjs" data-ext="sql" data-title="sql"><pre><code><span class="line"><span class="token keyword">show</span> version</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">+---------------+</span>
<span class="line">| version|</span>
<span class="line">+---------------+</span>
<span class="line">|1.0.0|</span>
<span class="line">+---------------+</span>
<span class="line">Total line number = 1</span>
<span class="line">It costs 0.417s</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="schema-statement" tabindex="-1"><a class="header-anchor" href="#schema-statement"><span>Schema Statement</span></a></h2><ul><li>Create Database</li></ul><div class="language-SQL line-numbers-mode" data-highlighter="prismjs" data-ext="SQL" data-title="SQL"><pre><code><span class="line">CREATE DATABASE &lt;FullPath&gt;</span>
<span class="line">Eg: IoTDB &gt; CREATE DATABASE root.ln.wf01.wt01</span>
<span class="line">Note: FullPath can not include wildcard `*` or `**`</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Delete database</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">DELETE DATABASE &lt;PathPattern&gt; [COMMA &lt;PathPattern&gt;]*</span>
<span class="line">Eg: IoTDB &gt; DELETE DATABASE root.ln.wf01.wt01</span>
<span class="line">Eg: IoTDB &gt; DELETE DATABASE root.ln.wf01.wt01, root.ln.wf01.wt02</span>
<span class="line">Eg: IoTDB &gt; DELETE DATABASE root.ln.wf01.*</span>
<span class="line">Eg: IoTDB &gt; DELETE DATABASE root.**</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Create Timeseries Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">CREATE TIMESERIES &lt;FullPath&gt; WITH &lt;AttributeClauses&gt;</span>
<span class="line">alias</span>
<span class="line"> : LR_BRACKET ID RR_BRACKET</span>
<span class="line"> ;</span>
<span class="line">attributeClauses</span>
<span class="line"> : DATATYPE OPERATOR_EQ &lt;DataTypeValue&gt; </span>
<span class="line"> COMMA ENCODING OPERATOR_EQ &lt;EncodingValue&gt;</span>
<span class="line"> (COMMA (COMPRESSOR | COMPRESSION) OPERATOR_EQ &lt;CompressorValue&gt;)?</span>
<span class="line"> (COMMA property)*</span>
<span class="line"> tagClause</span>
<span class="line"> attributeClause</span>
<span class="line"> ;</span>
<span class="line">attributeClause</span>
<span class="line"> : ATTRIBUTES LR_BRACKET propertyClause (COMMA propertyClause)* RR_BRACKET</span>
<span class="line"> ;</span>
<span class="line">tagClause</span>
<span class="line"> : TAGS LR_BRACKET propertyClause (COMMA propertyClause)* RR_BRACKET</span>
<span class="line"> ;</span>
<span class="line">propertyClause</span>
<span class="line"> : name=ID OPERATOR_EQ propertyValue</span>
<span class="line"> ;</span>
<span class="line">DataTypeValue: BOOLEAN | DOUBLE | FLOAT | INT32 | INT64 | TEXT</span>
<span class="line">EncodingValue: GORILLA | PLAIN | RLE | TS_2DIFF | REGULAR</span>
<span class="line">CompressorValue: UNCOMPRESSED | SNAPPY</span>
<span class="line">AttributesType: SDT | COMPDEV | COMPMINTIME | COMPMAXTIME</span>
<span class="line">PropertyValue: ID | constant</span>
<span class="line">Eg: CREATE TIMESERIES root.ln.wf01.wt01.status WITH DATATYPE=BOOLEAN, ENCODING=PLAIN</span>
<span class="line">Eg: CREATE TIMESERIES root.ln.wf01.wt01.temperature WITH DATATYPE=FLOAT, ENCODING=RLE</span>
<span class="line">Eg: CREATE TIMESERIES root.ln.wf01.wt01.temperature WITH DATATYPE=FLOAT, ENCODING=RLE, COMPRESSOR=SNAPPY, MAX_POINT_NUMBER=3</span>
<span class="line">Eg: CREATE TIMESERIES root.turbine.d0.s0(temperature) WITH DATATYPE=FLOAT, ENCODING=RLE, COMPRESSOR=SNAPPY tags(unit=f, description=&#39;turbine this is a test1&#39;) attributes(H_Alarm=100, M_Alarm=50)</span>
<span class="line">Eg: CREATE TIMESERIES root.ln.wf01.wt01.temperature WITH DATATYPE=FLOAT, ENCODING=RLE, DEADBAND=SDT, COMPDEV=0.01</span>
<span class="line">Eg: CREATE TIMESERIES root.ln.wf01.wt01.temperature WITH DATATYPE=FLOAT, ENCODING=RLE, DEADBAND=SDT, COMPDEV=0.01, COMPMINTIME=3</span>
<span class="line">Eg: CREATE TIMESERIES root.ln.wf01.wt01.temperature WITH DATATYPE=FLOAT, ENCODING=RLE, DEADBAND=SDT, COMPDEV=0.01, COMPMINTIME=2, COMPMAXTIME=15</span>
<span class="line">Note: Datatype and encoding type must be corresponding. Please check Chapter 3 Encoding Section for details.</span>
<span class="line">Note: When propertyValue is SDT, it is required to set compression deviation COMPDEV, which is the maximum absolute difference between values.</span>
<span class="line">Note: For SDT, values withtin COMPDEV will be discarded.</span>
<span class="line">Note: For SDT, it is optional to set compression minimum COMPMINTIME, which is the minimum time difference between stored values for purpose of noise reduction.</span>
<span class="line">Note: For SDT, it is optional to set compression maximum COMPMAXTIME, which is the maximum time difference between stored values regardless of COMPDEV.</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Create Timeseries Statement (Simplified version, from v0.13)</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">CREATE TIMESERIES &lt;FullPath&gt; &lt;SimplifiedAttributeClauses&gt;</span>
<span class="line">SimplifiedAttributeClauses</span>
<span class="line"> : WITH? (DATATYPE OPERATOR_EQ)? &lt;DataTypeValue&gt; </span>
<span class="line"> ENCODING OPERATOR_EQ &lt;EncodingValue&gt;</span>
<span class="line"> ((COMPRESSOR | COMPRESSION) OPERATOR_EQ &lt;CompressorValue&gt;)?</span>
<span class="line"> (COMMA property)*</span>
<span class="line"> tagClause</span>
<span class="line"> attributeClause</span>
<span class="line"> ;</span>
<span class="line">Eg: CREATE TIMESERIES root.ln.wf01.wt01.status BOOLEAN ENCODING=PLAIN</span>
<span class="line">Eg: CREATE TIMESERIES root.ln.wf01.wt01.temperature FLOAT ENCODING=RLE</span>
<span class="line">Eg: CREATE TIMESERIES root.ln.wf01.wt01.temperature FLOAT ENCODING=RLE COMPRESSOR=SNAPPY MAX_POINT_NUMBER=3</span>
<span class="line">Eg: CREATE TIMESERIES root.turbine.d0.s0(temperature) FLOAT ENCODING=RLE COMPRESSOR=SNAPPY tags(unit=f, description=&#39;turbine this is a test1&#39;) attributes(H_Alarm=100, M_Alarm=50)</span>
<span class="line">Eg: CREATE TIMESERIES root.ln.wf01.wt01.temperature FLOAT ENCODING=RLE DEADBAND=SDT COMPDEV=0.01</span>
<span class="line">Eg: CREATE TIMESERIES root.ln.wf01.wt01.temperature FLOAT ENCODING=RLE DEADBAND=SDT COMPDEV=0.01 COMPMINTIME=3</span>
<span class="line">Eg: CREATE TIMESERIES root.ln.wf01.wt01.temperature FLOAT ENCODING=RLE DEADBAND=SDT COMPDEV=0.01 COMPMINTIME=2 COMPMAXTIME=15</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Create Aligned Timeseries Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">CREATE ALIGNED TIMESERIES &lt;FullPath&gt; alignedMeasurements</span>
<span class="line">alignedMeasurements</span>
<span class="line"> : LR_BRACKET nodeNameWithoutWildcard attributeClauses</span>
<span class="line"> (COMMA nodeNameWithoutWildcard attributeClauses)+ RR_BRACKET</span>
<span class="line"> ;</span>
<span class="line">Eg: CREATE ALIGNED TIMESERIES root.ln.wf01.GPS(lat FLOAT ENCODING=GORILLA, lon FLOAT ENCODING=GORILLA COMPRESSOR=SNAPPY)</span>
<span class="line">Note: It is not supported to set different compression for a group of aligned timeseries.</span>
<span class="line">Note: It is not currently supported to set an alias, tag, and attribute for aligned timeseries.</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Create Schema Template Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">CREATE SCHEMA TEMPLATE &lt;TemplateName&gt; LR_BRACKET &lt;TemplateMeasurementClause&gt; (COMMA plateMeasurementClause&gt;)* RR_BRACKET</span>
<span class="line">templateMeasurementClause</span>
<span class="line"> : suffixPath attributeClauses #nonAlignedTemplateMeasurement</span>
<span class="line"> | suffixPath LR_BRACKET nodeNameWithoutWildcard attributeClauses </span>
<span class="line"> (COMMA nodeNameWithoutWildcard attributeClauses)+ RR_BRACKET #alignedTemplateMeasurement</span>
<span class="line"> ;</span>
<span class="line">Eg: CREATE SCHEMA TEMPLATE temp1(</span>
<span class="line"> s1 INT32 encoding=Gorilla, compression=SNAPPY,</span>
<span class="line"> vector1(</span>
<span class="line"> s1 INT32 encoding=Gorilla,</span>
<span class="line"> s2 FLOAT encoding=RLE, compression=SNAPPY)</span>
<span class="line"> )</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Set Schema Template Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SET SCHEMA TEMPLATE &lt;TemplateName&gt; TO &lt;PrefixPath&gt;</span>
<span class="line">Eg: SET SCHEMA TEMPLATE temp1 TO root.beijing</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Create Timeseries Of Schema Template Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">CREATE TIMESERIES OF SCHEMA TEMPLATE ON &lt;PrefixPath&gt;</span>
<span class="line">Eg: CREATE TIMESERIES OF SCHEMA TEMPLATE ON root.beijing</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Unset Schema Template Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">UNSET SCHEMA TEMPLATE &lt;TemplateName&gt; FROM &lt;PrefixPath&gt;</span>
<span class="line">Eg: UNSET SCHEMA TEMPLATE temp1 FROM root.beijing</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Delete Timeseries Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">(DELETE | DROP) TIMESERIES &lt;PathPattern&gt; [COMMA &lt;PathPattern&gt;]*</span>
<span class="line">Eg: IoTDB &gt; DELETE TIMESERIES root.ln.wf01.wt01.status</span>
<span class="line">Eg: IoTDB &gt; DELETE TIMESERIES root.ln.wf01.wt01.status, root.ln.wf01.wt01.temperature</span>
<span class="line">Eg: IoTDB &gt; DELETE TIMESERIES root.ln.wf01.wt01.*</span>
<span class="line">Eg: IoTDB &gt; DROP TIMESERIES root.ln.wf01.wt01.*</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Alter Timeseries Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">ALTER TIMESERIES fullPath alterClause</span>
<span class="line">alterClause</span>
<span class="line"> : RENAME beforeName=ID TO currentName=ID</span>
<span class="line"> | SET property (COMMA property)*</span>
<span class="line"> | DROP ID (COMMA ID)*</span>
<span class="line"> | ADD TAGS property (COMMA property)*</span>
<span class="line"> | ADD ATTRIBUTES property (COMMA property)*</span>
<span class="line"> | UPSERT tagClause attributeClause</span>
<span class="line"> ;</span>
<span class="line">attributeClause</span>
<span class="line"> : (ATTRIBUTES LR_BRACKET property (COMMA property)* RR_BRACKET)?</span>
<span class="line"> ;</span>
<span class="line">tagClause</span>
<span class="line"> : (TAGS LR_BRACKET property (COMMA property)* RR_BRACKET)?</span>
<span class="line"> ;</span>
<span class="line">Eg: ALTER timeseries root.turbine.d1.s1 RENAME tag1 TO newTag1</span>
<span class="line">Eg: ALTER timeseries root.turbine.d1.s1 SET tag1=newV1, attr1=newV1</span>
<span class="line">Eg: ALTER timeseries root.turbine.d1.s1 DROP tag1, tag2</span>
<span class="line">Eg: ALTER timeseries root.turbine.d1.s1 ADD TAGS tag3=v3, tag4=v4</span>
<span class="line">Eg: ALTER timeseries root.turbine.d1.s1 ADD ATTRIBUTES attr3=v3, attr4=v4</span>
<span class="line">EG: ALTER timeseries root.turbine.d1.s1 UPSERT TAGS(tag2=newV2, tag3=v3) ATTRIBUTES(attr3=v3, attr4=v4)</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Show All Timeseries Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SHOW TIMESERIES</span>
<span class="line">Eg: IoTDB &gt; SHOW TIMESERIES</span>
<span class="line">Note: This statement can only be used in IoTDB Client. If you need to show all timeseries in JDBC, please use `DataBaseMetadata` interface.</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Show Specific Timeseries Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SHOW TIMESERIES &lt;Path&gt;</span>
<span class="line">Eg: IoTDB &gt; SHOW TIMESERIES root.**</span>
<span class="line">Eg: IoTDB &gt; SHOW TIMESERIES root.ln.**</span>
<span class="line">Eg: IoTDB &gt; SHOW TIMESERIES root.ln.*.*.status</span>
<span class="line">Eg: IoTDB &gt; SHOW TIMESERIES root.ln.wf01.wt01.status</span>
<span class="line">Note: The path can be timeseries path or path pattern.</span>
<span class="line">Note: This statement can be used in IoTDB Client and JDBC.</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Show Specific Timeseries Statement with where clause</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SHOW TIMESERIES pathPattern? showWhereClause?</span>
<span class="line">showWhereClause</span>
<span class="line"> : WHERE (property | containsExpression)</span>
<span class="line"> ;</span>
<span class="line">containsExpression</span>
<span class="line"> : name=ID OPERATOR_CONTAINS value=propertyValue</span>
<span class="line"> ;</span>
<span class="line"></span>
<span class="line">Eg: show timeseries root.ln.** where unit=&#39;c&#39;</span>
<span class="line">Eg: show timeseries root.ln.** where description contains &#39;test1&#39;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Show Specific Timeseries Statement with where clause start from offset and limit the total number of result</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SHOW TIMESERIES pathPattern? showWhereClause? limitClause?</span>
<span class="line"></span>
<span class="line">showWhereClause</span>
<span class="line"> : WHERE (property | containsExpression)</span>
<span class="line"> ;</span>
<span class="line">containsExpression</span>
<span class="line"> : name=ID OPERATOR_CONTAINS value=propertyValue</span>
<span class="line"> ;</span>
<span class="line">limitClause</span>
<span class="line"> : LIMIT INT offsetClause?</span>
<span class="line"> | offsetClause? LIMIT INT</span>
<span class="line"> ;</span>
<span class="line"> </span>
<span class="line">Eg: show timeseries root.ln.** where unit=&#39;c&#39;</span>
<span class="line">Eg: show timeseries root.ln.** where description contains &#39;test1&#39;</span>
<span class="line">Eg: show timeseries root.ln.** where unit=&#39;c&#39; limit 10 offset 10</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Show Databases Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SHOW DATABASES</span>
<span class="line">Eg: IoTDB &gt; SHOW DATABASES</span>
<span class="line">Note: This statement can be used in IoTDB Client and JDBC.</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Show Specific database Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SHOW DATABASES &lt;Path&gt;</span>
<span class="line">Eg: IoTDB &gt; SHOW DATABASES root.*</span>
<span class="line">Eg: IoTDB &gt; SHOW DATABASES root.ln</span>
<span class="line">Note: The path can be full path or path pattern.</span>
<span class="line">Note: This statement can be used in IoTDB Client and JDBC.</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Show Merge Status Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SHOW MERGE INFO</span>
<span class="line">Eg: IoTDB &gt; SHOW MERGE INFO</span>
<span class="line">Note: This statement can be used in IoTDB Client and JDBC.</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Count Timeseries Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">COUNT TIMESERIES &lt;Path&gt;</span>
<span class="line">Eg: IoTDB &gt; COUNT TIMESERIES root.**</span>
<span class="line">Eg: IoTDB &gt; COUNT TIMESERIES root.ln.**</span>
<span class="line">Eg: IoTDB &gt; COUNT TIMESERIES root.ln.*.*.status</span>
<span class="line">Eg: IoTDB &gt; COUNT TIMESERIES root.ln.wf01.wt01.status</span>
<span class="line">Note: The path can be timeseries path or path pattern.</span>
<span class="line">Note: This statement can be used in IoTDB Client and JDBC.</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">COUNT TIMESERIES &lt;Path&gt; GROUP BY LEVEL=&lt;INTEGER&gt;</span>
<span class="line">Eg: IoTDB &gt; COUNT TIMESERIES root.** GROUP BY LEVEL=1</span>
<span class="line">Eg: IoTDB &gt; COUNT TIMESERIES root.ln.** GROUP BY LEVEL=2</span>
<span class="line">Eg: IoTDB &gt; COUNT TIMESERIES root.ln.wf01.* GROUP BY LEVEL=3</span>
<span class="line">Note: The path can be timeseries path or path pattern.</span>
<span class="line">Note: This statement can be used in IoTDB Client and JDBC.</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Count Nodes Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">COUNT NODES &lt;Path&gt; LEVEL=&lt;INTEGER&gt;</span>
<span class="line">Eg: IoTDB &gt; COUNT NODES root.** LEVEL=2</span>
<span class="line">Eg: IoTDB &gt; COUNT NODES root.ln.** LEVEL=2</span>
<span class="line">Eg: IoTDB &gt; COUNT NODES root.ln.* LEVEL=3</span>
<span class="line">Eg: IoTDB &gt; COUNT NODES root.ln.wf01 LEVEL=3</span>
<span class="line">Note: The path can be full path or path pattern.</span>
<span class="line">Note: This statement can be used in IoTDB Client and JDBC.</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Show All Devices Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SHOW DEVICES (WITH DATABASE)? limitClause? </span>
<span class="line">Eg: IoTDB &gt; SHOW DEVICES</span>
<span class="line">Eg: IoTDB &gt; SHOW DEVICES WITH DATABASE</span>
<span class="line">Note: This statement can be used in IoTDB Client and JDBC.</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Show Specific Devices Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SHOW DEVICES &lt;PathPattern&gt; (WITH DATABASE)? limitClause?</span>
<span class="line">Eg: IoTDB &gt; SHOW DEVICES root.**</span>
<span class="line">Eg: IoTDB &gt; SHOW DEVICES root.ln.**</span>
<span class="line">Eg: IoTDB &gt; SHOW DEVICES root.*.wf01</span>
<span class="line">Eg: IoTDB &gt; SHOW DEVICES root.ln WITH DATABASE</span>
<span class="line">Eg: IoTDB &gt; SHOW DEVICES root.*.wf01 WITH DATABASE</span>
<span class="line">Note: This statement can be used in IoTDB Client and JDBC.</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Show Child Paths of Root Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SHOW CHILD PATHS</span>
<span class="line">Eg: IoTDB &gt; SHOW CHILD PATHS</span>
<span class="line">Note: This statement can be used in IoTDB Client and JDBC.</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Show Child Paths Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SHOW CHILD PATHS &lt;PathPattern&gt;</span>
<span class="line">Eg: IoTDB &gt; SHOW CHILD PATHS root</span>
<span class="line">Eg: IoTDB &gt; SHOW CHILD PATHS root.ln</span>
<span class="line">Eg: IoTDB &gt; SHOW CHILD PATHS root.*.wf01</span>
<span class="line">Eg: IoTDB &gt; SHOW CHILD PATHS root.ln.wf* </span>
<span class="line">Note: This statement can be used in IoTDB Client and JDBC.</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="data-management-statement" tabindex="-1"><a class="header-anchor" href="#data-management-statement"><span>Data Management Statement</span></a></h2><ul><li>Insert Record Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">INSERT INTO &lt;PrefixPath&gt; LPAREN TIMESTAMP COMMA &lt;Sensor&gt; [COMMA &lt;Sensor&gt;]* RPAREN VALUES LPAREN &lt;TimeValue&gt;, &lt;PointValue&gt; [COMMA &lt;PointValue&gt;]* RPAREN</span>
<span class="line">Sensor : Identifier</span>
<span class="line">Eg: IoTDB &gt; INSERT INTO root.ln.wf01.wt01(timestamp,status) values(1509465600000,true)</span>
<span class="line">Eg: IoTDB &gt; INSERT INTO root.ln.wf01.wt01(timestamp,status) VALUES(NOW(), false)</span>
<span class="line">Eg: IoTDB &gt; INSERT INTO root.ln.wf01.wt01(timestamp,temperature) VALUES(2017-11-01T00:17:00.000+08:00,24.22028)</span>
<span class="line">Eg: IoTDB &gt; INSERT INTO root.ln.wf01.wt01(timestamp,status,temperature) VALUES (1509466680000,false,20.060787)</span>
<span class="line">Eg: IoTDB &gt; INSERT INTO root.sg.d1(timestamp,(s1,s2),(s3,s4)) VALUES (1509466680000,(1.0,2),(NULL,4))</span>
<span class="line">Note: the statement needs to satisfy this constraint: &lt;PrefixPath&gt; + &lt;Path&gt; = &lt;Timeseries&gt;</span>
<span class="line">Note: The order of Sensor and PointValue need one-to-one correspondence</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Delete Record Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">DELETE FROM &lt;PathPattern&gt; [COMMA &lt;PathPattern&gt;]* [WHERE &lt;WhereClause&gt;]?</span>
<span class="line">WhereClause : &lt;Condition&gt; [(AND) &lt;Condition&gt;]*</span>
<span class="line">Condition : &lt;TimeExpr&gt; [(AND) &lt;TimeExpr&gt;]*</span>
<span class="line">TimeExpr : TIME PrecedenceEqualOperator (&lt;TimeValue&gt; | &lt;RelativeTime&gt;)</span>
<span class="line">Eg: DELETE FROM root.ln.wf01.wt01.temperature WHERE time &gt; 2016-01-05T00:15:00+08:00 and time &lt; 2017-11-1T00:05:00+08:00</span>
<span class="line">Eg: DELETE FROM root.ln.wf01.wt01.status, root.ln.wf01.wt01.temperature WHERE time &lt; NOW()</span>
<span class="line">Eg: DELETE FROM root.ln.wf01.wt01.* WHERE time &gt;= 1509466140000</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Select Record Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SELECT &lt;SelectClause&gt; FROM &lt;FromClause&gt; [WHERE &lt;WhereClause&gt;]?</span>
<span class="line">SelectClause : &lt;SelectPath&gt; (COMMA &lt;SelectPath&gt;)*</span>
<span class="line">SelectPath : &lt;FUNCTION&gt; LPAREN &lt;Path&gt; RPAREN | &lt;Path&gt;</span>
<span class="line">FUNCTION : ‘COUNT’ , ‘MIN_TIME’, ‘MAX_TIME’, ‘MIN_VALUE’, ‘MAX_VALUE’</span>
<span class="line">FromClause : &lt;PrefixPath&gt; (COMMA &lt;PrefixPath&gt;)?</span>
<span class="line">WhereClause : &lt;Condition&gt; [(AND | OR) &lt;Condition&gt;]*</span>
<span class="line">Condition : &lt;Expression&gt; [(AND | OR) &lt;Expression&gt;]*</span>
<span class="line">Expression : [NOT | !]? &lt;TimeExpr&gt; | [NOT | !]? &lt;SensorExpr&gt;</span>
<span class="line">TimeExpr : TIME PrecedenceEqualOperator (&lt;TimeValue&gt; | &lt;RelativeTime&gt;)</span>
<span class="line">RelativeTimeDurationUnit = Integer (&#39;Y&#39;|&#39;MO&#39;|&#39;W&#39;|&#39;D&#39;|&#39;H&#39;|&#39;M&#39;|&#39;S&#39;|&#39;MS&#39;|&#39;US&#39;|&#39;NS&#39;)</span>
<span class="line">RelativeTime : (now() | &lt;TimeValue&gt;) [(+|-) RelativeTimeDurationUnit]+</span>
<span class="line">SensorExpr : (&lt;Timeseries&gt; | &lt;Path&gt;) PrecedenceEqualOperator &lt;PointValue&gt;</span>
<span class="line">Eg: IoTDB &gt; SELECT status, temperature FROM root.ln.wf01.wt01 WHERE temperature &lt; 24 and time &gt; 2017-11-1 0:13:00</span>
<span class="line">Eg. IoTDB &gt; SELECT ** FROM root</span>
<span class="line">Eg. IoTDB &gt; SELECT * FROM root.**</span>
<span class="line">Eg. IoTDB &gt; SELECT * FROM root.** where time &gt; now() - 5m</span>
<span class="line">Eg. IoTDB &gt; SELECT * FROM root.ln.*.wf*</span>
<span class="line">Eg. IoTDB &gt; SELECT COUNT(temperature) FROM root.ln.wf01.wt01 WHERE root.ln.wf01.wt01.temperature &lt; 25</span>
<span class="line">Eg. IoTDB &gt; SELECT MIN_TIME(temperature) FROM root.ln.wf01.wt01 WHERE root.ln.wf01.wt01.temperature &lt; 25</span>
<span class="line">Eg. IoTDB &gt; SELECT MAX_TIME(temperature) FROM root.ln.wf01.wt01 WHERE root.ln.wf01.wt01.temperature &gt; 24</span>
<span class="line">Eg. IoTDB &gt; SELECT MIN_VALUE(temperature) FROM root.ln.wf01.wt01 WHERE root.ln.wf01.wt01.temperature &gt; 23</span>
<span class="line">Eg. IoTDB &gt; SELECT MAX_VALUE(temperature) FROM root.ln.wf01.wt01 WHERE root.ln.wf01.wt01.temperature &lt; 25</span>
<span class="line">Eg. IoTDB &gt; SELECT COUNT(temperature) FROM root.ln.wf01.wt01 WHERE root.ln.wf01.wt01.temperature &lt; 25 GROUP BY LEVEL=1</span>
<span class="line">Note: the statement needs to satisfy this constraint: &lt;Path&gt;(SelectClause) + &lt;PrefixPath&gt;(FromClause) = &lt;Timeseries&gt;</span>
<span class="line">Note: If the &lt;SensorExpr&gt;(WhereClause) is started with &lt;Path&gt; and not with ROOT, the statement needs to satisfy this constraint: &lt;PrefixPath&gt;(FromClause) + &lt;Path&gt;(SensorExpr) = &lt;Timeseries&gt;</span>
<span class="line">Note: In Version 0.7.0, if &lt;WhereClause&gt; includes `OR`, time filter can not be used.</span>
<span class="line">Note: There must be a space on both sides of the plus and minus operator appearing in the time expression </span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Group By Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SELECT &lt;SelectClause&gt; FROM &lt;FromClause&gt; WHERE &lt;WhereClause&gt; GROUP BY &lt;GroupByTimeClause&gt;</span>
<span class="line">SelectClause : &lt;Function&gt; [COMMA &lt; Function &gt;]*</span>
<span class="line">Function : &lt;AggregationFunction&gt; LPAREN &lt;Path&gt; RPAREN</span>
<span class="line">FromClause : &lt;PrefixPath&gt;</span>
<span class="line">WhereClause : &lt;Condition&gt; [(AND | OR) &lt;Condition&gt;]*</span>
<span class="line">Condition : &lt;Expression&gt; [(AND | OR) &lt;Expression&gt;]*</span>
<span class="line">Expression : [NOT | !]? &lt;TimeExpr&gt; | [NOT | !]? &lt;SensorExpr&gt;</span>
<span class="line">TimeExpr : TIME PrecedenceEqualOperator (&lt;TimeValue&gt; | &lt;RelativeTime&gt;)</span>
<span class="line">RelativeTimeDurationUnit = Integer (&#39;Y&#39;|&#39;MO&#39;|&#39;W&#39;|&#39;D&#39;|&#39;H&#39;|&#39;M&#39;|&#39;S&#39;|&#39;MS&#39;|&#39;US&#39;|&#39;NS&#39;)</span>
<span class="line">RelativeTime : (now() | &lt;TimeValue&gt;) [(+|-) RelativeTimeDurationUnit]+</span>
<span class="line">SensorExpr : (&lt;Timeseries&gt; | &lt;Path&gt;) PrecedenceEqualOperator &lt;PointValue&gt;</span>
<span class="line">GroupByTimeClause : LPAREN &lt;TimeInterval&gt; COMMA &lt;TimeUnit&gt; (COMMA &lt;TimeUnit&gt;)? RPAREN</span>
<span class="line">TimeInterval: LSBRACKET &lt;TimeValue&gt; COMMA &lt;TimeValue&gt; RRBRACKET | LRBRACKET &lt;TimeValue&gt; COMMA &lt;TimeValue&gt; RSBRACKET</span>
<span class="line">TimeUnit : Integer &lt;DurationUnit&gt;</span>
<span class="line">DurationUnit : &quot;ms&quot; | &quot;s&quot; | &quot;m&quot; | &quot;h&quot; | &quot;d&quot; | &quot;w&quot; | &quot;mo&quot;</span>
<span class="line">Eg: SELECT COUNT(status), COUNT(temperature) FROM root.ln.wf01.wt01 where temperature &lt; 24 GROUP BY([1509465720000, 1509466380000), 5m)</span>
<span class="line">Eg: SELECT COUNT(status), COUNT(temperature) FROM root.ln.wf01.wt01 where temperature &lt; 24 GROUP BY((1509465720000, 1509466380000], 5m)</span>
<span class="line">Eg. SELECT COUNT (status), MAX_VALUE(temperature) FROM root.ln.wf01.wt01 WHERE time &lt; 1509466500000 GROUP BY([1509465720000, 1509466380000), 5m, 10m)</span>
<span class="line">Eg. SELECT MIN_TIME(status), MIN_VALUE(temperature) FROM root.ln.wf01.wt01 WHERE temperature &lt; 25 GROUP BY ([1509466140000, 1509466380000), 3m, 5ms)</span>
<span class="line">Eg. SELECT MIN_TIME(status), MIN_VALUE(temperature) FROM root.ln.wf01.wt01 WHERE temperature &lt; 25 GROUP BY ((1509466140000, 1509466380000], 3m, 5ms)</span>
<span class="line">Eg. SELECT MIN_TIME(status), MIN_VALUE(temperature) FROM root.ln.wf01.wt01 WHERE temperature &lt; 25 GROUP BY ((1509466140000, 1509466380000], 1mo)</span>
<span class="line">Eg. SELECT MIN_TIME(status), MIN_VALUE(temperature) FROM root.ln.wf01.wt01 WHERE temperature &lt; 25 GROUP BY ((1509466140000, 1509466380000], 1mo, 1mo)</span>
<span class="line">Eg. SELECT MIN_TIME(status), MIN_VALUE(temperature) FROM root.ln.wf01.wt01 WHERE temperature &lt; 25 GROUP BY ((1509466140000, 1509466380000], 1mo, 2mo)</span>
<span class="line">Note: the statement needs to satisfy this constraint: &lt;Path&gt;(SelectClause) + &lt;PrefixPath&gt;(FromClause) = &lt;Timeseries&gt;</span>
<span class="line">Note: If the &lt;SensorExpr&gt;(WhereClause) is started with &lt;Path&gt; and not with ROOT, the statement needs to satisfy this constraint: &lt;PrefixPath&gt;(FromClause) + &lt;Path&gt;(SensorExpr) = &lt;Timeseries&gt;</span>
<span class="line">Note: &lt;TimeValue&gt;(TimeInterval) needs to be greater than 0</span>
<span class="line">Note: First &lt;TimeValue&gt;(TimeInterval) in needs to be smaller than second &lt;TimeValue&gt;(TimeInterval)</span>
<span class="line">Note: &lt;TimeUnit&gt; needs to be greater than 0</span>
<span class="line">Note: Third &lt;TimeUnit&gt; if set shouldn&#39;t be smaller than second &lt;TimeUnit&gt;</span>
<span class="line">Note: If the second &lt;DurationUnit&gt; is &quot;mo&quot;, the third &lt;DurationUnit&gt; need to be in month</span>
<span class="line">Note: If the third &lt;DurationUnit&gt; is &quot;mo&quot;, the second &lt;DurationUnit&gt; can be in any unit</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Fill Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SELECT &lt;SelectClause&gt; FROM &lt;FromClause&gt; WHERE &lt;WhereClause&gt; FILL &lt;FillClause&gt;</span>
<span class="line">SelectClause : &lt;Path&gt; [COMMA &lt;Path&gt;]*</span>
<span class="line">FromClause : &lt; PrefixPath &gt; [COMMA &lt; PrefixPath &gt;]*</span>
<span class="line">WhereClause : &lt;WhereExpression&gt;</span>
<span class="line">WhereExpression : TIME EQUAL &lt;TimeValue&gt;</span>
<span class="line">FillClause : LPAREN &lt;TypeClause&gt; [COMMA &lt;TypeClause&gt;]* RPAREN</span>
<span class="line">TypeClause : &lt;Int32Clause&gt; | &lt;Int64Clause&gt; | &lt;FloatClause&gt; | &lt;DoubleClause&gt; | &lt;BoolClause&gt; | &lt;TextClause&gt;</span>
<span class="line">Int32Clause: INT32 LBRACKET (&lt;LinearClause&gt; | &lt;PreviousClause&gt;) RBRACKET</span>
<span class="line">Int64Clause: INT64 LBRACKET (&lt;LinearClause&gt; | &lt;PreviousClause&gt;) RBRACKET</span>
<span class="line">FloatClause: FLOAT LBRACKET (&lt;LinearClause&gt; | &lt;PreviousClause&gt;) RBRACKET</span>
<span class="line">DoubleClause: DOUBLE LBRACKET (&lt;LinearClause&gt; | &lt;PreviousClause&gt;) RBRACKET</span>
<span class="line">BoolClause: BOOLEAN LBRACKET (&lt;LinearClause&gt; | &lt;PreviousClause&gt;) RBRACKET</span>
<span class="line">TextClause: TEXT LBRACKET (&lt;LinearClause&gt; | &lt;PreviousClause&gt;) RBRACKET</span>
<span class="line">PreviousClause : PREVIOUS [COMMA &lt;ValidPreviousTime&gt;]?</span>
<span class="line">LinearClause : LINEAR [COMMA &lt;ValidPreviousTime&gt; COMMA &lt;ValidBehindTime&gt;]?</span>
<span class="line">ValidPreviousTime, ValidBehindTime: &lt;TimeUnit&gt;</span>
<span class="line">TimeUnit : Integer &lt;DurationUnit&gt;</span>
<span class="line">DurationUnit : &quot;ms&quot; | &quot;s&quot; | &quot;m&quot; | &quot;h&quot; | &quot;d&quot; | &quot;w&quot;</span>
<span class="line">Eg: SELECT temperature FROM root.ln.wf01.wt01 WHERE time = 2017-11-01T16:37:50.000 FILL(float[previous, 1m])</span>
<span class="line">Eg: SELECT temperature,status FROM root.ln.wf01.wt01 WHERE time = 2017-11-01T16:37:50.000 FILL (float[linear, 1m, 1m], boolean[previous, 1m])</span>
<span class="line">Eg: SELECT temperature,status,hardware FROM root.ln.wf01.wt01 WHERE time = 2017-11-01T16:37:50.000 FILL (float[linear, 1m, 1m], boolean[previous, 1m], text[previous])</span>
<span class="line">Eg: SELECT temperature,status,hardware FROM root.ln.wf01.wt01 WHERE time = 2017-11-01T16:37:50.000 FILL (float[linear], boolean[previous, 1m], text[previous])</span>
<span class="line">Note: the statement needs to satisfy this constraint: &lt;PrefixPath&gt;(FromClause) + &lt;Path&gt;(SelectClause) = &lt;Timeseries&gt;</span>
<span class="line">Note: Integer in &lt;TimeUnit&gt; needs to be greater than 0</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Group By Fill Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SELECT &lt;SelectClause&gt; FROM &lt;FromClause&gt; WHERE &lt;WhereClause&gt; GROUP BY &lt;GroupByClause&gt; (FILL &lt;GROUPBYFillClause&gt;)?</span>
<span class="line">GroupByClause : LPAREN &lt;TimeInterval&gt; COMMA &lt;TimeUnit&gt; RPAREN</span>
<span class="line">GROUPBYFillClause : LPAREN &lt;TypeClause&gt; RPAREN</span>
<span class="line">TypeClause : &lt;AllClause&gt; | &lt;Int32Clause&gt; | &lt;Int64Clause&gt; | &lt;FloatClause&gt; | &lt;DoubleClause&gt; | &lt;BoolClause&gt; | &lt;TextClause&gt; </span>
<span class="line">AllClause: ALL LBRACKET (&lt;PreviousUntilLastClause&gt; | &lt;PreviousClause&gt;) RBRACKET</span>
<span class="line">Int32Clause: INT32 LBRACKET (&lt;PreviousUntilLastClause&gt; | &lt;PreviousClause&gt;) RBRACKET</span>
<span class="line">Int64Clause: INT64 LBRACKET (&lt;PreviousUntilLastClause&gt; | &lt;PreviousClause&gt;) RBRACKET</span>
<span class="line">FloatClause: FLOAT LBRACKET (&lt;PreviousUntilLastClause&gt; | &lt;PreviousClause&gt;) RBRACKET</span>
<span class="line">DoubleClause: DOUBLE LBRACKET (&lt;PreviousUntilLastClause&gt; | &lt;PreviousClause&gt;) RBRACKET</span>
<span class="line">BoolClause: BOOLEAN LBRACKET (&lt;PreviousUntilLastClause&gt; | &lt;PreviousClause&gt;) RBRACKET</span>
<span class="line">TextClause: TEXT LBRACKET (&lt;PreviousUntilLastClause&gt; | &lt;PreviousClause&gt;) RBRACKET</span>
<span class="line">PreviousClause : PREVIOUS</span>
<span class="line">PreviousUntilLastClause : PREVIOUSUNTILLAST</span>
<span class="line">Eg: SELECT last_value(temperature) FROM root.ln.wf01.wt01 GROUP BY([20, 100), 5m) FILL (float[PREVIOUS])</span>
<span class="line">Eg: SELECT last_value(temperature) FROM root.ln.wf01.wt01 GROUP BY((15, 100], 5m) FILL (float[PREVIOUS])</span>
<span class="line">Eg: SELECT last_value(power) FROM root.ln.wf01.wt01 GROUP BY([20, 100), 5m) FILL (int32[PREVIOUSUNTILLAST])</span>
<span class="line">Eg: SELECT last_value(power) FROM root.ln.wf01.wt01 GROUP BY([20, 100), 5m) FILL (int32[PREVIOUSUNTILLAST, 5m])</span>
<span class="line">Eg: SELECT last_value(temperature), last_value(power) FROM root.ln.wf01.wt01 GROUP BY([20, 100), 5m) FILL (ALL[PREVIOUS])</span>
<span class="line">Eg: SELECT last_value(temperature), last_value(power) FROM root.ln.wf01.wt01 GROUP BY([20, 100), 5m) FILL (ALL[PREVIOUS, 5m])</span>
<span class="line">Note: In group by fill, sliding step is not supported in group by clause</span>
<span class="line">Note: Now, only last_value aggregation function is supported in group by fill.</span>
<span class="line">Note: Linear fill is not supported in group by fill.</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Order by time Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SELECT &lt;SelectClause&gt; FROM &lt;FromClause&gt; WHERE &lt;WhereClause&gt; GROUP BY &lt;GroupByClause&gt; (FILL &lt;GROUPBYFillClause&gt;)? orderByTimeClause?</span>
<span class="line">orderByTimeClause: order by time (asc | desc)?</span>
<span class="line"></span>
<span class="line">Eg: SELECT last_value(temperature) FROM root.ln.wf01.wt01 GROUP BY([20, 100), 5m) FILL (float[PREVIOUS]) order by time desc</span>
<span class="line">Eg: SELECT * from root.** order by time desc</span>
<span class="line">Eg: SELECT * from root.** order by time desc align by device </span>
<span class="line">Eg: SELECT * from root.** order by time desc disable align</span>
<span class="line">Eg: SELECT last * from root.** order by time desc</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Limit Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SELECT &lt;SelectClause&gt; FROM &lt;FromClause&gt; [WHERE &lt;WhereClause&gt;] [&lt;LIMITClause&gt;] [&lt;SLIMITClause&gt;]</span>
<span class="line">SelectClause : [&lt;Path&gt; | Function]+</span>
<span class="line">Function : &lt;AggregationFunction&gt; LPAREN &lt;Path&gt; RPAREN</span>
<span class="line">FromClause : &lt;Path&gt;</span>
<span class="line">WhereClause : &lt;Condition&gt; [(AND | OR) &lt;Condition&gt;]*</span>
<span class="line">Condition : &lt;Expression&gt; [(AND | OR) &lt;Expression&gt;]*</span>
<span class="line">Expression: [NOT|!]?&lt;TimeExpr&gt; | [NOT|!]?&lt;SensorExpr&gt;</span>
<span class="line">TimeExpr : TIME PrecedenceEqualOperator (&lt;TimeValue&gt; | &lt;RelativeTime&gt;)</span>
<span class="line">RelativeTimeDurationUnit = Integer (&#39;Y&#39;|&#39;MO&#39;|&#39;W&#39;|&#39;D&#39;|&#39;H&#39;|&#39;M&#39;|&#39;S&#39;|&#39;MS&#39;|&#39;US&#39;|&#39;NS&#39;)</span>
<span class="line">RelativeTime : (now() | &lt;TimeValue&gt;) [(+|-) RelativeTimeDurationUnit]+</span>
<span class="line">SensorExpr : (&lt;Timeseries&gt;|&lt;Path&gt;) PrecedenceEqualOperator &lt;PointValue&gt;</span>
<span class="line">LIMITClause : LIMIT &lt;N&gt; [OFFSETClause]?</span>
<span class="line">N : Integer</span>
<span class="line">OFFSETClause : OFFSET &lt;OFFSETValue&gt;</span>
<span class="line">OFFSETValue : Integer</span>
<span class="line">SLIMITClause : SLIMIT &lt;SN&gt; [SOFFSETClause]?</span>
<span class="line">SN : Integer</span>
<span class="line">SOFFSETClause : SOFFSET &lt;SOFFSETValue&gt;</span>
<span class="line">SOFFSETValue : Integer</span>
<span class="line">Eg: IoTDB &gt; SELECT status, temperature FROM root.ln.wf01.wt01 WHERE temperature &lt; 24 and time &gt; 2017-11-1 0:13:00 LIMIT 3 OFFSET 2</span>
<span class="line">Eg. IoTDB &gt; SELECT COUNT (status), MAX_VALUE(temperature) FROM root.ln.wf01.wt01 WHERE time &lt; 1509466500000 GROUP BY([1509465720000, 1509466380000], 5m) LIMIT 3</span>
<span class="line">Note: N, OFFSETValue, SN and SOFFSETValue must be greater than 0.</span>
<span class="line">Note: The order of &lt;LIMITClause&gt; and &lt;SLIMITClause&gt; does not affect the grammatical correctness.</span>
<span class="line">Note: &lt;FillClause&gt; can not use &lt;LIMITClause&gt; but not &lt;SLIMITClause&gt;.</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Align By Device Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">AlignbyDeviceClause : ALIGN BY DEVICE</span>
<span class="line"></span>
<span class="line">Rules: </span>
<span class="line">1. Both uppercase and lowercase are ok. </span>
<span class="line">Correct example: select * from root.sg1.* align by device </span>
<span class="line">Correct example: select * from root.sg1.* ALIGN BY DEVICE </span>
<span class="line"></span>
<span class="line">2. AlignbyDeviceClause can only be used at the end of a query statement. </span>
<span class="line">Correct example: select * from root.sg1.* where time &gt; 10 align by device </span>
<span class="line">Wrong example: select * from root.sg1.* align by device where time &gt; 10 </span>
<span class="line"></span>
<span class="line">3. The paths of the SELECT clause can only be single level. In other words, the paths of the SELECT clause can only be measurements or STAR, without DOT.</span>
<span class="line">Correct example: select s0,s1 from root.sg1.* align by device </span>
<span class="line">Correct example: select s0,s1 from root.sg1.d0, root.sg1.d1 align by device </span>
<span class="line">Correct example: select * from root.sg1.* align by device </span>
<span class="line">Correct example: select * from root.** align by device </span>
<span class="line">Correct example: select s0,s1,* from root.*.* align by device </span>
<span class="line">Wrong example: select d0.s1, d0.s2, d1.s0 from root.sg1 align by device </span>
<span class="line">Wrong example: select *.s0, *.s1 from root.* align by device </span>
<span class="line">Wrong example: select *.*.* from root align by device</span>
<span class="line"></span>
<span class="line">4. The data types of the same measurement column should be the same across devices. </span>
<span class="line">Note that when it comes to aggregated paths, the data type of the measurement column will reflect </span>
<span class="line">the aggregation function rather than the original timeseries.</span>
<span class="line"></span>
<span class="line">Correct example: select s0 from root.sg1.d0,root.sg1.d1 align by device </span>
<span class="line">root.sg1.d0.s0 and root.sg1.d1.s0 are both INT32. </span>
<span class="line"></span>
<span class="line">Correct example: select count(s0) from root.sg1.d0,root.sg1.d1 align by device </span>
<span class="line">count(root.sg1.d0.s0) and count(root.sg1.d1.s0) are both INT64. </span>
<span class="line"></span>
<span class="line">Wrong example: select s0 from root.sg1.d0, root.sg2.d3 align by device </span>
<span class="line">root.sg1.d0.s0 is INT32 while root.sg2.d3.s0 is FLOAT. </span>
<span class="line"></span>
<span class="line">5. The display principle of the result table is that all the columns (no matther whther a column has has existing data) will be shown, with nonexistent cells being null. Besides, the select clause support const column (e.g., &#39;a&#39;, &#39;123&#39; etc..). </span>
<span class="line">For example, &quot;select s0,s1,s2,&#39;abc&#39;,s1,s2 from root.sg.d0, root.sg.d1, root.sg.d2 align by device&quot;. Suppose that the actual existing timeseries are as follows: </span>
<span class="line">- root.sg.d0.s0</span>
<span class="line">- root.sg.d0.s1</span>
<span class="line">- root.sg.d1.s0</span>
<span class="line"></span>
<span class="line">Then you could expect a table like: </span>
<span class="line"></span>
<span class="line">| Time | Device | s0 | s1 | s2 | &#39;abc&#39; | s1 | s2 |</span>
<span class="line">| --- | --- | ---| ---| null | &#39;abc&#39; | ---| null |</span>
<span class="line">| 1 |root.sg.d0| 20 | 2.5| null | &#39;abc&#39; | 2.5| null |</span>
<span class="line">| 2 |root.sg.d0| 23 | 3.1| null | &#39;abc&#39; | 3.1| null |</span>
<span class="line">| ... | ... | ...| ...| null | &#39;abc&#39; | ...| null |</span>
<span class="line">| 1 |root.sg.d1| 12 |null| null | &#39;abc&#39; |null| null |</span>
<span class="line">| 2 |root.sg.d1| 19 |null| null | &#39;abc&#39; |null| null |</span>
<span class="line">| ... | ... | ...| ...| null | &#39;abc&#39; | ...| null |</span>
<span class="line"></span>
<span class="line">Note that the cells of measurement &#39;s0&#39; and device &#39;root.sg.d1&#39; are all null. </span>
<span class="line"></span>
<span class="line">6. The duplicated devices in the prefix paths are neglected. </span>
<span class="line">For example, &quot;select s0,s1 from root.sg.d0,root.sg.d0,root.sg.d1 align by device&quot; is equal to &quot;select s0,s1 from root.sg.d0,root.sg.d1 align by device&quot;. </span>
<span class="line">For example. &quot;select s0,s1 from root.sg.*,root.sg.d0 align by device&quot; is equal to &quot;select s0,s1 from root.sg.* align by device&quot;. </span>
<span class="line"></span>
<span class="line">7. The duplicated measurements in the suffix paths are not neglected. </span>
<span class="line">For example, &quot;select s0,s0,s1 from root.sg.* align by device&quot; is not equal to &quot;select s0,s1 from root.sg.* align by device&quot;.</span>
<span class="line"></span>
<span class="line">8. Both time predicates and value predicates are allowed in Where Clause. The paths of the value predicates can be the leaf node or full path started with ROOT. And wildcard is not allowed here. For example:</span>
<span class="line">- select * from root.sg.* where time = 1 align by device</span>
<span class="line">- select * from root.sg.* where s0 &lt; 100 align by device</span>
<span class="line">- select * from root.sg.* where time &lt; 20 AND s0 &gt; 50 align by device</span>
<span class="line">- select * from root.sg.d0 where root.sg.d0.s0 = 15 align by device</span>
<span class="line"></span>
<span class="line">9. More correct examples:</span>
<span class="line"> - select * from root.vehicle.* align by device</span>
<span class="line"> - select s0,s0,s1 from root.vehicle.* align by device</span>
<span class="line"> - select s0,s1 from root.vehicle.* limit 10 offset 1 align by device</span>
<span class="line"> - select * from root.vehicle.* slimit 10 soffset 2 align by device</span>
<span class="line"> - select * from root.vehicle.* where time &gt; 10 align by device</span>
<span class="line"> - select * from root.vehicle.* where time &lt; 10 AND s0 &gt; 25 align by device</span>
<span class="line"> - select * from root.vehicle.* where root.vehicle.d0.s0&gt;0 align by device</span>
<span class="line"> - select count(*) from root.vehicle align by device</span>
<span class="line"> - select sum(*) from root.vehicle.* GROUP BY (20ms,0,[2,50]) align by device</span>
<span class="line"> - select * from root.vehicle.* where time = 3 Fill(int32[previous, 5ms]) align by device</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Disable Align Statement</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">Disable Align Clause: DISABLE ALIGN</span>
<span class="line"></span>
<span class="line">Rules: </span>
<span class="line">1. Both uppercase and lowercase are ok. </span>
<span class="line">Correct example: select * from root.sg1.* disable align </span>
<span class="line">Correct example: select * from root.sg1.* DISABLE ALIGN </span>
<span class="line"></span>
<span class="line">2. Disable Align Clause can only be used at the end of a query statement. </span>
<span class="line">Correct example: select * from root.sg1.* where time &gt; 10 disable align </span>
<span class="line">Wrong example: select * from root.sg1.* disable align where time &gt; 10 </span>
<span class="line"></span>
<span class="line">3. Disable Align Clause cannot be used with Aggregation, Fill Statements, Group By or Group By Device Statements, but can with Limit Statements.</span>
<span class="line">Correct example: select * from root.sg1.* limit 3 offset 2 disable align</span>
<span class="line">Correct example: select * from root.sg1.* slimit 3 soffset 2 disable align</span>
<span class="line">Wrong example: select count(s0),count(s1) from root.sg1.d1 disable align</span>
<span class="line">Wrong example: select * from root.vehicle.* where root.vehicle.d0.s0&gt;0 disable align</span>
<span class="line">Wrong example: select * from root.vehicle.* align by device disable align</span>
<span class="line"></span>
<span class="line">4. The display principle of the result table is that only when the column (or row) has existing data will the column (or row) be shown, with nonexistent cells being empty.</span>
<span class="line"></span>
<span class="line">You could expect a table like:</span>
<span class="line">| Time | root.sg.d0.s1 | Time | root.sg.d0.s2 | Time | root.sg.d1.s1 |</span>
<span class="line">| --- | --- | --- | --- | --- | --- |</span>
<span class="line">| 1 | 100 | 20 | 300 | 400 | 600 |</span>
<span class="line">| 2 | 300 | 40 | 800 | 700 | 900 |</span>
<span class="line">| 4 | 500 | | | 800 | 1000 |</span>
<span class="line">| | | | | 900 | 8000 |</span>
<span class="line"></span>
<span class="line">5. More correct examples: </span>
<span class="line"> - select * from root.vehicle.* disable align</span>
<span class="line"> - select s0,s0,s1 from root.vehicle.* disable align</span>
<span class="line"> - select s0,s1 from root.vehicle.* limit 10 offset 1 disable align</span>
<span class="line"> - select * from root.vehicle.* slimit 10 soffset 2 disable align</span>
<span class="line"> - select * from root.vehicle.* where time &gt; 10 disable align</span>
<span class="line"></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Select Last Record Statement</li></ul><p>The LAST function returns the last time-value pair of the given timeseries. Currently filters are not supported in LAST queries.</p><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SELECT LAST &lt;SelectClause&gt; FROM &lt;FromClause&gt;</span>
<span class="line">Select Clause : &lt;Path&gt; [COMMA &lt;Path&gt;]*</span>
<span class="line">FromClause : &lt; PrefixPath &gt; [COMMA &lt; PrefixPath &gt;]*</span>
<span class="line">WhereClause : &lt;TimeExpr&gt; [(AND | OR) &lt;TimeExpr&gt;]*</span>
<span class="line">TimeExpr : TIME PrecedenceEqualOperator (&lt;TimeValue&gt; | &lt;RelativeTime&gt;)</span>
<span class="line"></span>
<span class="line">Eg. SELECT LAST s1 FROM root.sg.d1</span>
<span class="line">Eg. SELECT LAST s1, s2 FROM root.sg.d1</span>
<span class="line">Eg. SELECT LAST s1 FROM root.sg.d1, root.sg.d2</span>
<span class="line">Eg. SELECT LAST s1 FROM root.sg.d1 where time &gt; 100</span>
<span class="line">Eg. SELECT LAST s1, s2 FROM root.sg.d1 where time &gt;= 500</span>
<span class="line"></span>
<span class="line">Rules:</span>
<span class="line">1. the statement needs to satisfy this constraint: &lt;PrefixPath&gt; + &lt;Path&gt; = &lt;Timeseries&gt;</span>
<span class="line"></span>
<span class="line">2. SELECT LAST only supports time filter that contains &#39;&gt;&#39; or &#39;&gt;=&#39; currently.</span>
<span class="line"></span>
<span class="line">3. The result set of last query will always be displayed in a fixed three column table format.</span>
<span class="line">For example, &quot;select last s1, s2 from root.sg.d1, root.sg.d2&quot;, the query result would be:</span>
<span class="line"></span>
<span class="line">| Time | Path | Value | dataType |</span>
<span class="line">| --- | ------------- |------ | -------- |</span>
<span class="line">| 5 | root.sg.d1.s1 | 100 | INT32 |</span>
<span class="line">| 2 | root.sg.d1.s2 | 400 | INT32 |</span>
<span class="line">| 4 | root.sg.d2.s1 | 250 | INT32 |</span>
<span class="line">| 9 | root.sg.d2.s2 | 600 | INT32 |</span>
<span class="line"></span>
<span class="line">4. It is not supported to use &quot;diable align&quot; in LAST query. </span>
<span class="line"></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>As Statement</li></ul><p>As statement assigns an alias to time seires queried in SELECT statement</p><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">You can use as statement in all queries, but some rules are restricted about wildcard.</span>
<span class="line"></span>
<span class="line">1. Raw data query</span>
<span class="line">select s1 as speed, s2 as temperature from root.sg.d1</span>
<span class="line"></span>
<span class="line">The result set will be like:</span>
<span class="line">| Time | speed | temperature |</span>
<span class="line">| ... | ... | .... |</span>
<span class="line"></span>
<span class="line">2. Aggregation query</span>
<span class="line">select count(s1) as s1_num, max_value(s2) as s2_max from root.sg.d1</span>
<span class="line"></span>
<span class="line">3. Down-frequence query</span>
<span class="line">select count(s1) as s1_num from root.sg.d1 group by ([100,500), 80ms)</span>
<span class="line"></span>
<span class="line">4. Align by device query</span>
<span class="line">select s1 as speed, s2 as temperature from root.sg.d1 align by device</span>
<span class="line"></span>
<span class="line">select count(s1) as s1_num, count(s2), count(s3) as s3_num from root.sg.d2 align by device</span>
<span class="line"></span>
<span class="line">5. Last Record query</span>
<span class="line">select last s1 as speed, s2 from root.sg.d1</span>
<span class="line"></span>
<span class="line">Rules:</span>
<span class="line">1. In addition to Align by device query,each AS statement has to corresponding to one time series exactly.</span>
<span class="line"></span>
<span class="line">E.g. select s1 as temperature from root.sg.*</span>
<span class="line"></span>
<span class="line">At this time if `root.sg.*` includes more than one device,then an exception will be thrown。</span>
<span class="line"></span>
<span class="line">2. In align by device query,the prefix path that each AS statement corresponding to can includes multiple device, but the suffix path can only be single sensor.</span>
<span class="line"></span>
<span class="line">E.g. select s1 as temperature from root.sg.*</span>
<span class="line"></span>
<span class="line">In this situation, it will be show correctly even if multiple devices are selected.</span>
<span class="line"></span>
<span class="line">E.g. select * as temperature from root.sg.d1</span>
<span class="line"></span>
<span class="line">In this situation, it will throws an exception if * corresponds to multiple sensors.</span>
<span class="line"></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Regexp Statement</li></ul><p>Regexp Statement only supports regular expressions with Java standard library style on timeseries which is TEXT data type</p><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SELECT &lt;SelectClause&gt; FROM &lt;FromClause&gt; WHERE &lt;WhereClause&gt;</span>
<span class="line">Select Clause : &lt;Path&gt; [COMMA &lt;Path&gt;]*</span>
<span class="line">FromClause : &lt; PrefixPath &gt; [COMMA &lt; PrefixPath &gt;]*</span>
<span class="line">WhereClause : andExpression (OPERATOR_OR andExpression)*</span>
<span class="line">andExpression : predicate (OPERATOR_AND predicate)*</span>
<span class="line">predicate : (suffixPath | fullPath) REGEXP regularExpression</span>
<span class="line">regularExpression: Java standard regularexpression, like &#39;^[a-z][0-9]$&#39;, [details](https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html)</span>
<span class="line"></span>
<span class="line">Eg. select s1 from root.sg.d1 where s1 regexp &#39;^[0-9]*$&#39;</span>
<span class="line">Eg. select s1, s2 FROM root.sg.d1 where s1 regexp &#39;^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$&#39; and s2 regexp &#39;^\d{15}|\d{18}$&#39;</span>
<span class="line">Eg. select * from root.sg.d1 where s1 regexp &#39;^[a-zA-Z]\w{5,17}$&#39;</span>
<span class="line">Eg. select * from root.sg.d1 where s1 regexp &#39;^\d{4}-\d{1,2}-\d{1,2}&#39; and time &gt; 100</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Like Statement</li></ul><p>The usage of LIKE Statement similar with mysql, but only support timeseries which is TEXT data type</p><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SELECT &lt;SelectClause&gt; FROM &lt;FromClause&gt; WHERE &lt;WhereClause&gt;</span>
<span class="line">Select Clause : &lt;Path&gt; [COMMA &lt;Path&gt;]*</span>
<span class="line">FromClause : &lt; PrefixPath &gt; [COMMA &lt; PrefixPath &gt;]*</span>
<span class="line">WhereClause : andExpression (OPERATOR_OR andExpression)*</span>
<span class="line">andExpression : predicate (OPERATOR_AND predicate)*</span>
<span class="line">predicate : (suffixPath | fullPath) LIKE likeExpression</span>
<span class="line">likeExpression : string that may contains &quot;%&quot; or &quot;_&quot;, while &quot;%value&quot; means a string that ends with the value, &quot;value%&quot; means a string starts with the value, &quot;%value%&quot; means string that contains values, and &quot;_&quot; represents any character.</span>
<span class="line"></span>
<span class="line">Eg. select s1 from root.sg.d1 where s1 like &#39;abc&#39;</span>
<span class="line">Eg. select s1, s2 from root.sg.d1 where s1 like &#39;a%bc&#39;</span>
<span class="line">Eg. select * from root.sg.d1 where s1 like &#39;abc_&#39;</span>
<span class="line">Eg. select * from root.sg.d1 where s1 like &#39;abc\%&#39; and time &gt; 100</span>
<span class="line">In this situation, &#39;\%&#39; means &#39;%&#39; will be escaped</span>
<span class="line">The result set will be like:</span>
<span class="line">| Time | Path | Value |</span>
<span class="line">| --- | ------------ | ----- |</span>
<span class="line">| 200 | root.sg.d1.s1| abc% |</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="database-management-statement" tabindex="-1"><a class="header-anchor" href="#database-management-statement"><span>Database Management Statement</span></a></h2><ul><li>Create User</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">CREATE USER &lt;userName&gt; &lt;password&gt;; </span>
<span class="line">userName:=identifier </span>
<span class="line">password:=string</span>
<span class="line">Eg: IoTDB &gt; CREATE USER thulab &#39;pwd&#39;;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Delete User</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">DROP USER &lt;userName&gt;; </span>
<span class="line">userName:=identifier</span>
<span class="line">Eg: IoTDB &gt; DROP USER xiaoming;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Create Role</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">CREATE ROLE &lt;roleName&gt;; </span>
<span class="line">roleName:=identifie</span>
<span class="line">Eg: IoTDB &gt; CREATE ROLE admin;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Delete Role</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">DROP ROLE &lt;roleName&gt;; </span>
<span class="line">roleName:=identifier</span>
<span class="line">Eg: IoTDB &gt; DROP ROLE admin;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Grant User Privileges</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">GRANT USER &lt;userName&gt; PRIVILEGES &lt;privileges&gt; ON &lt;nodeName&gt;; </span>
<span class="line">userName:=identifier </span>
<span class="line">nodeName:=identifier (DOT identifier)* </span>
<span class="line">privileges:= string (COMMA string)*</span>
<span class="line">Eg: IoTDB &gt; GRANT USER tempuser PRIVILEGES DELETE_TIMESERIES on root.ln;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Grant Role Privileges</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">GRANT ROLE &lt;roleName&gt; PRIVILEGES &lt;privileges&gt; ON &lt;nodeName&gt;; </span>
<span class="line">privileges:= string (COMMA string)* </span>
<span class="line">roleName:=identifier </span>
<span class="line">nodeName:=identifier (DOT identifier)*</span>
<span class="line">Eg: IoTDB &gt; GRANT ROLE temprole PRIVILEGES DELETE_TIMESERIES ON root.ln;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Grant User Role</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">GRANT &lt;roleName&gt; TO &lt;userName&gt;; </span>
<span class="line">roleName:=identifier </span>
<span class="line">userName:=identifier</span>
<span class="line">Eg: IoTDB &gt; GRANT temprole TO tempuser;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Revoke User Privileges</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">REVOKE USER &lt;userName&gt; PRIVILEGES &lt;privileges&gt; ON &lt;nodeName&gt;; </span>
<span class="line">privileges:= string (COMMA string)* </span>
<span class="line">userName:=identifier </span>
<span class="line">nodeName:=identifier (DOT identifier)*</span>
<span class="line">Eg: IoTDB &gt; REVOKE USER tempuser PRIVILEGES DELETE_TIMESERIES on root.ln;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Revoke Role Privileges</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">REVOKE ROLE &lt;roleName&gt; PRIVILEGES &lt;privileges&gt; ON &lt;nodeName&gt;; </span>
<span class="line">privileges:= string (COMMA string)* </span>
<span class="line">roleName:= identifier </span>
<span class="line">nodeName:=identifier (DOT identifier)*</span>
<span class="line">Eg: IoTDB &gt; REVOKE ROLE temprole PRIVILEGES DELETE_TIMESERIES ON root.ln;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Revoke Role From User</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">REVOKE &lt;roleName&gt; FROM &lt;userName&gt;;</span>
<span class="line">roleName:=identifier</span>
<span class="line">userName:=identifier</span>
<span class="line">Eg: IoTDB &gt; REVOKE temprole FROM tempuser;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>List Users</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">LIST USER</span>
<span class="line">Eg: IoTDB &gt; LIST USER</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>List Roles</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">LIST ROLE</span>
<span class="line">Eg: IoTDB &gt; LIST ROLE</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>List Privileges</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">LIST PRIVILEGES USER &lt;username&gt; ON &lt;path&gt;; </span>
<span class="line">username:=identifier </span>
<span class="line">path=‘root’ (DOT identifier)*</span>
<span class="line">Eg: IoTDB &gt; LIST PRIVILEGES USER sgcc_wirte_user ON root.sgcc;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>List Privileges of Roles</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">LIST ROLE PRIVILEGES &lt;roleName&gt;</span>
<span class="line">roleName:=identifier</span>
<span class="line">Eg: IoTDB &gt; LIST ROLE PRIVILEGES actor;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>List Privileges of Roles(On Specific Path)</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">LIST PRIVILEGES ROLE &lt;roleName&gt; ON &lt;path&gt;; </span>
<span class="line">roleName:=identifier </span>
<span class="line">path=‘root’ (DOT identifier)*</span>
<span class="line">Eg: IoTDB &gt; LIST PRIVILEGES ROLE wirte_role ON root.sgcc;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>List Privileges of Users</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">LIST USER PRIVILEGES &lt;username&gt; ; </span>
<span class="line">username:=identifier </span>
<span class="line">Eg: IoTDB &gt; LIST USER PRIVILEGES tempuser;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>List Roles of Users</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">LIST ALL ROLE OF USER &lt;username&gt; ; </span>
<span class="line">username:=identifier</span>
<span class="line">Eg: IoTDB &gt; LIST ALL ROLE OF USER tempuser;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>List Users of Role</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">LIST ALL USER OF ROLE &lt;roleName&gt;;</span>
<span class="line">roleName:=identifier</span>
<span class="line">Eg: IoTDB &gt; LIST ALL USER OF ROLE roleuser;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Alter Password</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">ALTER USER &lt;username&gt; SET PASSWORD &lt;password&gt;;</span>
<span class="line">roleName:=identifier</span>
<span class="line">password:=identifier</span>
<span class="line">Eg: IoTDB &gt; ALTER USER tempuser SET PASSWORD &#39;newpwd&#39;;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="functions" tabindex="-1"><a class="header-anchor" href="#functions"><span>Functions</span></a></h2><ul><li>COUNT</li></ul><p>The COUNT function returns the value number of timeseries(one or more) non-null values selected by the SELECT statement. The result is a signed 64-bit integer. If there are no matching rows, COUNT () returns 0.</p><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SELECT COUNT(Path) (COMMA COUNT(Path))* FROM &lt;FromClause&gt; [WHERE &lt;WhereClause&gt;]?</span>
<span class="line">Eg. SELECT COUNT(status), COUNT(temperature) FROM root.ln.wf01.wt01 WHERE root.ln.wf01.wt01.temperature &lt; 24</span>
<span class="line">Note: the statement needs to satisfy this constraint: &lt;PrefixPath&gt; + &lt;Path&gt; = &lt;Timeseries&gt;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>FIRST_VALUE(Rename from <code>FIRST</code> at <code>V0.10.0</code>)</li></ul><p>The FIRST_VALUE function returns the first point value of the choosen timeseries(one or more).</p><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SELECT FIRST_VALUE (Path) (COMMA FIRST_VALUE (Path))* FROM &lt;FromClause&gt; [WHERE &lt;WhereClause&gt;]?</span>
<span class="line">Eg. SELECT FIRST_VALUE (status), FIRST_VALUE (temperature) FROM root.ln.wf01.wt01 WHERE root.ln.wf01.wt01.temperature &lt; 24</span>
<span class="line">Note: the statement needs to satisfy this constraint: &lt;PrefixPath&gt; + &lt;Path&gt; = &lt;Timeseries&gt;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>LAST_VALUE</li></ul><p>The LAST_VALUE function returns the last point value of the choosen timeseries(one or more).</p><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SELECT LAST_VALUE (Path) (COMMA LAST_VALUE (Path))* FROM &lt;FromClause&gt; [WHERE &lt;WhereClause&gt;]?</span>
<span class="line">Eg. SELECT LAST_VALUE (status), LAST_VALUE (temperature) FROM root.ln.wf01.wt01 WHERE root.ln.wf01.wt01.temperature &lt; 24</span>
<span class="line">Note: the statement needs to satisfy this constraint: &lt;PrefixPath&gt; + &lt;Path&gt; = &lt;Timeseries&gt;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>MAX_TIME</li></ul><p>The MAX_TIME function returns the maximum timestamp of the choosen timeseries(one or more). The result is a signed 64-bit integer, greater than 0.</p><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SELECT MAX_TIME (Path) (COMMA MAX_TIME (Path))* FROM &lt;FromClause&gt; [WHERE &lt;WhereClause&gt;]?</span>
<span class="line">Eg. SELECT MAX_TIME(status), MAX_TIME(temperature) FROM root.ln.wf01.wt01 WHERE root.ln.wf01.wt01.temperature &lt; 24</span>
<span class="line">Note: the statement needs to satisfy this constraint: &lt;PrefixPath&gt; + &lt;Path&gt; = &lt;Timeseries&gt;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>MAX_VALUE</li></ul><p>The MAX_VALUE function returns the maximum value(lexicographically ordered) of the choosen timeseries (one or more).</p><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SELECT MAX_VALUE (Path) (COMMA MAX_VALUE (Path))* FROM &lt;FromClause&gt; [WHERE &lt;WhereClause&gt;]?</span>
<span class="line">Eg. SELECT MAX_VALUE(status), MAX_VALUE(temperature) FROM root.ln.wf01.wt01 WHERE root.ln.wf01.wt01.temperature &lt; 24</span>
<span class="line">Note: the statement needs to satisfy this constraint: &lt;PrefixPath&gt; + &lt;Path&gt; = &lt;Timeseries&gt;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>EXTREME</li></ul><p>The EXTREME function returns the extreme value(lexicographically ordered) of the choosen timeseries (one or more).<br> extreme value: The value that has the maximum absolute value.<br> If the maximum absolute value of a positive value and a negative value is equal, return the positive value.</p><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SELECT EXTREME (Path) (COMMA EXT (Path))* FROM &lt;FromClause&gt; [WHERE &lt;WhereClause&gt;]?</span>
<span class="line">Eg. SELECT EXTREME(status), EXTREME(temperature) FROM root.ln.wf01.wt01 WHERE root.ln.wf01.wt01.temperature &lt; 24</span>
<span class="line">Note: the statement needs to satisfy this constraint: &lt;PrefixPath&gt; + &lt;Path&gt; = &lt;Timeseries&gt;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>AVG(Rename from <code>MEAN</code> at <code>V0.9.0</code>)</li></ul><p>The AVG function returns the arithmetic mean value of the choosen timeseries over a specified period of time. The timeseries must be int32, int64, float, double type, and the other types are not to be calculated. The result is a double type number.</p><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SELECT AVG (Path) (COMMA AVG (Path))* FROM &lt;FromClause&gt; [WHERE &lt;WhereClause&gt;]?</span>
<span class="line">Eg. SELECT AVG (temperature) FROM root.ln.wf01.wt01 WHERE root.ln.wf01.wt01.temperature &lt; 24</span>
<span class="line">Note: the statement needs to satisfy this constraint: &lt;PrefixPath&gt; + &lt;Path&gt; = &lt;Timeseries&gt;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>MIN_TIME</li></ul><p>The MIN_TIME function returns the minimum timestamp of the choosen timeseries(one or more). The result is a signed 64-bit integer, greater than 0.</p><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SELECT MIN_TIME (Path) (COMMA MIN_TIME (Path))*FROM &lt;FromClause&gt; [WHERE &lt;WhereClause&gt;]?</span>
<span class="line">Eg. SELECT MIN_TIME(status), MIN_TIME(temperature) FROM root.ln.wf01.wt01 WHERE root.ln.wf01.wt01.temperature &lt; 24</span>
<span class="line">Note: the statement needs to satisfy this constraint: &lt;PrefixPath&gt; + &lt;Path&gt; = &lt;Timeseries&gt;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>MIN_VALUE</li></ul><p>The MIN_VALUE function returns the minimum value(lexicographically ordered) of the choosen timeseries (one or more).</p><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SELECT MIN_VALUE (Path) (COMMA MIN_VALUE (Path))* FROM &lt;FromClause&gt; [WHERE &lt;WhereClause&gt;]?</span>
<span class="line">Eg. SELECT MIN_VALUE(status),MIN_VALUE(temperature) FROM root.ln.wf01.wt01 WHERE root.ln.wf01.wt01.temperature &lt; 24</span>
<span class="line">Note: the statement needs to satisfy this constraint: &lt;PrefixPath&gt; + &lt;Path&gt; = &lt;Timeseries&gt;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>NOW</li></ul><p>The NOW function returns the current timestamp. This function can be used in the data operation statement to represent time. The result is a signed 64-bit integer, greater than 0.</p><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">NOW()</span>
<span class="line">Eg. INSERT INTO root.ln.wf01.wt01(timestamp,status) VALUES(NOW(), false)</span>
<span class="line">Eg. DELETE FROM root.ln.wf01.wt01.status, root.ln.wf01.wt01.temperature WHERE time &lt; NOW()</span>
<span class="line">Eg. SELECT * FROM root.** WHERE time &lt; NOW()</span>
<span class="line">Eg. SELECT COUNT(temperature) FROM root.ln.wf01.wt01 WHERE time &lt; NOW()</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>SUM</li></ul><p>The SUM function returns the sum of the choosen timeseries (one or more) over a specified period of time. The timeseries must be int32, int64, float, double type, and the other types are not to be calculated. The result is a double type number.</p><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SELECT SUM(Path) (COMMA SUM(Path))* FROM &lt;FromClause&gt; [WHERE &lt;WhereClause&gt;]?</span>
<span class="line">Eg. SELECT SUM(temperature) FROM root.ln.wf01.wt01 WHERE root.ln.wf01.wt01.temperature &lt; 24</span>
<span class="line">Note: the statement needs to satisfy this constraint: &lt;PrefixPath&gt; + &lt;Path&gt; = &lt;Timeseries&gt;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="ttl" tabindex="-1"><a class="header-anchor" href="#ttl"><span>TTL</span></a></h2><p>IoTDB supports storage-level TTL settings, which means it is able to delete old data<br> automatically and periodically. The benefit of using TTL is that hopefully you can control the<br> total disk space usage and prevent the machine from running out of disks. Moreover, the query<br> performance may downgrade as the total number of files goes up and the memory usage also increase<br> as there are more files. Timely removing such files helps to keep at a high query performance<br> level and reduce memory usage. The TTL operations in IoTDB are supported by the following three<br> statements:</p><ul><li>Set TTL</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SET TTL TO StorageGroupName TTLTime</span>
<span class="line">Eg. SET TTL TO root.group1 3600000</span>
<span class="line">This example means that for data in root.group1, only that of the latest 1 hour will remain, the</span>
<span class="line">older one is removed or made invisible. </span>
<span class="line">Note: TTLTime should be millisecond timestamp. When TTL is set, insertions that fall</span>
<span class="line">out of TTL will be rejected.</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Unset TTL</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">UNSET TTL TO StorageGroupName</span>
<span class="line">Eg. UNSET TTL TO root.group1</span>
<span class="line">This example means that data of all time will be accepted in this group. </span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ul><li>Show TTL</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SHOW ALL TTL</span>
<span class="line">SHOW TTL ON StorageGroupNames</span>
<span class="line">Eg.1 SHOW ALL TTL</span>
<span class="line">This example will show TTLs of all databases.</span>
<span class="line">Eg.2 SHOW TTL ON root.group1,root.group2,root.group3</span>
<span class="line">This example will show TTLs of the specified 3 groups.</span>
<span class="line">Notice: databases without TTL will show a &quot;null&quot;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Notice: When you set TTL to some databases, data out of the TTL will be made invisible<br> immediately, but because the data files may contain both out-dated and living data or the data files may<br> be being used by queries, the physical removal of data is stale. If you increase or unset TTL<br> just after setting it previously, some previously invisible data may be seen again, but the<br> physically removed one is lost forever. In other words, different from delete statement, the<br> atomicity of data deletion is not guaranteed for efficiency concerns. So we recommend that you do<br> not change the TTL once it is set or at least do not reset it frequently, unless you are determined<br> to suffer the unpredictability.</p><ul><li>Delete Partition (experimental)</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">DELETE PARTITION StorageGroupName INT(COMMA INT)*</span>
<span class="line">Eg DELETE PARTITION root.sg1 0,1,2</span>
<span class="line">This example will delete the first 3 time partitions of database root.sg1.</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>The partitionId can be found in data folders or converted using <code>timestamp / partitionInterval</code>.</p><h2 id="kill-query" tabindex="-1"><a class="header-anchor" href="#kill-query"><span>Kill query</span></a></h2><ul><li>Show the list of queries in progress</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">SHOW QUERY PROCESSLIST</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><ul><li>Kill query</li></ul><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">KILL QUERY INT?</span>
<span class="line">E.g. KILL QUERY</span>
<span class="line">E.g. KILL QUERY 2</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="set-system-to-readonly-writable" tabindex="-1"><a class="header-anchor" href="#set-system-to-readonly-writable"><span>SET SYSTEM TO READONLY / WRITABLE</span></a></h2><p>Set IoTDB system to read-only or writable mode.</p><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">IoTDB&gt; SET SYSTEM TO READONLY</span>
<span class="line">IoTDB&gt; SET SYSTEM TO WRITABLE</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="identifiers" tabindex="-1"><a class="header-anchor" href="#identifiers"><span>Identifiers</span></a></h2><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">QUOTE := &#39;\&#39;&#39;;</span>
<span class="line">DOT := &#39;.&#39;;</span>
<span class="line">COLON : &#39;:&#39; ;</span>
<span class="line">COMMA := &#39;,&#39; ;</span>
<span class="line">SEMICOLON := &#39;;&#39; ;</span>
<span class="line">LPAREN := &#39;(&#39; ;</span>
<span class="line">RPAREN := &#39;)&#39; ;</span>
<span class="line">LBRACKET := &#39;[&#39;;</span>
<span class="line">RBRACKET := &#39;]&#39;;</span>
<span class="line">EQUAL := &#39;=&#39; | &#39;==&#39;;</span>
<span class="line">NOTEQUAL := &#39;&lt;&gt;&#39; | &#39;!=&#39;;</span>
<span class="line">LESSTHANOREQUALTO := &#39;&lt;=&#39;;</span>
<span class="line">LESSTHAN := &#39;&lt;&#39;;</span>
<span class="line">GREATERTHANOREQUALTO := &#39;&gt;=&#39;;</span>
<span class="line">GREATERTHAN := &#39;&gt;&#39;;</span>
<span class="line">DIVIDE := &#39;/&#39;;</span>
<span class="line">PLUS := &#39;+&#39;;</span>
<span class="line">MINUS := &#39;-&#39;;</span>
<span class="line">STAR := &#39;*&#39;;</span>
<span class="line">Letter := &#39;a&#39;..&#39;z&#39; | &#39;A&#39;..&#39;Z&#39;;</span>
<span class="line">HexDigit := &#39;a&#39;..&#39;f&#39; | &#39;A&#39;..&#39;F&#39;;</span>
<span class="line">Digit := &#39;0&#39;..&#39;9&#39;;</span>
<span class="line">Boolean := TRUE | FALSE | 0 | 1 (case insensitive)</span>
<span class="line"></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">StringLiteral := ( &#39;\&#39;&#39; ( ~(&#39;\&#39;&#39;) )* &#39;\&#39;&#39;;</span>
<span class="line">eg. &#39;abc&#39;</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">Integer := (&#39;-&#39; | &#39;+&#39;)? Digit+;</span>
<span class="line">eg. 123</span>
<span class="line">eg. -222</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">Float := (&#39;-&#39; | &#39;+&#39;)? Digit+ DOT Digit+ ((&#39;e&#39; | &#39;E&#39;) (&#39;-&#39; | &#39;+&#39;)? Digit+)?;</span>
<span class="line">eg. 3.1415</span>
<span class="line">eg. 1.2E10</span>
<span class="line">eg. -1.33</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">Identifier := (Letter | &#39;_&#39;) (Letter | Digit | &#39;_&#39; | MINUS)*;</span>
<span class="line">eg. a123</span>
<span class="line">eg. _abc123</span>
<span class="line"></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="literals" tabindex="-1"><a class="header-anchor" href="#literals"><span>Literals</span></a></h2><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">PointValue : Integer | Float | StringLiteral | Boolean</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">TimeValue : Integer | DateTime | ISO8601 | NOW()</span>
<span class="line">Note: Integer means timestamp type.</span>
<span class="line"></span>
<span class="line">DateTime : </span>
<span class="line">eg. 2016-11-16T16:22:33+08:00</span>
<span class="line">eg. 2016-11-16 16:22:33+08:00</span>
<span class="line">eg. 2016-11-16T16:22:33.000+08:00</span>
<span class="line">eg. 2016-11-16 16:22:33.000+08:00</span>
<span class="line">Note: DateTime Type can support several types, see Chapter 3 Datetime section for details.</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">PrecedenceEqualOperator : EQUAL | NOTEQUAL | LESSTHANOREQUALTO | LESSTHAN | GREATERTHANOREQUALTO | GREATERTHAN</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">Timeseries : ROOT [DOT \&lt;LayerName\&gt;]* DOT \&lt;SensorName\&gt;</span>
<span class="line">LayerName : Identifier</span>
<span class="line">SensorName : Identifier</span>
<span class="line">eg. root.ln.wf01.wt01.status</span>
<span class="line">eg. root.sgcc.wf03.wt01.temperature</span>
<span class="line">Note: Timeseries must be start with `root`(case insensitive) and end with sensor name.</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">PrefixPath : ROOT (DOT \&lt;LayerName\&gt;)*</span>
<span class="line">LayerName : Identifier | STAR</span>
<span class="line">eg. root.sgcc</span>
<span class="line">eg. root.*</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">Path: (ROOT | &lt;LayerName&gt;) (DOT &lt;LayerName&gt;)* </span>
<span class="line">LayerName: Identifier | STAR</span>
<span class="line">eg. root.ln.wf01.wt01.status</span>
<span class="line">eg. root.*.wf01.wt01.status</span>
<span class="line">eg. root.ln.wf01.wt01.*</span>
<span class="line">eg. *.wt01.*</span>
<span class="line">eg. *</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></div><!----><footer class="vp-page-meta"><div class="vp-meta-item edit-link"><a class="auto-link external-link vp-meta-label" href="https://github.com/apache/iotdb-docs/edit/main/src/UserGuide/V1.0.x/Reference/SQL-Reference.md" aria-label="Found Error? Edit this page on GitHub" rel="noopener noreferrer" target="_blank"><!--[--><svg xmlns="http://www.w3.org/2000/svg" class="icon edit-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="edit icon" name="edit"><path d="M430.818 653.65a60.46 60.46 0 0 1-50.96-93.281l71.69-114.012 7.773-10.365L816.038 80.138A60.46 60.46 0 0 1 859.225 62a60.46 60.46 0 0 1 43.186 18.138l43.186 43.186a60.46 60.46 0 0 1 0 86.373L588.879 565.55l-8.637 8.637-117.466 68.234a60.46 60.46 0 0 1-31.958 11.229z"></path><path d="M728.802 962H252.891A190.883 190.883 0 0 1 62.008 771.98V296.934a190.883 190.883 0 0 1 190.883-192.61h267.754a60.46 60.46 0 0 1 0 120.92H252.891a69.962 69.962 0 0 0-69.098 69.099V771.98a69.962 69.962 0 0 0 69.098 69.098h475.911A69.962 69.962 0 0 0 797.9 771.98V503.363a60.46 60.46 0 1 1 120.922 0V771.98A190.883 190.883 0 0 1 728.802 962z"></path></svg><!--]-->Found Error? Edit this page on GitHub<!----></a></div><div class="vp-meta-item git-info"><div class="update-time"><span class="vp-meta-label">Last update: </span><!----></div><!----></div></footer><nav class="vp-page-nav"><a class="route-link auto-link prev" href="/UserGuide/V1.0.x/Reference/DataNode-Config-Manual.html" aria-label="DataNode Config Manual"><div class="hint"><span class="arrow start"></span>Prev</div><div class="link"><!---->DataNode Config Manual</div></a><a class="route-link auto-link next" href="/UserGuide/V1.0.x/Reference/Status-Codes.html" aria-label="Status Codes"><div class="hint">Next<span class="arrow end"></span></div><div class="link">Status Codes<!----></div></a></nav><!----><!----><!--]--></main><!--]--><!--]--><footer style="padding-bottom:2rem;"><span id="doc-version" style="display:none;">rel/1.0</span><p style="text-align:center;color:#909399;font-size:12px;margin:0 30px;">Copyright © 2024 The Apache Software Foundation.<br> Apache IoTDB, IoTDB, Apache, the Apache feather logo, and the Apache IoTDB project logo are either registered trademarks or trademarks of The Apache Software Foundation in all countries</p><p style="text-align:center;margin-top:10px;color:#909399;font-size:12px;margin:0 30px;"><strong>Have a question?</strong> Connect with us on QQ, WeChat, or Slack. <a href="https://github.com/apache/iotdb/issues/1995">Join the community</a> now.</p></footer></div><!--]--><!--]--><!--[--><!----><!--]--><!--]--></div>
<script type="module" src="/assets/app-8RDGKaEm.js" defer></script>
</body>
</html>