這篇文章主要介紹“Sqlite數據庫表的操作有哪些”,在日常操作中,相信很多人在Sqlite數據庫表的操作有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Sqlite數據庫表的操作有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
為彭陽等地區用戶提供了全套網頁設計制作服務,及彭陽網站建設行業解決方案。主營業務為成都網站設計、網站建設、外貿網站建設、彭陽網站設計,以傳統方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業、用心的態度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
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快速生成表,如下:
這樣我們的表就建立成功了。這里小編在軟件中用的是DEMO這個數據文件,而在命令窗口中用的是TEST這個數據庫文件,因為一個數據庫文件不允許在兩個位置打開的緣故。
DROP TABLE people;
.tables
1)).增加
這里我們可以給剛創建的表添加一個數據,如下:
insert into student(ID,NAME,score,time) values(1406063,'任性的90后boy',90,'2020-07-06 12:23:32');
這里我插入了三行數據,其中有一行報錯是因為我使用了相同的ID號,而我的數據庫的ID號是不允許重復的,故而會報錯,改成其它的就好了,如果你把ID設為自增的話,就不需要你去寫了,這里我用到了自增,所以大家不必寫Sqlite會自動填充進去的。這里也可以省掉字段名,直接寫值,如下:
我們還可以給表添加新列,如下;
alter table people add column aa char(10);#添加列并且列名為aa
注:Sqlite3并不支持帶有UNIQUE約束的列
2)).刪除
delete from people;#刪除表數據 delete from people where score<20#刪除people數據表score數值小于20的記錄
3)).修改
其實就是更新操作,如下;
update people set score=100 where age=46;#當age=46時score設置為100
4)).查找
查找不管是在哪個數據庫中方法都是相當多的,因為查詢操作是最常見也是最頻繁的,下面我們就來詳細說說:
1))).查詢所有的結果
select * from student;
我們可以看到雖然結果打印出了,但是并不是那么美觀,我們將它的打印格式化一下,如下;
這下就完美多了。雖然這種方法很不錯,但是如果數據列很多的話就無法完全顯示了,這個時候我們就需要設置列的寬度,如下:
.width 10 20 15
2))).查詢指定結果
select NAME,score from student; #打印出NAME和score列的結果 select * from people where score<20 and age<40;#當score小于20并且age小于40的時候 select *from people where score between 10 and 30;#當score為10~30之間時 select *from people where NAME LIKE '放大%';#當name的開始處含有放大 select *from people where NAME glob '放大*';#與上同 select *from where score not in(12,23);#當score不屬于12~23
3))).查找排序
select * from people order by score desc; #對score降序排序
4))).查找指定數量的數據
select * from people limit 3 offset 2#偏移2個單位然后輸出三行數據,其實就是輸出后三行數據
5))).查找重復數據并消除
select distinct * from people where score>10;#當score大于10的時候消除重復數據
6))).查找數據并進行分組
select NAME ,max(age) from people where score>10 group by age#返回score大于10的時候age的最大值
7))).查找數據進行分組并過濾分組
select NAME ,max(age) from people where score>10 group by age having count(NAME)>1;#名稱計數大于1
alter table people rename to man;#將表名people改為man
這里的連接分為內外交叉三種連接,使用好了可以極大提高我們的工作效率。這里我們再次創建一張表,如下:
1)).交叉連接
select * from people cross join woman;
2)).內連接
select * from people inner join woman;
3)).外連接
select * from people outer join woman;
注:Sqlite3只支持左外連接。
create table man as select * from people where 1=0;#復制表結構 create table woman as select * from people;#復制表結構和數據
有時候我們不需要存儲所有表的數據,這個時候臨時表就很有使用的必要了。如下:
#創建一個臨時表 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;
create index user on people(score);#在people表的score字段上設置索引 create unique name on people(NAME);#在people表的score字段上設置唯一索引 create index pa on people(score,age)#在people表的score和age字段上設置索引
SELECT * FROM sqlite_master WHERE type = 'index';
這里我們之前僅僅只是創建了一個索引,那就是”user“,為何會有兩個索引了,而且最上面的索引好像跟我們并沒有什么關系,也不像是自己創建的,其實,這個就是隱式索引,這個隱式索引在我們創建表的時候就連帶著一起創建了的,只是為了讓查詢更加快速而已,影響不大。
這里涉及到兩個關鍵字請配套使用,表示索引來自于哪里的意思。
select * from people indexed by user where score>10;
drop index user;
注:數據量較小不應使用索引,以免給系統增壓。
create view name as select NAME from people;#創建NAME字段的視圖
select *from name;
這樣就可以直接輸出視圖字段的所有值了。
drop view name;
觸發器就是使得多個表的交互增強,互相調用,滿足條件就調用哪個表,語法格式如下:
create trigger 觸發器 after(before) insert(delete update) on 表1 begin insert into 表2(表2字段,表2字段,n) VALUES(表1值, 表1值,,,,n); END;
#給people表創建一個觸發器 create trigger cf after insert on people begin insert into woman(w_ID,NAME,SCORE,date) values(new.ID,'向前插入',100,datetime('now')); end;
select * from sqlite_master where type = 'trigger'AND tbl_name='people';#查看people表的觸發器
drop trigger cf;
有了事務可以讓我們的Sqlite語句工作的更加有條不紊,一般大致分為事務開始 提交 回滾 結束,下面來看看:
begin;#開始 insert into people('gf',65,datetime('now')); rollback; #回滾就是撤銷 COMMIT;提交保存數據 end;#結束
到此,關于“Sqlite數據庫表的操作有哪些”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注創新互聯網站,小編會繼續努力為大家帶來更多實用的文章!
本文題目:Sqlite數據庫表的操作有哪些
網站地址:http://m.2m8n56k.cn/article14/jssige.html
成都網站建設公司_創新互聯,為您提供網站營銷、Google、關鍵詞優化、微信小程序、定制網站、小程序開發
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯