亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fastdb.htm

?? 嵌入式數據庫軟件 嵌入式數據庫軟件 嵌入式數據庫軟件
?? HTM
?? 第 1 頁 / 共 5 頁
字號:
The programmer can define methods for structures, which can be usedin queries with the same syntax as normal structure components. Such a method should have no arguments except a pointer to the object to whichit belongs (the <code>this</code> pointer in C++), and should returnan atomic value (of boolean, numeric, string or reference type).Also the method should not change the object instance (immutable method).If the method returns a string, this string should be allocated using the<code>new char</code> operator, because it will be deleted after copying of its value.<P>So user-defined methods can be used for the creation of <I>virtual</I> components - components which are not stored in the database, but instead are calculatedusing values of other components. For example, the FastDB <code>dbDateTime</code>type contains only integer timestamp components and such methodsas <code>dbDateTime::year()</code>, <code>dbDateTime::month()</code>...So it is possible to specify queries like: "<code>delivery.year = 1999</code>"in an application, where the <code>delivery</code> record field has <code>dbDateTime</code> type. Methods are executed in the context of theapplication, where they are defined, and are not available to other applications and interactive SQL.<P><H3><A NAME = "array">Arrays</A></H3>FastDB accepts arrays with dynamic length as components of records. Multidimensional arrays are not supported, but it is possible todefine an array of arrays. It is possible to sort records in the result setby length of array field.FastDB provides a set of special constructions for dealing with arrays:<P><OL><LI>It is possible to get the number of elements in the array by the <code>length()</code> function. <LI>Array elements can be fetched by the<code>[]</code> operator.If an index expression is out of array range, an exception will be raised.<LI>The operator <code>in</code> can be used to check if an array containsa value specified by the left operand. This operation can be used only for arrays ofatomic type: with boolean, numeric, reference or string components.<LI>Array can be updated using <code>update</code> method which creates copy of the array and returnsnon-constant reference.<LI>Iteration through array elements is performed by the <code>exists</code> operator. A variable specified after the <code>exists</code> keyword can be usedas an index in arrays in the expression preceeded by the <code>exists</code>quantor. This index variable will iterate through all possible arrayindex values, until the value of the expression will become <code>true</code> orthe index runs out of range. The condition<PRE>        exists i: (contract[i].company.location = 'US')</PRE>will select all details which are shipped by companies located in 'US', while the query<PRE>        not exists i: (contract[i].company.location = 'US')</PRE>will select all details which are shipped from companies outside 'US'.<P>Nested <code>exists</code> clauses are allowed. Using nested <code>exists</code>quantors is equivalent to nested loops using the correspondentindex variables. For example the query<PRE>        exists column: (exists row: (matrix[column][row] = 0))</PRE>will select all records, containing 0 in elements of a <code>matrix</code> field, which has type array of array of integer.This construction is equivalent to the followingtwo nested loops:<PRE>       bool result = false;       for (int column = 0; column < matrix.length(); column++) {             for (int row = 0; row < matrix[column].length(); row++) { 	         if (matrix[column][row] == 0) {                      result = true;		     break;                 }            }       }</PRE>The order of using indices is essential! The result of the following query execution<PRE>        <code>exists row: (exists column: (matrix[column][row] = 0))</code></PRE>will be completely different from the result of the previous query.In the last case, the program simply hangs due to an infinite loopin case of empty matrices. </OL><H3><A NAME = "string">Strings</A></H3>All strings in FastDB have varying length and the programmer should notworry about specification of maximal length for character fields. All operations acceptable for arrays are also applicable to strings. In addition to them, strings have a set of own operations.First of all, strings can be compared with each other using standardrelation operators. At present, FastDB supports only theASCII character set (corresponds to type <code>char</code> in C) andbyte-by-byte comparison of strings ignoring locality settings.<P>The operator <code>like</code> can be used for matching a string with a pattern containing special wildcard characters'%' and '_'. The character '_' matches any single character, while the character '%' matches zero or more characters.An extended form of the <code>like</code> operator together withthe <code>escape</code> keyword can be used to handle thecharacters '%' and '_' in the pattern as normal characters if they are preceded by a special escape character, specified afterthe <code>escape</code> keyword.<P> It is possible to search substrings within a string by the <code>in</code>operator. The expression <code>('blue' in color)</code> will be truefor all records which <code>color</code> field contains 'blue'. If the length of the searched string is greater than some threshold value (currently 512), a Boyer-Moore substring search algorithm is used instead of a straightforward search implementation.<P>Strings can be concatenated by <code>+</code> or <code>||</code> operators.The last one was added for compatibility with the ANSI SQL standard.As far as FastDB doesn't support the implicit conversion to string type in expressions, the semantic of the operator <code>+</code> can be redefined forstrings.<P><H3><A NAME = "reference">References</A></H3>References can be dereferenced using the same dot notation as used foraccessing structure components. For example the following query<PRE>        company.address.city = 'Chicago'</PRE>will access records referenced by the <code>company</code> component ofa <code>Contract</code> record and extract the city component of the<code>address</code> field of the referenced record from the <code>Supplier</code> table.<P>References can be checked for <code>null</code> by <code>is null</code>or <code>is not null</code> predicates. Also references can be compared for equality with each other as well as with the special <code>null</code>keyword. When a null reference is dereferenced, an exception is raisedby FastDB.<P>There is a special keyword <code>current</code>, whichduring a table search can be used to refer to the current record.Usually , the <code>current</code>keyword is used for comparison of the current record identifier withother references or locating it within an array of references. For example, the following query will search in the <code>Contract</code> table for all active contracts(assuming that the field <code>canceledContracts</code> has a<code>dbArray&lt; dbReference&lt;Contract&gt; &gt;</code> type): <PRE>        current not in supplier.canceledContracts</PRE><P>FastDB provides special operators for recursive traverse of records by references:<PRE>     <code>start from</code> <I>root-references</I>     ( <code>follow by</code> <I>list-of-reference-fields</I> )</PRE>The first part of this construction is used to specify root objects. The nonterminal <I>root-references</I> should be a variable of reference orof array of reference type. The two special keywords <code>first</code> and<code>last</code> can be used here, locating the first/last record in the tablecorrespondingly. If you want to check all recordsreferenced by an array of references or a single reference field for some condition, then thisconstruction can be used without the <code>follow by</code> part.<P>If you specify the follow by part, then FastDB will recursively traverse the table of records, starting from the rootreferences and using a <I>list-of-reference-fields</I> for transition between records.The <I>list-of-reference-fields</I> should consist of fields ofreference or of array of reference type. The traverse is done in depth firsttop-left-right order (first we visit the parent node and then the siblings in left-to-right order).The recursion terminates when a null reference is accessedor an already visited record is referenced. For example the followingquery will search a tree of  records with weight larger than 1 in TLR order:<P><PRE>        "weight > 1 start from first follow by left, right"</PRE><P>For the following tree:<PRE>                              A:1.1              B:2.0                             C:1.5      D:1.3         E:1.8                F:1.2         G:0.8</PRE>the result of the query execution will be: <PRE>('A', 1.1), ('B', 2.0), ('D', 1.3), ('E', 1.8), ('C', 1.5), ('F', 1.2)</PRE><P>As was already mentioned FastDB always manipulates with objects and doesn't accept joins. Joins can be implemented using references. Consider the classical <code>Supplier-Shipment-Detail</code> examples: <PRE>struct Detail {     char const* name;    double      weight;        TYPE_DESCRIPTOR((KEY(name, INDEXED), FIELD(weight)));};struct Supplier {     char const* company;    char const* address;    TYPE_DESCRIPTOR((KEY(company, INDEXED), FIELD(address)));};struct Shipment {     dbReference&lt;Detail&gt;   detail;    dbReference&lt;Supplier&gt; supplier;    int4                  price;    int4                  quantity;    dbDateTime            delivery;    TYPE_DESCRIPTOR((KEY(detail, HASHED), KEY(supplier, HASHED), 		     FIELD(price), FIELD(quantity), FIELD(delivery)));};</PRE>We want to get information about delivery of some concrete details from some concretesuppliers. In relational database this query will be written something like this:<PRE>     select from Supplier,Shipment,Detail where                  Supplier.SID = Shipment.SID and Shipment.DID = Detail.DID 		 and Supplier.company like ? and Supplier.address like ?		 and Detail.name like ? </PRE>In FastDB this request should be written as: <PRE>     dbQuery q = "detail.name like",name,"and supplier.company like",company,	         "and supplier.address like",address,"order by price";</PRE>     FastDB will first perform index search in the table <code>Detail</code> for detailsmatching the search condition. Then it performs another index search to locate shipment records referencing selected details. Then sequential search is used to check the rest ofselect predicate.<P><H3><A NAME = "function">Functions</A></H3><TABLE BORDER ALIGN="center"><CAPTION>Predefined functions</CAPTION><TR><TH>Name</TH><TH>Argument type</TH><TH>Return type</TH><TH>Description</TH></TR><TR><TD>abs</TD><TD>integer</TD><TD>integer</TD><TD>absolute value of the argument</TD</TR><TR><TD>abs</TD><TD>real</TD><TD>real</TD><TD>absolute value of the argument</TD</TR><TR><TD>integer</TD><TD>real</TD><TD>integer</TD><TD>conversion of real to integer</TD</TR><TR><TD>length</TD><TD>array</TD><TD>integer</TD><TD>number of elements in array</TD</TR>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲图片欧美色图| 国产精品1区二区.| 在线观看三级视频欧美| 国产日本一区二区| 国产成人在线观看| 久久色中文字幕| 狠狠色2019综合网| 国产精品麻豆视频| 91高清视频在线| 日韩国产高清在线| 久久久亚洲精华液精华液精华液| 美女一区二区在线观看| 欧美一级爆毛片| 激情av综合网| 国产清纯白嫩初高生在线观看91| 国产精品99久久久久久有的能看| 精品88久久久久88久久久| 国产在线乱码一区二区三区| 亚洲精品一区二区三区在线观看| 精品综合免费视频观看| 中文字幕欧美激情一区| 色老汉av一区二区三区| 欧美视频你懂的| 国产精品久久久久久久久快鸭 | 91福利社在线观看| 日韩在线a电影| 日韩三级免费观看| 色域天天综合网| 五月婷婷激情综合| 欧美激情一区二区三区蜜桃视频 | 欧洲中文字幕精品| 蜜桃久久久久久久| 综合精品久久久| 在线播放欧美女士性生活| aa级大片欧美| 日本不卡不码高清免费观看| 国产精品久久久久久久久免费相片| 99久久er热在这里只有精品15| 午夜日韩在线电影| 洋洋av久久久久久久一区| 欧美激情中文不卡| 久久先锋资源网| 日韩一区二区精品葵司在线| 在线看国产一区| proumb性欧美在线观看| 国产精品1区二区.| 日本午夜一本久久久综合| 亚洲在线视频免费观看| 国产精品国产三级国产a| 久久久久久久久久看片| 日韩欧美美女一区二区三区| 欧美卡1卡2卡| 精品日本一线二线三线不卡| 欧美精品一区二区久久久 | 精品一区二区三区的国产在线播放| 欧美—级在线免费片| 欧美大尺度电影在线| 精品国产1区二区| 亚洲国产高清不卡| 亚洲国产综合视频在线观看| 午夜精品一区二区三区电影天堂 | 毛片av一区二区| 国产成a人无v码亚洲福利| 成人黄色网址在线观看| 在线视频你懂得一区| 色香蕉久久蜜桃| 欧美视频在线一区二区三区 | 椎名由奈av一区二区三区| 一区二区在线看| 精品一区二区三区在线播放视频| 韩国精品主播一区二区在线观看 | 中文字幕一区二区三区在线不卡| 亚洲国产成人私人影院tom| 久久精品亚洲精品国产欧美| 亚洲精品国产一区二区三区四区在线 | 成人午夜激情片| 91久久免费观看| 国产欧美日韩久久| 性做久久久久久免费观看| 国产九色sp调教91| 久久奇米777| 亚洲va中文字幕| 国产成人免费视频网站高清观看视频| 成人av中文字幕| 久久色视频免费观看| 亚洲一区二区三区视频在线 | 亚洲综合男人的天堂| 美女脱光内衣内裤视频久久网站 | 亚洲男人电影天堂| 国产激情视频一区二区在线观看 | 欧美日韩欧美一区二区| 国产精品国产三级国产| 激情文学综合丁香| 3d动漫精品啪啪1区2区免费| 亚洲一区二区在线视频| 日本高清视频一区二区| 一区二区在线观看av| 91麻豆免费在线观看| 亚洲人成在线观看一区二区| 国产91精品一区二区| 欧美不卡一区二区三区| 美女国产一区二区三区| 精品成人佐山爱一区二区| 狠狠色狠狠色合久久伊人| 欧美mv日韩mv| 国产精品自产自拍| 伊人一区二区三区| 7777女厕盗摄久久久| 精品午夜久久福利影院| 久久久青草青青国产亚洲免观| 美女视频免费一区| 国产精品三级av在线播放| 99国产精品久久| 日本91福利区| 亚洲www啪成人一区二区麻豆| 色婷婷综合久久久中文一区二区| 亚洲mv大片欧洲mv大片精品| 欧美精品v国产精品v日韩精品| 国产精品原创巨作av| 亚洲第一狼人社区| 久久精品亚洲一区二区三区浴池 | 天堂av在线一区| 国产精品国产三级国产| 日韩精品一区二| 欧美在线你懂得| thepron国产精品| 日韩高清在线观看| 尤物av一区二区| 国产精品福利一区二区| 久久久久9999亚洲精品| 欧美老肥妇做.爰bbww视频| 国产精品99久久久久久似苏梦涵| 午夜精品久久久久久不卡8050| 久久久久综合网| 2021久久国产精品不只是精品| 欧美亚洲一区二区在线观看| 国产一区二区导航在线播放| 美女尤物国产一区| 天天射综合影视| 日韩成人精品在线观看| 亚洲成a人片在线观看中文| 欧美国产综合一区二区| 国产亚洲美州欧州综合国| 欧美一级日韩不卡播放免费| 91精品欧美福利在线观看 | 美女国产一区二区| 蜜臀久久久久久久| 日韩专区欧美专区| 国产原创一区二区| 国产成人午夜高潮毛片| 国内精品视频666| 国产精品18久久久久久久久 | 一区二区三区免费网站| 亚洲精选在线视频| 亚洲国产成人porn| 国产精品一区二区久久不卡 | 国产成人综合在线| 99久久亚洲一区二区三区青草| 99久久精品费精品国产一区二区| 色av成人天堂桃色av| 日韩欧美另类在线| 国产精品伦理一区二区| 亚洲国产视频网站| 国产另类ts人妖一区二区| 一本色道久久综合狠狠躁的推荐| 欧美日韩国产三级| 久久久三级国产网站| 日韩 欧美一区二区三区| 成人永久看片免费视频天堂| 91免费在线视频观看| 久久久噜噜噜久久中文字幕色伊伊| 自拍偷拍国产亚洲| 成人小视频在线| 欧美日韩一区 二区 三区 久久精品| 日韩一区二区三区精品视频| 成人欧美一区二区三区小说| 日韩在线一区二区| 色婷婷综合久久久久中文 | 亚洲国产成人午夜在线一区| 日韩精品欧美成人高清一区二区| 国产电影一区二区三区| 精品乱人伦小说| 美女mm1313爽爽久久久蜜臀| 色婷婷激情一区二区三区| 国产午夜精品理论片a级大结局| 日精品一区二区三区| 91老师国产黑色丝袜在线| 国产精品久久久久三级| 国产成人激情av| 欧美经典一区二区三区| 国产麻豆精品在线| 久久久久国产精品麻豆| 国产成人精品网址| 久久九九久久九九| 国产精品一区免费视频| 国产三级一区二区| 99久久久国产精品免费蜜臀| 日本一区二区电影| 欧美在线短视频| 韩国三级在线一区|