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"
||读作"例如"
<-读作"取出"