欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据库资料表的操作

程序员文章站 2022-03-03 21:36:25
...

首先初始化一个数据库:

 

rake db:create;rake db:migrate

   

接着生成一个数据库和资料表:

 

rails g model user name:string  password_digest:string token:string 
rake db:migrate

 

资料表有name和password_digest两个属性(password_digest是ruby的加密和判定方法,可以把它看成password和password_confirmation两个属性)

 

 

资料表的新增

 

ActiveRecord提供了四种API,分别是save,save!,create,create!

下面就save和create比较说明一下,

在资料表中添加一条记录:

save方法:

a = User.new( :name => "moenyinto",:password =>"1",:password_confirmation => "1")
a.save

 

create方法:

User.create( :name => "moenyinto",:password =>"1",:password_confirmation => "1")

 

create的方法相当于new个新的记录并save保存

 

 

 

资料表的查询

 

有这样一张表User:

 

id name identity
1

money

teacher
2 into doctor
3 moneyinto teacher

 

find方法: 

User.find(2)     #找到id为2的那条记录

 

也可以用find_by_id,效果一样。

 

我们还可以用find_by_name,比如:

User.find_by_name("moneyinto")     #找到资料表中name属性值为moneyinto的记录

 

select方法:

我们有时不需要资料表中的所有数据,比如我们只需要姓名(name)

我们可以使用select

User.select("name")      #这样就选出了所有的姓名组成了一个新的数组

 

where方法:

我们根据条件筛选需要的记录,一般用where,

比如我们找到身份为老师的所有记录,可以这样写

User.where(:identity => 'teacher')

 

where使用很灵活,可以自己去深入研究一下。

 

order排序方法:

根据姓名进行排序可以这样写

User.order("name")       #这样输出的就是根据姓名排序好的表

 

查询的限定条件(limit,offset,first,last,all)

limit:限定取出的记录数

offset:可以忽略前几个记录不取出

first:取出第一条记录

last:取出最后一条记录

all:取出所有记录

User.limit(2)      #取出前两条记录
User.offset(1)     #从第二条记录开始取出所有的
User.first      
User.last
User.all

 

 

根据上面的可以串联着搭配写,比如写一个:

User.where(:identity => "teacher").offset(1)   #身份为老师的除了第一条的其他所有记录

 

 

 

资料表记录删除

User.delete(2)      #删除id为2的记录
User.find_by_name("moneyinto").delete      #删除姓名为moneyinto的记录

 

 

 

资料表记录统计

User.count      #统计数据表有多少条记录
User.where(:identity => "teacher").count    #统计身份为老师的记录有多少