laravel6.x数据库增删改查操作【查询构造器篇】

Laravel 能使用原生 SQL、流畅的查询构造器Eloquent ORM 在各种数据库后台与数据库进行非常简单的交互。

laravel6.x数据库增删改查操作【原生 SQL篇】

一,常用查询

(1)一般查询
// 获取全部数据
$tests = DB::table('test')->get();

// 获取全部数据(不重复)
$tests = DB::table('test')->distinct()->get();

// 获取全部数据(指定字段)
$tests = DB::table('test')->select('id', 'name as name1')->get();

// 获取全部数据之orderBy
$tests = DB::table('test')->orderBy('id', 'desc')->get();

// 获取全部数据之根据时间排序
// latest是最新时间排序,反之oldest()。如果不写参数的话,默认字段为created_at。
$tests = DB::table('test')->latest('dateTimeTest')->get();

// 随机取一行数据
$tests = DB::table('test')->inRandomOrder()->first();

// 获取单行
$test = DB::table('test')->get()->first();

// 获取单行(指定where条件)
$test = DB::table('test')->where('name', 'test')->first();

// 从第几个开始取几个(第一种)
$tests = DB::table('test')->skip(1)->take(5)->get();

// 从第几个开始取几个(第二种)
$tests = DB::table('test')->offset(1)->limit(5)->get();

// 获取单行的单个值
$age = DB::table('test')->where('name', 'test')->value('age');

// 获取一列的值
$names = DB::table('test')->pluck('name');
foreach ($names as $name) {
	echo $name;
}

(2)条件查询
// 条件语句 if
$str = "2";
// $str为true时执行闭包
$tests = DB::table('test')->when($str, function ($query, $str) {
	return $query->where('id', $str);
})->get();

// 条件语句 if else
$str = 1;
$tests = DB::table('test')->when($str, function ($query, $str) {
	// $str为true时执行
	return $query->orderBy('name','desc');
}, function ($query) {
	// $str为false时执行
	return $query->orderBy('name');
})->get();

(3)where查询
$tests = DB::table('test')->where('name','=','ddddd')->get();

$tests = DB::table('test')->where('name','like','d%')->get();

$tests = DB::table('test')->where([
	['age', '=', '22'],
	['name', '<>', 'ddddd'],
])->get();

// or
$tests = DB::table('test')->where('age', '>', 10)->orWhere('name', 'ddddd')->get();

$tests = DB::table('test')->whereBetween('age', [1, 100])->get();

$tests = DB::table('test')->whereBetween('age', [1, 100])->orWhereBetween('age',[100,200])->get();
//whereNotBetween和orWhereNotBetween省略

$tests = DB::table('test')->whereIn('id', [1, 2, 3])->get();
//whereNotIn 省略

$tests = DB::table('test')->whereNull('age')->get();// whereNull 只查找age为null的
// whereNotNull省略

//whereDate 比较字段和给定日期的关系,数据表里有一条dateTimeTest值为2019-10-09 12:45:11
$tests = DB::table('test')->whereDate('dateTimeTest', '2019-10-09')->get();

$tests = DB::table('test')->whereMonth('dateTimeTest', '10')->get();

$tests = DB::table('test')->whereDay('dateTimeTest', '09')->get();

$tests = DB::table('test')->whereYear('dateTimeTest', '2019')->get();

$tests = DB::table('test')->whereTime('dateTimeTest', '=','12:45:11')->get();

// 取出两个字段的值相等的结果
$tests = DB::table('test')->whereColumn('age', 'weight')->get();
//orWhereColumn省略

// 取出字段1>字段2的结果
$tests = DB::table('test')->whereColumn('age', '>','weight')->get();

$tests = DB::table('test')->whereColumn([
	['age', '=', 'weight'],
	['age', '>', 'weight'],
])->get();

// 嵌套的参数分组
// select * from test where name = 'ddddd' and (age > 20 or weight = '22')
$tests = DB::table('test')->where('name', '=', 'ddddd')->where(function ($query) {
	$query->where('age', '>', 20)->orWhere('weight', '=', '22');
})->get();
	
//select * from test where exists (select 1 from testjoin where test.id = testjoin.test_id)
$tests = DB::table('test')->whereExists(function ($query) {
	$query->select(DB::raw(1))
		 ->from('testjoin')
		 ->whereRaw('test.id = testjoin.test_id');
})->get();

echo DB::table('test')->where('age', 22)->exists();// 判断记录是否存在
// doesntExist()省略

(4)原生方法查询
// 原生方法 selectRaw()
// select age * 3 as age2 from test
$tests = DB::table('test')->selectRaw('age * ? as age2', [3])->get();

// 原生方法 whereRaw() / orWhereRaw()
// select *from test where age > IF( name = "ddddd", 20, 100 )
$tests = DB::table('test')->whereRaw('age > IF(name = "ddddd", ?, 100)', [20])->get();

// 原生方法 orderByRaw()
$tests = DB::table('test')->orderByRaw('id ASC')->get();

(5)聚合方法查询
$result = DB::table('test')->count();

$result = DB::table('test')->max('age');

$result = DB::table('test')->min('age');

$result = DB::table('test')->avg('age');

$result = DB::table('test')->sum('age');

(6)联合查询
// inner join
$test = DB::table('test')
	->select('test.*','testjoin.title')
	->join('testjoin','test.id','=','testjoin.test_id')
	->get();

// Left Join
$test = DB::table('test')
	->select('test.id as ids','test.name','test.age','testjoin.*')
	->leftJoin('testjoin', 'test.id', '=', 'testjoin.test_id')
	->get();
	

二,常用插入

// 单行插入
DB::table('test')->insert(
	[
		'name' => 'testtest', 
		'age' => 123, 
		'weight' => 123123,
		'dateTimeTest'=>'2019-10-09 13:40:11',
		'timeStampTest'=>'2019-10-09 13:40:11'
	]);

// 多行插入
DB::table('test')->insert([
	[
		'name' => 'testtest', 
		'age' => 123, 
		'weight' => 123123,
		'dateTimeTest'=>'2019-10-09 13:40:11',
		'timeStampTest'=>'2019-10-09 13:40:11'
	],
	[
		'name' => 'testtest', 
		'age' => 123, 
		'weight' => 123123,
		'dateTimeTest'=>'2019-10-09 13:40:11',
		'timeStampTest'=>'2019-10-09 13:40:11'
	]
]);

// 插入后取得自增ID
$id = DB::table('test')->insertGetId(
	[
		'name' => 'testtest1', 
		'age' => 123,
		 'weight' => 123123,
		 'dateTimeTest'=>'2019-10-09 13:40:11',
		 'timeStampTest'=>'2019-10-09 13:40:11'
	]
);
	

三,常用更新

$result = DB::table('test')->where('id', 8)->update(['name' => 'asdasdasd']);

DB::table('test')->increment('age');//自增1,此时数据表里全部被自增1

DB::table('test')->increment('age', 5);//自增5,上同

DB::table('test')->decrement('weight');//自减1,上同

DB::table('test')->decrement('weight', 5);//自减5,上同

// 给age增1时把名字也改掉,条件是id=2
DB::table('test')->where('id','=','2')->increment('age', 1, ['name' => 'sdsdsdsd']);

四,常用删除

DB::table('test')->where('id', '=', 9)->delete();// 删除

DB::table('test')->truncate();// 删除所有行,并重置自增 ID 为零

// 悲观锁。防止选中的数据列被篡改,直到事务被提交为止
DB::table('test')->where('age', '>', 100)->lockForUpdate()->get();

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我可以为您提供一个简单的SQLite数据库的创建、增删操作的示例。以下是步骤: 1. 创建一个继承自SQLiteOpenHelper的类,该类用于创建和管理数据库。在该类的构造函数中,您需要传入数据库名称、版本号等参数,并在onCreate()方法中创建数据库表结构。 ```java public class DBHelper extends SQLiteOpenHelper { private static final String DB_NAME = "my_db"; private static final int DB_VERSION = 1; public DBHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); } @Override public void onCreate(SQLiteDatabase db) { // 创建表结构 String sql = "CREATE TABLE user(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)"; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // 数据库升级操作 } } ``` 2. 在需要使用数据库的Activity或Fragment中,创建DBHelper实例,并调用getWritableDatabase()方法获取可写数据库对象。 ```java DBHelper dbHelper = new DBHelper(this); SQLiteDatabase db = dbHelper.getWritableDatabase(); ``` 3. 插入数据。您可以使用ContentValues对象封装要插入的数据,然后调用insert()方法进行插入操作。 ```java ContentValues values = new ContentValues(); values.put("name", "Tom"); values.put("age", 20); db.insert("user", null, values); ``` 4. 查询数据。您可以使用query()方法进行查询操作,并将结果封装成Cursor对象。 ```java Cursor cursor = db.query("user", null, null, null, null, null, null); while (cursor.moveToNext()) { int id = cursor.getInt(cursor.getColumnIndex("id")); String name = cursor.getString(cursor.getColumnIndex("name")); int age = cursor.getInt(cursor.getColumnIndex("age")); // do something with the data } cursor.close(); ``` 5. 更新数据。您可以使用ContentValues对象封装要更新的数据,并调用update()方法进行更新操作。 ```java ContentValues values = new ContentValues(); values.put("age", 21); db.update("user", values, "name=?", new String[]{"Tom"}); ``` 6. 删除数据。您可以使用delete()方法进行删除操作。 ```java db.delete("user", "age>?", new String[]{"18"}); ``` 以上是SQLite数据库的创建、增删操作的一个简单示例,当然,在您的实际开发过程中,您需要根据实际需求进行更加详细的设计和开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值