亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQLite > 正文

SQLite 入門教程四 增刪改查 有講究

2020-01-25 19:30:02
字體:
來源:轉載
供稿:網友
增刪改查操作,其中增刪改操作被稱為數據操作語言 DML,相對來說簡單一點。 查操作相對來說復雜一點,涉及到很多子句,所以這篇先講增刪改操作,以例子為主,后面再講查操作
 
 

一、插入數據 INSERT INTO 表(列...) VALUES(值...)

根據前面幾篇的內容,我們可以很輕送的創建一個數據表,并向其中插入一些數據,不多說,看例子:

 

復制代碼代碼如下:

myqiao@ubuntu:~/My Documents/db$ sqlite3 test.db
-- Loading resources from /home/myqiao/.sqliterc
SQLite version 3.7.4
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables 
sqlite>  
sqlite> CREATE TABLE Teachers(
   ...> Id integer PRIMARY KEY,
   ...> Name text NOT NULL,
   ...> Age integer CHECK(Age>22),
   ...> Country text DEFAULT 'USA');
sqlite> .tables
Teachers
sqlite> 
sqlite> INSERT INTO Teachers VALUES(1,'Alice',25,'CHN');
sqlite> INSERT INTO Teachers VALUES(2,'Bob',25,'BRA');
sqlite> INSERT INTO Teachers(Id,Name,Age,Country) VALUES(3,'Charls',33,'USA');
sqlite> INSERT INTO Teachers(Name,Age) VALUES('Jhon',43);
sqlite> SELECT * FROM Teachers;
Id    Name             Age              Country        
----  ---------------  ---------------  ---------------
1     Alice            25               CHN            
2     Bob              25               BRA            
3     Charls           33               USA            
4     Jhon             43               USA            
sqlite> 

            很簡單,創建了一個 Teachers 表并向其中添加了四條數據,設定了一些約束,其中有自動增加的主鍵、默認值等等。

 

二、修改數據 UPDATE 表 SET 列 = '新值' 【WHERE 條件語句】

UPDATE 語句用來更新表中的某個列,如果不設定條件,則所有記錄的這一列都被更新; 如果設定了條件,則符合條件的記錄的這一列被更新, WHERE 子句被用來設定條件,如下例:

 

復制代碼代碼如下:

sqlite>  
sqlite> SELECT * FROM Teachers;
Id    Name             Age              Country        
----  ---------------  ---------------  ---------------
1     Alice            25               CHN            
2     Bob              25               BRA            
3     Charls           33               USA            
4     Jhon             43               USA            
sqlite> 
sqlite> 
sqlite> UPDATE Teachers SET Country='China';
sqlite> SELECT * FROM Teachers;
Id    Name             Age              Country        
----  ---------------  ---------------  ---------------
1     Alice            25               China          
2     Bob              25               China          
3     Charls           33               China          
4     Jhon             43               China   
sqlite> 
sqlite>       
sqlite> UPDATE Teachers SET Country='America' WHERE Id=3;
sqlite> SELECT * FROM Teachers;
Id    Name             Age              Country        
----  ---------------  ---------------  ---------------
1     Alice            25               China          
2     Bob              25               China          
3     Charls           33               America        
4     Jhon             43               China          
sqlite> 
sqlite> 
sqlite> UPDATE Teachers SET Country='India' WHERE Age<30;
sqlite> SELECT * FROM Teachers;
Id    Name             Age              Country        
----  ---------------  ---------------  ---------------
1     Alice            25               India          
2     Bob              25               India          
3     Charls           33               America        
4     Jhon             43               China     
sqlite> 

 

三、刪除數據 DELETE FROM 表 【WHERE 條件語句】

如果設定 WHERE 條件子句,則刪除符合條件的數據記錄;如果沒有設定條件語句,則刪除所有記錄

 

復制代碼代碼如下:

sqlite> 
sqlite> SELECT * FROM Teachers;
Id    Name             Age              Country        
----  ---------------  ---------------  ---------------
1     Alice            25               India          
2     Bob              25               India          
3     Charls           33               America        
4     Jhon             43               China     
sqlite> 
sqlite> 
sqlite> DELETE FROM Teachers WHERE Age>30;
sqlite> SELECT * FROM Teachers;
Id    Name             Age              Country        
----  ---------------  ---------------  ---------------
1     Alice            25               India          
2     Bob              25               India  
sqlite> 
sqlite>       
sqlite> DELETE FROM Teachers;
sqlite> SELECT * FROM Teachers;
sqlite> 

 

四、查找數據 SELECT 列... FROM 表

為了后面的練習,需要一些樣本數據。 首先將下面的 SQL 語句保存到 data.sql 文件中

 

復制代碼代碼如下:

BEGIN TRANSACTION;
CREATE TABLE Cars(Id integer PRIMARY KEY, Name text, Cost integer);
INSERT INTO Cars VALUES(1,'Audi',52642);
INSERT INTO Cars VALUES(2,'Mercedes',57127);
INSERT INTO Cars VALUES(3,'Skoda',9000);
INSERT INTO Cars VALUES(4,'Volvo',29000);
INSERT INTO Cars VALUES(5,'Bentley',350000);
INSERT INTO Cars VALUES(6,'Citroen',21000);
INSERT INTO Cars VALUES(7,'Hummer',41400);
INSERT INTO Cars VALUES(8,'Volkswagen',21600);
COMMIT;

 

 

BEGIN TRANSACTION;
CREATE TABLE Orders(Id integer PRIMARY KEY, OrderPrice integer CHECK(OrderPrice>0), 
                    Customer text);
INSERT INTO Orders(OrderPrice, Customer) VALUES(1200, "Williamson");
INSERT INTO Orders(OrderPrice, Customer) VALUES(200, "Robertson");
INSERT INTO Orders(OrderPrice, Customer) VALUES(40, "Robertson");
INSERT INTO Orders(OrderPrice, Customer) VALUES(1640, "Smith");
INSERT INTO Orders(OrderPrice, Customer) VALUES(100, "Robertson");
INSERT INTO Orders(OrderPrice, Customer) VALUES(50, "Williamson");
INSERT INTO Orders(OrderPrice, Customer) VALUES(150, "Smith");
INSERT INTO Orders(OrderPrice, Customer) VALUES(250, "Smith");
INSERT INTO Orders(OrderPrice, Customer) VALUES(840, "Brown");
INSERT INTO Orders(OrderPrice, Customer) VALUES(440, "Black");
INSERT INTO Orders(OrderPrice, Customer) VALUES(20, "Brown");
COMMIT;

 

然后在在終端執行命令 .read data.sql,將數據導入到數據庫中

 

復制代碼代碼如下:

sqlite>  
sqlite> .tables
Friends
sqlite> .read data.sql
sqlite> .tables
Cars      Orders    Teachers
sqlite> 

 

            可以看到,Cars 表和 Orders 表已經導入到數據庫中,現在可以查詢了

 

復制代碼代碼如下:

sqlite>  
sqlite> SELECT * FROM Cars;
Id    Name             Cost           
----  ---------------  ---------------
1     Audi             52642          
2     Mercedes         57127          
3     Skoda            9000           
4     Volvo            29000          
5     Bentley          350000         
6     Citroen          21000          
7     Hummer           41400          
8     Volkswagen       21600 
sqlite> SELECT * FROM Orders;
Id    OrderPrice       Customer       
----  ---------------  ---------------
1     1200             Williamson     
2     200              Robertson      
3     40               Robertson      
4     1640             Smith          
5     100              Robertson      
6     50               Williamson     
7     150              Smith          
8     250              Smith          
9     840              Brown          
10    440              Black          
11    20               Brown 
sqlite> 

 

五、 限制返回數量 SELECT 列... FROM 表 LIMIT 數量 OFFSET 位置

有時候數據庫中的數據太多,全部返回可不行,可以限制返回的數量,還可以設定返回的起始位置,如下:

 

復制代碼代碼如下:

sqlite>  
sqlite> SELECT * FROM Cars LIMIT 4;
Id    Name             Cost           
----  ---------------  ---------------
1     Audi             52642          
2     Mercedes         57127          
3     Skoda            9000           
4     Volvo            29000          
sqlite> 
sqlite> SELECT * FROM Cars LIMIT 4 OFFSET 2;
Id    Name             Cost           
----  ---------------  ---------------
3     Skoda            9000           
4     Volvo            29000          
5     Bentley          350000         
6     Citroen          21000           
sqlite> 

 

六、 別名 SELECT 列 AS 別名,列 AS 別名 FROM

我們可以給返回數據集中的某些列起一個比較直觀的名字,比如把 Cost 改為"Price Of Car"

 

復制代碼代碼如下:

sqlite>  
sqlite> SELECT Name , Cost AS 'Price Of Car' FROM Cars;
Name  Price Of Car   
----  ---------------
Audi  52642          
Merc  57127          
Skod  9000           
Volv  29000          
Bent  350000         
Citr  21000          
Humm  41400          
Volk  21600            
sqlite> 

 

七、 條件查詢 SELECT 列 FROM 表 【WHERE 條件語句】

一般的條件語句都是大于、小于、等于之類的,這里有幾個特別的條件語句

LIKE

--------------------------------------------------------------------------------

LIKE 用通配符匹配字符串 
下劃線 _ 匹配一個字符串 
百分號 % 匹配多個字符串 
LIKE 匹配字符串時不區分大小寫

 

復制代碼代碼如下:

sqlite>  
sqlite> SELECT * FROM Cars WHERE Name Like '____';
Id    Name             Cost           
----  ---------------  ---------------
1     Audi             52642            
sqlite> 
sqlite> SELECT * FROM Cars WHERE Name Like '%en';
Id    Name             Cost           
----  ---------------  ---------------
6     Citroen          21000          
8     Volkswagen       21600           
sqlite> 
sqlite> SELECT * FROM Cars WHERE Name Like '%EN';
Id    Name             Cost           
----  ---------------  ---------------
6     Citroen          21000          
8     Volkswagen       21600           
sqlite> 

 

GLOB

--------------------------------------------------------------------------------

GLOB 用通配符匹配字符串 
下劃線 ? 匹配一個字符串 
百分號 * 匹配多個字符串 
LIKE 匹配字符串時,區分大小寫 
BETWEEN 值1 AND 值2

--------------------------------------------------------------------------------

返回兩個值之間的數據集合。下面的語句查詢價格在 20000 到 55000 之間的車,都是好車啊。

 

復制代碼代碼如下:

sqlite>  
sqlite> SELECT * FROM Cars WHERE Cost BETWEEN 20000 AND 55000;
Id    Name             Cost           
----  ---------------  ---------------
1     Audi             52642          
4     Volvo            29000          
6     Citroen          21000          
7     Hummer           41400          
8     Volkswagen       21600        
sqlite> 

 

IN (集合)

--------------------------------------------------------------------------------

對應列的值必須在集合中。下面的語句查找奧迪和悍馬的價格。

 

復制代碼代碼如下:

sqlite>  
sqlite> SELECT * FROM Cars WHERE Name IN ('Audi','Hummer');
Id    Name             Cost           
----  ---------------  ---------------
1     Audi             52642          
7     Hummer           41400         
sqlite> 

 

八、 排序 ORDER BY 列 ASC (DESC)

指定某個列進行排序,ASC 為升序,DESC 為降序。下面的語句查詢汽車品牌和價格,并以價格排序

 

復制代碼代碼如下:

sqlite>  
sqlite> SELECT Name, Cost FROM Cars ORDER BY Cost DESC;
Name  Cost           
----  ---------------
Bent  350000         
Merc  57127          
Audi  52642          
Humm  41400          
Volv  29000          
Volk  21600          
Citr  21000          
Skod  9000       
sqlite> 

 

九、 區分 DISTINCT 列

有一些字段的值可能會出現重復,比如訂單表中,一個客戶可能會有好幾份訂單,因此客戶的名字會重復出現。

到底有哪些客戶下了訂單呢?下面的語句將客戶名字區分出來。

 

復制代碼代碼如下:

sqlite>  
sqlite> Select * FROM Orders;
Id    OrderPrice       Customer       
----  ---------------  ---------------
1     1200             Williamson     
2     200              Robertson      
3     40               Robertson      
4     1640             Smith          
5     100              Robertson      
6     50               Williamson     
7     150              Smith          
8     250              Smith          
9     840              Brown          
10    440              Black          
11    20               Brown        
sqlite> 
sqlite> SELECT DISTINCT Customer FROM ORDERS;
Customer       
---------------
Black          
Brown          
Robertson      
Smith          
Williamson       
sqlite> 

 

十、 分組 GROUP BY 列

分組和前面的區分有一點類似。區分僅僅是為了去掉重復項,而分組是為了對各類不同項進行統計計算。

比如上面的例子,我們區分出 5 個客戶,這 5 個客戶一共下了 11 個訂單,說明很多客戶都下了不止一個訂單。

下面的語句統計每個客戶在訂單上總共花費了多少錢。

 

復制代碼代碼如下:

sqlite>  
sqlite> SELECT sum(OrderPrice) AS Total, Customer FROM Orders GROUP BY Customer;
Total            Customer       
---------------  ---------------
440              Black          
860              Brown          
340              Robertson      
2040             Smith          
1250             Williamson      
sqlite>             

 

這里 Sum 是 SQLite 內置的統計函數,在這個例子中用來求每個顧客的訂單價格的和。

統計結果也可以設定返回條件,但是不能用 WHERE 子句,而是用 HAVING 子句,如下例,返回訂單總額大于 1000 的顧客。

 

復制代碼代碼如下:

sqlite>  
sqlite> SELECT sum(OrderPrice) AS Total, Customer FROM Orders 
   ...>         GROUP BY Customer HAVING sum(OrderPrice)>1000;
Total            Customer       
---------------  ---------------
2040             Smith          
1250             Williamson     
sqlite> 

 

十一、 邏輯運算符

有的查詢涉及的條件語句很復雜,是有好幾個條件語句經過邏輯運算得來的,一共有三種邏輯運算符:

AND 
OR 
NOT 
一般稍微了解點編程知識的應該都沒問題。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一级片一区| 成人在线免费观看视视频| 日韩中文字幕视频| 国产成人精品综合久久久| 亚洲福利视频在线| 中文欧美日本在线资源| 亚洲aⅴ日韩av电影在线观看| 国产成+人+综合+亚洲欧洲| 欧美不卡视频一区发布| 久久精品视频网站| 久久免费观看视频| 91情侣偷在线精品国产| 欧美制服第一页| 欧美成人在线影院| 久久精视频免费在线久久完整在线看| 亚洲人成网站999久久久综合| 91在线免费观看网站| 亚洲激情国产精品| www.欧美免费| 国产精品一久久香蕉国产线看观看| 日韩性xxxx爱| 岛国精品视频在线播放| 国产一区二区三区精品久久久| 91精品视频在线播放| 久久中文久久字幕| 色伦专区97中文字幕| 久久久久免费视频| 夜夜嗨av一区二区三区四区| 国产精品444| 久久久久久久久久久久av| 日韩av中文字幕在线播放| 国产九九精品视频| 国产精品狠色婷| 国产精品视频色| 91香蕉亚洲精品| 97免费中文视频在线观看| 欧美尺度大的性做爰视频| 中文字幕自拍vr一区二区三区| 4438全国亚洲精品在线观看视频| www.日韩av.com| 91精品在线一区| 亚洲色图13p| 亚洲国产婷婷香蕉久久久久久| 日日摸夜夜添一区| 国语自产精品视频在线看一大j8| 亚洲国产成人在线播放| 亚洲精品wwww| 国产成人福利视频| 久久精视频免费在线久久完整在线看| 欧美日韩亚洲高清| 97色在线视频观看| 国产精品欧美一区二区| 国产日韩在线视频| 欧美一区深夜视频| 午夜欧美不卡精品aaaaa| 国产精品入口夜色视频大尺度| 成人自拍性视频| 自拍偷拍免费精品| 国产一区二区香蕉| 亚洲wwwav| 国产欧美一区二区三区四区| 亚洲精品影视在线观看| 色综合久综合久久综合久鬼88| 亚洲性无码av在线| 亚洲电影成人av99爱色| 国产自产女人91一区在线观看| 亚洲最大成人网色| 欧美日韩一区二区精品| 国产一区二区黄| 中文字幕亚洲欧美日韩高清| 精品一区二区三区电影| 欧美性xxxxx极品| 日韩电影中文 亚洲精品乱码| 国内精品模特av私拍在线观看| 欧美日韩免费一区| 精品五月天久久| 午夜精品久久久久久久久久久久| 亚洲国产女人aaa毛片在线| 国产日韩欧美夫妻视频在线观看| 国产午夜精品久久久| 5278欧美一区二区三区| 欧美性猛交xxxxx水多| 国产亚洲激情在线| 久久久久免费精品国产| 日韩福利伦理影院免费| 国产精品老女人精品视频| 国产成人精品免高潮费视频| 久久天天躁狠狠躁夜夜躁| 亚洲一区二区三区xxx视频| 精品国产91久久久久久| 成人免费观看49www在线观看| 欧美一级淫片videoshd| 国产精品国内视频| 日韩精品高清在线| 亚洲第一精品夜夜躁人人爽| 成人久久一区二区| 欧美性猛xxx| 亚洲国产精品女人久久久| 欧美成人sm免费视频| 成人中心免费视频| 久久综合亚洲社区| 国产欧美精品一区二区| 亚洲一区二区免费在线| 欧美人与物videos| 亚洲一区二区三区乱码aⅴ蜜桃女| 日本久久久久久| 日韩av成人在线| 欧美黑人一级爽快片淫片高清| 成人黄色免费在线观看| 亚洲性生活视频在线观看| 亚洲欧美国产精品| 日韩av电影中文字幕| 成人乱色短篇合集| 欧美日韩第一视频| 欧美日韩免费区域视频在线观看| 欧美日韩人人澡狠狠躁视频| 91久久久久久久久久久久久| 俺去了亚洲欧美日韩| 亚洲欧洲日本专区| 欧美成人合集magnet| 亚洲女人被黑人巨大进入al| 一区二区三区四区在线观看视频| 日韩精品中文字幕在线| 啪一啪鲁一鲁2019在线视频| 美女久久久久久久| 日韩免费av片在线观看| 中日韩午夜理伦电影免费| 国产不卡视频在线| 欧美日韩亚洲一区二区三区| 欧美亚洲午夜视频在线观看| 精品国产老师黑色丝袜高跟鞋| 欧美国产日本在线| 色偷偷888欧美精品久久久| 亚洲成av人乱码色午夜| 色老头一区二区三区在线观看| 欧美丰满少妇xxxxx| 国产精品九九九| 亚洲成人免费网站| 色先锋资源久久综合5566| 亚洲大胆美女视频| 欧美高清无遮挡| 欧美老肥婆性猛交视频| 亚洲资源在线看| 久久久久久久97| 国产一区二区三区丝袜| 亚洲欧洲午夜一线一品| 一区二区三区四区在线观看视频| 中国日韩欧美久久久久久久久| 一区二区欧美久久| 国产精品偷伦免费视频观看的| 亚洲美女av电影| 国产不卡av在线免费观看| 国产有码在线一区二区视频| 一区二区三区在线播放欧美| 久久免费视频网| 2019国产精品自在线拍国产不卡| 国产亚洲福利一区| 日韩不卡中文字幕| 亚洲va久久久噜噜噜久久天堂| 国产精品久久久久久中文字| 97精品视频在线| 黄网动漫久久久| 日韩视频―中文字幕| 亚洲视频欧美视频|