erlang mnesia 数据库基本查询
作者:网络转载 发布时间:[ 2013/10/12 9:41:02 ] 推荐标签:
Mnesia是一个分布式数据库管理系统,适合于电信和其它需要持续运行和具备软实时特性的Erlang应用,越来越受关注和使用,但是目前Mnesia资料却不多,很多都只有官方的用户指南。下面的内容将着重说明 如何做 Mnesia 数据库查询。
示例中表结构的定义:
%% 账号表结构
-record( y_account,{ id, account, password }).
%% 资料表结构
-record( y_info, { id, nickname, birthday, sex }).
1、Select 查询
查询全部记录
%%===============================================
%% select * from y_account
%%===============================================
%% 使用 mnesia:select
F = fun() ->
MatchHead = #y_account{ _ = '_' },
Guard = [],
Result = ['$_'],
mnesia:select(y_account, [{MatchHead, Guard, Result}])
end,
mnesia:transaction(F).
%% 使用 qlc
F = fun() ->
Q = qlc:q([E || E <- mnesia:table(y_account)]),
qlc:e(Q)
end,
mnesia:transaction(F).
查询部分字段的记录
%%===============================================
%% select id,account from y_account
%%===============================================
%% 使用 mnesia:select
F = fun() ->
MatchHead = #y_account{id = '$1', account = '$2', _ = '_' },
Guard = [],
Result = ['$$'],
mnesia:select(y_account, [{MatchHead, Guard, Result}])
end,
mnesia:transaction(F).
%% 使用 qlc
F = fun() ->
Q = qlc:q([[E#y_account.id, E#y_account.account] || E <- mnesia:table(y_account)]),
qlc:e(Q)
end,
mnesia:transaction(F).

sales@spasvo.com