SQLITE
1.简介
1>DDL - 数据定义语言
命令 | 描述 |
---|---|
CREATE | 创建一个新的表,一个表的视图,或者数据库中的其他对象。 |
ALTER | 修改数据库中的某个已有的数据库对象,比如一个表。 |
DROP | 删除整个表,或者表的视图,或者数据库中的其他对象。 |
2>DML - 数据操作语言
命令 | 描述 |
---|---|
INSERT | 创建一条记录。 |
UPDATE | 修改记录。 |
DELETE | 删除记录。 |
3>DQL - 数据查询语言
命令 | 描述 |
---|---|
SELECT | 从一个或多个表中检索某些记录。 |
2.命令
1>点命令
-
命令提示符下键入一个简单的 sqlite3 命令,在 SQLite 命令提示符下,您可以使用各种 SQLite 命令获取
-
可用的点命令的清单,可以在任何时候输入 ".help"
-
.show 命令,来查看 SQLite 命令提示符的默认设置
2>格式化输出
sqlite>.header on #开启头部显示
sqlite>.mode column #左对齐列
sqlite>.timer on #开启cpu定时器
sqlite>
3>sqlite_master 表格
查看表概要
sqlite>.schema sqlite_master
3.SQLite 语法
1>大小写敏感性
不区分大小写的,但也有一些命令是大小写敏感的,比如 GLOB 和 glob 在 SQLite 的语句中有不同的含义。
2>注释
"--"或"/* */"
3>SQLite 语句
以任何关键字开始,以分号 ; 结束
ANALYZE:
ANALYZE;
ANALYZE database_name;
ANALYZE database_name.table_name;
AND/OR:
SELECT column1 FROM table_name WHERE CONDITIONN-1 {AND|OR} CONDITIONN2;
ALTER TABLE
ALERT TABLE table_name ADD COLUMN column_def;
ALTER TABLE 语句(Rename):
ALTER TABLE table_name RENAME TO new_table_name;
ATTACH DATABASE
ATTACH DATABASE 'DatabaseName' AS 'Alias-Name';
BETWEEN
SELECT column1, column2....columnN
FROM table_name
WHERE column_name BETWEEN val-1 AND val-2;
COMMIT
COMMIT;
CREATE INDEX
CREATE INDEX index_name
ON table_name ( column_name COLLATE NOCASE );
CREATE TABLE
CREATE TABLE table_name(
column1 datatype,
column2 datatype,
column3 datatype,
.....
columnN datatype,
PRIMARY KEY( one or more columns )
);
COUNT
SELECT COUNT(column_name)
FROM table_name
WHERE CONDITION;
DELETE
DELETE FROM table_name WHERE {CONDITION};
INSERT INTO
INSERT INTO table_name( column1, column2....columnN)
VALUES ( value1, value2....valueN);
IN
SELECT column1, column2....columnN
FROM table_name
WHERE column_name IN (val-1, val-2,...val-N);
Like
SELECT column1, column2....columnN
FROM table_name
WHERE column_name LIKE { PATTERN };
SELECT
SELECT column1, column2....columnN
FROM table_name;
UPDATE
UPDATE table_name
SET column1 = value1, column2 = value2....columnN=valueN
[ WHERE CONDITION ];
4.SQLite 数据类型
-
SQLite 没有单独的 Boolean 存储类。相反,布尔值被存储为整数 0(false)和 1(true)
-
SQLite 没有一个单独的用于存储日期和/或时间的存储类,但 SQLite 能够把日期和时间存储为 TEXT、REAL 或 INTEGER 值。
5.SQLite 创建数据库
1>语法
$ sqlite3 DatabaseName.db
sqlite>.open test.db --.open 来建立新的数据库文件
2>实例
$ sqlite3 testDB.db
sqlite> -- sqlite3 命令在成功创建数据库文件之后,将提供一个 sqlite> 提示符
sqlite>.databases --.databases 命令来检查它是否在数据库列表中
sqlite>.quit --.quit 命令退出 sqlite 提示符
$
$sqlite3 testDB.db .dump > testDB.sql -- .dump 点命令来导出完整的数据库在一个文本文件中
6.SQLite 附加数据库
ATTACH DATABASE file_name AS database_name;
打开的数据库和使用 ATTACH附加进来的数据库的必须位于同一文件夹下
7.SQLite 分离数据库
DETACH DATABASE 'Alias-Name';
8.SQLite 创建表
CREATE TABLE database_name.table_name(
column1 datatype PRIMARY KEY(one or more columns), --主键
column2 datatype,
column3 datatype,
.....
columnN datatype,
);
-
使用 SQLIte 命令中的 .tables 命令来验证表是否已成功创建
-
使用 SQLite .schema 命令得到表的完整信息
9.SQLite 删除表
一旦一个表被删除,表中所有信息也将永远丢失
DROP TABLE database_name.table_name;
10.SQLite Insert 语句
1>向数据库的某个表中添加新的数据行
INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]
VALUES (value1, value2, value3,...valueN);
INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);
2>使用一个表来填充另一个表
INSERT INTO first_table_name [(column1, column2, ... columnN)]
SELECT column1, column2, ...columnN
FROM second_table_name
[WHERE condition];
11.SQLite Select 语句
1>获取数据
从 SQLite 数据库表中获取数据,以结果表的形式返回数据
SELECT column1, column2, columnN FROM table_name; --column1, column2...是表的字段,他们的值即是您要获取的
SELECT * FROM table_name; --获取所有可用的字段
2>设置输出列的宽度
sqlite>.width 10, 20, 10
3>Schema 信息
因为所有的点命令只在 SQLite 提示符中可用,所以当您进行带有 SQLite 的编程时,您要使用下面的带 sqlite_master 表的 SELECT 语句来列出所有在数据库中创建的表:
sqlite> SELECT tbl_name FROM sqlite_master WHERE type = 'table';
12.SQLite 运算符
逻辑运算符
13.SQLite 表达式
1> 布尔表达式
sqlite> SELECT * FROM COMPANY WHERE SALARY = 10000;
2>数值表达式
有几个内置的函数,比如 avg()、sum()、count(),等等,执行被称为对一个表或一个特定的表列的汇总数据计算。
sqlite> SELECT COUNT(*) AS "RECORDS" FROM COMPANY;
RECORDS = 7
3>日期表达式
返回当前系统日期和时间值
sqlite> SELECT CURRENT_TIMESTAMP;
CURRENT_TIMESTAMP = 2013-03-17 10:43:35
14.Where,Update ,Delete,Like 子句
where,update
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];
Delete
DELETE FROM table_name
WHERE [condition];
Like
百分号(%)代表零个、一个或多个数字或字符。下划线(_)代表一个单一的数字或字符。这些符号可以被组合使用。
15.GLOB
大小写敏感
-
*
:匹配零个、一个或多个数字或字符。 -
?
:代表一个单一的数字或字符。 -
[...]
:匹配方括号内指定的字符之一。例如,[abc]
匹配 "a"、"b" 或 "c" 中的任何一个字符。 -
[^...]
:匹配不在方括号内指定的字符之一。例如,[^abc]
匹配不是 "a"、"b" 或 "c" 中的任何一个字符的字符。
16.Limit
限制由 SELECT 语句返回的数据数量。
语法
SELECT column1, column2, columnN
FROM table_name
LIMIT [no of rows] OFFSET [row num]
实例
17.ORDER BY
SELECT
select_list
FROM
table
ORDER BY
column_1 ASC,
column_2 DESC;
-
ASC 默认值,从小到大,升序排列
-
DESC 从大到小,降序排列
17.GROUP BY
-
来对相同的数据进行分组
-
GROUP BY 子句放在 WHERE 子句之后,放在 ORDER BY 子句之前
语法
SELECT column-list
FROM table_name
WHERE [ conditions ]
GROUP BY column1, column2....columnN
ORDER BY column1, column2....columnN
实例
18.HAVING
-
允许指定条件来过滤将出现在最终结果中的分组结果
-
WHERE 子句在所选列上设置条件,而 HAVING 子句则在由 GROUP BY 子句创建的分组上设置条件
语法
SELECT column1, column2
FROM table1, table2
WHERE [ conditions ]
GROUP BY column1, column2
HAVING [ conditions ]
ORDER BY column1, column2
实例
19.DISTINCT
消除所有重复的记录,并只获取唯一一次记录
语法
SELECT DISTINCT column1, column2,.....columnN
FROM table_name
WHERE [condition]
20.*高级教程
SQLite 的 PRAGMA 命令是一个特殊的命令,可以用在 SQLite 环境内控制各种环境变量和状态标志。一个 PRAGMA 值可以被读取,也可以根据需求进行设置。
21.Python接口
1>Python sqlite3 模块 API
2>连接数据库
import sqlite3
conn=sqlite3.connect('test.db')
如果数据库不存在,那么它就会被创建,最后将返回一个数据库对象。
3>创建表
import sqlite3
conn=sqlite3.connect('test.db')
c=conn.cursor()
c.execute('''CREATE TABLE COMPANY
(ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL);''')
conn.commit()
conn.close()
4>INSERT 操作
c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \VALUES (2, 'Allen', 25, 'Texas', 15000.00 )")
5>SELECT 操作
cursor=c.execute("SELECT id,name from COMPANY")
for row in cursor:
print"ID= ",row[0]
print"NAME= ",row[1]
6>DELETE操作
c.execute("DELETE from COMPANY where ID=2;")标签:SQLITE,name,SQLite,table,column1,SELECT,column2 From: https://www.cnblogs.com/liudan050501/p/18148719