一、创建数据表:
该命令的语法规则和使用方式与大多数关系型数据库基本相同,因此我们还是以示例的方式来演示SQLite中创建表的各种规则。但是对于一些SQLite特有的规则,我们会给予额外的说明。注:以下所有示例均是在sqlite自带命令行工具中完成的。
1). 最简单的数据表:
sqlite> CREATE TABLE testtable (first_col integer);
2). 创建带有缺省值的数据表:
sqlite> CREATE TABLE testtable (first_col integer DEFAULT 0, second_col varchar DEFAULT 'hello');
sqlite> ATTACH DATABASE 'd:/mydb.db' AS mydb; sqlite> CREATE TABLE mydb.testtable (first_col integer);
sqlite> CREATE TEMP TABLE temptable(first_col integer); sqlite> CREATE TABLE testtable (first_col integer);
sqlite> .backup d:/mydb.db sqlite> .exit
sqlite> .restore d:/mydb.db
sqlite> .tables testtable
sqlite> CREATE TABLE testtable (first_col integer); Error: table testtable already exists sqlite> CREATE TABLE IF NOT EXISTS testtable (first_col integer);
sqlite> CREATE TABLE testtable2 AS SELECT * FROM testtable; sqlite> .schema testtable2 CREATE TABLE testtable2(first_col INT);
6). 主键约束:
--直接在字段的定义上指定主键。 sqlite> CREATE TABLE testtable (first_col integer PRIMARY KEY ASC); --在所有字段已经定义完毕后,再定义表的数约束,这里定义的是基于first_col和second_col的联合主键。 sqlite> CREATE TABLE testtable2 ( ...> first_col integer, ...> second_col integer, ...> PRIMARY KEY (first_col,second_col) ...> );
7). 唯一性约束:
--直接在字段的定义上指定唯一性约束。 sqlite> CREATE TABLE testtable (first_col integer UNIQUE); --在所有字段已经定义完毕后,在定义表的唯一性约束,这里定义的是基于两个列的唯一性约束。 sqlite> CREATE TABLE testtable2 ( ...> first_col integer, ...> second_col integer, ...> UNIQUE (first_col,second_col) ...> ); 在SQLite中,NULL值被视为和其他任何值都是不同的,这样包括和其他的NULL值,如下例: sqlite> DELETE FROM testtable; sqlite> SELECT count(*) FROM testtable; count(*) ---------- 0 sqlite> INSERT INTO testtable VALUES(NULL); sqlite> INSERT INTO testtable VALUES(NULL); sqlite> SELECT count(*) FROM testtable; count(*) ---------- 2
8). 为空(NOT NULL)约束:
sqlite> CREATE TABLE testtable(first_col integer NOT NULL); sqlite> INSERT INTO testtable VALUES(NULL); Error: testtable.first_col may not be NULL
9). 检查性约束:
sqlite> CREATE TABLE testtable (first_col integer CHECK (first_col < 5)); sqlite> INSERT INTO testtable VALUES(4); sqlite> INSERT INTO testtable VALUES(20); -- 20违反了字段first_col的检查性约束(first_col < 5) Error: constraint failed --和之前的其它约束一样,检查性约束也是可以基于表中的多个列来定义的。 sqlite> CREATE TABLE testtable2 ( ...> first_col integer, ...> second_col integer, ...> CHECK (first_col > 0 AND second_col < 0) ...> );
SQLite对ALTER TABLE命令支持的非常有限,仅仅是修改表名和添加新字段。其它的功能,如重命名字段、删除字段和添加删除约束等均为提供支持。
1). 修改表名:
需要先说明的是,SQLite中表名的修改只能在同一个数据库中,不能将其移动到Attached数据库中。再有就是一旦表名被修改后,该表已存在的索引将不会受到影响,然而依赖该表的视图和触发器将不得不重新修改其定义。
sqlite> CREATE TABLE testtable (first_col integer); sqlite> ALTER TABLE testtable RENAME TO testtable2; sqlite> .tables testtable2
2). 新增字段:
sqlite> CREATE TABLE testtable (first_col integer); sqlite> ALTER TABLE testtable ADD COLUMN second_col integer; sqlite> .schema testtable CREATE TABLE "testtable" (first_col integer, second_col integer);
在SQLite中如果某个表被删除了,那么与之相关的索引和触发器也会被随之删除。在很多其他的关系型数据库中是不可以这样的,如果必须要删除相关对象,只能在删除表语句中加入WITH CASCADE从句。见如下示例:
sqlite> CREATE TABLE testtable (first_col integer); sqlite> DROP TABLE testtable; sqlite> DROP TABLE testtable; Error: no such table: testtable sqlite> DROP TABLE IF EXISTS testtable;
我们这里只是给出简单的SQL命令示例,具体的含义和技术细节可以参照上面的创建数据表部分,如临时视图、"IF NOT EXISTS"从句等。
1). 最简单的视图:
sqlite> CREATE VIEW testview AS SELECT * FROM testtable WHERE first_col > 100;
sqlite> CREATE TEMP VIEW tempview AS SELECT * FROM testtable WHERE first_col > 100;
sqlite> CREATE VIEW testview AS SELECT * FROM testtable WHERE first_col > 100; Error: table testview already exists sqlite> CREATE VIEW IF NOT EXISTS testview AS SELECT * FROM testtable WHERE first_col > 100;
该操作的语法和删除表基本相同,因此这里只是给出示例:
sqlite> DROP VIEW testview; sqlite> DROP VIEW testview; Error: no such view: testview sqlite> DROP VIEW IF EXISTS testview;
本文向大家介绍SQLite教程(一):SQLite数据库介绍,包括了SQLite教程(一):SQLite数据库介绍的使用技巧和注意事项,需要的朋友参考一下 一、简介: SQLite是目前最流行的开源嵌入式数据库,和很多其他嵌入式存储引擎相比(NoSQL),如BerkeleyDB、MemBASE等,SQLite可以很好的支持关系型数据库所具备的一些基本特征,如标准SQL语法、事务、数据表和索
一、创建数据表: 该命令的语法规则和使用方式与大多数关系型数据库基本相同,因此我们还是以示例的方式来演示SQLite中创建表的各种规则。但是对于一些SQLite特有的规则,我们会给予额外的说明。注:以下所有示例均是在sqlite自带命令行工具中完成的。 1). 最简单的数据表: sqlite> CREATE TABLE testtable (first_col integer); 这里需要说明的
本文向大家介绍SQLite教程(五):数据库和事务,包括了SQLite教程(五):数据库和事务的使用技巧和注意事项,需要的朋友参考一下 一、Attach数据库: ATTACH DATABASE语句添加另外一个数据库文件到当前的连接中,如果文件名为":memory:",我们可以将其视为内存数据库,内存数据库无法持久化到磁盘文件上。如果操作Attached数据库中的表,则需要在表名前加数据库
A 数据透视表介绍 B.1 什么是数据透视表? 数据透视表是一种可以快速汇总、分析大量数据表格的交互式工具。使用数据透视表可以按照数据表格的不同字段从多个角度进行透视,并建立交叉表格,用以查看数据表格不同层面的汇总信息、分析结果以及摘要数据。使用数据透视表可以深入分析数值数据,以帮助用户发现关键数据,并做出有关企业中关键数据的决策。 数据透视表是针对以下用途特别设计的:以友好的方式,查看大量的数据
机器学习关于将模型拟合到数据;出于这个原因,我们首先讨论如何表示数据以便计算机理解。 除此之外,我们将基于上一节中的matplotlib示例构建,并展示如何可视化数据的一些示例。 sklearn 中的数据 scikit-learn 中的数据(极少数例外)被假定存储为形状为[n_samples, n_features]的二维数组。许多算法也接受形状相同的scipy.sparse矩阵。 n_sampl
本文向大家介绍Python操作SQLite简明教程,包括了Python操作SQLite简明教程的使用技巧和注意事项,需要的朋友参考一下 一、SQLite简介 SQLite是一个包含在C库中的轻量级数据库。它并不需要独立的维护进程,并且允许使用非标准变体(nonstandard variant)的SQL查询语句来访问数据库。一些应用可是使用SQLite保存内部数据。它也可以在构建应用原型的时候使用,