查询和更新指令构成了DML(数据操作语言)部分:
- SELECT - 从数据库表中获取数据
- UPDATE - 更新数据库表中的数据
- DELETE - 删除数据库表中的数据
- INSERT INTO - 向数据库表中插入数据
创建或删除表格指令构成DDL(数据定义语言)部分:
- CREATE DATABASE - 创建新数据库
- ALTER DATABASE - 修改数据库
- CREAT TABLE - 数据库中新建表格
- ALTER TABLE - 修改数据库表
- DROP TABLE - 删除表
- CREATE INDEX - 创建索引
- DROP INDEX - 删除索引
Simple
- 创建一个
COMPANY
表,ID 作为主键,NOT NULL
表示在表的创建中这些字段不能为空
CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
自增字段需要使用关键字INTEGER PRIMARY KEY。
- 删除表
DROP TABLE database_name.table_name
DROP TABLE COMPANY
- 插入数据
INSERT
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Paul', 32, 'California', 20000.00 );
- 获取数据
SELECT
SELECT * FROM COMPANY
- 算术运算符
+``-``*``/``%
- 比较运算符
==``=``!=``>``<``>=``<=``!<``!>
- 逻辑运算符
运算符 | 描述 | ||
---|---|---|---|
AND | AND 运算符允许在一个 SQL 语句的 WHERE 子句中的多个条件的存在 | ||
BETWEEN | BETWEEN 运算符用于在给定最小值和最大值范围内的一系列值中搜索值BETWEEN 25 AND 27
|
||
EXISTS | EXISTS 运算符用于在满足一定条件的指定表中搜索行的存在 | ||
IN | IN 运算符用于把某个值与一系列指定列表的值进行比较。IN ( 25, 27 )
|
||
NOT IN IN | 运算符的对立面,用于把某个值与不在一系列指定列表的值进行比较 | ||
LIKE | LIKE 运算符用于把某个值与使用通配符运算符的相似值进行比较 LIKE 'aa%' (aa之后的字符不做限制) |
||
GLOB | GLOB 运算符用于把某个值与使用通配符运算符的相似值进行比较。GLOB 与 LIKE 不同之处在于,它是大小写敏感的。GLOB 'aa*' (aa之后的字符不做限制) |
||
NOT | NOT 运算符是所用的逻辑运算符的对立面。比如 NOT EXISTS、NOT BETWEEN、NOT IN,等等。它是否定运算符。 | ||
OR | OR 运算符用于结合一个 SQL 语句的 WHERE 子句中的多个条件。 | ||
IS NULL | NULL 运算符用于把某个值与 NULL 值进行比较。 | ||
IS | IS 运算符与 = 相似 | ||
IS NOT | IS NOT 运算符与 != 相似。 | ||
` | ` | 连接两个不同的字符串,得到一个新的字符串 | |
UNIQUE | UNIQUE 运算符搜索指定表中的每一行,确保唯一性(无重复) |
-
LIMIT子句 - 用于限制由
SELECT
数据数量SELECT * FROM COMPANY LIMIT 6;
一般会与
OFFSET
子句一起使用SELECT * FROM COMPANY LIMIT 3 OFFSET 2;(从第三位开始提取三个记录)
-
ORDER BY 子句 用来基于一个或多个列按照升序或降序排列数据
SELECT * FROM COMPANY ORDER BY SALARY ASC; SELECT * FROM COMPANY ORDER BY NAME, SALARY ASC;
-
GROUP BY - 和
SELECT
一起使用,对相同的数据进行分组。(必须放在WHERE
条件之后,必须放在ORDER BY
之前)SELECT NAME, SUM(SALARY) FROM COMPANY GROUP BY NAME; SELECT NAME, SUM(SALARY) FROM COMPANY GROUP BY NAME ORDER BY NAME;
-
HAVING - 允许指定条件来过滤将出现在最终结果中的分组结果。
SELECT FROM WHERE GROUP BY HAVING ORDER BY
SELECT * FROM COMPANY GROUP BY name HAVING count(name) < 2;(名称计数小于2的所有记录)
-
DISTINCT - 与
SELECT
一起,消除所有重复的记录,并只获取唯一一次记录SELECT DISTINCT name FROM COMPANY;
时间 & 日期
序号 | 函数 | 实例 |
---|---|---|
1 | date(timestring, modifier, modifier, ...) | 以 YYYY-MM-DD 格式返回日期。 |
2 | time(timestring, modifier, modifier, ...) | 以 HH:MM:SS 格式返回时间。 |
3 | datetime(timestring, modifier, modifier, ...) | 以 YYYY-MM-DD HH:MM:SS 格式返回。 |
4 | julianday(timestring, modifier, modifier, ...) | 这将返回从格林尼治时间的公元前 4714 年 11 月 24 日正午算起的天数。 |
5 | strftime(format, timestring, modifier, modifier, ...) | 这将根据第一个参数指定的格式字符串返回格式化的日期。 |
时间字符串
序号 | 时间字符串 | 实例 |
---|---|---|
1 | YYYY-MM-DD | 2010-12-30 |
2 | YYYY-MM-DD HH:MM | 2010-12-30 12:10 |
3 | YYYY-MM-DD HH:MM:SS.SSS | 2010-12-30 12:10:04.100 |
4 | MM-DD-YYYY HH:MM | 30-12-2010 12:10 |
5 | HH:MM 12:10 | |
6 | YYYY-MM-DDTHH:MM | 2010-12-30 12:10 |
7 | HH:MM:SS | 12:10:01 |
8 | YYYYMMDD HHMMSS | 20101230 121001 |
9 | now | 2013-05-07 |
格式化 - SQLite 提供了非常方便的函数 strftime() 来格式化任何日期和时间
替换 | 描述 |
---|---|
%d | 一月中的第几天,01-31 |
%f | 带小数部分的秒,SS.SSS |
%H | 小时,00-23 |
%j | 一年中的第几天,001-366 |
%J | 儒略日数,DDDD.DDDD |
%m | 月,00-12 |
%M | 分,00-59 |
%s | 从 1970-01-01 算起的秒数 |
%S | 秒,00-59 |
%w | 一周中的第几天,0-6 (0 is Sunday) |
%W | 一年中的第几周,01-53 |
%Y | 年,YYYY |
%% | % symbol |
当前时间戳:strftime('%s','now')
当前时间: date('now')
来源:菜鸟