您的位置:首页 > 数据库

了解常用的数据库就能了解现在以及未来数据库发展的趋势.1

2013-09-17 11:23 816 查看
需要掌握的技能:

数据库基础与SQL使用

SQLite数据库操作

Junit测试框架

用SimpleCursorAdapter将数据信息显示到ListView

Android中两大重要功能:联网和数据处理

Android存储数据的功能:

在SDCARD中存储

使用SharedPreference以XML方式存储配置参数信息

SharedPreference是一个轻量级的存储类

但是大量数据的存储就会用到现在学习的SQLite数据库

ContentProvider它对外提供了一种共享数据的方式.

网络也是今后数据存储的一个重要方向

今天重点学习SQLite数据库

信息爆炸的时代

计算机的出现,使人们想到使用计算甲代替存储管理.经过不断的探索就出现了现在的数据库

对数据库的定义现在还没有一个统一

数据库是一个长期存储在计算机内部,有组织的,可共享的统一管理数据的集合,

数据库是一个按照数据结构划分和管理数据的计算机软件系统,

数据库的作用:

高效且条理分明地存储数据

可以结构化存储大量的数据信息

可以有效的爆出数据的一致性.完整性.降低数据冗余

可以满足应用的共享和安全方面的要求

可以对数据进行方便智能化地分析.产生新的有用信息

数据库管理系统:DBMS  (Database Management System)   是一种操纵和管理数据库地大型软件

DBMS对数据进行统一和控制.以保证数据库的安全性和完整性

最初的数据库分为:

    层次结构数据库


    网状结构数据库   但是由于网状结构数据库结构复杂.没有被广泛使用


    IBM公司的层次模型系统得到了很大的发展,而且直到今天已经拥有了极大地客户群.在特定的领域体现出了强大的生命力


关系数据数据库是第二代数据库.德加提出了关系数据库的概念之后,IBM投入的大量的资源进行研究.

关系数据库的底层实现比较容易.所以很快被采用

Oracel公司就是当时关系数据库出现的时候.成立的专门做关系型数据库的公司

IBM公司的关系型数据库DB2问世.

而oracle公司将Oracle数据库移植到了桌面计算机

这个时候关系型数据库逐渐取代网状和层次结构的数据库系统占据了主导地位.1980

关系数据库使用的是结构化查询语言SQL .

作为数据库的定义和操纵语言.这种语言和普通的面向对象的语言和面向过程的语言不同.

SQL语言一诞生就成为了关系数据库的标准语言.

SQL语言使得数据库表查询可以很简单.以声明的方式的进行.

现在占有数据库市场有一席之地主要是:ORACEL .  DB2.   MySQL.  SQL Server

Oracle公司的Oracle数据库.号称世界上最好的数据库.最初就是专门的数据库公司.为大中小型计算机提供数据产品.Oracle数据库可以支持70多种操作系统.这个其他产品难以企及的优势.Oracle数据库是世界上使用最广泛的数据库之一.

SQL Server是微软的数据库系统.是典型的的关系型数据库.它具有可靠性.可伸缩性.可用性.可管理性等特点.对用户提供完整的解决方案.由于SQL Server是开放式的系统.可以与其他系统进行完好的交互操作.

MySql是一个小型的关系型数据库系统.被广泛的应用在了Internet中小型网站中.由于它体积小.速度快.总体拥有成本低的特点,而且他是开源(开放源码)的.所以许多网站都采用了MySql作为网站的数据库.MySql现在已经被Sun公司收购了,Sun公司又被Oracle公司收购了.所以现在MySql是Oracle旗下的产品.

SQL Structured Query language  结构化查询语言

SQL是一种数据库查询语言和程序设计语言.用于存储数据以及查询.更新和管理关系型数据库系统.

SQL最早出现在IBM开发的关系型数据库System R中.自推出以来受到了广泛使用.市场上的大型的数据库管理系统都支持SQL语言:

    SQL语言分为四部分:


    数据库定义语言  DDL  create.drop.alter语句  用来创建和管理的对象时数据库和表


    数据库查询语言  DML 是用来操纵数据库对象所包含的数据.insert.update.delete


    数据库查询语言 DQL 用来对数据库包含的数据进行查询统计 select


    数据库查询语言是我们操作数据库最核心最常用的语言.


    数据库控制语言 DCL  如:grant.revoke.commit.rollback


grant.revoke用来对用户设置和回收权限.

.commit.rollback对数据库进行提交和回滚. 常用于数据库的事物处理

以下为SQLite:

Google在Android中集成了.一个嵌入式的关系型数据库SQLite.专门用来处理数据量大的数据.在数据存储.管理和维护方面更加合理.

SQLite是轻型的嵌入式的关系型数据库.目前许多嵌入式产品中均使用了Sqlite.SQLite占用的资源特别低.在嵌入式设备中只要几百KB就足够了,这或许就是Android系统集成此数据库的原因所在.

SQLite可以支持window.Linux.unix等主流的操作系统.同时能跟多种语言相结合.比如java.php等SQLite使用C语言编写的开源嵌入式数据库.

SQLite数据库的特点如下:

    跨平台:SQLite数据库支持大部分操作系统.除了PC系统外.许多手机操作系统也可以使用.


    操作简单:SQLite数据库无需进行安装和管理配置.不依赖第三方软件,它的API相当的简单.


    轻量级:不需要客户端和服务器.整个数据库足够小.使用SQLite只需要带上它的动态库.就可以使用全部功能.整个动态库也就是几百KB的大小.相当小.


    占用资源低:只需要几百KB的内存就可以运行了.


    完全开源


    多语言接口


    查询速度非常快

SQLite的缺点:



    对SQL标准支持不全.


    不适合并发性(两个或多个事件在同一时间间隔内发生)高的场合

SQLite数据库创建:

    public abstract SQLiteDatabase openOrCreateDtabase(String name,int mode,CursorFactory factory)


第一个参数:数据库名称

第二个参数:创建模式 

第三个参数:游标工厂.默认为null,意思是使用默认的游标工厂对象

SQLite数据库删除:

    public anstract boolean deleteDatabase(String name)  返回一个boolean值


实体:实体是客观存在的可以描述的事物(SQLite中)



不同的数据体现了不同的实体.



数据库中的格式就是按照这种方式进行存储的.而不是杂乱无章的.

相同格式的数据存储在一起.而不会把任何书本混合存储.

简单的说数据库就是表的集合.表是一种结构化文件.可以存储各种特定的数据.

同一张表中是同种类型的数据.检索起来效率才高.

表由列组成.列中存储的表中某部分的信息.列是表中的字段.一个表可以有一个或者多个列组成.

在数据库表中列一般被称为字段

表中的数据是按行存储的.

数据库表中的每一行对应一个实体.这样的一行通常叫做一条记录.

表示实体的集合.

通常我们说把数据存储到数据库里.实际上是存储在数据库中的表里面.

表结构:

    一个表的字段.字段的类型等这些基本属性组成了表的结构.

    表结构的划分尤为重要.

    例如一个商品表:



    在满足了设计需求以后,则需要考虑性能需求和性能扩展.

    

    关联两张表,最简单的方法就是使用外键.

    

    主键用来唯一的标识每一列.

    选择主键的时候,遵循最少性和稳定性原则.

    

    最少性:尽量选择单列作为主键,操作一列比操作多列快得多.

    稳定性:主键数据的稳定性.主键列不要经常更新.理想情况下,永远不要更新和改变.



    主键一般都设置为自动增长.



对于一对多的关系.外键设置在多的一方.



重点在最后一句话中.

    FOREIGN KEY (外键名)  指定哪个字段是外键.

    REFERENCES 表名  字段名  :表示与哪张表的哪个字段相关联.

优秀是一种习惯:

    1.SQL语句对大小写不敏感,也就是说大小写都可以.但是关键字通常写成大写的.

    2.在创建表的最后一条语句后面是不能加逗号的,加了会出错.

    3.在插入数据的时候,如果是字符串和日期类型,就要加单引号.否则会出错.

    

    4.在命名主键的时候习惯上在字段前面加大写的PK_再加字段名,这样别人一看就知道它是这个表的主键.

    5.命名外键的时候也是一样的,前面加上大写的FK_.这样方便阅读,让你的代码更加专业.

SQLite支持的数据类型:

    大多数数据库(SQL SERVER,ORACLE,MYSQL)都使用严格的数据类型,所以数据类型非常多,SQLite支持5中数据类型:

    NULL.(Null值).

    

    INTEGER(有符号整数)

    REAL(浮点值)

    TEXT(字符串)

    BLOB(二进制值)

    实际上SQLite3也接受int,REAL.varchar(n),char(n)等数据类型

    SQLite最大的特点就是你可以把各种数据类型保存到任何字段中,而不用关心字段声明的数据类型是什么.也可以        理解为无数据类型.

    SQLite不强制数据类型.任何类型都可以插入任何列中,你可以向一个整型列种插入字符串.除了被标识为INTEGER PRIMARY KEY的列,整型的主键类只能存储64位的整数.

    当数据插入每一列的时候,SQLite将检查它的类型,如果类型与关联的列不匹配,SQLite会尝试将该数据转换为该列的数据类型,如果不能转换,将会作为其本身具有的数据类型.

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐