ruby on rails操作mysql数据库
来源:互联网 发布:mysql存储过程的数组 编辑:程序博客网 时间:2024/05/16 09:56
一、插入:
1、new()方法
a = Category.new(:name => 'Ruby', :position => 1)
a.save
save 还有相同方法”save!”
有无惊叹号的差别在于validate资料验证不正确的动作,
无惊叹号版本会回传布林值(true或false),有惊叹号版本则是验证错误会丢出例外。
2、create()方法
b = Category.create(:name => 'Perl', :position => 2)
create也有“create!”方法,作用同save
create在执行的时候已经将资料插入数据库,无须再调用save方法
b.save(:validate => false)
透过:valiate => false 可以略过验证
create虽然无需再调用save方法,但仍然可以调用save方法。
二、查询
Category.first取出第一条记录
Category.last 取出最后一条记录
Category.all取出所有
Category.find(1)取出id=1的记录
Category.find(1, 3)或者Category.find([1, 3]) 取出id为1和3的记录
find方法会在没有取到符合条件的记录时抛出错误
如果你不想这样,请用:find_by_id
Category.find_by_name('Ruby')取出name字段等于“Ruby”的记录
可以用and进行多字段查询Category.find_by_name_and_postion('Ruby', 1)取出name='ruby' and postion=1的记录
Category.find_by_sql("SELECT * FROM categories WHERE name LIKE '%p%'")如果你想自己手写sql就可以使用这个方法,find_by_sql没有“find_all_by_sql”方法
Category.where(:name => 'Ruby', :position => 1),`name` = 'Ruby' AND `position` = 1
Category.where(["name = ? or position = ?", 'Ruby', 3]), `name` = 'Ruby' OR `position` = 3另外,where 是lazy loading,也就是直到真的需要取值的时候,才会跟资料库拿资料。
如果需要立即触发,可以接着使用.all, .first, .last,例如:Category.where(["name = ? or position = ?", 'Ruby', 3]).all
Category.limit(5).all
限制查询记录数,它只接受这一个参数,如果要使用形如:“limit x, y"请组合使用“offset”方法:Category.limit(3).offset(2), 从第二条开始显示3条记录
Category.order("position")
Category.order("position DESC")
Category.order("position DESC, name ASC") 对内容排序
Category.order("position").reorder("name") 改用name 排序
Category.order("position").reorder(nil) 取消所有排序
Category.select('id, name') 只查询出id,name栏位的数据
Category.readonly.first 使用readonly可以使查询出来的结果不能再次改变其值
以上查询方法可以进行无顺序的自由的串接:
Category.select(..).order(..).limit(.)....
Category.where("position > 1").find_each do |category|
category.do_some_thing
end
如果资料量很大,但是又需要全部拿出来处理,可以使用find_each 批次处理:
Category.find_each(:batch_size => 2) do |category|
puts category.id
end
预设会批次查出1000条,如果需要设定可以加上:batch_size 参数。
c = Category.all
c.reload reload 重新查询出结果给c
c = Category.first
Category.delete(2) 删除id = 2的资料
四、集合
Category.count 获取记录总数
Category.average(:position)
Category.maximum(:position)
Category.sum(:position)
1、new()方法
a = Category.new(:name => 'Ruby', :position => 1)
a.save
save 还有相同方法”save!”
有无惊叹号的差别在于validate资料验证不正确的动作,
无惊叹号版本会回传布林值(true或false),有惊叹号版本则是验证错误会丢出例外。
2、create()方法
b = Category.create(:name => 'Perl', :position => 2)
create也有“create!”方法,作用同save
create在执行的时候已经将资料插入数据库,无须再调用save方法
b.save(:validate => false)
透过:valiate => false 可以略过验证
create虽然无需再调用save方法,但仍然可以调用save方法。
二、查询
Category.first取出第一条记录
Category.last 取出最后一条记录
Category.all取出所有
Category.find(1)取出id=1的记录
Category.find(1, 3)或者Category.find([1, 3]) 取出id为1和3的记录
find方法会在没有取到符合条件的记录时抛出错误
如果你不想这样,请用:find_by_id
Category.find_by_name('Ruby')取出name字段等于“Ruby”的记录
可以用and进行多字段查询Category.find_by_name_and_postion('Ruby', 1)取出name='ruby' and postion=1的记录
find_by_* 和 find_all_by_*它们的不同之处是前者会进行“limit 1”限制
通用方法:Category.find_by_sql("SELECT * FROM categories WHERE name LIKE '%p%'")如果你想自己手写sql就可以使用这个方法,find_by_sql没有“find_all_by_sql”方法
Category.where(:name => 'Ruby', :position => 1),`name` = 'Ruby' AND `position` = 1
Category.where(["name = ? or position = ?", 'Ruby', 3]), `name` = 'Ruby' OR `position` = 3另外,where 是lazy loading,也就是直到真的需要取值的时候,才会跟资料库拿资料。
如果需要立即触发,可以接着使用.all, .first, .last,例如:Category.where(["name = ? or position = ?", 'Ruby', 3]).all
Category.limit(5).all
限制查询记录数,它只接受这一个参数,如果要使用形如:“limit x, y"请组合使用“offset”方法:Category.limit(3).offset(2), 从第二条开始显示3条记录
Category.order("position")
Category.order("position DESC")
Category.order("position DESC, name ASC") 对内容排序
Category.order("position").reorder("name") 改用name 排序
Category.order("position").reorder(nil) 取消所有排序
Category.select('id, name') 只查询出id,name栏位的数据
Category.readonly.first 使用readonly可以使查询出来的结果不能再次改变其值
以上查询方法可以进行无顺序的自由的串接:
Category.select(..).order(..).limit(.)....
Category.where("position > 1").find_each do |category|
category.do_some_thing
end
如果资料量很大,但是又需要全部拿出来处理,可以使用find_each 批次处理:
Category.find_each(:batch_size => 2) do |category|
puts category.id
end
预设会批次查出1000条,如果需要设定可以加上:batch_size 参数。
c = Category.all
c.reload reload 重新查询出结果给c
c = Category.first
三、删除
c.destory 删除id = c.id的资料Category.delete(2) 删除id = 2的资料
四、集合
Category.count 获取记录总数
Category.average(:position)
Category.maximum(:position)
Category.sum(:position)
Category.where(["position>?", 2]).count 用where缩小范围
alreadySendNum = (Message.find :all, :conditions=>['department_id = ? and status = ?', params[:id],'published']).size 统计数组元素个数
alreadySendNum = (Message.find :all, :conditions=>['department_id in (?) and status = ?', myArray,'published']).size 统计数组元素个数
- ruby on rails操作mysql数据库
- Ruby on Rails数据库操作
- Ruby on rails 连接mysql数据库实践
- Ruby on Rails学习笔记(二 Ruby连接mysql数据库)
- ROR模型和数据库操作(第六章ruby on rails)
- Ruby on Rails研究之三:Mysql数据库开发
- Ruby on Rails(ROR) 实例开发之一 配置数据库Mysql
- Ruby on Rails,创建开发用的MYSQL数据库
- Ruby on rails连接Mysql (on ubuntu)
- Ruby on Rails 入门之:(24) Ruby 中数据持久化、数据库操作
- Ruby on Rails操作Google Calendar(一)
- Ruby on Rails操作Google Calendar(二)
- ruby on rails 撤销取消操作
- Ruby on Rails 连接 Oracle 数据库实践
- Ruby on Rails 连接 Oracle 数据库实践
- Ruby on Rails连接Oracle数据库实践
- Ruby on Rails,使用关系数据库简介
- ruby on rails 的数据库查询方法
- c++ primer习题9.26
- uploadify上传插件使用(一)
- php 高级 自定义 变量调节器(不错的玩意)
- iOS程序开发引用的第三方库之间出现duplicate symbol时的处理方法
- C语言进程通过信号量进入临界区
- ruby on rails操作mysql数据库
- hdu 2855 Fibonacci Check-up 矩阵+斐波那契通项公式
- HDU 4365 Palindrome graph 模拟题
- hdu 4705 Y (树形dp)
- windows下使用MinGW+msys编译ffmpeg
- Google Cast SDK正式版发布:自动适配,修复Bug
- POJ 2411 Mondriaan's Dream
- 英语敢死队 第三周学习总结感受
- Google的一个面试题——数组原地置换