sqlite 语法etc


//默认升序
SELECT NumID,ChipID,BatchID,T1_Timestamp FROM main.Table_1004A WHERE Table_1004A.NumID >= 1000 ORDER BY ChipID;

1010    1301000100001000    100 1570877172
1011    1301000100002001    100 1570877359
1016    1301000100004001    100 1570879295
1015    1301000100004002    100 1570879275
1014    1301000100004004    100 1570879275
1013    1301000100004010    100 1570879275
1012    1301000100004020    100 1570879274


/*==========*/


//降序
SELECT NumID,ChipID,BatchID,T1_Timestamp FROM main.Table_1004A WHERE Table_1004A.NumID >= 1000 ORDER BY ChipID DESC;

1012    1301000100004020    100 1570879274
1013    1301000100004010    100 1570879275
1014    1301000100004004    100 1570879275
1015    1301000100004002    100 1570879275
1016    1301000100004001    100 1570879295
1011    1301000100002001    100 1570877359
1010    1301000100001000    100 1570877172
/*==========*/

/*
insert 硬盘的IO速度,最受影响. (如果primier key 是chipID, chipID插入顺序不规律, 但是DB内部会使chipID变有序)
insert 的如果chipID 重复,就crash. 所以还要先查询下,chipID是否已经有了.(T2 也先查询下,没有也报错)

查询时间因为chipID 用RBTree建立了有序索引,所以效率还算可以, 5W记录 8ms.


如果按照之前的表设计,  numID 为 primier key autoincrease, (用NumID 为索引建立RBTree)则insert 变快(因为每次都是自增的值,不用改位置), query变慢 chipID无序,

*/

//HD(7200)   写入速度:11个record每秒
SELECT COUNT(*) FROM "Table_1004A" WHERE T1_Timestamp =1571039500;


//SSD(TLC)   写入速度:50个record每秒
SELECT COUNT(*) FROM "Table_1004A" WHERE T1_Timestamp =1571040594;


//Memory   写入速度:大约14757个record每秒(100W/70s),cpu [email protected] 负载25%(可能只用到了单核心,多核心可以加倍), 内存占用100MB左右
SELECT COUNT(*) FROM "Table_1004A" WHERE T1_Timestamp =1571122590;  //查询时间118ms


/*==========*/


 
SELECT * FROM "Table_1004A" WHERE ChipID=1301000100001000;

/*==========*/
//单值修改 

UPDATE employees
SET lastname = 'Smith'
WHERE employeeid = 3;

/*==========*/
//多值修改 

UPDATE table
SET column_1 = new_value_1,
    column_2 = new_value_2
WHERE
    search_condition 
ORDER column_or_expression
LIMIT row_count OFFSET offset;


/*==========*/
UPDATE Table_1004A SET T2_Timestamp=1571041417 WHERE ChipID=1301000100001011;


SELECT * FROM "Table_1004A" WHERE T2_Timestamp NOTNULL;

SELECT * FROM "Table_1004A" WHERE T2_Timestamp=1571041417;



/*==============
Paginate 页码  共多少页,每页多少数据
https://sqlkata.com/docs/execution/fetching-records

var page1 = query.Paginate(1);

foreach(var item in page1.Each)
{
    // print items in the first page
}

var page2 = page1.Next(); // same as query.Paginate(2)

foreach(var item in page2.Each)
{
    // print items in the 2nd page
}

*/

var users = query.Paginate(1, 10);

foreach(var user in users.Each)
{
    Console.WriteLine($"Id: {user.Id}, Name: {user.Name}");
}



//=================





//找到最大的rowid(如果是自定义的primaryKey, 比如 NumID  则都可以用,  反正是alias 别名)
SELECT  *,MAX(rowid) FROM Table_1004A;//推荐
SELECT  *,MAX(NumID  ) FROM Table_1004A;//推荐

SELECT rowid FROM Table_1004A ORDER BY ROWID DESC LIMIT(1);
SELECT *,rowid FROM Table_1004A ORDER BY ROWID DESC LIMIT(1);



//SELECT *,rowid  FROM Table_1004A LIMIT 53000,1000





//返回最后一次insert的rowid,如果没有插入就返回0 (开机重启后也返回0, 是记录在内存中)
SELECT LAST_INSERT_ROWID();


//SELECT *  FROM Table_1004A where rowid=LAST_INSERT_ROWID();

SELECT *,rowid "NAVICAT_ROWID" FROM "main"."Table_1004A" LIMIT 53000,1000



//===============


//时间: 0.03s
INSERT INTO "main"."Table_1004A"("ChipID", "ChipType", "BatchID", "T1_TestMode", "T1_Timestamp", "T1_Temp", "T1_ErrSaAddrNum", "T1_ErrSaAddr", "T1_ChipResult", "T1_HandlerResult", 
"T2_TestMode", "T2_Timestamp", "T2_Temp", "T2_ErrSaAddrNum", "T2_ErrSaAddr", "T2_ChipResult", "T2_RepairedSaAddr", "T2_HandlerResult", "Comment") 
VALUES (1301000100005001, 'XM1004_A_DWL', 100, 'ArrayWR', 1571106878, 120, 5, '1,2,3,4,5', 'Finish_MarchC', 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);



//INSERT后,  LAST_INSERT_ROWID() 结果显示53102 + 显示最后插入信息
    1. SELECT LAST_INSERT_ROWID();
    2. SELECT *,rowid FROM Table_1004A WHERE rowid= 53102;


//2句话,一句搞定
SELECT *,rowid FROM Table_1004A WHERE rowid=LAST_INSERT_ROWID();

















            //SQLiteConfigDbOpsEnum sQLiteConfigDbOpsEnum = SQLiteConfigDbOpsEnum.SQLITE_DBCONFIG_NONE;
            //connection.SetConfigurationOption(sQLiteConfigDbOpsEnum, );

            //var users = new XQuery(connection, compiler).From("Users").Limit(10).Get();

            var db = new QueryFactory(connection, compiler);
            // You can register the QueryFactory in the IoC container
            var query = db.Query("UsersTable").Where("Id", 1).Where("Status", "Active").First();

            /*
            var query = new Query()
                    .Select("client.Id")
                    .From("schema.client as c")
                    .Join("schema.order as o", "c.Id", "o.ClientId")
                    .WhereIn("c.Id", new[] { 1, 2, 3 });
            */


猜你喜欢

转载自www.cnblogs.com/scotth/p/11685611.html