mnesia数据库学习笔记

1、基本使用流程

1>mnesia:create_schema([node]).    %创建方案的本地节点上。

2>mnesia:start(). %启动数据库

3>mnesia:create_table(funky,[]).%创建表
4>mnesia:info(). %查看数据库信息

 在启动erlang时,erl -mnesia dir '"/dir"' 用于指定Mnesia数据存储位置。

 

2、定义表结构,创建表

% company.hrl

-record(employee, {emp_no, name, salary, sex, phone, room_no}).

 

% createtbl.erl

-include("company.hrl")

init() ->

  mnesia:create_table(employee, [{attributes, record_info(fields.employree)}]).

  %create_table(表名, [类型,字段])。

表中有1对1的set类型,和1对多的bag类型。

3、事务

mnesia:tranaction(Fun).

事务只需要一个函数参数。
4、写查询

raise(Eno,Raise) ->

  F = fun() ->

      [E] =mnesia:read(employee, eno, write),  %读数据并带上写锁

      Salary = E#employee.salary + Raise,    %得到加薪后数据

      New = E#employee{salary=Salary),     %生成要薪后记录 

      mnesia:write(New)              %更新薪酬

  end,

  mnesia:transaction(F).                %执行事务

5、Mnesia函数

提取女性职员

mnesia:select(employee, [{#employee{sex = female, name='$1', _='_'},[],['$1']}]).

select 必须运行在类似事务的活动中.

6、使用 QLC

QLC通常比直接使用mnesia函数 代价更高 。但是提供了更好的语法

  Q = qlc:q([E#employee.name || E <- mnesia:table(employee), E#employee.sex == female]),
  qlc:e(Q)

[读作"创建list"

||读作"例如"

<-读作"取出"

 

 

posted on 2011-12-21 11:40  陈峰  阅读(953)  评论(0编辑  收藏  举报