前面幾篇文章已經快速了解了SQLite的基本用法以及簡單的Pyhton與C語言的API函數的使用。本篇再來全面介紹下SQLite的基本語法與數據類型。
1 SQLite 基本語法
1.1 SQLite注釋
單行注釋以兩個連續的橫杠: "--
" 開始
多行注釋則與C風格的:“/* */
”一致
sqlite>.help -- 這是一個簡單的注釋
sqlite>.help /* 這也是一個簡單的注釋 */
1.2 SQLite大小寫
SQLite是不區分大小寫,比如select語句中,既可以使用大寫的SELECT,也可以用小寫的select。
但有例外:GLOB
和glob
在SQLite語句中有不同的含義。
1.3 SQLite語句/命令
SQLite 語句以關鍵字開始,以分號 ;
結束
關鍵字,也稱SQLite命令,如:SELECT,INSERT,UPDATE,DELETE,ALTER,DROP等,具體分類如下:
1.3.1 DDL - 數據定義語言
數據操作語言,即數據的增、刪、改數據庫在的數據表
命令 | 描述 |
---|---|
CREATE/create | 創建一個新的表,一個表的視圖,或者數據庫中的其他對象 |
ALTER/alter | 修改數據庫中的某個已有的數據庫對象,比如一個表 |
DROP/drop | 刪除整個表,或者表的視圖,或者數據庫中的其他對象 |
1.3.2 DML - 數據操作語言
數據操作語言,即對數據表中的數據進行增、刪、改操作
命令 | 描述 |
---|---|
INSERT/insert | 創建一條記錄 |
DELETE/delete | 刪除記錄 |
UPDATE/update | 修改記錄 |
1.3.3 DQL - 數據查詢語言
數據操作語言,即對數據表中的數據進行查操作
命令 | 描述 |
---|---|
SELECT/select | 從一個或多個表中檢索某些記錄 |
總結一下:
![poYBAGMwWtGAJyhcAAC5pcK6YkU088.png](https://file.elecfans.com/web2/M00/6C/5B/poYBAGMwWtGAJyhcAAC5pcK6YkU088.png)
2 SQLite數據類型
SQLite存儲類
SQLite 中的每一列,每個變量和表達式都有相關的數據類型,每個存儲在 SQLite 數據庫中的值都具有以下存儲類之一:
存儲類 | 描述 |
---|---|
NULL | 值是一個 NULL 值。 |
INTEGER | 值是一個帶符號的整數,根據值的大小存儲在 1、2、3、4、6 或 8 字節中。 |
REAL | 值是一個浮點值,存儲為 8 字節的 IEEE 浮點數字。 |
TEXT | 值是一個文本字符串,使用數據庫編碼(UTF-8、UTF-16BE 或 UTF-16LE)存儲。 |
BLOB | 值是一個 blob 數據,完全根據它的輸入存儲。 |
SQLite 的存儲類稍微比數據類型更普遍。
比如INTEGER存儲類,包含 6 種不同的不同長度的整數數據類型,但只要INTEGER值被從磁盤讀出進內存處理,就被轉換成最一般的數據類型(8-字節有符號整形)。
對于BLOB數據,它表示二進制大對象,一般用來保存圖片,視頻等,另外還有CLOB,表示字符大對象,能夠存放大量基于字符的數據。
Boolean 數據類型
SQLite 沒有單獨的 Boolean 存儲類,它使用INTEGER作為存儲類型,布爾值被存儲為整數 0(false)和 1(true)。
Date 與 Time 數據類型
SQLite 沒有一個單獨的用于存儲日期和/或時間的存儲類,但內置的sqlite日期和時間函數能夠將日期和時間以TEXT,REAL或INTEGER形式存放數能夠將日期和時間以TEXT,REAL或INTEGER形式存放。
存儲類 | 日期格式 |
---|---|
TEXT | 格式為 "YYYY-MM-DD HH:MM:SS.SSS" 的日期。 |
REAL | 從公元前 4714 年 11 月 24 日格林尼治時間的正午開始算起的天數。 |
INTEGER | 從 1970-01-01 00:00:00 UTC 算起的秒數。 |
內置的日期和時間函數包括:
函數 | 含義 |
---|---|
date(timestring, modifier, modifier, ...) | 以 YYYY-MM-DD 格式返回日期 |
time(timestring, modifier, modifier, ...) | 以 HH:MM:SS 格式返回時間 |
datetime(timestring, modifier, modifier, ...) | 以 YYYY-MM-DD HH:MM:SS 格式返回 |
julianday(timestring, modifier, modifier, ...) | 這將返回從格林尼治時間的公元前 4714 年 11 月 24 日正午算起的天數 |
strftime(format, timestring, modifier, modifier, ...) | 這將根據第一個參數指定的格式字符串返回格式化的日期 |
第一個參數(timestring):時間字符串
后面的參數(modifier):修飾符
strftime() 函數可以把格式字符串format作為其第一個參數
前四個個函數也可以轉換成strftime函數:
date(...) strftime('%Y-%m-%d', ...)
time(...) strftime('%H:%M:%S', ...)
datetime(...) strftime('%Y-%m-%d %H:%M:%S', ...)
julianday(...) strftime('%J', ...)
strftime中的格式包括:
-- 格式 格式說明
-- %d 天數,例如:01-31中某一個天
-- %f 帶小數部分(SS.SSS格式)的秒
-- %H 小時,例如: 00-23中某一個小時
-- %j 一年中的第幾天,001-366
-- %J 儒略日數,DDDD.DDDD
-- %m 月,00-12中某一具體月份
-- %M 分,00-59
-- %s 從 1970-01-01 算起的秒數
-- %S 秒,00-59
-- %w 一周中的第幾天,0-6 (0 is Sunday)
-- %W 一年中的第幾周,01-53
-- %Y 年,YYYY
-- %% % symbol
通過SQLite語句,可以簡單測試一些日期格式(打印當前的時間):
![pYYBAGMwWueAJMoKAABPoqWM94k730.png](https://file.elecfans.com/web2/M00/6C/F2/pYYBAGMwWueAJMoKAABPoqWM94k730.png)
end
審核編輯:湯梓紅
-
C語言
+關注
關注
180文章
7614瀏覽量
137738 -
SQlite
+關注
關注
0文章
78瀏覽量
16023
發布評論請先 登錄
相關推薦
請問ADS1299使用Test Signals ,獲取到的數據類型是什么?
西門子博途新數據類型之:SINT(8位整數)
![西門子博途新<b class='flag-5'>數據類型</b>之:SINT(8位整數)](https://file1.elecfans.com/web1/M00/F4/A4/wKgaoWcuwKSAVv28AABkgk4XsXY477.png)
AIC23采集到的數據是應該用什么數據類型來接收?int還是unsigned int?
鴻蒙原生應用元服務開發-倉頡基礎數據類型浮點類型
labview數據類型的取值范圍是多少
常見的遙感數據類型有哪些
人體紅外傳感器的數據類型及工作原理
技術干貨驛站 ▏深入理解C語言:基本數據類型和變量
![技術干貨驛站 ▏深入理解C語言:基本<b class='flag-5'>數據類型</b>和變量](https://file1.elecfans.com/web2/M00/FC/CD/wKgZomaWI5uASgBaAABuQHdMO4I302.png)
FPGA學習筆記---基本語法
ESP32-S3是否支持修改控制端點數據類型?
C語言結構體史上最詳細的講解【軟件干貨】
C語言數據類型有哪些
![C語言<b class='flag-5'>數據類型</b>有哪些](https://file1.elecfans.com/web2/M00/C5/16/wKgZomX6UKqAb6q4AABHS7gAoYk070.png)
評論