zoukankan      html  css  js  c++  java
  • Sqlite快速入门

    一:Sqlite数据类型:

      SQLite 数据类型是一个用来指定任何对象的数据类型的属性,SQLite 中的每一列,每个变量和表达式都有相关的数据类型。

      (1):Sqlite存储类:

    存储类 描述
    NULL 表示一个null值
    INTEGER 值是一个带符号的整数,根据值的大小存储在 1、2、3、4、6 或 8 字节中
    REAL 值是一个浮点值,存储为 8 字节的 IEEE 浮点数字。
    TEXT 值是一个文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储。
    BLOB 值是一个 blob 数据,完全根据它的输入存储
       

      (2):布尔数据类型:

             SQLite 没有单独的 Boolean 存储类。相反,布尔值被存储为整数 0(false)和 1(true)。

       (3):date与Time数据类型:

               SQLite 没有一个单独的用于存储日期和/或时间的存储类,但 SQLite 能够把日期和时间存储为 TEXT、REAL          或 INTEGER 值。

    存储类 日期格式
    TEXT 格式为 "YYYY-MM-DD HH:MM:SS.SSS" 的日期。
    REAL 从公元前 4714 年 11 月 24 日格林尼治时间的正午开始算起的天数
    INTEGER 从 1970-01-01 00:00:00 UTC 算起的秒数。

           这里重点学习TEXT类型就可以了。

    二:数据库的基本操作:

    1--------------//创建数据库格式
    $sqlite3 databaseName.db
    C:Userspc>sqlite3 first.db;   //在命令行先不要输入sqlite3命令进行sqlite环境,在命令行直接创建数据库,进入环境。
    SQLite version 3.32.2 2020-06-04 12:58:43
    Enter ".help" for usage hints.
    sqlite>

     2----------------使用.open dataName; 进入SQLite后,输入.open fileName这个方式,也可以创建数据库,如果filename是已经建立的数据库文件,则打开。否则就创建。

    C:Userspc>sqlite3;
    SQLite version 3.32.2 2020-06-04 12:58:43
    Enter ".help" for usage hints.
    sqlite> .open second.db;
    sqlite>

    3:创建表,注意先要进入目标数据库中,在该库中创建数据表。

    sqlite> .open first.db; //进入该数据库,有则进入,如不存在该表,则创建。
    sqlite> CREATE TABLE ME(
       ...> ID INT PRIMARY KEY NOT NULL,
       ...> AGE INT NOT NULL,
       ...> ADDRESS CHAR(50),
       ...> SALARY REAL
       ...> );
    sqlite> .tables
    ME
    sqlite>

    //在创建一个 HE

    sqlite> CREATE TABLE HE(
    ...> ID INT PRIMARY KEY NOT NULL,
    ...> DEPT CHAR(50) NOT NULL,
    ...> EMP_ID INT NOT NULL
    ...> );
    sqlite> .tables;  //当你使用“;”时就会保存,有些指令如quit等结尾不能使用“;”号
    Error: unknown command or invalid arguments: "tables;". Enter ".help" for help
    sqlite> .tables
    HE ME
    sqlite> .databases
    main: C:Userspcfirst.db; //显示了当前的数据库。
    sqlite>

    4:删除表:

    sqlite> .tables
    HE
    sqlite> DROP TABLE HE;
    sqlite> .tables
    sqlite>
    

    5:SQLite 的 INSERT INTO 语句用于向数据库的某个表中添加新的数据行。

      INSERT INTO 语句有两种基本语法,如下所示:

      

    INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]  
    VALUES (value1, value2, value3,...valueN);
    

      案例:

    sqlite> .tables
    HE
    sqlite> DROP TABLE HE;
    sqlite> .tables
    sqlite> CREATE TABLE HE(
       ...> ID INT PRIMARY KEY NOT NULL,
       ...> DEPT CHAR(10) NOT NULL,
       ...> EMP_ID INT NOT NULL
       ...> );
    sqlite> INSERT INTO HE (ID,DEPT,EMP_ID)
       ...> VALUES(1,'Paul',32);
    sqlite> INSERT INTO HE VALUES(2,'DZX',22);
    sqlite> SELECT *FROM HE;
    1|Paul|32
    2|DZX|22
    sqlite>
    

      

    sqlite> INSERT INTO HE(ID,DEPT,EMP_ID)
       ...> VALUES(3,'FFF',23),
       ...> (4,'fgg',44);
    sqlite> select *from HE;
    1|Paul|32
    2|DZX|22
    3|FFF|23
    4|fgg|44
    sqlite>
    

     6:SQlite运算符:

    运算符是一个保留字或字符,主要用于 SQLite 语句的 WHERE 子句中执行操作,如比较和算术运算。

    运算符用于指定 SQLite 语句中的条件,并在语句中连接多个条件。

    (1):Sqlite的算术运算符:

    sqlite> .mode line
    sqlite> select 10+20;
    10+20 = 30
    sqlite> select 10-20;
    10-20 = -10
    sqlite>
    

    (2):比较运算符和where语句的使用

    #SALARY 大于 50,000.00 的所有记录
    sqlite> SELECT * FROM COMPANY WHERE SALARY > 50000;
    ID          NAME        AGE         ADDRESS     SALARY
    ----------  ----------  ----------  ----------  ----------
    4           Mark        25          Rich-Mond   65000.0
    5           David       27          Texas       85000.0
     
    #SALARY 等于 20,000.00 的所有记录
    sqlite>  SELECT * FROM COMPANY WHERE SALARY = 20000;
    ID          NAME        AGE         ADDRESS     SALARY
    ----------  ----------  ----------  ----------  ----------
    1           Paul        32          California  20000.0
    3           Teddy       23          Norway      20000.0
    #SALARY 不等于 20,000.00 的所有记录
    sqlite>  SELECT * FROM COMPANY WHERE SALARY != 20000;
    ID          NAME        AGE         ADDRESS     SALARY
    ----------  ----------  ----------  ----------  ----------
    2           Allen       25          Texas       15000.0
    4           Mark        25          Rich-Mond   65000.0
    5           David       27          Texas       85000.0
    6           Kim         22          South-Hall  45000.0
    7           James       24          Houston     10000.0
    
    #SALARY 不等于 20,000.00 的所有记录
    sqlite> SELECT * FROM COMPANY WHERE SALARY <> 20000;
    ID          NAME        AGE         ADDRESS     SALARY
    ----------  ----------  ----------  ----------  ----------
    2           Allen       25          Texas       15000.0
    4           Mark        25          Rich-Mond   65000.0
    5           David       27          Texas       85000.0
    6           Kim         22          South-Hall  45000.0
    7           James       24          Houston     10000.0
    #SALARY 大于等于 65,000.00 的所有记录
    sqlite> SELECT * FROM COMPANY WHERE SALARY >= 65000;
    ID          NAME        AGE         ADDRESS     SALARY
    ----------  ----------  ----------  ----------  ----------
    4           Mark        25          Rich-Mond   65000.0
    5           David       27          Texas       85000.0
    

    (3)逻辑运算符的使用:

    #AGE 大于等于 25 且工资大于等于 65000.00 的所有记录
    SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000;
     
    #AGE 大于等于 25 或工资大于等于 65000.00 的所有记录
    SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000;
     
    #AGE 不为 NULL 的所有记录,结果显示所有的记录,意味着没有一个记录的 AGE 等于 NULL
    SELECT * FROM COMPANY WHERE AGE IS NOT NULL;
     
    #NAME 以 'Ki' 开始的所有记录,'Ki' 之后的字符不做限制
    SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%';
     
    #NAME 以 'Ki' 开始的所有记录,'Ki' 之后的字符不做限制
    SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*';
    #AGE 的值为 25 或 27 的所有记录
    SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 );
     
    #AGE 的值既不是 25 也不是 27 的所有记录
    SELECT * FROM COMPANY WHERE AGE NOT IN ( 25, 27 );
     
    #AGE 的值在 25 与 27 之间的所有记录
    SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27;
     
    #使用 SQL 子查询,子查询查找 SALARY > 65000 的带有 AGE 字段的所有记录
    #后边的 WHERE 子句与 EXISTS 运算符一起使用
    #列出了外查询中的 AGE 存在于子查询返回的结果中的所有记录
    SELECT AGE FROM COMPANY WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);
    
    #使用 SQL 子查询,子查询查找 SALARY > 65000 的带有 AGE 字段的所有记录
    #后边的 WHERE 子句与 > 运算符一起使用
    #列出了外查询中的 AGE 大于子查询返回的结果中的年龄的所有记录
    SELECT * FROM COMPANY WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000);

    三:Sqlite语法:

    (1):大小写敏感性

        本质是不区分大小的,但是有个别命令是区分大小的,比如 GLOB 和 glob 在 SQLite 的语句中有不同的含义。

  • 相关阅读:
    Viusal Studio 2022 正式版安装秘钥
    关于云计算,云存储,和自己开发的云存储的小工具
    网盘工具比较,以及自己开发的网盘工具
    VARIANT及相关类
    关于 BSTR, CComBSTR and _bstr_t
    如何真正发挥Google Docs的威力
    ORM框架EntitysCodeGenerate自定义分页查询及快捷执行SQL(CreateSQL)示例
    关于Java Servlet的中文乱码
    ORM框架VB/C#.Net实体代码生成工具(EntitysCodeGenerate) 【ECG】4.3 介绍
    通用JS验证框架(ChkInputs)概述
  • 原文地址:https://www.cnblogs.com/1314bjwg/p/13877532.html
Copyright © 2011-2022 走看看