iOS Sqlite3 SQL 語句

sqlite3SQL語句的特點


  • 不區分大小寫(比如數據庫認為user和UsEr是一樣的)
    每條語句都必須以分號 “ ; ” 就是分號結尾。

SQL中的常用關鍵字有


  • select、insert、update、delete、from、create、where、desc、order、by、group、table、alter、view、index等等
  • 數據庫中不可以使用關鍵字來命名表、字段

數據定義語句 DDL、DML、DQL


  • DDL:(Data Definition Language)包括create和drop等操作
    在數據庫中創建新表或刪除表(create table或 drop table)
  • DQL: ( Data Query Language)可以用于查詢獲得表中的數據
    關鍵字select是DQL(也是所有SQL)用得最多的操作, 其他DQL常用的關鍵字有where,order by,group by和having
  • DML: ( Data Manipulation Language)包括insert、update、delete等操作
    上面的3種操作分別用于添加、修改、刪除表中的數據

創表---格式


  • create table 表名 (字段名1 字段類型1, 字段名2 字段類型2, …) ;
    create table if not exists 表名 (字段名1 字段類型1, 字段名2 字段類型2, …) ;
示例:
create table t_student (id integer, name text, age inetger, score real) 

字段類型


  • SQLite將數據劃分為以下幾種存儲類型:
    integer : 整型值
    real : 浮點值
    text : 文本字符串
    blob : 二進制數據(比如文件)

實際上SQLite是無類型的
就算聲明為integer類型,還是能存儲字符串文本(主鍵除外)
建表時聲明啥類型或者不聲明類型都可以,也就意味著創表語句可以這么寫:
create table t_student(name, age);

為了保持良好的編程規范、方便程序員之間的交流,編寫建表語句的時候最好加上每個字段的具體類型

刪表---格式


  • drop table 表名 ;
    drop table if exists 表名 ;
// 示例
drop table t_student ;

插入數據(insert)---格式


  • 格式: insert into 表名 (字段1, 字段2, …) values (字段1的值, 字段2的值, …) ;
// 示例
insert into t_student (name, age) values (‘mj’, 10) ;
  • 注意
    數據庫中的字符串內容應該用單引號 ’ 括住

更新數據(update)---格式


  • update 表名 set 字段1 = 字段1的值, 字段2 = 字段2的值, … ;
// 示例
update t_student set name = ‘jack’, age = 20 ; 
  • 注意
    上面的示例會將t_student表中所有記錄的name都改為jack,age都改為20

刪除數據(delete)---格式


  • delete from 表名 ;
// 示例
delete from t_student ;
  • 注意
    上面的示例會將t_student表中所有記錄都刪掉

數據庫相對 plist的好處


  • 分頁查詢指令

limit 指令用于限制查詢出來的結果數量

  • 第一個數值表示從哪條記錄開始(起始是0)
  • 第二個數值表示一次取多少條記錄,如果要分頁顯示,通常第二個數值固定不變,表示每頁需要顯示的記錄條數
  • 第一頁
    select * from t_person limit 0, 3;
  • 第二頁
    select * from t_person limit 3, 3;
  • 第三頁
    select * from t_person limit 6, 3;

查詢排序


  • ASC 升序(默認的排序方法)
  • DESC 降序
  • 由左至右排序的優先級依次降低,也就是第一個排序列的優先級是最高的
    SELECT * FROM t_person ORDER BY age ASC, id DESC;

能夠定向地查到具體需要的內容


  • 從數據庫查出名字叫做wangwu的記錄
    select * from t_person where name = 'wangwu';
  • 從數據庫查出名字以wang開頭的記錄
    select * from t_person where name like 'wangwu%';
  • 從數據庫查出名字中包含a的記錄,通常用于模糊查詢,建議不要搞太多字段組合模糊查詢,那樣性能會非常差!
    select * from t_person where name like '%a%';

可以對數據進行統計


  • 取出所有數據的總數目
    select count(*) from t_person;
  • 統計符合條件的記錄條數
    select count(*) from t_person where name like 'wang%';
  • 選擇指定列的最大值
    select max(age) from t_person;
  • 選擇指定列的最小值
    select min(age) from t_person;
  • 計算指定列的平均值
    select avg(age) from t_person;
  • 計算指定列數值的總數
    select sum(age) from t_person;

更新指令


  • 更新一個字段
    update t_person set name = 'xiaofang' where name = 'wangwu';
  • 更新多個字段,每個字段之間使用,分隔
    update t_person set age = 20, height = 2.0 where name = 'xiaofang';

1、需要注意的是:使用更新指令時,最好能夠準確地知道唯一的一條要更新的記錄,否則其他所有滿足條件的記錄都會被修改。

2、自動增長是由服務器來控制的。


關系

為什么要有關系
  1. 數據“冗余”,所謂數據冗余,就是存儲了多余的數據
  2. 在數據庫中的關系有:
  • 一對一
  • 一對多
  • 多對一

通常,一對多和多對一關系存儲在時,就需要使用多個表表示。

關于left jion和jion的選擇

left join


1)如果要查詢左邊表中的所有符合條件的數據,使用left jion

  1. 通常查詢出來的結果會多,因為右邊表不存在的記錄,同樣可能會被查詢出來,查詢出來之后,右邊表不存在的記錄,全部為NULL

join


1)如果要兩個表中同時存在的符合條件的數據,使用jion

  1. 通常查詢出來的結果會比左連接少,因為右邊表不存在的記錄,不會顯示出來
通常在使用時,左邊的表是主要信息表,右邊的表是輔助修飾的信息表,其內容可有可無,因此,在實際應用中,left jion使用的比較頻繁!如果用join的話,有可能會“丟(有些存在的數據不顯示)”數據

在使用連接查詢多個表時,如果有重名的字段,可以使用 as 的方法,給字段起一個別名,示例代碼如下:

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

推薦閱讀更多精彩內容