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
检查创建的数据库是否在数据库列表中。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];