<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Elton&#039;s Blog &#187; Database</title>
	<atom:link href="http://blog.prosight.me/index.php/category/agile-web-development/database/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.prosight.me</link>
	<description>移动开发，敏捷web开发，Linux服务器部署维护，web UI和UE设计，摄影</description>
	<lastBuildDate>Wed, 08 Feb 2012 00:22:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>可伸缩性架构常用技术——之数据切分（Data Sharding/Partition）</title>
		<link>http://blog.prosight.me/index.php/2012/01/885?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%258f%25af%25e4%25bc%25b8%25e7%25bc%25a9%25e6%2580%25a7%25e6%259e%25b6%25e6%259e%2584%25e5%25b8%25b8%25e7%2594%25a8%25e6%258a%2580%25e6%259c%25af%25e2%2580%2594%25e2%2580%2594%25e4%25b9%258b%25e6%2595%25b0%25e6%258d%25ae%25e5%2588%2587%25e5%2588%2586%25ef%25bc%2588data-shardingpartition%25ef%25bc%2589</link>
		<comments>http://blog.prosight.me/index.php/2012/01/885#comments</comments>
		<pubDate>Sun, 29 Jan 2012 08:29:48 +0000</pubDate>
		<dc:creator>Elton</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Partition]]></category>
		<category><![CDATA[Sharding]]></category>

		<guid isPermaLink="false">http://blog.prosight.me/?p=885</guid>
		<description><![CDATA[1. 简介 我们知道，为了应对不断增长的数据，我们对数据进行切分，存储在不同的数据库里，本文提到的数据库在非特定指明的情况下，均指一个逻辑数据库（是一组数据库，比如Master-Slave），而非单一各个物理数据库。 其主要有两种方式： 垂直切分（Vertical Partition/Sharding）:就是把不同格式的数据，存储到不同的数据库。 水平切分（Horizontal Partition/Sharding）:就是把相同的数据格式的数据，存储到不同的数据库，本文将侧重这点进行讲述。 2. 垂直切分（Vertical Partition/Sharding） 对于垂直切分，其实应用非常广泛，主旨是把那些关系依赖非常紧密的数据保存到同一数据库，主要包含如下几种应用方式： 不同的应用使用不同数据库:这个非常容易理解，即对于一个企业来讲，往往有多个应用，甚至有些应用逐渐演变成两个或者多个应用，这其实就是一种垂直切分应用。 应用的不同模块使用不同的数据库:为同一应用的不同模块分别使用不同的数据库，之间提供低耦合的API进行访问。 同一应用相同模块使用不同数据库:在一些应用中，对于适合关系查询的数据，保存在关系数据库，而另外一些适合以NoSQL数据库保存的数据（例如key-value数据库），保存在NoSQL数据库中，方便数据扩展。这里给出一个例子，比如一个论坛应用，可以对个人用户信息保存在关系数据库，例如，其访问次数，个人信息等等，而对于发表的帖子和回帖，则可以保存在一个NoSQL里，方便扩展。注意，这里给出的例子并非真实例子，只是为了易于说明给出一个假设性的例子。 3. 水平切分（Horizontal Partition/Sharding） 水平切分相对比较复杂，我们还是从水平切分的策略谈起。 3.1 水平切分策略主要分为以下几种： 1. Round-Robin（轮询式）算法 顾名思义，就是把数据按照轮流的方式依次存放在的数据库节点上，比如，有2个节点，N0和N1，那么Data0放在N0节点上，Data1放在N1上，Data2放在N0上，依次类推……。 这种方式实现起来非常容易，对于数字键，我们有：n = key mod N。其中，key为数据的键，N为节点的数量，n为存放数据的节点编号；对于那些非数字键，我们可以让其转变为数字键，比如通过某些hash函数，让键值均匀分布，于是有：n = f (key) mod N。 这种方式有个缺点非常明显，不容易应对数据节点的变化，即不易进行二次切分。所谓二次分片是指，当数据的增长超过数据库容量时，需要增加数据库，或者系统故障导致某些数据库不能使用时，这时需要重新切分数据库。例如，有两个节点，N0和N1，现在需要增加一个节点N2，这时候，都需要吧N0上的数据和N1上的数据迁移到N2上，这个工作量是巨大的；并且可能导致上层应用对数据的改变，比如，之前数据Data5存储在N1上面，上层应用访问该数据时，根据key=5知道其存储在数据库N1里，那么便会在N1里查询数据，现在增加另外一个节点N2，那么这条数据被迁移到N2上了，上层应用就应该去N2上查询此数据了，这个看似简单，其实往往导致应用程序的复杂性很高。 2. 虚拟分片技术 为了保证二次分片时，避免对上层应用因为实际物理数据库发生改变而引起对数据访问逻辑的改变，中间加入了一个虚拟片段—物理片段映射表，数据对象存储在虚拟分片上，每个虚拟片段通过这个映射表找到相应的物理片段。这时间，上层应用依赖于虚拟分片，而非物理分片，只要保证虚拟片段足够多，就能避免上层应用的依赖。 3. 一致性Hash算法 为了避免数据库数量发生变化，引起大规模的数据迁移问题，而引入了一致性Hash算法。此算法由David Karger等人发表于1997年，论文题目为《Consistent hashing and random trees: distributed caching protocols for relieving hot spots on the [...]]]></description>
		<wfw:commentRss>http://blog.prosight.me/index.php/2012/01/885/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Redis中7种集合类型应用场景</title>
		<link>http://blog.prosight.me/index.php/2011/08/802?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=redis%25e4%25b8%25ad7%25e7%25a7%258d%25e9%259b%2586%25e5%2590%2588%25e7%25b1%25bb%25e5%259e%258b%25e5%25ba%2594%25e7%2594%25a8%25e5%259c%25ba%25e6%2599%25af</link>
		<comments>http://blog.prosight.me/index.php/2011/08/802#comments</comments>
		<pubDate>Tue, 30 Aug 2011 02:44:34 +0000</pubDate>
		<dc:creator>Elton</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Redis]]></category>

		<guid isPermaLink="false">http://blog.prosight.me/?p=802</guid>
		<description><![CDATA[Strings Strings 数据结构是简单的key-value类型，value其实不仅是String，也可以是数字。使用Strings类型，你可以完全实现目前 Memcached 的功能，并且效率更高。还可以享受Redis的定时持久化，操作日志及 Replication等功能。除了提供与 Memcached 一样的get、set、incr、decr 等操作外，Redis还提供了下面一些操作： 获取字符串长度 往字符串append内容 设置和获取字符串的某一段内容 设置及获取字符串的某一位（bit） 批量设置一系列字符串的内容 Hashs 在Memcached中，我们经常将一些结构化的信息打包成hashmap，在客户端序列化后存储为一个字符串的值，比如用户的昵称、年龄、性别、积分等，这时候在需要修改其中某一项时，通常需要将所有值取出反序列化后，修改某一项的值，再序列化存储回去。这样不仅增大了开销，也不适用于一些可能并发操作的场合（比如两个并发的操作都需要修改积分）。而Redis的Hash结构可以使你像在数据库中Update一个属性一样只修改某一项属性值。 Lists Lists 就是链表，相信略有数据结构知识的人都应该能理解其结构。使用Lists结构，我们可以轻松地实现最新消息排行等功能。Lists的另一个应用就是消息队列，可以利用Lists的PUSH操作，将任务存在Lists中，然后工作线程再用POP操作将任务取出进行执行。Redis还提供了操作Lists中某一段的api，你可以直接查询，删除Lists中某一段的元素。 Sets Sets 就是一个集合，集合的概念就是一堆不重复值的组合。利用Redis提供的Sets数据结构，可以存储一些集合性的数据，比如在微博应用中，可以将一个用户所有的关注人存在一个集合中，将其所有粉丝存在一个集合。Redis还为集合提供了求交集、并集、差集等操作，可以非常方便的实现如共同关注、共同喜好、二度好友等功能，对上面的所有集合操作，你还可以使用不同的命令选择将结果返回给客户端还是存集到一个新的集合中。 Sorted Sets 和Sets相比，Sorted Sets增加了一个权重参数score，使得集合中的元素能够按score进行有序排列，比如一个存储全班同学成绩的Sorted Sets，其集合value可以是同学的学号，而score就可以是其考试得分，这样在数据插入集合的时候，就已经进行了天然的排序。另外还可以用Sorted Sets来做带权重的队列，比如普通消息的score为1，重要消息的score为2，然后工作线程可以选择按score的倒序来获取工作任务。让重要的任务优先执行。 Pub/Sub Pub/Sub 从字面上理解就是发布（Publish）与订阅（Subscribe），在Redis中，你可以设定对某一个key值进行消息发布及消息订阅，当一个key值上进行了消息发布后，所有订阅它的客户端都会收到相应的消息。这一功能最明显的用法就是用作实时消息系统，比如普通的即时聊天，群聊等功能。 Transactions 谁说NoSQL都不支持事务，虽然Redis的Transactions提供的并不是严格的ACID的事务（比如一串用EXEC提交执行的命令，在执行中服务器宕机，那么会有一部分命令执行了，剩下的没执行），但是这个Transactions还是提供了基本的命令打包执行的功能（在服务器不出问题的情况下，可以保证一连串的命令是顺序在一起执行的，中间有会有其它客户端命令插进来执行）。Redis还提供了一个Watch功能，你可以对一个key进行Watch，然后再执行Transactions，在这过程中，如果这个Watched的值进行了修改，那么这个Transactions会发现并拒绝执行。]]></description>
		<wfw:commentRss>http://blog.prosight.me/index.php/2011/08/802/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>MongoDB与内存管理</title>
		<link>http://blog.prosight.me/index.php/2011/08/792?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mongodb%25e4%25b8%258e%25e5%2586%2585%25e5%25ad%2598%25e7%25ae%25a1%25e7%2590%2586</link>
		<comments>http://blog.prosight.me/index.php/2011/08/792#comments</comments>
		<pubDate>Sat, 20 Aug 2011 01:33:01 +0000</pubDate>
		<dc:creator>Elton</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[mongodb]]></category>

		<guid isPermaLink="false">http://blog.prosight.me/?p=792</guid>
		<description><![CDATA[但凡初次接触MongoDB的人，无不惊讶于它对内存的贪得无厌，至于个中缘由，我先讲讲Linux是如何管理内存的，再说说MongoDB是如何使用内存的，答案自然就清楚了。 据说带着问题学习更有效，那就先看一个MongoDB服务器的top命令结果： 1 2 3 4 5 6 shell&#38;gt; top -p $&#40;pidof mongod&#41; Mem: 32872124k total, 30065320k used, 2806804k free, 245020k buffers Swap: 2097144k total, 100k used, 2097044k free, 26482048k cached &#160; VIRT RES SHR %MEM 1892g 21g 21g 69.6 这台MongoDB服务器有没有性能问题？大家可以一边思考一边继续阅读。 先讲讲Linux是如何管理内存的 在Linux里（别的系统也差不多），内存有物理内存和虚拟内存之说，物理内存是什么自然无需解释，虚拟内存实际是物理内存的抽象，多数情况下，出于方便性的考虑，程序访问的都是虚拟内存地址，然后操作系统会把它翻译成物理内存地址。 很多人会把虚拟内存和Swap混为一谈，实际上Swap只是虚拟内存引申出的一种技术而已：操作系统一旦物理内存不足，为了腾出内存空间存放新内容，就会把当前物理内存中的内容放到交换分区里，稍后用到的时候再取回来，需要注意的是，Swap的使用可能会带来性能问题，偶尔为之无需紧张，糟糕的是物理内存和交换分区频繁的发生数据交换，这被称之为Swap颠簸，一旦发生这种情况，先要明确是什么原因造成的，如果是内存不足就好办了，加内存就可以解决，不过有的时候即使内存充足也可能会出现这种问题，比如MySQL就有可能出现这样的情况，解决方法是限制使用Swap： 1 shell&#38;gt; sysctl -w vm.swappiness=0 查看内存情况最常用的是free命令： 1 2 3 4 5 [...]]]></description>
		<wfw:commentRss>http://blog.prosight.me/index.php/2011/08/792/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Query Cache</title>
		<link>http://blog.prosight.me/index.php/2010/07/618?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mysql-query-cache</link>
		<comments>http://blog.prosight.me/index.php/2010/07/618#comments</comments>
		<pubDate>Mon, 05 Jul 2010 03:41:38 +0000</pubDate>
		<dc:creator>Elton</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Cluster]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[Query Cache]]></category>

		<guid isPermaLink="false">http://blog.prosight.me/?p=618</guid>
		<description><![CDATA[顾名思义，MySQL Query Cache 就是用来缓存和 Query 相关的数据的。具体来说，Query Cache 缓存了我们客户端提交给 MySQL 的 SELECT 语句以及该语句的结果集。大概来讲，就是将 SELECT 语句和语句的结果做了一个 HASH 映射关系然后保存在一定的内存区域中。 在大部分的 MySQL 分发版本中，Query Cache 功能默认都是打开的，我们可以通过调整 MySQL Server 的参数选项打开该功能。主要由以下5个参数构成： query_cache_limit：允许 Cache 的单条 Query 结果集的最大容量，默认是1MB，超过此参数设置的 Query 结果集将不会被 Cache query_cache_min_res_unit：设置 Query Cache 中每次分配内存的最小空间大小，也就是每个 Query 的 Cache 最小占用的内存空间大小 query_cache_size：设置 Query Cache 所使用的内存大小，默认值为0，大小必须是1024的整数倍，如果不是整数倍，MySQL 会自动调整降低最小量以达到1024的倍数 query_cache_type：控制 Query Cache 功能的开关，可以设置为0(OFF),1(ON)和2(DEMAND)三种，意义分别如下： 0(OFF)：关闭 Query Cache 功能，任何情况下都不会使用 Query Cache [...]]]></description>
		<wfw:commentRss>http://blog.prosight.me/index.php/2010/07/618/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Oracle导入数据</title>
		<link>http://blog.prosight.me/index.php/2010/01/556?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=oracle%25e5%25af%25bc%25e5%2585%25a5%25e6%2595%25b0%25e6%258d%25ae</link>
		<comments>http://blog.prosight.me/index.php/2010/01/556#comments</comments>
		<pubDate>Sat, 16 Jan 2010 11:57:53 +0000</pubDate>
		<dc:creator>Elton</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[ctl]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://blog.prosight.me/?p=556</guid>
		<description><![CDATA[导入sql表结构 • 用sqlplus命令登录Oracle 1 sqlplus system/password@orcl • 使用@命令导入sql文件 1 SQL&#62; @/path/to/file/sample.sql 2. 导入数据 • 导入ctl文件 在命令行中，执行 1 sqlldr userid=username/password control=sample.ctl]]></description>
		<wfw:commentRss>http://blog.prosight.me/index.php/2010/01/556/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle数据库列出所有表</title>
		<link>http://blog.prosight.me/index.php/2010/01/551?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=oracle%25e6%2595%25b0%25e6%258d%25ae%25e5%25ba%2593%25e5%2588%2597%25e5%2587%25ba%25e6%2589%2580%25e6%259c%2589%25e8%25a1%25a8</link>
		<comments>http://blog.prosight.me/index.php/2010/01/551#comments</comments>
		<pubDate>Sun, 10 Jan 2010 08:20:29 +0000</pubDate>
		<dc:creator>Elton</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[table_name]]></category>

		<guid isPermaLink="false">http://blog.prosight.me/?p=551</guid>
		<description><![CDATA[可以使用下面的命令来列出当前用户所有的表 1 2 select * from tab; select table_name from user_tables; 如果想列出所有的表，可以使用 1 select table_name from all_tables;]]></description>
		<wfw:commentRss>http://blog.prosight.me/index.php/2010/01/551/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle数据库建立表空间、用户以及授权</title>
		<link>http://blog.prosight.me/index.php/2010/01/544?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=oracle%25e6%2595%25b0%25e6%258d%25ae%25e5%25ba%2593%25e5%25bb%25ba%25e7%25ab%258b%25e8%25a1%25a8%25e7%25a9%25ba%25e9%2597%25b4%25e3%2580%2581%25e7%2594%25a8%25e6%2588%25b7%25e4%25bb%25a5%25e5%258f%258a%25e6%258e%2588%25e6%259d%2583</link>
		<comments>http://blog.prosight.me/index.php/2010/01/544#comments</comments>
		<pubDate>Sun, 10 Jan 2010 07:58:50 +0000</pubDate>
		<dc:creator>Elton</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[grant]]></category>
		<category><![CDATA[ORA-00972]]></category>
		<category><![CDATA[ORA-01950]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[tablespace]]></category>
		<category><![CDATA[授权]]></category>
		<category><![CDATA[表空间]]></category>

		<guid isPermaLink="false">http://blog.prosight.me/?p=544</guid>
		<description><![CDATA[• 用system用户登录。system用户默认就有DBA的权限 1 sqlplus system/password@orcl • 查看数据文件存放位置 1 2 3 4 5 6 7 8 9 select file_name from dba_data_files; &#160; FILE_NAME -------------------------------------------------------------------------------- /Users/oracle/oradata/orcl/users01.dbf /Users/oracle/oradata/orcl/sysaux01.dbf /Users/oracle/oradata/orcl/undotbs01.dbf /Users/oracle/oradata/orcl/system01.dbf /Users/oracle/oradata/orcl/example01.dbf • 建立临时表空间 1 2 3 4 5 6 7 8 create temporary tablespace decernis_temp tempfile '/Users/oracle/oradata/orcl/decernis_temp01.dbf' size 32m autoextend on next 32m maxsize 2048m extent management local; [...]]]></description>
		<wfw:commentRss>http://blog.prosight.me/index.php/2010/01/544/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>针对SQLite3为Cocoa 和 Cocoa Touch设计的持久化对象</title>
		<link>http://blog.prosight.me/index.php/2009/10/432?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e9%2592%2588%25e5%25af%25b9sqlite3%25e4%25b8%25bacocoa-%25e5%2592%258c-cocoa-touch%25e8%25ae%25be%25e8%25ae%25a1%25e7%259a%2584%25e6%258c%2581%25e4%25b9%2585%25e5%258c%2596%25e5%25af%25b9%25e8%25b1%25a1</link>
		<comments>http://blog.prosight.me/index.php/2009/10/432#comments</comments>
		<pubDate>Mon, 26 Oct 2009 12:01:33 +0000</pubDate>
		<dc:creator>Elton</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[SQLite Persistent Objects]]></category>
		<category><![CDATA[sqlitepersistentobjects]]></category>

		<guid isPermaLink="false">http://blog.prosight.me/?p=432</guid>
		<description><![CDATA[向大家推荐一款很不错的轻量级的Cocoa持久化对象 &#8212; sqlitepersistentobjects 使用起来跟ActiveRecord很类似，也非常简单 将下载的zip中的所有文件加入你的项目中，然后链接libsqlite3.dylib，之后你就可以声明实体类了。 1 2 3 4 5 6 7 8 9 10 #import &#60;foundation/foundation.h&#62; #import &#34;SQLitePersistentObject.h&#34; &#160; @interface PersistablePerson : SQLitePersistentObject &#123; NSString *lastName; NSString *firstName; &#125; @property &#40;nonatomic, retain&#41; NSString * lastName; @property &#40;nonatomic, retain&#41; NSString * firstName; @end 然后你可以这样使用它： 1 2 3 PersistablePerson *person = &#91;&#91;PersistablePerson alloc&#93; init&#93;; person.firstName = [...]]]></description>
		<wfw:commentRss>http://blog.prosight.me/index.php/2009/10/432/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQLite3 简要使用指南</title>
		<link>http://blog.prosight.me/index.php/2009/10/427?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sqlite3-%25e7%25ae%2580%25e8%25a6%2581%25e4%25bd%25bf%25e7%2594%25a8%25e6%258c%2587%25e5%258d%2597</link>
		<comments>http://blog.prosight.me/index.php/2009/10/427#comments</comments>
		<pubDate>Mon, 26 Oct 2009 11:53:16 +0000</pubDate>
		<dc:creator>Elton</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[sqlite3]]></category>

		<guid isPermaLink="false">http://blog.prosight.me/?p=427</guid>
		<description><![CDATA[OS X自从10.4后把SQLite这套相当出名的数据库软件，放进了作业系统工具集里。OS X包装的是第三版的SQLite，又称SQLite3。这套软件有几个特色： 支援大多数的SQL指令（下面会简单介绍）。 一个档案就是一个数据库。不需要安装数据库服务器软件。 完整的Unicode支援（因此没有跨语系的问题）。 速度很快。 目前在OS X 10.4里，SQLite是以/usr/bin/sqlite3的形式包装，也就说这是一个命令列工具，必须先从终端机（Terminal.app或其他程序）进入shell之后才能使用。网络上有一些息协助使用SQLite的视觉化工具，但似乎都没有像CocoaMySQL（配合MySQL数据库使用）那般好用。或许随时有惊喜也未可知，以下仅介绍命令列的操作方式。 以下我们就建立数据库、建立资料表及索引、新增资料、查询资料、更改资料、移除资料、sqlite3命令列选项等几个项目做简单的介绍。 建立数据库档案 用sqlite3建立数据库的方法很简单，只要在shell下键入（以下$符号为shell提示号，请勿键入）： 1 $ sqlite3 foo.db 如果目录下没有foo.db，sqlite3就会建立这个数据库。sqlite3并没有强制数据库档名要怎么取。 在sqlite3提示列下操作 进入了sqlite3之后，会看到以下文字： 1 2 3 SQLite version 3.1.3 Enter &#34;.help&#34; for instructions sqlite&#62; 这时如果使用.help可以取得求助，.quit则是离开（请注意：不是quit） SQL的指令格式 所以的SQL指令都是以分号（;）结尾的。如果遇到两个减号（&#8211;）则代表注解，sqlite3会略过去。 建立资料表 假设我们要建一个名叫film的资料表，只要键入以下指令就可以了： 1 create table film&#40;title, length, year, starring&#41;; 这样我们就建立了一个名叫film的资料表，里面有name、length、year、starring四个字段。 这个create table指令的语法为： 1 create table table_name&#40;field1, field2, field3, ...&#41;; table_name是资料表的名称，fieldx则是字段的名字。sqlite3与许多SQL数据库软件不同的是，它不在乎字段属于哪一种资料型态：sqlite3的字段可以储存任何东西：文字、数字、大量文字（blub），它会在适时自动转换。 建立索引 [...]]]></description>
		<wfw:commentRss>http://blog.prosight.me/index.php/2009/10/427/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

