溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Sqlite數(shù)據(jù)庫表的操作有哪些

發(fā)布時間:2021-10-09 17:20:01 來源:億速云 閱讀:132 作者:iii 欄目:數(shù)據(jù)庫

這篇文章主要介紹“Sqlite數(shù)據(jù)庫表的操作有哪些”,在日常操作中,相信很多人在Sqlite數(shù)據(jù)庫表的操作有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Sqlite數(shù)據(jù)庫表的操作有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

Sqlite數(shù)據(jù)庫表的操作有哪些

1).創(chuàng)建數(shù)據(jù)表

CREATE TABLE student ( ID INTEGER DEFAULT '1406061' PRIMARY KEY AUTOINCREMENT NOT NULL, NAME NVARCHAR(100)  UNIQUE NOT NULL, score INTEGER  NOT NULL, time TIMESTAMP  NOT NULL );

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

 Sqlite數(shù)據(jù)庫表的操作有哪些

Sqlite數(shù)據(jù)庫表的操作有哪些

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

2).刪除表

DROP TABLE people;

3).顯示表名

.tables

 Sqlite數(shù)據(jù)庫表的操作有哪些

4).數(shù)據(jù)表的增刪改查

1)).增加

這里我們可以給剛創(chuàng)建的表添加一個數(shù)據(jù),如下:

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

 Sqlite數(shù)據(jù)庫表的操作有哪些

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

Sqlite數(shù)據(jù)庫表的操作有哪些

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

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

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

2)).刪除

delete from people;#刪除表數(shù)據(jù) delete from people where score<20#刪除people數(shù)據(jù)表score數(shù)值小于20的記錄

3)).修改

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

update people set score=100 where  age=46;#當(dāng)age=46時score設(shè)置為100

4)).查找

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

1))).查詢所有的結(jié)果

select * from student;

 Sqlite數(shù)據(jù)庫表的操作有哪些

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

Sqlite數(shù)據(jù)庫表的操作有哪些

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

.width 10 20 15

2))).查詢指定結(jié)果

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

3))).查找排序

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

4))).查找指定數(shù)量的數(shù)據(jù)

select * from people  limit 3 offset 2#偏移2個單位然后輸出三行數(shù)據(jù),其實就是輸出后三行數(shù)據(jù)

5))).查找重復(fù)數(shù)據(jù)并消除

select distinct * from people where score>10;#當(dāng)score大于10的時候消除重復(fù)數(shù)據(jù)

6))).查找數(shù)據(jù)并進(jìn)行分組

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

7))).查找數(shù)據(jù)進(jìn)行分組并過濾分組

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

5).表的重命名

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

 Sqlite數(shù)據(jù)庫表的操作有哪些

6).數(shù)據(jù)表的連接

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

Sqlite數(shù)據(jù)庫表的操作有哪些

1)).交叉連接

select * from people cross join woman;

 Sqlite數(shù)據(jù)庫表的操作有哪些

2)).內(nèi)連接

select * from people inner join woman;

3)).外連接

select * from people outer join woman;

注:Sqlite3只支持左外連接。

7).表的復(fù)制

create table man as select * from people where 1=0;#復(fù)制表結(jié)構(gòu) create table woman as select * from people;#復(fù)制表結(jié)構(gòu)和數(shù)據(jù)

8).臨時表

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

#創(chuàng)建一個臨時表 create  temporary table temp_table(     id int primary key,     name varchar(50) unique not null,     age int not null );  #查看臨時表 temp.temp_table  #刪除臨時表 drop table temp.temp_table;

5.索引操作

1).創(chuàng)建索引

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

2).查看索引

SELECT * FROM sqlite_master WHERE type = 'index';

 Sqlite數(shù)據(jù)庫表的操作有哪些

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

3).使用索引

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

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

4).刪除索引

drop index user;

注:數(shù)據(jù)量較小不應(yīng)使用索引,以免給系統(tǒng)增壓。

6.視圖操作

1).創(chuàng)建視圖

create view name as select NAME from people;#創(chuàng)建NAME字段的視圖

2).使用視圖

select *from name;

Sqlite數(shù)據(jù)庫表的操作有哪些

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

3).刪除視圖

drop view name;

7.觸發(fā)器

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

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

1).創(chuàng)建觸發(fā)器

#給people表創(chuàng)建一個觸發(fā)器 create trigger cf after insert on people begin insert into woman(w_ID,NAME,SCORE,date) values(new.ID,'向前插入',100,datetime('now')); end;

2).查看觸發(fā)器

select * from sqlite_master where type = 'trigger'AND tbl_name='people';#查看people表的觸發(fā)器

3).刪除觸發(fā)器

drop trigger cf;

8.事務(wù)

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

begin;#開始 insert into people('gf',65,datetime('now')); rollback; #回滾就是撤銷 COMMIT;提交保存數(shù)據(jù) end;#結(jié)束

到此,關(guān)于“Sqlite數(shù)據(jù)庫表的操作有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI