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. 删除表
语法:DROP TABLE 表名;
  1. 修改表结构
重命名:ALTER TABLE 旧表名 rename to 新表名;
增加一列:ALTER TABLE 表名 add column 列名 数据类型
  1. 向表插入数据
语法:INSERT INTO 表名 VALUES(1,值2,值3...);//给所有的列插入数据,有多少列就要填多少值。INSERT INTO 表名 VALUE(列名1,列名2....) VALUE (1,值2... );//给指定列插入数据
  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. 删除表中的所有数据
DELETE FROM  表名;//删除表中所有的数据
DELETE FROM 表名 WHERE 条件;//删除满足条件数据eg:delete from stu;delete from stu where num = 1003;
  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. 高级查询
模糊查询列名	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 byeg:select age,cout(*) from stu group by age;//查询每个年龄的人数范围查询:between ... and ...eg:	select *from stu where age between 10 and 20;去重:distincteg: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;

2.4 怎么使用jdbc连接sqlite

事先创建一个表

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.创建数据源 DatasourceDataSource 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();}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/67859.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java的选择排序、冒泡排序、插入排序

不爱生姜不吃醋 如果本文有什么错误的话欢迎在评论区中指正 与其明天开始&#xff0c;不如现在行动&#xff01; 文章目录 &#x1f334;前言&#x1f334;一、选择排序1.原理2.时间复杂度3.代码实现 &#x1f334;二、冒泡排序1. 原理2. 时间复杂度3.代码实现 &#x1f334;三…

音频基础知识

文章目录 前言一、音频基本概念1、音频的基本概念①、声音的三要素②、音量与音调③、几个基本概念④、奈奎斯特采样定律 2、数字音频①、采样②、量化③、编码④、其他相关概念<1>、采样位数<2>、通道数<3>、音频帧<4>、比特率&#xff08;码率&#…

02-Flask-对象初始化参数

对象初始化参数 前言对象初始化参数import_namestatic_url_pathstatic_foldertemplate_floder 前言 本篇来学习Flask中对象初始化参数 对象初始化参数 import_name Flask程序所在的包(模块)&#xff0c;传__name__就可以 _name_ 是一个标识 Python 模块的名字的变量&#x…

2023_Spark_实验六:Scala面向对象部分演示(二)(IDEA开发)

7、Scala中的apply方法&#xff08;&#xff09; 遇到如下形式的表达式时&#xff0c;apply方法就会被调用&#xff1a; Object(参数1,参数2,......,参数N) 通常&#xff0c;这样一个apply方法返回的是伴生类的对象&#xff1b;其作用是为了省略new关键字 Object的apply方法…

MATLAB旋转动图的绘制

MATLAB旋转动图的绘制 文章目录 MATLAB旋转动图的绘制1、动图效果2、matlab代码 利用matlab实现三维旋转动图的绘制。 1、动图效果 2、matlab代码 close all clear clcf(x,y,z)(x.^2 (9./4).*y.^2 z.^2 - 1).^3 - x.^2.*z.^3 - (9./80).*y.^2.*z.^3; [x,y,z]meshgrid(linspac…

linux并发服务器 —— linux网络编程(七)

网络结构模式 C/S结构 - 客户机/服务器&#xff1b;采用两层结构&#xff0c;服务器负责数据的管理&#xff0c;客户机负责完成与用户的交互&#xff1b;C/S结构中&#xff0c;服务器 - 后台服务&#xff0c;客户机 - 前台功能&#xff1b; 优点 1. 充分发挥客户端PC处理能力…

C# 实战--listBox1使用

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System

Spring Data JPA

介绍Spring Data JPA Spring Data JPA 是 Spring 框架的一部分&#xff0c;提供了简化数据访问层开发的功能。它整合了 JPA&#xff08;Java Persistence API&#xff09;&#xff0c;提供了一种更简单、更高效的方式来与关系型数据库进行交互。 JPA 简介 JPA 是 Java 的持久…

RK开发板的USB连接(Ubuntu)

一、安装连接工具 sudo apt-get install putty 二、启动putty工具 sudo putty 三、连接usb&#xff0c;并查看相关的信息 # 查看接入的是否有usb ls /dev/tty* 显示如下&#xff1a;&#xff08;含有usb接口&#xff1a; /dev/ttyUSB0&#xff09; /dev/tty /dev/tty23 /d…

2.4 PE结构:节表详细解析

节表&#xff08;Section Table&#xff09;是Windows PE/COFF格式的可执行文件中一个非常重要的数据结构&#xff0c;它记录了各个代码段、数据段、资源段、重定向表等在文件中的位置和大小信息&#xff0c;是操作系统加载文件时根据节表来进行各个段的映射和初始化的重要依据…

微信小程序 通过响应式数据控制元素class属性

我想大家照这个和我最初的目的一样 希望有和vue中v-bind:class一样方便的指令 但答案不太尽人意 这里 我们只能采用 三元运算符的形式 参考代码如下 <view class"item {{ userId item.userId ? isThisUser : }}"> </view>这里 我们判断 如果当前ite…

剑指 Offer 14- I. 剪绳子

剑指 Offer 14- I. 剪绳子 和整数拆分是同一道题。 动态规划 class Solution {public int cuttingRope(int n) {int[] dp new int[n 1]; // dp[i]表示长度为i的绳子能得到的最大乘积dp[2] 1;for(int i 3; i < n; i){for(int j 2; j < i; j){dp[i] Math.max(dp[i…

【Java】关于JDK 8的HashMap

文章目录 HashMap 简介数据结构Hash构造方法get(key)方法步骤一&#xff1a;通过key获取所在桶的第一个元素是否存在步骤二:该节点的hash和key是否与要查询的hash和key匹配步骤三:当对应桶中不止一个节点时&#xff0c;根据不同节点类型查询 put(key,value)为什么树化&#xff…

elasticsearch分析插件 安装analysis-ik

首先下载安装es 和 插件 &#xff0c;注意 两者的版本要保持一致,如果要用到kibana 则三者保持一致 ik&#xff1a;https://github.com/medcl/elasticsearch-analysis-ik/releases es/kibana&#xff1a;https://www.elastic.co/cn/downloads/past-releases/ 然后在 es— elast…

【Node.js】Node.js安装详细步骤和创建Express项目演示

Node.js是一个开源的、跨平台的JavaScript运行环境&#xff0c;用于在服务器端运行JavaScript代码。它提供了一个简单的API&#xff0c;可以用于开发各种网络和服务器应用程序。 以下是Node.js的安装和使用的详细步骤和代码示例&#xff1a; 1、下载Node.js 访问Node.js官方…

异步驱动电机总成汇总

特斯拉双电机 蔚来ET7异步电驱 蔚来ET5异步电驱 问界M5异步电驱 比亚迪海豹异步异步电驱 汇川800v异步电驱 阿维塔异步电驱 小鹏G6异步电驱 小鹏G9异步电驱 大众ID4异步电驱 奥迪etron异步电驱 欢迎补充&#xff5e;&#xff5e;&#xff5e;欢迎转载&#xff01;&#xff01;&…

47、TCP的流量控制

从这一节开始&#xff0c;我们学习通信双方应用进程建立TCP连接之后&#xff0c;数据传输过程中&#xff0c;TCP有哪些机制保证传输可靠性的。本节先学习第一种机制&#xff1a;流量控制。 窗口与流量控制 首先&#xff0c;我们要知道的是&#xff1a;什么是流量控制&#xff…

npm run serve与npm run dev的区别

最近在运行前端项目时&#xff0c;有时用到npm run serve 有时用到npm run dev。 一般在 vue 3.x 的时候用 npm run serve,vue2.x项目运行的时候用到 npm run dev&#xff0c; dev是vue cli2的默认执行命令&#xff0c;serve是vue cli4的默认执行命令 例:在我们运行一些 vu…

深度学习的历史与八卦

楔子 有这么一个说法&#xff0c;每多一个数学公式&#xff0c;读者就减少一半。深度学习想来也无法免俗&#xff0c;毕竟技术文章不免艰涩&#xff0c;而要完全绕过公式讲好深度学习与大模型&#xff0c;以臣妾微薄的实力实在是做不到啊。 因此&#xff0c;本文先歪歪楼&…

电脑怎么设置定时关机,2个简单的操作

电脑作为现代生活中不可或缺的工具&#xff0c;我们通常会在工作或娱乐过程中使用它。但有时候&#xff0c;我们可能需要在一段时间后自动关机&#xff0c;例如在下载完成后或在睡觉前。那么电脑怎么设置定时关机呢&#xff1f;为了满足这种需求&#xff0c;电脑提供了多种定时…