• SQLite简单介绍


    一.简单介绍

    SQLite是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口 。

    SQLite第一个Alpha版本诞生于2000年5月。至2019年已经有19个年头,SQLite也迎来了一个版本 SQLite 3已经发布 。

    二.具体安装细节

    2.1 下载

    下载地址 :https://www.sqlite.org/download.html
    具体下载window版本的即可
    在这里插入图片描述

    2.2 解压

    解压文件后,我们进行点击操作
    Shift + 右键点击 sqlite3.exe 所在⽬录, 打开 powershell

    在这里插入图片描述

    2.3 sqlite的使用

    对数据库的操作

    1. 创建数据库:sqlite3 database_name.db
    2. 删除数据库:DROP DATABASE database_name.db

    对表的操作

    1. 创建表
    语法:
    		CREATE TABLE 表名
    		(
    				列名1	数据类型	“约束”(有可无)
    				列名2	数据类型	“约束”(有可无)
    				列名3	数据类型	“约束”(有可无)
    				...
    		);//注意,SQL语句要以分号结尾
    数据类型:
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    1. 删除表
    语法:
    		DROP TABLE 表名;
    
    • 1
    • 2
    1. 修改表结构
    重命名:
    	ALTER TABLE 旧表名 rename to 新表名;
    增加一列:
    	ALTER TABLE 表名 add column 列名 数据类型
    
    • 1
    • 2
    • 3
    • 4
    1. 向表插入数据
    语法:
    	INSERT INTO 表名 VALUES(1,值2,值3...);//给所有的列插入数据,有多少列就要填多少值。
    	INSERT INTO 表名 VALUE(列名1,列名2....) VALUE (1,值2... );//给指定列插入数据
    
    
    • 1
    • 2
    • 3
    • 4
    1. 修改表内的数据
    UPDATE 表名 set 列名 = 新值,...;
    UPDATE 表名 set 列名 = 新值,...WHERE 条件;//条件用来定位要修改的某些行
    条件:
    	列名 运算符 值
    	运算符: = 	!= 	>	 >=	 <=
    	如果有多个条件,可以用andor连接
    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;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    1. 删除表中的所有数据
    DELETE FROM  表名;//删除表中所有的数据
    DELETE FROM 表名 WHERE 条件;//删除满足条件数据
    	eg:
    		delete from stu;
    		delete from stu where num = 1003;
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. select 数据查询
    语法:
    	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表中
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1. 高级查询
    模糊查询
    	列名	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	join2 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;
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76

    2.4 怎么使用jdbc连接sqlite

    事先创建一个表

    CREATE TABLE test(id int primary key,name varchar(20));
    
    • 1

    然后我们开始对sqlite进行基本的操作.
    1.首先引入sqlite依赖
    进入maven官网,导入依赖
    https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc/3.42.0.0

    
    <dependency>
        <groupId>org.xerialgroupId>
        <artifactId>sqlite-jdbcartifactId>
        <version>3.42.0.0version>
    dependency>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    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();
    
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
  • 相关阅读:
    Codeforces Round 515
    【考研复试】计算机专业考研复试英语常见问题一(家庭/家乡/学校篇)
    【前端设计模式】之访问者模式
    【带头学C++】----- 1.基础知识 ---- 1.24 逻辑控制语句
    C++ 字符串各种类型转换的函数封装 【宝藏博客】
    通过浏览器打开某个应用程序
    【接口测试】HTTP接口详细验证清单
    C++:模板初阶
    七、安卓手机环境检测软件分享
    因程序员开发速度太慢,公司索赔90万败诉后不服申请再审,法院判了
  • 原文地址:https://blog.csdn.net/qq_45726327/article/details/132630092