当前位置: 首页 > 工具软件 > SQLite-Ruby > 使用案例 >

Ruby的sqlite3基操

刘海
2023-12-01

基本操作说明

#导入sqlite3
require "sqlite3"
#创建数据库demo.db,如果没有这个数据库会自动创建
db = SQLite3::Database.new "demo.db"
#添加表
sql = "create table students (
	id integer primary key autoincrement not null,
	name varchar(50),
	age integer,
	address varchar(50)
)"
db.execute(sql)

#添加数据
sql = "insert into students (name,age,address)
		values('张三',22,'印度'),
			('李四',22,'阿拉伯'),
			('王五',22,'波兰'),
			('赵六',22,'阿根廷'),
			('卓七',22,'非洲'),
			('黑八',22,'法国'),
			('白九',22,'俄罗斯'),
			('十全',22,'日本')
db.execute(sql)

#查询数据
sql = "select * from students"
#或者
sql = "select name,age,address from students"

#添加数据
sql = "insert into students values('大哥大',66,'巴西')"
#或者
sql = "insert into students (name,age,address) values ('大哥大',66,'巴西')"

#修改数据
sql = "update students set name = '普京',age = 49,address ='俄罗斯' where id = 7"

#删除数据
sql = "delete from students where id = 3"
#删除表内所有数据,变空表一张没有数据
sql = "delete from students"

查询有多少张表

select name from sqlite_master where type = "table";

条件:and,or,like,limit,offset,order by ,gourp by,having

#(and)查询id等于3和地址等于巴西的数据

select * from students where id = 3 and address = '巴西';

#(or)查询id等于5或者地址等于巴西的数据

select * from students where id = 3 or  = 5;

#(like_)下滑线表示一个字符,使用在具体知道长度的模糊搜索

select * from students where name like ‘张_’;

#(like %)百分号表示一个或者多个字符,在你不知道长度的情况下,比如手机号码就知道“136%”或者“136后面
#跟着8个下滑线”因为你知道手机号码的长度是11个.

select* from students where address like '俄%';

#(limit)获取数据的前3条

select * from students limit 3;

#(offset)跳过获取到的数据的前4条从第5条开始获取,获取3条

select * from students limit 3 offset 4;

#(order by )搜索所有根据地址的升序来排列(默认升序asc,降序desc),字母(a-z)

select * from students order by address;

#(order by)搜索所有字段 先根据名字来排序,后面的都是补充条件(名字一样的情况下进行后续条件的筛选)

select * from students order by name,age,address;

#(group by) 是为了在搜索语句中对相同数据进行分组
#比方:名字都叫“张三”,但是工资不一样就可以进行分组
#select name,salary from table group by salart ord by desc;
#查询名字和工资,按照工资分组,按照降序排序

select * from students group by name;

(having)搜索所有字段,分组查询,显示分组中名字出现次数小于2次的(having是group by的进一步条件筛选)

select * from students group by name having count(name) < 2;

(Distinct)查询字段为name(字段名字如果一样就显示一次),重复就显示一次的作用

select  distinct name from students;
 类似资料: