赞
踩
SQLite是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口 。
SQLite第一个Alpha版本诞生于2000年5月。至2019年已经有19个年头,SQLite也迎来了一个版本 SQLite 3已经发布 。
下载地址 :https://www.sqlite.org/download.html
具体下载window版本的即可
解压文件后,我们进行点击操作
Shift + 右键点击 sqlite3.exe 所在⽬录, 打开 powershell
语法:
CREATE TABLE 表名
(
列名1 数据类型 “约束”(有可无)
列名2 数据类型 “约束”(有可无)
列名3 数据类型 “约束”(有可无)
...
);//注意,SQL语句要以分号结尾
数据类型:
语法:
DROP TABLE 表名;
重命名:
ALTER TABLE 旧表名 rename to 新表名;
增加一列:
ALTER TABLE 表名 add column 列名 数据类型
语法:
INSERT INTO 表名 VALUES(值1,值2,值3...);//给所有的列插入数据,有多少列就要填多少值。
INSERT INTO 表名 VALUE(列名1,列名2,....) VALUE (值1,值2,... );//给指定列插入数据
UPDATE 表名 set 列名 = 新值,...;
UPDATE 表名 set 列名 = 新值,...WHERE 条件;//条件用来定位要修改的某些行
条件:
列名 运算符 值
运算符: = != > >= <=
如果有多个条件,可以用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;
DELETE FROM 表名;//删除表中所有的数据
DELETE FROM 表名 WHERE 条件;//删除满足条件数据
eg:
delete from stu;
delete from stu where num = 1003;
语法:
SELECT 列名1,...FROM 表名;
SELECT *FROM 表名;//查询整个表的数据
SELECT *FROM 表名 where 条件;//查询整个表的数据
eg:
insert into stu1(stu_num,stu_name,age,,addr) select stu_num,stu_name,age,addr from stu;//从stu表中插入数据,然后插入到stu1表中
模糊查询 列名 like 通配符 (_%) _: 匹配单个字符 &:匹配任意单个字符 eg: select *from stu where name like 'wang_'; select *from stu where name like '%wang%' 排序: 按指定的列名进行排序 order by 列名 asc/desc;//asc:升序 desc:降序 eg: select *from stu order by age desc;//根据年龄降序排序 限制记录条数 limit 数字 eg: select *from stu limit 2;//查看表中的前两条记录 排序+限制 eg: select *from stu order by age desc limit 1;//查看年龄最大的记录 聚合函数 cout(列*名) //统计记录数量 sum(列名) //计算给定列的总和 avg(列名) //计算给定列的平均值 min(列名) //计算给定列的最小值 max(列名) //计算给定列*的最大值 eg: select cout(*) from stu; select max(age)-min(age) from stu; 别名 eg: select num AS 学号,name AS 姓名 from stu; 分组: group by eg: select age,cout(*) from stu group by age;//查询每个年龄的人数 范围查询: 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); ★★★★★★多表联接 select 列名,... 表1,表2,...where 条件 select 列名,... form 表1 join 表2 on 联接条件 ... where 过滤条件; eg: 学生表: 学号 姓名 年龄 班级 学校 ... 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); 学校表: 编号 校名 电话 地址 ... 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'); 需求: 查询学生的学号,姓名,学校名 select t_stu.num,t_stu.name,t_school,name from t_stu,t_school); ===》学生表中的每一行都与学校表中的每一行进行联结,结果称之为 笛卡尔积 此时,需要指明两个表联结条件,在上述表中,联结条件是 学校的编号相同 两种联结写法: 第一种: 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;
事先创建一个表
CREATE TABLE test(id int primary key,name varchar(20));
然后我们开始对sqlite进行基本的操作.
1.首先引入sqlite依赖
进入maven官网,导入依赖
https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc/3.42.0.0
<!-- https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc -->
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.42.0.0</version>
</dependency>
2.编写数据库连接代码
public class ConnectionTest { public static void main(String[] args) throws SQLException { // testInsert(); testSelect(); } private static void testSelect() throws SQLException { //1.创建数据源 DataSource dataSource=new SQLiteDataSource(); ((SQLiteDataSource)dataSource).setUrl("jdbc:sqlite://d:/ITsoftware/sqlite-tools-win32-x86-3420000/test.db"); //2.建立连接 Connection connection= dataSource.getConnection(); //3.构造SQL语句 String sql="select * from test"; //4.执行SQL语句 PreparedStatement statement=connection.prepareStatement(sql); ResultSet resultSet=statement.executeQuery(); //5.遍历结果集合 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.创建数据源 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.构造Sql语句 String sql ="insert into test values(?,?)"; //4.执行Sql预期 PreparedStatement statement=connection.prepareStatement(sql); statement.setInt(1,11); statement.setString(2,"李四"); statement.executeUpdate(); //5.释放资源 statement.close(); connection.close(); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。