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:\Users\pc>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:\Users\pc>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:\Users\pc\first.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 的语句中有不同的含义。

posted @ 2020-10-27 15:49  calm寻路人  阅读(201)  评论(0编辑  收藏  举报