循序渐进SQLite2

SQLite命令


基于命令的操作性质可分为:

  • DDL:数据定义语言
命令 描述
CREATE 创建一个新的表,一个表的视图,或者数据库中的其他对象
DROP 删除整个表,或者表的视图,或者数据库中的其他对象
ALTER 修改数据库中的某个已有的数据库对象,比如一个表
  • DQL:数据查询语言
命令 描述
SELECT 从一个或多个表中检索某些记录
  • DML:数据操作语言
命令 描述
INSERT 创建一条记录
UPDATE 修改记录
DELETE 删除记录

SQLite常用数据类型

  • SQLite存储类
存储类 描述
NULL 值是一个NULL值
INTEGER 值是一个带符号的整数,根据值的大小存储在1、2、3、4、6或8字节中
REAL 值是一个浮点值,存储为8字节的IEEE浮点数字
TEXT 值是一个文本字符串,使用数据库编码(UTF-8、UTF-16BE或UTF-16LE)存储
BLOB 值是一个bolb数据,完全根据它的输入存储
  • Date与Time数据类型
存储类 描述
TEXT 格式为"YYYY-MM-DD HH:MM:SS.SSS" 的日期
REAL 从公元前4714年11月24日格林尼治时间的正午开始算起的天数
INTEGER 从1970-01-01 00:00:00 UTC算起的秒数

操作命令


打开终端,输入sqlite3 testDB.db。此命令将在当前目录下创建好一个文件testDB.db,该文件将被SQLite引擎用作数据库,可以注意到sqlite3命令在成功创建数据库文件后,将提供一个sqlite>提示符。使用点命令.databases检查创建的数据库是否在数据库列表中。

循序渐进SQLite2_第1张图片

SQLite创建create表####

SQLite的create table (需要注意的是:SQLite是不区分大小写的,但有些命令是大小写敏感的,比如GLOB和glob在SQLite的语句中有不同的含义。) 语句用于在任何给定的数据库创建一个新表。创建基本表,涉及到命名表、定义列表及每一列的数据类型。基本语法如下:

create table database_name.table_name( column1 datatype primary key, column2 datatype, column3 datatype, ...... columnN datatype);

可以使用.tables命令来验证表是否已成功创建,该命令用于列出数据库中的所有表。.schema命令则可以得到表的完整信息。

SQLite删除drop表####

SQLite的drop table语句用来删除表定义及其所有相关数据、索引、触发器、约束和该表的权限规范。注意使用此命令,一旦一个表被删除,表中所有信息也将永远丢失

drop table database_name.table_name;

SQLite Insert语句####

SQLite的insert into 语句用于向数据库的某个表中添加新的数据行。基本语法:

insert into table_name (column1,column2,column3,...columnN)values(value1,value2,value3,...valueN);

此处的column1,column2,...columnN为要插入数据的表中的列的名称。如果要给表中的所有列添加值,可以不指定列名称,但是务必要确保值的顺序与列在表中的顺序一致。即:

insert into table_name values(value1,value2,value3,...valueN);

SQLite Select语句####

SQLite的select语句用于从SQLite数据库中获取数据,以结果表的形式返回数据。基本语法:

select column1,column2,columnN from table_name;

如果想要获取所有的可用的字段,则可以使用下面的语法:

select * from table_name;

SQLite Where子句####

SQLite的where子句用于指定从一个表或多个表中获取数据的条件。如果满足给定的条件,即为真(ture)时,则从表中返回特定的值。可以使用where子句来过滤记录,只获取需要的记录。where子句不仅可以用在select语句中,还可以用在update、delete语句中,等等。基本语法:

select column1,column2,columnN from table_name where [condition];

SQLite运算符####

运算符是一个保留字或字符,主要用于 SQLite 语句的 WHERE 子句中执行操作,如比较和算术运算。运算符用于指定 SQLite 语句中的条件,并在语句中连接多个条件。

  • 算术运算符
运算符 描述
+ 加法:将运算符两边的值相加
- 减法:左操作数减去右操作数
* 乘法:把运算符两边的值相乘
/ 除法:左操作数除以右操作数
% 取模:左操作数除以右操作数后得到的余数
  • 比较运算符
运算符 描述
== 检查两个操作数的值是否相等,如果相等则条件为真
= 检查两个操作数的值是否相等,如果相等则条件为真
!= 检查两个操作数的值是否相等,如果不相等则条件为真
<> 检查两个操作数的值是否相等,如果不相等则条件为真
> 检查左操作数的值是否大于右操作数的值,如果是则条件为真
< 检查左操作数的值是否小于右操作数的值,如果是则条件为真
>= 检查左操作数的值是否大于等于右操作数的值,如果是则条件为真
<= 检查左操作数的值是否小于等于右操作数的值,如果是则条件为真
!< 检查左操作数的值是否不小于右操作数的值,如果是则条件为真
!> 检查左操作数的值是否不大于右操作数的值,如果是则条件为真
  • 逻辑运算符
运算符 描述
AND AND 运算符允许在一个 SQL 语句的 WHERE 子句中的多个条件的存在
BETWEEN BETWEEN 运算符用于在给定最小值和最大值范围内的一系列值中搜索值
EXISTS EXISTS 运算符用于在满足一定条件的指定表中搜索行的存在
IN IN 运算符用于把某个值与一系列指定列表的值进行比较
NOT IN IN 运算符的对立面,用于把某个值与不在一系列指定列表的值进行比较
LIKE LIKE 运算符用于把某个值与使用通配符运算符的相似值进行比较
GLOB GLOB 运算符用于把某个值与使用通配符运算符的相似值进行比较。GLOB 与 LIKE 不同之处在于,它是大小写敏感的
NOT NOT 运算符是所用的逻辑运算符的对立面。比如 NOT EXISTS、NOT BETWEEN、NOT IN,等等。它是否定运算符
OR OR 运算符用于结合一个 SQL 语句的 WHERE 子句中的多个条件
IS NULL NULL 运算符用于把某个值与 NULL 值进行比较
IS IS 运算符与 = 相似
IS NOT IS NOT 运算符与 != 相似
UNIQUE UNIQUE 运算符搜索指定表中的每一行,确保唯一性(无重复)
  • 位运算符

SQLite Update语句####

SQLite的update查询用于修改表中的已有的记录,和set一起使用。可以使用带有where子句的update查询来更新选定行,否则所有的行都会被更新。基本语法:

update table_name 
set column1 = value1, column2 = value2...,columnN = valueN 
where [condition];

SQLite Delete语句####

SQLite的delete用于删除表中的已有的记录,可以使用带有where子句的delete来删除选定行,否则所有的记录都会被删除。基本语法:

delete from table_name where [condition];

SQLite Like子句####

SQLite的like运算符是用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,like运算符将返回真(true),也就是1。有两个通配符与like运算符一起使用。百分号(%)下划线(_)。百分号代表零个、一个或多个数字或字符。下划线代表一个单一的数字或字符。这些符号可以被组合使用。基本语法:

select from table_name where column like 'xxxx%';
或者
select from table_name where column like '%xxxx%';
或者
select from table_name where column like 'xxxx_';
或者
select from table_name where column like '_xxxx';
或者
select from table_name where column like '_xxxx_';

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

语句 描述
where column like 'hi%' 查找以hi开头的任意值
where column like '%hi%' 查找任意位置包含hi的任意值
where column like '_hi%' 查找第二位和第三位为hi的任意值
where column like 'h_%_%' 查找以h开头,且长度至少为3个字符的任意值
where column like '%h' 查找以h结尾的任意值
where column like '_h%i' 查找第二位为h,且以i结尾的任意值
where column like 'h___i' 查找长度为5位数,且以h开头以i结尾的任意值

SQLite Order By排序####

SQLite的order by子句是用来基于一个或多个列按升序或降序顺序排列数据。ASC表示升序,DESC表示降序。基本语法:

select column-list 
from table_name
[where condition] 
[order by column1,column2, .. columnN] [ASC | DESC];

SQLite Group By分组####

SQLite的group by子句用于与select语句一起使用,来对相同的数据进行分组。在select语句中,group by子句放在where子句之后,放在order by子句之前。基本语法:

select column-list
from table_name where [condition]
group by column1,column2,...columnN
order by column1,column2,...columnN;

SQLite Distinct关键字####

SQLite的Distinct 关键字与select语句一起使用,来消除所有重复的记录,并只获取唯一一次记录。有可能出现一种情况,在一个表中有多个重复的记录。当提取这样的记录时,distinct关键字就显得很有意义了。基本语法:

select distinct column1,column2,...columnN
from table_name
where [condition];

SQLite Alter命令####

SQLite的alter table命令不通过执行一个完整的转储和数据的重载来修改已有的表。可以使用alter table语句重命名表,使用alter table语句还可以在已有的 表中添加额外的列。基本语法:

重命名表:
alter table database_name.table_name rename to new_table_name;
在已有的表中添加一个新的列:
alter table database_name.table_name add column column_definition...;
实例:
alter table person add column sex char(1);

SQLite AND/OR 运算符####

SQLite的AND和OR运算符用于编译多个条件来缩小在SQLite语句中的所选的数据。这两个运算符被称为连接运算符。

  • AND运算符
    AND 运算符允许在一个 SQL 语句的 WHERE 子句中的多个条件的存在。使用 AND 运算符时,只有当所有条件都为真(true)时,整个条件为真(true)。例如,只有当 condition1 和 condition2 都为真(true)时,[condition1] AND [condition2] 为真(true)。基本语法:
select column1,column2,...columnN  
from table_name
where [condition] and [condition2]...and [conditionN]; 
  • OR 运算符
    OR 运算符也用于结合一个 SQL 语句的 WHERE 子句中的多个条件。使用 OR 运算符时,只要当条件中任何一个为真(true)时,整个条件为真(true)。例如,只要当 condition1 或 condition2 有一个为真(true)时,[condition1] OR [condition2] 为真(true)。
select column1,column2,...columnN 
from table_name 
where [condition] or [condition2]...or [conditionN]; 

你可能感兴趣的:(循序渐进SQLite2)