日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

【数据库】适用于SQLite的SQL语句(一)

發布時間:2023/11/27 生活经验 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【数据库】适用于SQLite的SQL语句(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

        • 一、統計函數
        • 二、表TABLE
          • 1、創建表CREATE TABLE
          • 2、更改表ALTER TABLE
          • 3、刪除表DROP TABLE
        • 三、分析表ANALYZE
        • 四、附加數據庫 ATTACH DATABASE
        • 五、事務
        • 六、核心函數
        • 七、索引INDEX
          • 1、創建索引:CREATE INDEX
          • 2、查看索引:
          • 3、使用索引 INDEXED BY
          • 4、刪除索引:DROP INDEX
        • 八、觸發器TRIGGER
          • 1、創建觸發器CREATE TRIGGER
          • 2、刪除觸發器DROP TRIGGER

一、統計函數

avg(X) : 計算平均值,針對整數;
count(*):統計總行數;
count(X):統計X在組中不為NULL的行數;
group_concat(X):返回X非NULL值串聯成的字符串,以逗號‘,’分隔
group_concat(X,Y):返回X非NULL值串聯成的字符串,以‘Y’分隔
max(X):返回最大值
min(X):返回最小值
sum(X):如果所有非NULL輸入均為整數,則sum的結果為整數值。否則返回一個浮點值。如果計算時整數溢出,Sum會拋出“整數溢出”異常;
total(X):返回的結果始終是浮點值;并且不會拋出“整數溢出”異常。

二、表TABLE

1、創建表CREATE TABLE
CREATE TABLE t(x INTEGER PRIMARY KEY , y, z);
CREATE TABLE t(x INTEGER PRIMARY KEY ASC , y, z);
CREATE TABLE t(x INTEGER, y, z, PRIMARY KEY(x ASC));
CREATE TABLE t(x INTEGER, y, z, PRIMARY KEY(x DESC));
2、更改表ALTER TABLE

更改表名:ALTER TABLE 舊表名 RENAME TO 新表名;
更改列名:ALTER TABLE 表名 RENAME COLUMN 舊列名 TO 新列名;
添加列:ALTER TABLE 表名 ADD 列名 類型;

3、刪除表DROP TABLE

三、分析表ANALYZE

執行ANALYZE命令,會將分析結果保存在表sqlite_stat1中。

ANALYZE;
SELECT * FROM sqlite_stat1;
tbl|idx|stat
test1||1
tt||2

四、附加數據庫 ATTACH DATABASE

ATTACH DATABASE語句將另一個數據庫文件添加到當前數據庫連接中。可以使用DETACH DATABASE命令分離以前附加的數據庫文件。

添加數據庫:ATTACH DATABASE 附加數據庫文件名 AS 數據庫別名;
分離數據庫:DETACH DATABASE數據庫別名;

例子:

attach 'test1.db' as test1;

如果“附加數據庫文件名”存在則連接它,如果不存在則創建;連接后可以通過.database命令查看;

.database
main: /home/workspace/test/sql/test.db
test1: /home/workspace/test/sql/test1.db

使用,通過 數據庫別名.表名 來使用附加數據庫中的表;

select * from test1.test;
1|Xiao|20
2|Xiao1|21

五、事務

開始事務:BEGIN TRANSACTION
提交事務:END TRANSACTION、COMMIT
回滾事務:ROLLBACK TRANSACTION
保存點:SAVEPOINT 是一種創建事務的方法,類似于 BEGIN和COMMIT,不同之處在于SAVEPOINT和RELEASE可以命名并且可以嵌套。

六、核心函數

abs(X):返回X列的絕對值;
changes():返回最近更改(插入、刪除、更新)的行數;
char(X1,X2,…,XN):返回以整數列X1…XN為unicode編碼字符串;
注:下面例子中前兩個值為18、19,對應的unicode字符不能顯示,第三個為88,對應x

select char(age) from tt ;X

coalesce(X,Y,…):返回第一個不為NULL的副本;
glob(X,Y):和LIKE,模糊查找;
hex(X):將X視為BLOB,并返回一個字符串,該字符串是該blob內容的大寫十六進制表示形式;
ifnull(X,Y):返回XY中第一個不為NULL的副本,等于只有兩個參數的coalesce
instr(X,Y):在字符串X中查找Y
last_insert_rowid():然會最后插入的行ID;
length(X):對于字符串返回字符個數;對于BLOB返回字節數;對于整數返回字符串形式的長度;
like(X,Y):模糊查找
like(X,Y,Z):模糊查找
likelihood(X,Y):似然函數,用于統計學,最大似然估計;
likely(X):優化編譯,將X為true時,要執行的代碼編譯到前面
load_extension(X)
load_extension(X,Y)
lower(X):小寫
ltrim(X)
ltrim(X,Y):函數返回一個字符串,該字符串是通過從X的左側刪除出現在Y中的任何和所有字符形成的。如果省略Y參數,ltrim 將從X的左側刪除空格。
max(X,Y,…):最大值
min(X,Y,…):最小值
nullif(X,Y):參數相同返回NULL,參數不同,返回第一個
printf(FORMAT,…):格式化輸出

select printf("age = %d", age) from test;
age = 18
age = 19

quote(X):返回結果的文本格式,如果是字符串返回的文本帶單引號;
random():偽隨機函數;
randomblob(N):返回N個字節偽隨機BLOB值;
replace(X,Y,Z):使用Z替換X中的Y;
round(X):返回X四舍五入的整數;
round(X,Y):返回X四舍五入小數點后Y位的浮點數;
rtrim(X)
rtrim(X,Y):和ltrim類似,這次從右側刪除;
soundex(X):返回soundex編碼?
sqlite_compileoption_get(N):返回用于構建SQLite的第N個編譯時選項
sqlite_compileoption_used(X):返回是否使用X作為編譯選項;
sqlite_offset(X):沒理解
sqlite_source_id():返回源碼版本;
sqlite_version():SQLite庫的版本
substr(X,Y)
substr(X,Y,Z):從X的第Y個字符開始的Z長度的字符串;
total_changes():自打開當前數據庫連接以來,更改過的行數;
trim(X)
trim(X,Y):等于ltrim+rtrim,從兩端刪除;
typeof(X):返回類型的字符串形式;
unicode(X):和char相反,返回字符串第一個字符對應的unicode值
unlikely(X):優化編譯,將X為false時,要執行的代碼編譯到前面
upper(X):返回大寫;
zeroblob(N):返回N個值為0的BLOB類型值

七、索引INDEX

創建索引是為了給數據庫內部使用,加快查詢;不是直接給用戶使用。

1、創建索引:CREATE INDEX

創建簡單索引

CREATE INDEX index_name ON table_name (column_name);

創建唯一索引

CREATE UNIQUE INDEX index_name ON table_name (column_name);
2、查看索引:
.indexes
haha
.headers on
SELECT * FROM sqlite_master WHERE type = 'index';
type|name|tbl_name|rootpage|sql
index|haha|tt|6|CREATE INDEX haha on tt(age)
3、使用索引 INDEXED BY

在DELETE、SELECT或UPDATE上強制使用索引;INDEXED BY短語是SQLite的擴展,不能移植到其他SQL數據庫引擎中。

4、刪除索引:DROP INDEX
DROP INDEX index_name;

八、觸發器TRIGGER

當對數據庫執行插入INSERT、更新UPDATE、刪除DELETE操作時,可以自動觸發關聯動作。

1、創建觸發器CREATE TRIGGER

官方demo

// 創建更新觸發器
CREATE TRIGGER update_customer_address UPDATE OF address ON customers BEGINUPDATE orders SET address = new.address WHERE customer_name = old.name;END;// 執行更新操作
UPDATE customers SET address = '1 Main St.' WHERE name = 'Jack Jones';// 下面語句會自動執行
UPDATE orders SET address = '1 Main St.' WHERE customer_name = 'Jack Jones';
2、刪除觸發器DROP TRIGGER
DROP TRIGGER trigger-name;

總結

以上是生活随笔為你收集整理的【数据库】适用于SQLite的SQL语句(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

歡迎分享!

轉載請說明來源于"生活随笔",并保留原作者的名字。

本文地址:【数据库】适用于SQLite的SQL语句(一)