成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Sqlite數據庫知識必知必會(下篇)

數據庫 其他數據庫
這篇文章主要介紹了Sqlite數據庫的數據表、索引、視圖、觸發器和事務操作知識,干貨滿滿。

[[393279]]

大家好,我是IT共享者,人稱皮皮。

前面幾天給大家分享了MySQL數據庫知識,沒來得及看的小伙伴可以前往:Mysql查詢語句進階知識集錦,一篇文章教會你進行Mysql數據庫和數據表的基本操作,關于數據庫的安裝可以參考:手把手教你進行Mysql5.x版本的安裝及解決安裝過程中的bug。

上篇文章主要給大家介紹了Sqlite數據庫的安裝、圖形化管理系統、基本數據類型、基本關鍵字和數據庫的相關操作,干貨|Sqlite數據庫知識必知必會(上篇),今天皮皮緊接上篇文章,繼續給大家分享數據庫知識,一起來看看吧。

前言

前面我們學習了很多數據庫,雖然它們功能非常豐富,但是占用空間比較大,使得我們的系統負荷變大,這對于我們新手小白來說不是一個理想的選擇,于是乎,Sqlite閃亮登場,它受人喜愛的真正原因正是因為它足夠小,無需安裝和管理配置,簡單容易上手,支持數據庫的大小也有2TB,足夠我們個人開發愛好者使用了。

一、數據表相關操作

1).創建數據表

  1. CREATE TABLE student ( 
  2. ID INTEGER DEFAULT '1406061' PRIMARY KEY AUTOINCREMENT NOT NULL
  3. NAME NVARCHAR(100)  UNIQUE NOT NULL
  4. score INTEGER  NOT NULL
  5. time TIMESTAMP  NOT NULL 
  6. ); 

我們可以使用SqliteAdmin快速生成表,如下:

 

這樣我們的表就建立成功了。這里小編在軟件中用的是DEMO這個數據文件,而在命令窗口中用的是TEST這個數據庫文件,因為一個數據庫文件不允許在兩個位置打開的緣故。

2).刪除表

  1. DROP TABLE people; 

3).顯示表名

  1. .tables 

 

4).數據表的增刪改查

1)).增加

這里我們可以給剛創建的表添加一個數據,如下:

  1. insert into student(ID,NAME,score,timevalues(1406063,'任性的90后boy',90,'2020-07-06 12:23:32'); 

 

這里我插入了三行數據,其中有一行報錯是因為我使用了相同的ID號,而我的數據庫的ID號是不允許重復的,故而會報錯,改成其它的就好了,如果你把ID設為自增的話,就不需要你去寫了,這里我用到了自增,所以大家不必寫Sqlite會自動填充進去的。這里也可以省掉字段名,直接寫值,如下:

我們還可以給表添加新列,如下;

  1. alter table people add  column aa char(10);#添加列并且列名為aa 

注:Sqlite3并不支持帶有UNIQUE約束的列

2)).刪除

  1. delete from people;#刪除表數據 
  2. delete from people where score<20#刪除people數據表score數值小于20的記錄 

3)).修改

其實就是更新操作,如下;

  1. update people set score=100 where  age=46;#當age=46時score設置為100 

4)).查找

查找不管是在哪個數據庫中方法都是相當多的,因為查詢操作是最常見也是最頻繁的,下面我們就來詳細說說:

1))).查詢所有的結果

  1. select * from student; 

 

我們可以看到雖然結果打印出了,但是并不是那么美觀,我們將它的打印格式化一下,如下;

這下就完美多了。雖然這種方法很不錯,但是如果數據列很多的話就無法完全顯示了,這個時候我們就需要設置列的寬度,如下:

  1. .width 10 20 15 

2))).查詢指定結果

  1. select NAME,score from student; #打印出NAME和score列的結果 
  2. select * from people where score<20 and age<40;#當score小于20并且age小于40的時候 
  3. select *from people where score between 10 and 30;#當score為10~30之間時 
  4. select *from people where NAME LIKE '放大%';#當name的開始處含有放大 
  5. select *from people where NAME glob '放大*';#與上同 
  6. select *from where score not in(12,23);#當score不屬于12~23 

3))).查找排序

  1. select * from people order by score desc; #對score降序排序 

4))).查找指定數量的數據

  1. select * from people  limit 3 offset 2#偏移2個單位然后輸出三行數據,其實就是輸出后三行數據 

5))).查找重復數據并消除

  1. select distinct * from people where score>10;#當score大于10的時候消除重復數據 

6))).查找數據并進行分組

  1. select NAME ,max(age) from people where score>10 group by age#返回score大于10的時候age的最大值 

7))).查找數據進行分組并過濾分組

  1. select NAME ,max(age) from people where score>10 group by age having count(NAME)>1;#名稱計數大于1 

5).表的重命名

  1. alter table people rename to man;#將表名people改為man 

 

6).數據表的連接

這里的連接分為內外交叉三種連接,使用好了可以極大提高我們的工作效率。這里我們再次創建一張表,如下:

1)).交叉連接

  1. select * from people cross join woman; 

 

2)).內連接

  1. select * from people inner join woman; 

3)).外連接

  1. select * from people outer join woman; 

注:Sqlite3只支持左外連接。

7).表的復制

  1. create table man as select * from people where 1=0;#復制表結構 
  2. create table woman as select * from people;#復制表結構和數據 

8).臨時表

有時候我們不需要存儲所有表的數據,這個時候臨時表就很有使用的必要了。如下:

  1. #創建一個臨時表 
  2. create  temporary table temp_table( 
  3.     id int primary key
  4.     name varchar(50) unique not null
  5.     age int not null 
  6. ); 
  7.  
  8. #查看臨時表 
  9. temp.temp_table 
  10.  
  11. #刪除臨時表 
  12. drop table temp.temp_table; 

5.索引操作

1).創建索引

  1. create index user on people(score);#在people表的score字段上設置索引 
  2. create unique name on people(NAME);#在people表的score字段上設置唯一索引 
  3. create index pa on people(score,age)#在people表的score和age字段上設置索引 

2).查看索引

  1. SELECT * FROM sqlite_master WHERE type = 'index'

 

這里我們之前僅僅只是創建了一個索引,那就是”user“,為何會有兩個索引了,而且最上面的索引好像跟我們并沒有什么關系,也不像是自己創建的,其實,這個就是隱式索引,這個隱式索引在我們創建表的時候就連帶著一起創建了的,只是為了讓查詢更加快速而已,影響不大。

3).使用索引

這里涉及到兩個關鍵字請配套使用,表示索引來自于哪里的意思。

  1. select * from people indexed by user where score>10; 

4).刪除索引

  1. drop index user

注:數據量較小不應使用索引,以免給系統增壓。

6.視圖操作

1).創建視圖

  1. create view name as select NAME from people;#創建NAME字段的視圖 

2).使用視圖

  1. select *from name

這樣就可以直接輸出視圖字段的所有值了。

3).刪除視圖

  1. drop view name

7.觸發器

觸發器就是使得多個表的交互增強,互相調用,滿足條件就調用哪個表,語法格式如下:

  1. create trigger 觸發器 after(before) insert(delete update
  2. on 表1 
  3. begin 
  4. insert into 表2(表2字段,表2字段,n) VALUES(表1值, 表1值,,,,n); 
  5. END

1).創建觸發器

  1. #給people表創建一個觸發器 
  2. create trigger cf 
  3. after insert on people 
  4. begin 
  5. insert into woman(w_ID,NAME,SCORE,datevalues(new.ID,'向前插入',100,datetime('now')); 
  6. end

2).查看觸發器

  1. select * from sqlite_master where type = 'trigger'AND tbl_name='people';#查看people表的觸發器 

3).刪除觸發器

  1. drop trigger cf; 

8.事務

有了事務可以讓我們的Sqlite語句工作的更加有條不紊,一般大致分為事務開始 提交 回滾 結束,下面來看看:

  1. begin;#開始 
  2. insert into people('gf',65,datetime('now')); 
  3. rollback; #回滾就是撤銷 
  4. COMMIT;提交保存數據 
  5. end;#結束 

這里的數據沒有插入到“people”表中哦,是不是超級簡單了?

二、總結

這篇文章主要介紹了Sqlite數據庫的數據表、索引、視圖、觸發器和事務操作知識,干貨滿滿。

皮皮自從學過Sqlite之后,就果斷卸載了Mysql和Mongo了,主要是目前還用不著Mysql數據庫和Mongo那么強大的數據,夠用就好。

 

責任編輯:姜華 來源: IT共享之家
相關推薦

2021-04-12 10:00:47

Sqlite數據庫CMD

2020-07-10 07:58:14

Linux

2022-08-19 10:31:32

Kafka大數據

2024-11-15 11:11:48

2024-01-03 07:56:50

2024-01-09 13:58:22

PandasPython數據分析

2022-05-18 09:01:19

JSONJavaScript

2019-11-06 10:56:59

Python數據分析TGI

2021-06-09 11:06:00

數據分析Excel

2018-12-28 09:11:28

運維監控開源

2017-07-12 15:32:12

大數據大數據技術Python

2022-04-25 21:40:54

數據建模

2015-10-20 09:46:33

HTTP網絡協議

2019-01-30 14:14:16

LinuxUNIX操作系統

2018-10-26 14:10:21

2023-04-20 14:31:20

Python開發教程

2024-06-13 09:10:22

2015-08-17 16:05:35

javascript對象編程

2023-05-08 15:25:19

Python編程語言編碼技巧

2023-12-26 12:10:13

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 男人的天堂亚洲 | 国产一级片免费在线观看 | 农村真人裸体丰满少妇毛片 | 国产精品久久久久久久久免费相片 | 国产精品久久久久久久久久免费看 | 天天操夜夜拍 | 中文字幕专区 | 一级黄色毛片免费 | 亚洲视频在线一区 | 欧美 日韩 国产 在线 | 日本免费小视频 | 国产在线精品区 | 国产黄色一级片 | 日韩理论电影在线观看 | 美女艹b | 亚洲精品一区二三区不卡 | 极品的亚洲 | 久久中文视频 | 一二区成人影院电影网 | 成人激情视频在线观看 | 久久国产综合 | 国产福利资源 | 成人免费在线 | 日韩中文字幕高清 | 理论片免费在线观看 | 成人福利在线观看 | 成人国产精品一级毛片视频毛片 | 四虎在线观看 | 久久精品一级 | av在线免费网 | 看片91 | 精品婷婷| 嫩草视频免费 | 99久久中文字幕三级久久日本 | 99在线精品视频 | 欧美日韩在线一区二区 | 国产福利在线 | 极品一区 | 成人影院一区二区三区 | 国产精品美女在线观看 | 久久成人一区 |