数据库简介
数据库是指以一定方式存储在一起,能为多个用户共享,具有尽可能小的冗余特性,是与应用程序彼此独立的数据集合
- 相关术语–DB 数据库(database)
- DBMS数据库管理系统
- DBA数据库管理员
- RDB关系式数据库
常见的商业数据库
- 甲骨文Oracle
- 微软的Sqlserver
- IBM的DB2
- 常见的开源数据库,Sun公司的Mysql,2009年sun公司被Oracle收购,所以mysql现在属于甲骨文旗下的产品
- 开源的SQLite,轻量级嵌入式关系型数据库
数据库操作语言(SQL)
- SQL(StructuredQueryLanguage)是一种针对数据库的结构化查询语言,用于实现数据库查询和程序设计,常用于关系数据库系统,实现数据存取、查询、更新等操作。
常用的SQL语句
- 数据操作语言(DML):SELECT、INSERT、DELETE、UPDATE
- 数据定义语言(DDL):CREATETABLE
Sqlite数据库
SQLite是一个轻量级的开源数据库,源代码完全公开不受版权限制,实现了自给自足的、无服务器、零配置的SQL数据库引擎,也是最广泛使用关系式数据库
SQLite(www.sqlite.org)提供SQLite的已编译版本和源代码程序,目前支持如下平台:
–Linux
–MacOSX
–Windows
–WindowsPhone8
–WindowsRuntime
Sqlite工作原理
- SQLite引擎不是程序与之通信的独立进程,而是以静态库或共享库的方式连接到程序中,而不同于客户端-服务器数据库连接方式,所以主要的使用方法是在编程语言内的直接API调用,当前主流的编程语言,如C/C+、java、python等都提供了sqlite操作的API接口
- SQLite在资源消耗、实时性和可操作性有着出色的表现,整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件中,通常SQLite的工作是在开始一个事务的时候锁定整个数据文件而实现
Sqlite主要特性
- SQLite不需要一个单独的服务器进程或操作的系统(无服务器的)
- SQLite可以不用配置,安装或管理十分简单
- SQLite数据库是存储在一个单一的跨平台的磁盘文件
- SQLite是非常小的,是轻量级的,完全配置时小于400KiB,省略可选功能配置时小于250KiB
- SQLite是自给自足的,开发者不需要外部的依赖
- SQLite支持SQL92标准的大多数查询语言的功能
- SQLite事务是完全兼容ACID的,允许从多个进程或线程安全访问
- 注:ACID即原子性、一致性、隔离性、持久性
Sqlite的操作指令
- 进入SQLite的命令行界面后,可以输入两种指令,一种是自身配置和格式控制相关指令,这些指令都以“.”开头;另外一种指令是SQL语言(Sql语句),实现对数据库的增删改查等操作,这些指令以“;”结束
- 输入.help或.h可以获取以“.”开头指令的帮助信息
- 输入.exit或.quit退出SQLite的命令界面,回到系统的控制终端
- 如果需要清屏,可以使用“ctrl+L”
以“.”开头的常用命令
-
.database
//查看数据库的名字和对应的文件名 -
.table
//查看数据表的名字 -
.schema
//查看数据表创建时的详细信息 -
.mode
//设置显示模式,如tab/list/column/html/… -
.nullvalue
//设置空白字段显示的字符串 -
.header on
//显示数据表的表头
创建一个数据库:
创建数据库文件–
启动sqlite时一般需要指定数据库文件,将来和数据管理相关操作,如添加数据表,以及对数据表中数据的增删改查等都将保存在该的文件中,如果没有指定数据库文件,将会把数据临时存放在内存中,退出sqlite后数据不会保存–
通常数据库文件以.db
作为后缀标记,如果指定文件不存在将会自动创建
sqlite3 test.db
创建一个数据表:
CREATE TABLE StuDent(Id INT PRIMARY KEY NOT NULL,Name TEXT NOT NULL,Scor REAL);
限制值唯一:PRIMARY KEY
限制值不能为空:NOT NULL
常用的类型:INT(整型)、TEXT(字符串)、REAL(浮点数)
设置显示表头:.header on;
设置显示模式:.mode tab;
创建数据表
语法格式:CREATETABLE表名(列名1类型[约束],列名2类型[约束],...);
常用的类型:INT(整型)、TEXT(字符串)、REAL(浮点数)
常用的约束:PRIMARYKEY(主键)
表示该列数据唯一,可以加快数据访问.
NOTNULL(非空):
该列数据不能为空
查询数据库:
select * from StuDent;
查询指定类型:
select Id,Scor from StuDent;
select Id,Scor from StuDent where Scor >= 60;
排序查询:
select * from StuDent order by Scor ASC;
升序
select * from StuDent order by Id desc;
降序
模糊查询:
select * from StuDent where Name like '张_';
select * from StuDent where Name like '张%';
新增数据
INSERT INTO StuDent(Id,Name,Scor) values(4,"小乔",60);
INSERT INTO StuDent(Id,Name) values(3,"张飞");
INSERT INTO StuDent values(3,"张飞",99);
删库:
DROP TABLE StuDent;
删除指定数据:DELETE FROM StuDent WHERE Id = 3
删除指定范围数据:
DELETE FROM StuDent WHERE Scor >= 80
DELETE FROM StuDent WHERE Scor >= 80 and Scor < 90;
DELETE FROM StuDent WHERE Scor >= 80 or Scor < 90;
修改数据:
全局修改:UPDATE StuDent SET Scor = Scor+10;
指定修改:UPDATE StuDent SET name = "张宇" where id = 3;