1. 程式人生 > >sql資料庫的一寫建立語句,SQLiteDatabase類的常用語句

sql資料庫的一寫建立語句,SQLiteDatabase類的常用語句

如果不懂sql的基本使用的話,先看一下本人的這篇文章,再看本文,或許會好一些。

連結地址:http://blog.csdn.net/qq_35681180/article/details/53612764



資料庫的增刪查改有兩種方式,一種是直接通過db物件呼叫相應的增刪查改方法,另一種就是使用語句進行增刪查改,下邊我簡單的將一些常用的語句核心發給大家:
其中查詢語句是最多的,也是最重要的:


在寫之前先補充一下一些語句中基本型別的使用:

在IOS應用客戶端程式中儲存資料一般用的SQLite來實現,下面簡單介紹SQLite支援的數型別。
內容
1、  SQLite具有的資料型別:
一般資料採用的固定的靜態資料型別,而SQLite採用的是動態資料型別,會根據存入值自動判斷。SQLite具有以下五種資料型別:
1.NULL:空值。
2.INTEGER:帶符號的整型,具體取決有存入數字的範圍大小。
3.REAL:浮點數字,儲存為8-byte IEEE浮點數。
4.TEXT:字串文字。
5.BLOB:二進位制物件。
  
2、  SQLite實際上也支援的資料型別:
smallint 16 位元的整數。
 interger 32 位元的整數。
 decimal(p,s) p 精確值和 s 大小的十進位整數,精確值p是指全部有幾個數(digits)大小值,s是指小數點後有幾位數。如果沒有特別指定,則系統會設為 p=5; s=0 。
 float  32位元的實數。
 double  64位元的實數。
 char(n)  n 長度的字串,n不能超過 254。
 varchar(n) 長度不固定且其最大長度為 n 的字串,n不能超過 4000。
 graphic(n) 和 char(n) 一樣,不過其單位是兩個字元 double-bytes, n不能超過127。這個形態是為了支援兩個字元長度的字型,例如中文字。
 vargraphic(n) 可變長度且其最大長度為 n 的雙字元字串,n不能超過 2000
 date  包含了 年份、月份、日期。
 time  包含了 小時、分鐘、秒。
 timestamp 包含了 年、月、日、時、分、秒、千分之一秒。
 
datetime 包含日期時間格式,必須寫成'2010-08-05'不能寫為'2010-8-5',否則在讀取時會產生錯誤!
 
3、  Sqlite常用資料型別:
這句話本身就有問題,因為:SQLite是無型別的. 這意味著你可以儲存任何型別的資料到你所想要儲存的任何表的任何列中, 無論這列宣告的資料型別是什麼(只有自動遞增Integer Primary Key才有用). 對於SQLite來說對欄位不指定型別是完全有效的. 如:
 
CREATE TABLE ex3(a, b, c);
 
即使SQLite允許忽略資料型別, 但是仍然建議在你的Create Table語句中指定資料型別. 因為資料型別對於你和其他的程式設計師交流, 或者你準備換掉你的資料庫引擎是非常有用的. SQLite支援常見的資料型別, 如:
 
SQL程式碼
CREATE TABLE ex2(    
a VARCHAR(10),    
b NVARCHAR(15),   
c TEXT,    
d INTEGER,   
e FLOAT,   
f BOOLEAN,    
g CLOB,    
h BLOB,    
i TIMESTAMP,   
j NUMERIC(10,5),    
k VARYING CHARACTER (24),    
l NATIONAL VARYING CHARACTER(16)    
);
 
4、  char、varchar、text和nchar、nvarchar、ntext的區別
1、CHAR。CHAR儲存定長資料很方便,CHAR欄位上的索引效率級高,比如定義char(10),那麼不論你儲存的資料是否達到了10個位元組,都要佔去10個位元組的空間,不足的自動用空格填充。
 
2、VARCHAR。儲存變長資料,但儲存效率沒有CHAR高。如果一個欄位可能的值是不固定長度的,我們只知道它不可能超過10個字元,把它定義為 VARCHAR(10)是最合算的。VARCHAR型別的實際長度是它的值的實際長度+1。為什麼“+1”呢?這一個位元組用於儲存實際使用了多大的長度。從空間上考慮,用varchar合適;從效率上考慮,用char合適,關鍵是根據實際情況找到權衡點。
 
3、TEXT。text儲存可變長度的非Unicode資料,最大長度為2^31-1(2,147,483,647)個字元。
 
4、NCHAR、NVARCHAR、NTEXT。這三種從名字上看比前面三種多了個“N”。它表示儲存的是Unicode資料型別的字元。我們知道字元中,英文字元只需要一個位元組儲存就足夠了,但漢字眾多,需要兩個位元組儲存,英文與漢字同時存在時容易造成混亂,Unicode字符集就是為了解決字符集這種不相容的問題而產生的,它所有的字元都用兩個位元組表示,即英文字元也是用兩個位元組表示。nchar、nvarchar的長度是在1到4000之間。和char、varchar比較起來,nchar、nvarchar則最多儲存4000個字元,不論是英文還是漢字;而char、varchar最多能儲存8000個英文,4000個漢字。可以看出使用nchar、nvarchar資料型別時不用擔心輸入的字元是英文還是漢字,較為方便,但在儲存英文時數量上有些損失。 
 
 所以一般來說,如果含有中文字元,用nchar/nvarchar,如果純英文和數字,用char/varchar。



開始一些重要的語句:;;;;;;;;;;;;;;;;;;;;;;;





建立一張表格,表格名為stu,內部id是自增長的,有一個姓名欄位
--create table stu (id integer primary key autoincrement, name varchar(20))
向stu表中插入資料,name為張三,id自增,空著即可
--insert into stu values(null,'張三')
向stu中插入資料的第二種寫法,這種方法將id省略掉了,只新增你寫的列名
--insert into stu (name,age ,class, address)values('豬頭',17,'1221','回龍觀')

將id為1的資料name值改為王寶強
--update stu set name='王寶強'   where id=1
修改stu表,新增班級欄位
--alter table stu add class varchar(20)
修改stu表,將表明改為stu1
--alter table stu rename to stu1
刪除表stu
--drop table stu
向stu表插入資料,id,自增null即可,姓名,班級
--insert into stu values(null,'馬蓉',1609);
--insert into stu values(null,'宋哲',1609);
--insert into stu values(null,'文章',1609);
刪除stu表中id為3的資料
--delete  from stu where id=3
修改表,新增成績欄位
--alter table stu add score integer
查詢stu表中的所有資料
--select * from stu
查詢stu表中成績大於60的資料
--select * from stu where score>60
查新stu中成績在34--65之間的資料
--select * from stu where score between 34 and 65
查詢stu表中,成績是34或者65或者78有任意一個成績的資料
--select * from stu where score in (34,65,78)
查詢stu中名字中後邊帶牛的名字(儘量是牛前邊有一個字)
--select * from stu where name like '_牛'
查詢stu中姓名叫牛***的,後邊數字個數不確定
--select * from stu where name like '牛%'
查詢名字中間有牛的姓名,前後字數不確定
--select * from stu where name like '%牛%'
同理

--select *from stu where name like '%牛%'
--select *from stu where name like '牛%'
--select *from stu where name like '%牛'
--select *from stu where name like '牛_'
--select *from stu where name like '__牛'

用 DESC 表示按倒序排序(即:從大到小排序)
用 ACS   表示按正序排序(即:從小到大排序)
查詢學生列表中的全部資料,通過成績排序,此處預設是acs,如需更改需在後邊寫上
--select * from stu order by score
--select * from stu order by score desc
查詢stu表中的條目數目
--select count(*) from stu
查詢表中的所有成績的和
--select sum(score) from stu
查詢表中所有的成績的平均數
--select avg(score) from stu
查詢stu中成績的最小值
--select  min(score) from stu
符合使用:查詢stu中成績最小的成績。(按語法順序這麼翻譯,其實就是查最小值)
--select  * from stu where score=(select  min(score) from stu)

 查詢1608班的姓名,年齡,地址
--select name,age,address from stu where class ='1608'
查詢表中年齡大於17班級是1608的資料--select *from stu where age>17 and class='1608'
查詢成績大於66或者班級是1609的
--select *from stu where age>66 or class='1609'
  
大小數目總和的查詢
--select count(*) from stu
--select max(age) from stu
--select min(age) from stu
--select max(age),min(age)from stu
--select sum(age),avg(age)from stu
符合使用
--select *from stu where age =(select min(age)from stu)
查詢stu表的資料,按照班級分組
--select class,count(*)from stu group by class
limit是mysql的語法select * from table limit m,n其中m是指記錄開始的index,從0開始,表示第一條記錄n是指從第m+1條開始,取n條。select * from tablename limit 2,4即取出第3條至第6條,4條記錄
--select * from stu limit 3,6從stu中查詢班級
--select *from stu where name like '%牛%'
--select *from stu where name like '牛%'
--select *from stu where name like '%牛'
--select *from stu where name like '牛_'
--select *from stu where name like '__牛'

從stu中一班級分組查詢姓名,數量,最小成績--select name,class,count(*),min(score) from stu group by class
 
--select * from stu where score >60 or class='1608'
 









--select *from stu where name like '%牛%'
--select *from stu where name like '牛%'
--select *from stu where name like '%牛'
--select *from stu where name like '牛_'
--select *from stu where name like '__牛'