当前位置: 首页 > news >正文

mnesia数据库学习笔记一

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"

||读作"例如"

<-读作"取出"

 

 

转载于:https://www.cnblogs.com/freebird92/archive/2011/12/21/2295473.html

相关文章:

  • 某机字长为32位,存储容量为64MB,若按字节编址.它的寻址范围是多少?
  • 用深信服SG4300代替ISA
  • 开源扫盲:MySQL是否为完全免费软件?
  • execute、executeUpdate、executeQuery三者的区别及各自返回值
  • 更改ubuntu的系统语言
  • Basic INFO - InstallShield制作的安装包如何进行平台过滤
  • Lync常识之可直接注册在Lync Server上的IP PHONE
  • LoadRunner监控Linux服务器
  • 粒子滤波基本原理
  • 【转】[ ] 字符组(Character Classes)
  • .NET下的多线程编程—1-线程机制概述
  • ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第六篇:拦截器
  • 关于lync安装问题
  • Android SurfaceView
  • 明晰Silverlight中的依赖属性
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 《Java编程思想》读书笔记-对象导论
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 2017年终总结、随想
  • C++类的相互关联
  • Computed property XXX was assigned to but it has no setter
  • Docker入门(二) - Dockerfile
  • k8s 面向应用开发者的基础命令
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • 阿里云前端周刊 - 第 26 期
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 排序算法学习笔记
  • 前端js -- this指向总结。
  • 如何解决微信端直接跳WAP端
  • 如何在招聘中考核.NET架构师
  • ​Java并发新构件之Exchanger
  • ​什么是bug?bug的源头在哪里?
  • #QT(TCP网络编程-服务端)
  • #Spring-boot高级
  • #宝哥教你#查看jquery绑定的事件函数
  • (175)FPGA门控时钟技术
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (二)丶RabbitMQ的六大核心
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (算法设计与分析)第一章算法概述-习题
  • (一)Thymeleaf用法——Thymeleaf简介
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)iOS字体
  • (转)Windows2003安全设置/维护
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .Net 中Partitioner static与dynamic的性能对比
  • .Net环境下的缓存技术介绍
  • .net解析传过来的xml_DOM4J解析XML文件
  • .NET值类型变量“活”在哪?