SQLite的基礎(chǔ)知識(shí)

數(shù)據(jù)庫SQLite的基礎(chǔ)語法

SQLite

1. 什么是SQLite:

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

2.什么是數(shù)據(jù)庫

(1) 數(shù)據(jù)庫(Database)是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲(chǔ)和管理數(shù)據(jù)的倉庫
(2) 數(shù)據(jù)庫可以分為2大種類:

  • 關(guān)系型數(shù)據(jù)庫(主流)
  • 對(duì)象型數(shù)據(jù)庫
3.常用關(guān)系型數(shù)據(jù)庫

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

SQL語句的種類

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

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

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

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

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

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

主鍵的聲明

什么是主鍵

(1) 主鍵(primary key,簡(jiǎn)稱PK)用來唯一的標(biāo)識(shí)某一條記錄
(2) 例如t_student可以增加一個(gè)id字段作為主鍵,相當(dāng)于人的身份證
(3) 主鍵可以是一個(gè)字段或多個(gè)字段

1. 在創(chuàng)建表的時(shí)候用primary key聲明一個(gè)主鍵

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

2. 主鍵字段

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

3. 自動(dòng)增長(zhǎng)

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

主鍵的設(shè)計(jì)原則

  1. 主鍵應(yīng)當(dāng)是對(duì)用戶沒有意義的
  2. 永遠(yuǎn)也不要更新主鍵
  3. 主鍵不應(yīng)包含動(dòng)態(tài)變化的數(shù)據(jù)
  4. 主鍵應(yīng)當(dāng)由計(jì)算機(jī)自動(dòng)生成

主鍵約束

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

簡(jiǎn)單約束

  1. 建表時(shí)可以給特定的字段設(shè)置一些約束條件,常見的約束有:
    (1) not null : 規(guī)定字段的值不能為null
    (2) unique : 規(guī)定字段的值必須唯一
    (3) default : 指定字段的默認(rèn)值(建議: 盡量給字段設(shè)定嚴(yán)格的約束,以保證數(shù)據(jù)的規(guī)范性)
  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,并且默認(rèn)為1.

limit

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

排序

1. 查詢出來的結(jié)果可以用ordeer by進(jìn)行排序

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

2. 默認(rèn)是按照升序排序(由小到大),也可以變?yōu)榻敌颍ㄓ纱蟮叫。?/h5>

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

3. 也可以用多個(gè)字段進(jìn)行排序

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

SQL語法

1.注釋:
多行注釋:  /*注釋*/
單行注釋:  --
2.特點(diǎn)

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

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

-- 1. 創(chuàng)建表
-- 格式 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);

-- 完整的創(chuàng)建表的示例:
-- a.創(chuàng)建表的時(shí)候必須設(shè)置主鍵
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 表名; -> 當(dāng)表存在的時(shí)候刪除表
-- DROP TABLE IF EXISTS t_Student;




-- DML語句(增刪改)
-- 1. 插入數(shù)據(jù)(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. 修改數(shù)據(jù)
-- 格式:UPDATE 表名 SET 字段名1=字段1的新值,字段名2=字段2的新值,...
-- UPDATE t_Student SET 'age'=18; -- 注意:這樣寫所有的學(xué)生的年齡都會(huì)變成18

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


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

-- 將表中成績(jī)小于60的學(xué)生信息刪除
-- DELETE FROM t_Student WHERE score<60;


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

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


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

-- 3. 對(duì)查詢結(jié)果進(jìn)行排序
-- 格式:SELECT * FROM 表名 ORDER BY 字段名;
-- SELECT * FROM t_Student ORDER BY score;     -- 將查詢結(jié)果按照分?jǐn)?shù)從小到大排序
-- SELECT * FROM t_Student ORDER BY score DESC; -- 將查詢結(jié)果按照分?jǐn)?shù)從大到小排序

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

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


-- 獲取表中年齡大于20,分?jǐn)?shù)小于60的學(xué)生的所有成績(jī)
-- SELECT * FROM t_Student WHERE age>19 AND score<60;


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容