柚子快報(bào)邀請(qǐng)碼778899分享:數(shù)據(jù)庫 SQLite簡單介紹
柚子快報(bào)邀請(qǐng)碼778899分享:數(shù)據(jù)庫 SQLite簡單介紹
一.簡單介紹
SQLite是一款輕型的數(shù)據(jù)庫,是遵守ACID的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它包含在一個(gè)相對(duì)小的C庫中。它是D.RichardHipp建立的公有領(lǐng)域項(xiàng)目。它的設(shè)計(jì)目標(biāo)是嵌入式的,而且已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統(tǒng),同時(shí)能夠跟很多程序語言相結(jié)合,比如 Tcl、C#、PHP、Java等,還有ODBC接口 。
SQLite第一個(gè)Alpha版本誕生于2000年5月。至2019年已經(jīng)有19個(gè)年頭,SQLite也迎來了一個(gè)版本 SQLite 3已經(jīng)發(fā)布 。
二.具體安裝細(xì)節(jié)
2.1 下載
下載地址 :https://www.sqlite.org/download.html 具體下載window版本的即可
2.2 解壓
解壓文件后,我們進(jìn)行點(diǎn)擊操作 Shift + 右鍵點(diǎn)擊 sqlite3.exe 所在?錄, 打開 powershell
2.3 sqlite的使用
對(duì)數(shù)據(jù)庫的操作
創(chuàng)建數(shù)據(jù)庫:sqlite3 database_name.db刪除數(shù)據(jù)庫:DROP DATABASE database_name.db
對(duì)表的操作
創(chuàng)建表
語法:
CREATE TABLE 表名
(
列名1 數(shù)據(jù)類型 “約束”(有可無)
列名2 數(shù)據(jù)類型 “約束”(有可無)
列名3 數(shù)據(jù)類型 “約束”(有可無)
...
);//注意,SQL語句要以分號(hào)結(jié)尾
數(shù)據(jù)類型:
刪除表
語法:
DROP TABLE 表名;
修改表結(jié)構(gòu)
重命名:
ALTER TABLE 舊表名 rename to 新表名;
增加一列:
ALTER TABLE 表名 add column 列名 數(shù)據(jù)類型
向表插入數(shù)據(jù)
語法:
INSERT INTO 表名 VALUES(值1,值2,值3...);//給所有的列插入數(shù)據(jù),有多少列就要填多少值。
INSERT INTO 表名 VALUE(列名1,列名2,....) VALUE (值1,值2,... );//給指定列插入數(shù)據(jù)
修改表內(nèi)的數(shù)據(jù)
UPDATE 表名 set 列名 = 新值,...;
UPDATE 表名 set 列名 = 新值,...WHERE 條件;//條件用來定位要修改的某些行
條件:
列名 運(yùn)算符 值
運(yùn)算符: = != > >= <=
如果有多個(gè)條件,可以用and和or連接
eg:
update stu set age = 21;
update stu set age = 30 where num = 1001;
update stu set age = 30 where num > 60 and num < 999;
刪除表中的所有數(shù)據(jù)
DELETE FROM 表名;//刪除表中所有的數(shù)據(jù)
DELETE FROM 表名 WHERE 條件;//刪除滿足條件數(shù)據(jù)
eg:
delete from stu;
delete from stu where num = 1003;
select 數(shù)據(jù)查詢
語法:
SELECT 列名1,...FROM 表名;
SELECT *FROM 表名;//查詢整個(gè)表的數(shù)據(jù)
SELECT *FROM 表名 where 條件;//查詢整個(gè)表的數(shù)據(jù)
eg:
insert into stu1(stu_num,stu_name,age,,addr) select stu_num,stu_name,age,addr from stu;//從stu表中插入數(shù)據(jù),然后插入到stu1表中
高級(jí)查詢
模糊查詢
列名 like 通配符 (_%)
_: 匹配單個(gè)字符
&:匹配任意單個(gè)字符
eg:
select *from stu where name like 'wang_';
select *from stu where name like '%wang%'
排序:
按指定的列名進(jìn)行排序
order by 列名 asc/desc;//asc:升序 desc:降序
eg:
select *from stu order by age desc;//根據(jù)年齡降序排序
限制記錄條數(shù)
limit 數(shù)字
eg:
select *from stu limit 2;//查看表中的前兩條記錄
排序+限制
eg:
select *from stu order by age desc limit 1;//查看年齡最大的記錄
聚合函數(shù)
cout(列*名) //統(tǒng)計(jì)記錄數(shù)量
sum(列名) //計(jì)算給定列的總和
avg(列名) //計(jì)算給定列的平均值
min(列名) //計(jì)算給定列的最小值
max(列名) //計(jì)算給定列*的最大值
eg:
select cout(*) from stu;
select max(age)-min(age) from stu;
別名
eg:
select num AS 學(xué)號(hào),name AS 姓名 from stu;
分組:
group by
eg:
select age,cout(*) from stu group by age;//查詢每個(gè)年齡的人數(shù)
范圍查詢:
between ... and ...
eg:
select *from stu where age between 10 and 20;
去重:
distinct
eg:
select distinct age from stu;
子查詢:
in(值,...)
in(select ...)
eg:
select *from stu where age in (18,20,25);
select *from stu where age in (select age from stu where age < 30);
★★★★★★多表聯(lián)接
select 列名,... 表1,表2,...where 條件
select 列名,... form 表1 join 表2 on 聯(lián)接條件 ... where 過濾條件;
eg:
學(xué)生表:
學(xué)號(hào) 姓名 年齡 班級(jí) 學(xué)校
...
create table t_stu(num int primary key, name text,age int,class int school int);
intsrt into t_stu values(1001,'wb1',18,100101,2001);
insert into t_stu values(1002,'wb2',19,100101,2001);
insert into t_stu values(1003.'wb3',20,100101,2002);
學(xué)校表:
編號(hào) 校名 電話 地址
...
create table t_school(num int primary key,name text, tel text,addr text);
insert into t_school values(2001,'first',010-123456,'changsha');
insert into t_school values(2002,'second',010-0101011,'shanghai');
需求:
查詢學(xué)生的學(xué)號(hào),姓名,學(xué)校名
select t_stu.num,t_stu.name,t_school,name from t_stu,t_school);
===》學(xué)生表中的每一行都與學(xué)校表中的每一行進(jìn)行聯(lián)結(jié),結(jié)果稱之為 笛卡爾積
此時(shí),需要指明兩個(gè)表聯(lián)結(jié)條件,在上述表中,聯(lián)結(jié)條件是 學(xué)校的編號(hào)相同
兩種聯(lián)結(jié)寫法:
第一種: select t_stu,num, t_stu.name,t_school.name from t_stu,t_school where t_stu.school = t_school.num;
第二種:select t_stu.num,t_stu.name,t_school.name from t_stu join t_school on t_stu.school = t_school.num;
select t_stu.num,t_stu.name,t_school.name from t_stu join t_school on t_stu.school = t_school.num where t_stu.num = 1002;
2.4 怎么使用jdbc連接sqlite
事先創(chuàng)建一個(gè)表
CREATE TABLE test(id int primary key,name varchar(20));
然后我們開始對(duì)sqlite進(jìn)行基本的操作. 1.首先引入sqlite依賴 進(jìn)入maven官網(wǎng),導(dǎo)入依賴 https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc/3.42.0.0
2.編寫數(shù)據(jù)庫連接代碼
public class ConnectionTest {
public static void main(String[] args) throws SQLException {
// testInsert();
testSelect();
}
private static void testSelect() throws SQLException {
//1.創(chuàng)建數(shù)據(jù)源
DataSource dataSource=new SQLiteDataSource();
((SQLiteDataSource)dataSource).setUrl("jdbc:sqlite://d:/ITsoftware/sqlite-tools-win32-x86-3420000/test.db");
//2.建立連接
Connection connection= dataSource.getConnection();
//3.構(gòu)造SQL語句
String sql="select * from test";
//4.執(zhí)行SQL語句
PreparedStatement statement=connection.prepareStatement(sql);
ResultSet resultSet=statement.executeQuery();
//5.遍歷結(jié)果集合
while (resultSet.next()){
int id=resultSet.getInt("id");
String name=resultSet.getString("name");
System.out.println("id "+id +" "+ name);
}
//6.釋放資源
statement.close();
resultSet.close();
connection.close();
}
private static void testInsert() throws SQLException {
//1.創(chuàng)建數(shù)據(jù)源 Datasource
DataSource dataSource=new SQLiteDataSource();
((SQLiteDataSource)dataSource).setUrl("jdbc:sqlite://d:/ITsoftware/sqlite-tools-win32-x86-3420000/test.db");
//2.建立連接
Connection connection=dataSource.getConnection();
//3.構(gòu)造Sql語句
String sql ="insert into test values(?,?)";
//4.執(zhí)行Sql預(yù)期
PreparedStatement statement=connection.prepareStatement(sql);
statement.setInt(1,11);
statement.setString(2,"李四");
statement.executeUpdate();
//5.釋放資源
statement.close();
connection.close();
}
}
柚子快報(bào)邀請(qǐng)碼778899分享:數(shù)據(jù)庫 SQLite簡單介紹
好文鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。