在移動(dòng)開發(fā)中,經(jīng)常會(huì)使用數(shù)據(jù)庫,而在移動(dòng)開發(fā)中使用的SQLite輕量級(jí)的數(shù)據(jù)庫。
1.創(chuàng)建表
$ CREATE TABLE 表名 (字段名1 字段類型,表名2 字段類型,... );
# 加上IF NOT EXISTS,創(chuàng)建表時(shí)如果存在就不創(chuàng)建,不會(huì)報(bào)錯(cuò)
$ CREATE TABLE IF NOT EXISTS 表名 (字段名1 字段類型 , 表名2 字段類型,... );
# 示例
$ CREATE TABLE IF NOT EXISTS t_shop (name text , price real);
2.刪表
$ DROP TABLE 表名;
$ DROP TABLE IF EXISTS 表名;
# 示例
$ DROP TABLE IF EXISTS t_shop;
3.插入數(shù)據(jù)
$ INSERT INTO 表名(字段1 , 字段2 ,...) VALUES (字段1的值 , 字段2的值 ,...);
# 示例
$ INSERT INTO t_shop(name , price) VALUES ('娃哈哈',2.0);
# 注意,數(shù)據(jù)庫中的字符串應(yīng)該用單引號(hào)'括住?。。?
4.更新數(shù)據(jù)
$ UPDATE 表名 SET 字段1 = 字段1的值 , 字段2 = 字段2的值 ,...;
# 示例
$ UPDATE t_shop SET name = '農(nóng)夫山泉' , price = 3.0;
# 注意:上面的示例會(huì)將t_shop里面所有記錄的name都改成農(nóng)夫山泉,price都是3.0!??!
5.刪除數(shù)據(jù)
$ DELETE FROM 表名;
# 示例
$ DELETE FROM t_shop;
# 注意:上面的示例會(huì)刪除t_shop所有的記錄!??!
6.條件語句
$ WHERE 字段 = 某個(gè)值; // 不能用兩個(gè)=
$ WHERE 字段 is 某個(gè)值; // is相當(dāng)于=
$ WHERE 字段 != 某個(gè)值;
$ WHERE 字段 is not 某個(gè)值; // is not相當(dāng)于!=
$ WHERE 字段 > 某個(gè)值;
$ WHERE 字段1 = 某個(gè)值 AND 字段2 > 某個(gè)值; // AND相當(dāng)于C語言中的&&
$ WHERE 字段1 = 某個(gè)值 OR 字段2 > 某個(gè)值; // OR相當(dāng)于C語言中的 |
# 示例
# 將t_shop表里記錄price等于2.0的名稱改為農(nóng)夫山泉
$ UPDATE t_shop SET name = '農(nóng)夫山泉' WHERE price = 2.0;
7.查詢語句
$ SELECT 字段1 , 字段2 ,... FROM 表名;
$ SELECT * FROM 表名; // 查詢所有的字段
# 示例
$ SELECT * FROM t_shop;
$ SELECT name , price FROM t_shop;
$ SELECT * FROM WHERE price = 3.0; // 條件查詢
8.起別名
$ SELECT 字段1 別名 , 字段2 別名 , ... FROM 表名 別名;
$ SELECT 字段1 別名 , 字段2 AS 別名 , ... FROM 表名 AS 別名;
$ SELECT 別名.字段1 , 別名.字段2 , ... FROM 表名 AS 別名;
# 示例
$ SELECT name myname , price myage FROM t_shop;
# 給name起個(gè)叫myname的別名,給price起個(gè)叫myprice的別名
$ SELECT s.name , s.price FROM t_shop s;
# 給t_shop起個(gè)別名s,用s來引用表中的字段
9.計(jì)算記錄的數(shù)量
$ SELECT COUNT [字段] FROM 表名;
$ SELECT COUNT [*] FROM 表名;
# 示例
$ SELECT COUNT [name] FROM t_shop;
$ SELECT COUNT [*] FROM t_shop;
10.排序
查詢出來的結(jié)果可以用order by進(jìn)行排序
$ SELECT * FROM t_shop ORDER BY 字段;
$ SELECT * FROM t_shop ORDER BY price;
默認(rèn)是按照升序排序(由大到小),也可以變?yōu)榻敌颍ㄓ尚〉酱螅?/p>
$ SELECT * FROM t_shop ORDER BY price DESC; // 降序
$ SELECT * FROM t_shop ORDER BY price ASC; // 升序(默認(rèn))
# 多個(gè)字段進(jìn)行排序
$ SELECT * FROM t_shop ORDER BY price ASC , name DESC;
11.limit限制
使用limit可以精確的控制查詢結(jié)果的數(shù)量,比如每次只查詢10條數(shù)據(jù),做分頁
$ SELECT * FROM 表名 LIMIT 數(shù)值1 , 數(shù)值2;
# 跳過前面4條記錄,取8條記錄
$ SELECT * FROM t_shop LIMIT 4 , 8;
# 取最前面4條記錄
$ SELECT * FROM t_shop LIMIT 4;
12.約束
建表時(shí)給特定的字段設(shè)置一些約束條件,常見的約束有
$ not null :規(guī)定字段的值不能為null
$ unique :規(guī)定字段的值必須唯一
$ default : 規(guī)定字段的默認(rèn)值
# 盡量給字段設(shè)定嚴(yán)格的約束性,以保證數(shù)據(jù)的規(guī)范性。
# 示例
$ CREAT TABLE t_student (id integer , name text not null unique , age integer not null default 1);
13.主鍵
解釋:主鍵(Primary Key,簡稱PK)用來唯一的標(biāo)識(shí)某一條記錄,主鍵可以是一個(gè)字段或多個(gè)字段。
作用:良好的數(shù)據(jù)庫編程規(guī)范應(yīng)該保證每條記錄的唯一性,每張表都必須有一個(gè)主鍵,用來標(biāo)識(shí)記錄的唯一性。
注意: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)生成
5>主鍵字段包含了not null 和 unique
$ create table t_student (id integer primary key , name text , age integer);
# 如果想要主鍵自動(dòng)增長(必須是integer類型),應(yīng)該增加autoincrement
$ create table t_student (id integer primary key autoincrement , name text , age integer);
14.外鍵
利用外鍵約束可以建立表與表之間的聯(lián)系,外鍵的一般情況是:一張表的字段引用著另外一張表的主鍵字段。
# 新建一個(gè)外鍵
$ create table t_student (id integer primary key autoincrement , name text , age integer , constraint fk_student_class foreign key [class_id] references t_class[id]);
15.表連接查詢
需要聯(lián)合多張表才能查到想要的數(shù)據(jù)
表連接的類型
內(nèi)連接:inner join 或者 join (顯示的是左右表都有完整字段值的記錄)
左外連接:left outer join (保證左表數(shù)據(jù)的完整性)
$ select s.name,s.age from t_student s, t_class c where s.class_id = c.id and c.name = ‘0316iOS’;