循序渐进SQLite2

<h3>SQLite命令</h3>
基于命令的操作性质可分为:

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

<h3>SQLite常用数据类型</h3>

  • 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算起的秒数

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

SQLite创建create表####

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

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]; 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容

  • SQL SELECT 语句 一、查询SQL SELECT 语法 (1)SELECT 列名称 FROM 表名称 (2...
    有钱且幸福阅读 5,440评论 0 33
  • 数据库入门 数据库: 保存有组织的数据的容器(通常是一个文件或一组文件).数据库软件应该称为 DBMS(DataB...
    Mjericho阅读 496评论 0 0
  • MySQL技术内幕:SQL编程 姜承尧 第1章 SQL编程 >> B是由MySQL创始人之一Monty分支的一个版...
    沉默剑士阅读 2,416评论 0 3
  • 【学号】2017101304 【姓名】张敬艺 【性别】女 【城市】山西省晋中市 【简书号】张敬艺 【擅长】长跑 登...
    张敬艺阅读 184评论 1 0
  • 晚上和阿猫聊天,猫猫昨天梦到我们在一块要刷睡觉,这是三个月后的场景啊,开心!挂住您。 一大早送宋志去高铁,也是一段...
    聂一一阅读 107评论 0 0