SQLite之基础篇
1、SQLite3简介SQLite是嵌入式关系型数据库引擎。它是一个独立的、无服务器、零配置、事务型SQL数据库引擎。它流行世界各地,被用于Solaris 10、Mac OS、Android、iPhone中。Qt4、Python、PHP都有内置的SQLite。许多流行的应用也都使用SQLite,如Firefox、Google Chrome、Amarok。适合桌面程序和小型网站的数据库服务器。SQLite直接读写在硬盘上的数据库文件。
劣势:
在gentoo下安装SQLite3: $ sudo emerge -avt dev-db/sqlite 2、SQL(Structured Query Language)语言基本语法2.1 数据库操作1) 新建数据库$ sqlite3 test.db SQLite version 3.8.11.1 2015-07-29 20:00:57 Enter ".help" for usage hints. sqlite> 2) 数据库备份sqlite3 test.db .dump > test.sql //数据库备份 或者 sqlite> .output test.sql sqlite> .dump sqlite> .exit 3) 导入一个备份sqlite3 test.db < test.sql 4) 卸载将当前连接中的指定数据库sqlite> DETACH DATABASE mydb; 5) ATTACH DATABASE语句添加另外一个数据库文件到当前的连接中,":memory:"为内存数据库。 sqlite> ATTACH DATABASE '~/tmp/mydb.db' AS mydb; 2.2 创建数据表1) 最简单的数据表sqlite> CREATE TABLE testtable (first_var integer); 注意:testtable不要以sqlite_开头,因为该前缀定义的表名都用于sqlite内部. 2) 创建带有缺省值的数据表sqlite> CREATE TABLE testtable (first_col integer DEFAULT 0,second_col varchar DEFAULT 'hello'); 3) 在指定数据库创建表sqlite> ATTACH DATABASE '~/tmp/mydb.db' AS mydb;//mydb.db不一定存在 sqlite> CREATE TABLE mydb.testtable (first_col integer); 4) IF NOT EXISTS从句如果你要创建的数据表已存在,则使用之前的创建表语句会发生错误,这就需要加上IF NOT EXISTS从句. sqlite> CREATE TABLE IF NOT EXISTS testtable (first_col integer); 5) CREATE TABLE ... AS SELECT新创建的表将会包含SELECT查询返回的结果集的所有数据,但是不包含缺省值和主键等约束信息。 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);//ASC 联合主键 sqlite> CREATE TABLE testtable2 (first integer,second integer,PRIMARY KEY (first_col,second_col)); 7) 唯一性约束sqlite> CREATE TABLE testtable (first_col integer UNIQUE); 两个列的唯一性约束 sqlite> CREATE TABLE testtable2 (first integer,UNIQUE (first_col,second_col)); 8) 为空(NOT NULL)约束sqlite> CREATE TABLE testtable(first_col integer NOT NULL); 9) 检查性约束sqlite> CREATE TABLE testtable (first_col integer CHECK (first_col < 5)); 2.3 数据表的修改1) 修改表名SQLite中表名的修改只能在同一个数据库,表名被修改后,该表已存在的索引将不会受到影响,然而依赖该表的视图和触发器将不得不重新修改其定义。 sqlite> ALTER TABLE testtable RENAME TO testtable2; 2) 新增字段sqlite> ALTER TABLE testtable ADD COLUMN second_col integer; 2.4 表的删除sqlite> DROP TABLE testtable; sqlite> DROP TABLE IF EXISTS testtable; 2.5 插入数据sqlite> INSERT INTO testtable VALUES(2); 2.6 显示数据表的数据为了增减输出的易读性 sqlite> .echo on sqlite> .mode on sqlite> .headers on sqlite> .nullvalue NULL 显示语法 sqlite> SELECT * FROM testtablel; sqlite> SELECT fisrt FROM testtablel; 2.7 数据表中数据的操作1) 更新数据表里的某些数据sqlite> UPDATE testtable SET first=2 WHERE ID = 1; 2) 删除数据表中的全部数据sqlite> DROP FROM testtable; 3) 删除数据表中的某些数据sqlite> DROP FROM testtable WHERE ID = 1 AND NAME = yxg; 2.8 事务:如果没有为当前的SQL命令(SELECT除外)显示的指定事务,那么SQLite会自动为该操作添加一个隐式的事务,以保证该操作的原子性和一致性。 sqlite> BEGIN TRANSACTION; sqlite> INSERT INTO testtable VALUES(1); sqlite> INSERT INTO testtable VALUES(2); sqlite> COMMIT TRANSACTION;--显示事务被提交,数据表中的数据也发生了变化。 sqlite> SELECT COUNT(*) FROM testtable; COUNT(*) 2 sqlite> BEGIN TRANSACTION; sqlite> INSERT INTO testtable VALUES(1); sqlite> ROLLBACK TRANSACTION; --显示事务被回滚,数据表中的数据没有发生变化。 sqlite> SELECT COUNT(*) FROM testtable; COUNT(*) 2 3、数据类型3.1 存储种类SQLite将数据值的存储划分为以下几种存储类型: 3.2 比较表达式"=","==","<","<=",">",">=","!=","<>","IN","NOT IN","BETWEEN","IS" and "IS NOT"。 4、命令行工具.help //列出所有内置命令 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 为多个swift参数设置相同的值
- Oracle的字符串OUTER JOIN() – Migration PostgreSQL
- flex4 启动事件的理解preinitialize,initialize,creationCo
- Ajax向服务器发送请求
- c# – 从Emgu 2升级到Emgu 3.1.0.1后随机发生的Emgu Access
- ruby – 在Ubuntu 12.04上安装Compass和Susy
- [代码实例][C语言][sqlite3]用SQL语句查询数据库的实例
- Swfit4.0中JSON与模型原生互转(JSONEncoder/JSONDecoder的使
- unity基础开发----常用代码Unity中解析XML
- 正则化