<h3>SQLite命令</h3>
基于命令的操作性質(zhì)可分為:
- DDL:數(shù)據(jù)定義語言
命令 | 描述 |
---|---|
CREATE | 創(chuàng)建一個(gè)新的表算色,一個(gè)表的視圖套才,或者數(shù)據(jù)庫中的其他對(duì)象 |
DROP | 刪除整個(gè)表迈螟,或者表的視圖,或者數(shù)據(jù)庫中的其他對(duì)象 |
ALTER | 修改數(shù)據(jù)庫中的某個(gè)已有的數(shù)據(jù)庫對(duì)象,比如一個(gè)表 |
- DQL:數(shù)據(jù)查詢語言
命令 | 描述 |
---|---|
SELECT | 從一個(gè)或多個(gè)表中檢索某些記錄 |
- DML:數(shù)據(jù)操作語言
命令 | 描述 |
---|---|
INSERT | 創(chuàng)建一條記錄 |
UPDATE | 修改記錄 |
DELETE | 刪除記錄 |
<h3>SQLite常用數(shù)據(jù)類型</h3>
- SQLite存儲(chǔ)類
存儲(chǔ)類 | 描述 |
---|---|
NULL | 值是一個(gè)NULL值 |
INTEGER | 值是一個(gè)帶符號(hào)的整數(shù),根據(jù)值的大小存儲(chǔ)在1、2搂擦、3、4哗脖、6或8字節(jié)中 |
REAL | 值是一個(gè)浮點(diǎn)值瀑踢,存儲(chǔ)為8字節(jié)的IEEE浮點(diǎn)數(shù)字 |
TEXT | 值是一個(gè)文本字符串,使用數(shù)據(jù)庫編碼(UTF-8才避、UTF-16BE或UTF-16LE)存儲(chǔ) |
BLOB | 值是一個(gè)bolb數(shù)據(jù)丘损,完全根據(jù)它的輸入存儲(chǔ) |
- Date與Time數(shù)據(jù)類型
存儲(chǔ)類 | 描述 |
---|---|
TEXT | 格式為"YYYY-MM-DD HH:MM:SS.SSS" 的日期 |
REAL | 從公元前4714年11月24日格林尼治時(shí)間的正午開始算起的天數(shù) |
INTEGER | 從1970-01-01 00:00:00 UTC算起的秒數(shù) |
<h3>操作命令</h3>
打開終端,輸入sqlite3 testDB.db
工扎。此命令將在當(dāng)前目錄下創(chuàng)建好一個(gè)文件testDB.db,該文件將被SQLite引擎用作數(shù)據(jù)庫衔蹲,可以注意到sqlite3命令在成功創(chuàng)建數(shù)據(jù)庫文件后肢娘,將提供一個(gè)sqlite>提示符。使用點(diǎn)命令.databases
檢查創(chuàng)建的數(shù)據(jù)庫是否在數(shù)據(jù)庫列表中舆驶。
SQLite創(chuàng)建create表####
SQLite的create table (<b>需要注意的是:SQLite是不區(qū)分大小寫的橱健,但有些命令是大小寫敏感的,比如GLOB和glob在SQLite的語句中有不同的含義沙廉。</b>) 語句用于在任何給定的數(shù)據(jù)庫創(chuàng)建一個(gè)新表拘荡。創(chuàng)建基本表,涉及到命名表撬陵、定義列表及每一列的數(shù)據(jù)類型珊皿。基本語法如下:
create table database_name.table_name( column1 datatype primary key, column2 datatype, column3 datatype, ...... columnN datatype);
可以使用.tables
命令來驗(yàn)證表是否已成功創(chuàng)建巨税,該命令用于列出數(shù)據(jù)庫中的所有表蟋定。.schema
命令則可以得到表的完整信息。
SQLite刪除drop表####
SQLite的drop table語句用來刪除表定義及其所有相關(guān)數(shù)據(jù)草添、索引驶兜、觸發(fā)器、約束和該表的權(quán)限規(guī)范远寸。注意使用此命令抄淑,一旦一個(gè)表被刪除,表中所有信息也將永遠(yuǎn)丟失
驰后。
drop table database_name.table_name;
SQLite Insert語句####
SQLite的insert into 語句用于向數(shù)據(jù)庫的某個(gè)表中添加新的數(shù)據(jù)行肆资。基本語法:
insert into table_name (column1,column2,column3,...columnN)values(value1,value2,value3,...valueN);
此處的column1,column2,...columnN為要插入數(shù)據(jù)的表中的列的名稱灶芝。如果要給表中的所有列添加值迅耘,可以不指定列名稱贱枣,但是務(wù)必要確保值的順序與列在表中的順序一致
。即:
insert into table_name values(value1,value2,value3,...valueN);
SQLite Select語句####
SQLite的select語句用于從SQLite數(shù)據(jù)庫中獲取數(shù)據(jù)颤专,以結(jié)果表的形式返回?cái)?shù)據(jù)纽哥。基本語法:
select column1,column2,columnN from table_name;
如果想要獲取所有的可用的字段栖秕,則可以使用下面的語法:
select * from table_name;
SQLite Where子句####
SQLite的where子句用于指定從一個(gè)表或多個(gè)表中獲取數(shù)據(jù)的條件春塌。如果滿足給定的條件,即為真(ture)時(shí)簇捍,則從表中返回特定的值只壳。可以使用where子句來過濾記錄,只獲取需要的記錄暑塑。where子句不僅可以用在select語句中吼句,還可以用在update、delete語句中
事格,等等惕艳。基本語法:
select column1,column2,columnN from table_name where [condition];
SQLite運(yùn)算符####
運(yùn)算符是一個(gè)保留字或字符驹愚,主要用于 SQLite 語句的 WHERE 子句中執(zhí)行操作远搪,如比較和算術(shù)運(yùn)算。運(yùn)算符用于指定 SQLite 語句中的條件逢捺,并在語句中連接多個(gè)條件谁鳍。
- 算術(shù)運(yùn)算符
運(yùn)算符 | 描述 |
---|---|
+ | 加法:將運(yùn)算符兩邊的值相加 |
- | 減法:左操作數(shù)減去右操作數(shù) |
* | 乘法:把運(yùn)算符兩邊的值相乘 |
/ | 除法:左操作數(shù)除以右操作數(shù) |
% | 取模:左操作數(shù)除以右操作數(shù)后得到的余數(shù) |
- 比較運(yùn)算符
運(yùn)算符 | 描述 |
---|---|
== | 檢查兩個(gè)操作數(shù)的值是否相等,如果相等則條件為真 |
= | 檢查兩個(gè)操作數(shù)的值是否相等劫瞳,如果相等則條件為真 |
!= | 檢查兩個(gè)操作數(shù)的值是否相等倘潜,如果不相等則條件為真 |
<> | 檢查兩個(gè)操作數(shù)的值是否相等,如果不相等則條件為真 |
> | 檢查左操作數(shù)的值是否大于右操作數(shù)的值志于,如果是則條件為真 |
< | 檢查左操作數(shù)的值是否小于右操作數(shù)的值窍荧,如果是則條件為真 |
>= | 檢查左操作數(shù)的值是否大于等于右操作數(shù)的值,如果是則條件為真 |
<= | 檢查左操作數(shù)的值是否小于等于右操作數(shù)的值恨憎,如果是則條件為真 |
!< | 檢查左操作數(shù)的值是否不小于右操作數(shù)的值蕊退,如果是則條件為真 |
!> | 檢查左操作數(shù)的值是否不大于右操作數(shù)的值,如果是則條件為真 |
- 邏輯運(yùn)算符
運(yùn)算符 | 描述 |
---|---|
AND | AND 運(yùn)算符允許在一個(gè) SQL 語句的 WHERE 子句中的多個(gè)條件的存在 |
BETWEEN | BETWEEN 運(yùn)算符用于在給定最小值和最大值范圍內(nèi)的一系列值中搜索值 |
EXISTS | EXISTS 運(yùn)算符用于在滿足一定條件的指定表中搜索行的存在 |
IN | IN 運(yùn)算符用于把某個(gè)值與一系列指定列表的值進(jìn)行比較 |
NOT IN | IN 運(yùn)算符的對(duì)立面憔恳,用于把某個(gè)值與不在一系列指定列表的值進(jìn)行比較 |
LIKE | LIKE 運(yùn)算符用于把某個(gè)值與使用通配符運(yùn)算符的相似值進(jìn)行比較 |
GLOB | GLOB 運(yùn)算符用于把某個(gè)值與使用通配符運(yùn)算符的相似值進(jìn)行比較瓤荔。GLOB 與 LIKE 不同之處在于,它是大小寫敏感的 |
NOT | NOT 運(yùn)算符是所用的邏輯運(yùn)算符的對(duì)立面钥组。比如 NOT EXISTS输硝、NOT BETWEEN、NOT IN程梦,等等点把。它是否定運(yùn)算符 |
OR | OR 運(yùn)算符用于結(jié)合一個(gè) SQL 語句的 WHERE 子句中的多個(gè)條件 |
IS NULL | NULL 運(yùn)算符用于把某個(gè)值與 NULL 值進(jìn)行比較 |
IS | IS 運(yùn)算符與 = 相似 |
IS NOT | IS NOT 運(yùn)算符與 != 相似 |
UNIQUE | UNIQUE 運(yùn)算符搜索指定表中的每一行橘荠,確保唯一性(無重復(fù)) |
- 位運(yùn)算符
SQLite Update語句####
SQLite的update查詢用于修改表中的已有的記錄,和set
一起使用郎逃「缤可以使用帶有where子句的update查詢來更新選定行,否則所有的行都會(huì)被更新褒翰≈福基本語法:
update table_name
set column1 = value1, column2 = value2...,columnN = valueN
where [condition];
SQLite Delete語句####
SQLite的delete用于刪除表中的已有的記錄,可以使用帶有where子句的delete來刪除選定行优训,否則所有的記錄都會(huì)被刪除朵你。基本語法:
delete from table_name where [condition];
SQLite Like子句####
SQLite的like運(yùn)算符是用來匹配通配符指定模式的文本值
揣非。如果搜索表達(dá)式與模式表達(dá)式匹配抡医,like運(yùn)算符將返回真(true),也就是1。有兩個(gè)通配符與like運(yùn)算符一起使用早敬。百分號(hào)(%)
和下劃線(_)
忌傻。百分號(hào)代表零個(gè)、一個(gè)或多個(gè)數(shù)字或字符
搁嗓。下劃線代表一個(gè)單一的數(shù)字或字符
。這些符號(hào)可以被組合使用箱靴∠俟洌基本語法:
select from table_name where column like 'xxxx%';
或者
select from table_name where column like '%xxxx%';
或者
select from table_name where column like 'xxxx_';
或者
select from table_name where column like '_xxxx';
或者
select from table_name where column like '_xxxx_';
下面給出一些實(shí)例演示帶有'%'和'_'運(yùn)算符的like子句的不同的地方:
語句 | 描述 |
---|---|
where column like 'hi%' | 查找以hi開頭的任意值 |
where column like '%hi%' | 查找任意位置包含hi的任意值 |
where column like '_hi%' | 查找第二位和第三位為hi的任意值 |
where column like 'h_%_%' | 查找以h開頭,且長度至少為3個(gè)字符的任意值 |
where column like '%h' | 查找以h結(jié)尾的任意值 |
where column like '_h%i' | 查找第二位為h衡怀,且以i結(jié)尾的任意值 |
where column like 'h___i' | 查找長度為5位數(shù)棍矛,且以h開頭以i結(jié)尾的任意值 |
SQLite Order By排序####
SQLite的order by子句是用來基于一個(gè)或多個(gè)列按升序或降序順序排列數(shù)據(jù)。ASC
表示升序抛杨,DESC
表示降序够委。基本語法:
select column-list
from table_name
[where condition]
[order by column1,column2, .. columnN] [ASC | DESC];
SQLite Group By分組####
SQLite的group by子句用于與select語句一起使用怖现,來對(duì)相同的數(shù)據(jù)進(jìn)行分組茁帽。在select語句中,group by子句放在where子句之后屈嗤,放在order by子句之前
潘拨。基本語法:
select column-list
from table_name where [condition]
group by column1,column2,...columnN
order by column1,column2,...columnN;
SQLite Distinct關(guān)鍵字####
SQLite的Distinct 關(guān)鍵字與select語句一起使用饶号,來消除所有重復(fù)的記錄铁追,并只獲取唯一一次記錄
。有可能出現(xiàn)一種情況茫船,在一個(gè)表中有多個(gè)重復(fù)的記錄琅束。當(dāng)提取這樣的記錄時(shí)扭屁,distinct關(guān)鍵字就顯得很有意義了∩鳎基本語法:
select distinct column1,column2,...columnN
from table_name
where [condition];
SQLite Alter命令####
SQLite的alter table命令不通過執(zhí)行一個(gè)完整的轉(zhuǎn)儲(chǔ)和數(shù)據(jù)的重載來修改已有的表料滥。可以使用alter table語句重命名表
埋泵,使用alter table語句還可以在已有的 表中添加額外的列
幔欧。基本語法:
重命名表:
alter table database_name.table_name rename to new_table_name;
在已有的表中添加一個(gè)新的列:
alter table database_name.table_name add column column_definition...;
實(shí)例:
alter table person add column sex char(1);
SQLite AND/OR 運(yùn)算符####
SQLite的AND和OR運(yùn)算符用于編譯多個(gè)條件來縮小在SQLite語句中的所選的數(shù)據(jù)丽声。這兩個(gè)運(yùn)算符被稱為連接運(yùn)算符礁蔗。
- AND運(yùn)算符
AND 運(yùn)算符允許在一個(gè) SQL 語句的 WHERE 子句中的多個(gè)條件的存在。使用 AND 運(yùn)算符時(shí)雁社,只有當(dāng)所有條件都為真(true)時(shí)浴井,整個(gè)條件為真(true)。例如霉撵,只有當(dāng) condition1 和 condition2 都為真(true)時(shí)磺浙,[condition1] AND [condition2] 為真(true)⊥狡拢基本語法:
select column1,column2,...columnN
from table_name
where [condition] and [condition2]...and [conditionN];
- OR 運(yùn)算符
OR 運(yùn)算符也用于結(jié)合一個(gè) SQL 語句的 WHERE 子句中的多個(gè)條件撕氧。使用 OR 運(yùn)算符時(shí),只要當(dāng)條件中任何一個(gè)為真(true)時(shí)喇完,整個(gè)條件為真(true)伦泥。例如,只要當(dāng) condition1 或 condition2 有一個(gè)為真(true)時(shí)锦溪,[condition1] OR [condition2] 為真(true)不脯。
select column1,column2,...columnN
from table_name
where [condition] or [condition2]...or [conditionN];