SQLite的基礎知識

數據庫SQLite的基礎語法

SQLite

1. 什么是SQLite:

(1) SQLite是一款輕型的嵌入式數據庫
(2) 它占用的資源非常低,在嵌入式設備中,可能只需要幾百K的內存就夠了
(3) 它的處理速度比Musql、PostgreSQL這兩款著名的數據庫都還快

2.什么是數據庫

(1) 數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫
(2) 數據庫可以分為2大種類:

  • 關系型數據庫(主流)
  • 對象型數據庫
3.常用關系型數據庫

(1) PC端: Oracle、MySQL、SQL Server、Access、DB2、Sybase
(2) 嵌入式\移動客戶端: SQLite

SQL語句的種類

1. 數據定義語句(DDL:Data Definition Language)

(1) 包括creare和drop等操作
(2) 在數據庫中創建新表或刪除表(create table 或 drop table)

2. 數據操作語句(DML: Data Manipulation Language)

(1) 包括insert、update、delete等操作
(2) 上面的三種操作分別用于添加、修改、刪除表中的數據

3. 數據查詢語句(DQL: Data Query language)

(1) 可以用于查詢獲得表中的數據
(2) 關鍵字select 是DQL(也是所有SQL)用的最多的操作
(3) 其他DQL常用的關鍵字有where、order by、group和having

主鍵的聲明

什么是主鍵

(1) 主鍵(primary key,簡稱PK)用來唯一的標識某一條記錄
(2) 例如t_student可以增加一個id字段作為主鍵,相當于人的身份證
(3) 主鍵可以是一個字段或多個字段

1. 在創建表的時候用primary key聲明一個主鍵

(1) 例:create table t_student(id integer primary key,name text,age integer);
(2) integer類型的id作為t_student表的主鍵

2. 主鍵字段

(1) 只要聲明為primary key,就說明是一個主鍵字段
(2) 主鍵字段默認就包含了not null 和unique兩個約束

3. 自動增長

(1) 如果想要讓主鍵自動增長(必須是integer類型),應該增加autoincrement
(2) create table t_student(id integer primary key autoincrement,name text,age integer);

主鍵的設計原則

  1. 主鍵應當是對用戶沒有意義的
  2. 永遠也不要更新主鍵
  3. 主鍵不應包含動態變化的數據
  4. 主鍵應當由計算機自動生成

主鍵約束

  1. 如果t_student表中就name和age兩個字段,而且有些紀錄的name和age字段的值都一樣時,那么就沒法區分這些數據,造成數據庫的紀錄不唯一,這樣就不方便管理數據。
  2. 良好的數據庫編程規范應該要保證每條記錄的唯一性,為此,增加了主鍵約束,也就是說,每張表都必須有一個主鍵,用來標識記錄的唯一性。

簡單約束

  1. 建表時可以給特定的字段設置一些約束條件,常見的約束有:
    (1) not null : 規定字段的值不能為null
    (2) unique : 規定字段的值必須唯一
    (3) default : 指定字段的默認值(建議: 盡量給字段設定嚴格的約束,以保證數據的規范性)
  2. 示例
    (1) create table t_student(id integer,name text not null unique,age integer not not null default 1);
    (2) 注:
    a. name字段不能為null,并且唯一;
    b. age字段不能為null,并且默認為1.

limit

  1. 使用limit 可以精確的控制查詢結果的數量,比如每次只查詢10條數據
    格式:
    select * from 表名 limit 數值1,數值2;
  2. 示例:
    select * from t_student limit 4,8;
    可以理解為:跳過最前面的4條語句,然后取8條記錄

排序

1. 查詢出來的結果可以用ordeer by進行排序

(1) select * from t_student order by 字段;
(2) select * from t_student order by age;

2. 默認是按照升序排序(由小到大),也可以變為降序(由大到小)

(1) select * from t_student order by age desc; // 降序
(2) select * from t_student order by age asc; // 升序(默認)

3. 也可以用多個字段進行排序

(1) select * from t_student order by age asc,height desc;
(2) 注: 先按照年齡排序(升序),年齡相等就按照身高排序(降序)

SQL語法

1.注釋:
多行注釋:  /*注釋*/
單行注釋:  --
2.特點

(1). 不區分大小寫
(3). 每條語句后必須加封號
(4). 字符串使用單引號括起來
(5). 字段類型: text -> 字符串類型 integer -> 整型 real -> 浮點型

3.
-- DDL語句(數據定義語句)

-- 1. 創建表
-- 格式 CREATE TABLE 表名(字段名1 字段1類型, 字段名2 字段2類型,...);
-- CREATE TABLE t_Student('name' text, 'age' integer, 'score' real);

-- 格式: CREATE TABLE IF NOT EXISTS 表名(字段名1 字段1類型, 字段名2 字段2類型,...);
-- CREATE TABLE IF NOT EXISTS TABLE t_Student('name' text, 'age' integer, 'score' real);

-- 完整的創建表的示例:
-- a.創建表的時候必須設置主鍵
CREATE TABLE IF NOT EXISTS t_Student(id integer PRIMARY KEY AUTOINCREMENT,name text NOT NULL,age integer DEFAULT 18, studyId integer UNIQUE);


-- 2. 刪除表
-- 格式 1:
-- DROP t_Student;
-- 格式 2: DROP TABLE IF EXISTS 表名; -> 當表存在的時候刪除表
-- DROP TABLE IF EXISTS t_Student;




-- DML語句(增刪改)
-- 1. 插入數據(insert): INSERT INTO 表名(字段名1,字段名2,...) VALUES(字段1的值,字段2的值,...);
-- INSERT INTO t_Student('name','age','score') VALUES('小明',23,98);
-- INSERT INTO t_Student('name','age','score') VALUES('阿郎',20,92);
-- INSERT INTO t_Student('name','age','score') VALUES('阿蘭',20,52);
INSERT INTO t_Student('name','age','studyId') VALUES('阿蘭',20,100);
INSERT INTO t_Student('name','studyId') VALUES('阿郎',101);

-- 2. 修改數據
-- 格式:UPDATE 表名 SET 字段名1=字段1的新值,字段名2=字段2的新值,...
-- UPDATE t_Student SET 'age'=18; -- 注意:這樣寫所有的學生的年齡都會變成18

-- 將表中'小明'的年齡變成18
-- UPDATE t_Student SET age=18 WHERE name='小明';


-- 3. 刪除數據
-- 格式: DELETE FROM 表名;
-- DELETE FROM t_Student;  -- 注意:刪除表中的所有的數據

-- 將表中成績小于60的學生信息刪除
-- DELETE FROM t_Student WHERE score<60;


-- DQL語句
-- 查詢數據
-- 格式1:SELECT 字段1,字段2,...FROM 表名;
-- SELECT name,score FROM t_Student;

-- 格式2: SELECT * FROM 表名;  -- 查詢表中所有的字段
SELECT * FROM t_Student;


-- 2. 獲取表中的數據的個數
-- 格式1: SELECT count(*) FROM 表名;
SELECT count(*) FROM t_Student;

-- 3. 對查詢結果進行排序
-- 格式:SELECT * FROM 表名 ORDER BY 字段名;
-- SELECT * FROM t_Student ORDER BY score;     -- 將查詢結果按照分數從小到大排序
-- SELECT * FROM t_Student ORDER BY score DESC; -- 將查詢結果按照分數從大到小排序

--  4. 限制查詢的結果的數量
-- 格式:SELECT * FROM t_Student LIMIT 數值1,數值2;  -- 數值1 -> 從0開始數第幾條數據開始獲取; 數值2 -> 一次獲取數據的數量
-- SELECT * FROM t_Student LIMIT 1,5;

-- 計算表中不及格的學生的數量
-- SELECT count(*) FROM t_Student WHERE score<60;


-- 獲取表中年齡大于20,分數小于60的學生的所有成績
-- SELECT * FROM t_Student WHERE age>19 AND score<60;


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,606評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,582評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,540評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,028評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,801評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,223評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,294評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,442評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,976評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,800評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,996評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,543評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,233評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,926評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,702評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內容