sqlite数据库

一、Sqlite简介

  Sqlite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。

二、Sqlite安装

  零配置,意味着不需要复杂的安装或管理。

  1、在windows上安装 

  • 访问 SQLite 下载页面,从 Windows 区下载预编译的二进制文件。

  • 下载 sqlite-tools-win32-*.zip 和 sqlite-dll-win32-*.zip 压缩文件。

  • 创建文件夹 C:\sqlite,并在此文件夹下解压上面两个压缩文件,将得到 sqlite3.def、sqlite3.dll 和 sqlite3.exe 文件。

  • 添加 C:\sqlite 到 PATH 环境变量,最后在命令提示符下,使用 sqlite3 命令,将显示如下结果。

 

                            

  2、在linux上安装

    几乎所有版本的 Linux 操作系统都附带 SQLite。所以,只要使用下面的命令来检查您的机器上是否已经安装了 SQLite。

    $ sqlite3

    SQLite version 3.7.15.2 2013-01-09 11:53:05

    Enter ".help" for instructions

    Enter SQL statements terminated with a ";"

      sqlite>

   如果没有安装,请访问 SQLite 下载页面,从源代码区下载 sqlite-autoconf-*.tar.gz

    

三、Sqlite创建数据库、创建表、删除表、常用命令 

  1、SQlite创建数据库

    sqlite3 命令的基本语法:跳转到想要创建数据库的目录下执行 :$ sqlite3 test.db   或跳转到创建目录下执行 sqlite3进入sqlite指令模式再使用  .open test.db 创建

    打开已存在数据库也是用 .open 命令,以上命令如果 test.db 存在则直接会打开,不存在就创建它,可用 .databases 查看创建数据库的路径。

    a、windows下创建数据库练习(需要安装sqlite)

      

      注意:笔者在使用如上方法,使用命令:sqlite3 test2.db 之后在该目录下并 没有生成test.db 文件,而是再使用命令 .databases查看 后 test.db才显示 出来,而使用 .open 创建的立马显示。

    如需放到sqlite安装目录下可以跳转目录:windows命令切换磁盘:如D盘,输入D:  回车即可,切换二级目录也可使用cd指令,查看目录下文件使用 dir 指令。退出使用 .quit.exit

      

           新建的数据库大小为0KB。

  2、创建表 

    SQLite 的 CREATE TABLE 语句用于在任何给定的数据库创建一个新表。创建基本表,涉及到命名表、定义列及每一列的数据类型。

      实例:创建一个 COMPANY 表,ID 作为主键,NOT NULL 作为约束:

      CREATE TABLE COMPANY(

         ID INT PRIMARY KEY     NOT NULL,
         NAME           TEXT    NOT NULL,
         AGE            INT     NOT NULL,
         ADDRESS        CHAR(50),
         SALARY         REAL
        
TIMES REAL
        );
   

        

        

        查看数据库所有表名

             sqlite> select name from sqlite_master where type='table' order by name;

        查看某张表的所有字段 可添加格式输出

             sqlite> pragma table_info([ 表名 ]);      

  3、格式化输出

      可以使用下列的点命令来格式化输出如下所列格式,设置后如下图:

        sqlite>.header on      后面如需关闭:off

        sqlite>.mode column

        sqlite>.timer on          后面如需关闭:off

       

  4、删除表

   DROP TABLE 语句用来删除表定义及其所有相关数据、索引、触发器、约束和该表的权限规范。一旦删除,信息将永远丢失。

    语法:DROP TABLE + 表名; 

  5、常用命令

    a.在linux下键入一个简单的 sqlite3 命令,在 SQLite 命令提示符下,您可以使用各种 SQLite 命令。

      # sqlite3

         sqlite>

         sqlite>.help

         如上可获取所有点命令的清单。

      

     b、可使用 SQLIte 命令中的 .tables 命令来验证表是否已成功创建表,该命令用于列出附加数据库中的所有表,如果没有创建则不会显示。

      sqlite>.tables
      COMPANY     DEPARTMENT 
    c、退出命令
      
如果我们使用 .exit.quit 都不能退出时,可使用 CTRL + Z

四、Sqlite运算符

  1、Sqlite比较运算符

    

  2、Sqlite逻辑运算符 

    

  3、Sqlite位运算符 

    

五、Sqlite表达式

   1、Sqlite常用函数   

    

  2、Sqlite数值表达式    

    这些表达式用来执行查询中的任何数学运算。语法如下: 

    select numerical_expression as OPERATION_NAME [from table_name WHERE CONDITION]
    在这里,numerical_expression 用于数学表达式或任何公式。下面的实例演示了 SQLite 数值表达式的用法:
        SELECT (10 + 15) AS num
                num = 25
       有几个内置的函数,比如 avg()、sum()、count(),等等,执行被称为对一个表或一个特定的表列的汇总数据计算。 

        

  3、Sqlite日期表达式

      用于返回当前系统日期和时间值,这些表达式将被用于各种数据操作。

        select CURRENT_TIMESTAMP

 

        

六、Sqlite运算符、语句、子句 

  1、AND运算符

    AND运算符用于判断多个条件的存在。使用 AND 运算符时,只有当所有条件都为真(true)时,整个条件为真(true)。

  2、OR运算符

    OR运算符也适用于多个条件。使用 OR 运算符时,只要当条件中任何一个为真(true)时,整个条件为真(true)。

  3、Insert语句

     INSERT INTO 语句用于向数据库的某个表中添加新的数据行。有两种语法。

    a、语法一:

       

      使用语法一创建一条记录:INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)

                  VALUES (1, 'Paul', 32, 'California', 20000.00 );

     b、语法二:  

      

      也可以使用第二种语法在 COMPANY 表中创建一个记录:INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00 );

  4、Select语句

    语法:SELECT 字段1,字段2,字段N....  FROM  表名如果想要获取所有字段,语法为:SELECT * FROM  表名;  

          

  5、Update语句  

    用于修改表中已有的记录。可以使用带有 WHERE 子句限制否则所有的行都会被更新

    语法(可使用 AND 或 OR 运算符来结合 N 个数量的条件)

      

     实例:更新 ID 为 5 的客户地址:UPDATE COMPANY SET ADDRESS = 'Texas' WHERE ID = 5;

       更新表中所有 ADDRESS 和 SALARY 列的值:UPDATE COMPANY SET ADDRESS = 'Texas' ,SALARY = 20000.00;

  6、Delete语句

    用于删除表中已有的记录。可以使用带有 WHERE 子句限制否则所有的记录都会被删除

    语法(可使用 AND 或 OR 运算符来结合 N 个数量的条件)

      

     实例:删除 ID 为 5 的客户:DELETE FROM COMPANY WHERE ID = 5;

         删除表中所有记录:DELETE FROM COMPANY;

  7、Like子句(不区分大小写)

    用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,LIKE 运算符将返回true。这里有两个通配符与 LIKE 运算符一起使用:

    •   百分号 (%)

    •   下划线 (_)

    下面一些实例演示了 带有 '%' 和 '_' 运算符的 LIKE 子句不同的地方:

      

  8、Glob子句(区分大小写)

    与Like的使用一致,不同的是通配符不一致,Like不区分大小写,GLOB 是大小写敏感的,对于下面的通配符,它遵循 UNIX 的语法。  

    •   星号 (*)

    •   问号 (?)

    星号(*)代表零个、一个或多个数字或字符。问号(?)代表一个单一的数字或字符。这些符号可以被组合使用。

    下面一些实例演示了 带有 '*' 和 '?' 运算符的 GLOB 子句不同的地方:

         

  9、Where子句

    跟在语句后面筛选条件。不仅可以用于select语句,也可以用于update,delete语句等;可以使用比较或逻辑运算符指定条件,如 >、>=、<、<=、=、!=、LIKE、NOT,BETWEEN 等。

    语法:select * from COMPANY where ID=2;选择ID=2时不能复合使用AND ID=3这种语法;     

         

     a、select * from COMPANY where TIMES NOT NULL:  列出TIMES不为空的所有记录。

     b、select * from COMPANY where AGE NOT IN (25, 27):  列出 AGE 既不是 25 也不是 27 的所有记录,相反如果没有NOT则是列出AGE中所有包含25,27的记录。

     c、select * from COMPANY where NAME LIKE 'Da%':  列出NAME以Da开头的所有记录,也可以是一个或多个字符,注意符号为单引号,%号为通配符。

       d、select from COMPANY where AGE BETWEEN 25  AND  27列出了 AGE 的值在 25 与 27 之间(包含25和27)的所有记录。

     e、select * from COMPANY where AGE > (select AGE from COMPANY where SALARY > 65000):子查询查找 SALARY > 65000 的带有 AGE 字段的所有记录(27),外查询列出 AGE 大于子查询返回结果中的年龄的所有记录,即(AGE>27)的所有记录。  

          

 

  10、Limit子句

    用于限制由 SELECT 语句返回的数据数量。

      下面是一个实例,它限制了您想要从表中提取的行数:

        

      在某些情况下,可能需要从一个特定的偏移开始提取记录。下面是一个实例,从第三位开始提取 3 个记录:

        

七、Sqlite约束

  约束是在表的数据列上强制执行的规则。用来限制插入到表中的数据类型。这确保了数据库中数据的准确性和可靠性。约束可以是列级或表级。列级适用于列,表级适用于整个表。

    常用约束:  

  • NOT NULL 约束:确保某列不能有 NULL 值。

  • DEFAULT 约束:当某列没有指定值时,为该列提供默认值。

  • UNIQUE 约束:确保某列中的所有值是不同的。

  • PRIMARY Key 约束:唯一标识数据库表中的各行/记录。

  • CHECK 约束:CHECK 约束确保某列中的所有值满足一定条件。

 

 

 

 

 

  

 

posted @ 2023-05-05 12:58  耿通宇  阅读(67)  评论(0编辑  收藏  举报