暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL笔记

原创 Owen Zhang 2019-12-19
964

SQL

cmd

C:\Users\Administrator>d:

D:\>cd d:\wamp64\bin\mysql\mysql5.7.14\bin

D:\wamp\bin\mysql\mysql5.6.17\bin

d:\wamp64\bin\mysql\mysql5.7.14\bin> mysql -u root (-p)

修改root密码

mysql> SET PASSWORD FOR ‘root’@‘localhost’ = PASSWORD(‘newpass’);

adminID=19password字段改为别的值

UPDATE `admin` SET `password` = ‘9a47f30157a92ca673ab0cd5b1e948216848ad31’ WHERE `id` = 19;

ERROR 1045 (28000): Access denied for user ‘root’@‘10.116.4.95’ (using password: YES)

mysql>update mysql.user set host=’%’ where user=‘root’;

mysql>flush privileges;

查找数据库文件位置使用命令

show global variables like “%datadir%”;

查看某表某字段是否存在某值

SELECT * FROM user_oauth WHERE openid=‘15062703446’;

将article表的from字段的乐窝窝值全部替换为owenzhang

UPDATE `article` SET `from` = REPLACE(`from`,‘乐窝窝’,‘OwenZhang’);

将article表的from字段的值全部置空

UPDATE `article` SET `from` = REPLACE(`from`,NULL,‘OwenZhang’);

将某表某字段为空替换为某值

UPDATE `article` SET `from` = (CASE WHEN IFNULL(`from`, ‘OwenZhang’) = ‘OwenZhang’ THEN ‘OwenZhang’ ELSE `from` END)

查看某表某字段值为随机数300-1000

UPDATE article SET hot= (300 + RAND()*1000);

UPDATE `case` SET click= (240 + RAND()*580) where store_id = 739;

将同表的A字段若为空 则替换为同表B字段值

如果表名为关键字case order 则要加上反引号`case` `order`

use jumeijia;

update tablename set A=‘B’ where A=’’;

update `case` set description=title where description=’’;

1表字段值字符串替换

article_store表中cont字段内容a替换为ab

height:auto !important;

替换为

height:auto !important;width: 100%;

use jumeijia;

UPDATE article_store SET cont = replace(cont, ‘height:auto !important;’, ‘height:auto !important;width: 100%;’) ;

打印SQL查询语句getLastSql

$Article = D(‘article_store’);

var_dump($Article->getLastSql()); die();

D:\jumjia\App\Lib\Action\Home\StoreAction.class.php:206:string 'SELECT * FROM `article_store` WHERE ( `id` = 1 ) LIMIT 1  ’ (length=58)

如果你只需要查询某个字段的值,还可以使用getField方法,例如:

  1. $Form = D(“Form”);
  2. // 获取标题
  3. title = Form->where(‘id=3’)->getField(‘title’);

数据的更新操作在ThinkPHP使用save方法save方法则会自动把当前的数据对象更新到数据库,而更新的条件其实就是表的主键,这就是我们在编辑页面要把主键的值作为隐藏字段一起提交的原因。save方法会自动识别数据对象中的主键字段,并作为更新条件.数据对象赋值的方式,save方法无需传入数据,会自动识别。 save方法的返回值是影响的记录数,如果返回false则表示更新出错。

$Form   =   M(‘Form’);

result =   Form->save();

修改某个字段的值,就可以使用setField方法,

$Form = M(“Form”);

// 更改title值

$Form->where(‘id=5’)->setField(‘title’,‘ThinkPHP’);

对于统计字段,系统还提供了更加方便的setInc和setDec方法。

$User = M(“User”); // 实例化User对象

$User->where(‘id=5’)->setInc(‘score’,3); // 用户的积分加3

$User->where(‘id=5’)->setInc(‘score’); // 用户的积分加1

$User->where(‘id=5’)->setDec(‘score’,5); // 用户的积分减5

$User->where(‘id=5’)->setDec(‘score’); // 用户的积分减1

删除数据很简单,只需要调用delete方法返回值是false则表示SQL出错,返回值如果为0表示没有删除任何数据。

$Form = M(‘Form’);

$User->where(‘id=5’)->delete(); //删除id为5的用户数据

动态查询

借助PHP5语言的特性,ThinkPHP实现了动态查询,核心模型的动态查询方法包括下面几种:

| 方法名
getBy

根据字段的值查询数据

例如,getByName,getByEmail

getFieldBy

根据字段查询并返回某个字段的值

例如,getFieldByName

  1. user = User->getByName(‘liu21st’);

1**、使用select方法**
当select方法的参数为false的时候select(false),表示不进行查询只是返回构建SQL,例如:

  1. // 首先构造子查询SQL
  2. subQuery = model->field(‘id,name’)->table(‘tablename’)->group(‘field’)->where($where)->order(‘status’)->select(false);

2、使用buildSql方法

subQuery = model->field(‘id,name’)->table(‘tablename’)->group(‘field’)->where($where)->order(‘status’)->buildSql();

调用buildSql方法后不会进行实际的查询操作,而只是生成该次查询的SQL语句(为了避免混淆,会在SQL两边加上括号),然后我们直接在后续的查询中直接调用。

多表联合查询语句

SELECT a.id,a.username,ag.name,a.password,a.gid,a.addtime,a.lastlogin,a.status FROM admin AS a,admin_group AS ag WHERE a.gid=ag.id;

Tp3.1框架的语句

$Model = new Model();// 实例化一个model对象 没有对应任何数据表 result=result =Model->query(“SELECT a.id,a.username,ag.name,a.password,a.gid,a.addtime,a.lastlogin,a.status FROM admin AS a,admin_group AS ag WHERE a.gid=ag.id);

Buy me a cup of coffee 😃

最后修改时间:2019-12-19 12:31:17
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论