import{_ as o,C as r,O as i,P as s,ah as a,Q as e,U as n,ai as c}from"./framework-5638dcb2.js";const d={},h=e("h2",{id:"关键字",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#关键字","aria-hidden":"true"},"#"),n(" 关键字")],-1),l=e("p",null,"关键字是在 SQL 具有特定含义的词，可以作为标识符。保留字是关键字的一个子集，保留字不能用于标识符。",-1),p={href:"https://iotdb.apache.org/zh/UserGuide/Master/Reference/Keywords.html",target:"_blank",rel:"noopener noreferrer"};function u(f,_){const t=r("ExternalLinkIcon");return i(),s("div",null,[a(`

    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at
    
        http://www.apache.org/licenses/LICENSE-2.0
    
    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.

`),h,l,e("p",null,[n("关于 IoTDB 的关键字列表，可以查看 "),e("a",p,[n("关键字"),c(t)]),n(" 。")])])}const w=o(d,[["render",u],["__file","Keywords-And-Reserved-Words.html.vue"]]);export{w as default};