新增数据表
下面是官方文档给出的创建表的方法。
Bash
//创建表$tableData = array( 'a' => array('a', 'integer', '', 0, '主ID'), 'i' => array('i', 'boolean', '', false), 'k' => array('k', 'string', 250, ''), 'o' => array('o', 'string', 'longtext', '', '备注为某字段'), 'r' => array('r', 'float', '', ''),);$sql = $zbp->db->sql->get()->create('zbp_test_table') ->data($tableData) ->option(array('engine' => 'InnoDB')) ->option(array('charset' => 'utf8mb4')) ->option(array('collate' => 'utf8mb4_general_ci')) ->sql;$zbp->db->query($sql);echo $sql;//创建后的表结构如下 CREATE TABLE `zbp_test_table` ( `a` int(11) NOT NULL AUTO_INCREMENT COMMENT '主ID', `i` tinyint(1) NOT NULL DEFAULT '0', `k` varchar(250) NOT NULL DEFAULT '', `o` longtext NOT NULL COMMENT '备注为某字段', `r` float NOT NULL DEFAULT '0', PRIMARY KEY (`a`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
insert语句
Bash
$sql = $zbp->db->sql->get()->insert($zbp->table['Post']) ->data(array('log_Title' => 'test','log_Type' => '0')) ->sql; //对应sql预计如下 INSERT INTO zbp_post (log_Title,log_Type) VALUES ( 'test' , '0' )
update语句
Bash
$sql = $zbp->db->sql->get()->update($zbp->table['Post']) ->where('=', 'log_ID', 1) ->data(array('log_Title' => 'test','log_Type' => '1')) ->sql;//打印sql语句如下 PDATE zbp_post SET log_Title = 'test', log_Type = '1' WHERE log_ID = '1'
delete语句
Bash
$sql = $zbp->db->sql->get()->delete($zbp->table['Post']) ->where('=', 'log_ID', 1) ->sql; //打印sql语句如下 DELETE FROM zbp_post WHERE log_ID = '1'
select语句
GetListType方法(返回数组包含对象):
Bash
// 取category表所有的数据$sql = $zbp->db->sql->get()->select($zbp->table['Category'])->sql;$array = $zbp->GetListType('Category', $sql);// 遍历数据输出等 foreach ($array as $a) { ...}//打印结果如下 就不复制了,数据结构就是外层数组,内部为对象;[object,object,object]
但是我觉得应用场景这么写就够了
Bash
// 取category表所有的数据$sql = $zbp->db->sql->get()->select($zbp->table['Category'])->query;//打印出来的就是纯数组格式,但是有个弊端字段和value值重复了,得做一次格式化
场景二:(查询表指定字段)
Bash
//官方写法 //取category表的ID字段数组$sql = $zbp->db->sql->get()->selectany('cate_ID')->from($zbp->table['Category'])->sql;$array = $zbp->db->query($sql);//其实可以一步到位$array = $zbp->db->sql->get()->selectany('cate_ID')->from($zbp->table['Category'])->sql;//打印结果如下: array(1) { [0]=> array(2) { ["cate_ID"]=> string(1) "1" [0]=> string(1) "1" }}ps:测试表明将from换成select返回结果都一样,selectany('cate_ID','cate_Name')或selectany('cate_ID,cate_Name')这两种写法都行 selectany换成column也没问题 //自定义表$data_info['yk_cool_summer_slide'] = array( 'id' => array('id', 'integer', '', 0), 'url' => array('url', 'string', 255, ''), 'sort' => array('sort', 'integer', '', 0), 'link' => array('link', 'string', 255, ''), 'content' => array('content', 'string', 'longtext', ''),);$sql = $zbp->db->sql->get()->from($zbp->table['yk_cool_summer_slide'])->sql;$slide_list = $zbp->GetListCustom($zbp->table['yk_cool_summer_slide'], $data_info['yk_cool_summer_slide'], $sql);//结构 [object,object]
场景三:拼接where语句
Bash
//官方写法$sql = $zbp->db->sql->get()->select($zbp->table['Post']) ->column('ID,Status,Type') ->where(array('=', 'log_Status', "1")) ->where(array('=', 'log_Type', "0")) ->sql;$articles = $zbp->GetListType('Post', $sql);//多个where条件也可以这么写$w = array();$w[] = array('=', 'log_Type' ,'0');$w[] = array('=', 'log_AuthorID' ,'1');$w[] = array('=', 'log_CateID' ,'2');// 作为参数使用 ->where($w)//得到的是数据包含对象的数据结构
场景四:or运算符
Bash
$sql = $zbp->db->sql->get()->select($zbp->table['Post'],) ->where( array('or', array( array('log_ID', '1'), array('log_Title', '2'), ), ) ) ->sql;// 注意,此处的条件也可以写为->where('or',array('=', 'log_ID', '1'),array('=', 'log_Title', '2'))//打印sql如下 SELECT * FROM zbp_post WHERE ((1 = 1) AND ( log_ID = '1' OR log_Title = '2' ) )
场景五:like操作符
Bash
//like和search的区别是search是左右模糊查询$sql = $zbp->db->sql->get()->select($zbp->table['Post'],) ->where(array('search', 'log_Title', "Test")) ->sql; //打印sql如下 SELECT * FROM zbp_post WHERE ((1 = 1) AND ((log_Title LIKE '%Test%')))
场景六:in和not in操作符
Bash
//in$sql = $zbp->db->sql->get()->select($zbp->table['Post'],) ->where(array('IN', 'log_ID', array(1, 2, 3, 4))) ->sql; //对应sql语句 SELECT * FROM zbp_post WHERE ((1 = 1) AND (log_ID IN ( '1' , '2' , '3' , '4' ) ) ) //not in $sql = $zbp->db->sql->get()->select($zbp->table['Post'],) ->where(array('NOT IN', 'log_ID', '(1, 2, 3)')) ->sql; //对应sql语句 SELECT * FROM zbp_post WHERE (log_ID NOT IN (1, 2, 3))
场景七:between操作符
Bash
$sql = $zbp->db->sql->get()->select($zbp->table['Post'],) ->where(array('between', 'log_ID', "1", "3")) ->sql //对应sql语句 SELECT * FROM zbp_post WHERE (log_ID BETWEEN '1' AND '3')
场景八:limit操作符
Bash
$sql = $zbp->db->sql->get()->select($zbp->table['Post']) ->limit(5, 10) ->sql; //sql语句 检索记录行从第 6 行开始,返回最多 10 行 SELECT * FROM zbp_post LIMIT 10 OFFSET 5
场景九:order by语句
Bash
$sql = $zbp->db->sql->get()->select($zbp->table['Post']) ->orderBy(array('log_PostTime' => 'desc'), array('log_ID' => 'asc')) ->sql;SELECT * FROM zbp_post ORDER BY log_PostTime DESC, log_ID ASC
场景十:group by语句
Bash
//取出每个作者的所有文章的总评论数$sql = $zbp->db->sql->get()->select($zbp->table['Post']) ->sum('log_CommNums') ->groupBy('log_AuthorID') ->sql;SELECT SUM(log_CommNums) FROM zbp_post GROUP BY log_AuthorID
场景十一:having语句
Bash
//以下示例为取出分类下文章评论总数大于 100 的所有的分类:$sql = $zbp->db->sql->get()->select($zbp->table['Post'],) ->column('log_CateID') ->column('SUM(log_CommNums)') ->groupby('log_CateID') ->having(array('>', 'SUM(log_CommNums)', '100')) ->sql;SELECT log_CateID,SUM(log_CommNums) FROM zbp_post GROUP BY log_CateID HAVING SUM(log_CommNums) > 100
场景十二:join语句
Bash
$sql = $zbp->db->sql->get()->selectany('log_ID') ->from(array($zbp->table['Post']=>'p')) ->leftjoin(array('zbp_postrelation'=>'pr')) ->on('p.log_ID = pr.pr_PostID') ->where('1 = 1') ->sql;// 这里只举例了 LEFT JOIN 联表查询,还分别给 2 个表分别设了别名 SELECT log_IDFROM zbp_post AS p LEFT JOIN zbp_postrelation AS pr ON p.log_ID = pr.pr_PostID WHERE 1 = 1
删表
Bash
$sql = $zbp->db->sql->get()->drop()->table('zbp_table2')->ifexists()->sql;DROP TABLE IF EXISTS zbp_table2
随机取记录
Bash
//这里举例取5篇文章$sql = $zbp->db->sql->get()->select($zbp->table['Post'],) ->where('=','log_Type',0) ->random(5) ->sql;//或使用内置函数GetList GetList(array('random'=>4,'cate'=>1)); // 获取分类1下的随机4篇文章
事务处理
Bash
// 开始一个事务$zbp->db->sql->get()->transaction('begin')->query;// 中间sql处理 // 提交事务$zbp->db->sql->get()->transaction('commit')->query;
免责声明:
1、本站提供和发布的所有内容及源码资源均来自于互联网、网友上传,仅供学习交流使用,版权归原著所有,下载本站资源禁止参与商业和非法行为,请在24小时之内自行删除!
2、本站的所有内容都不保证其准确性,完整性,有效性。阅读及下载本站的内容因误导等因素而造成的损失本站不承担连带责任。
3、用户在访问和使用本站资源的前提条件是必须接受本站“免责声明”如不遵守,请勿访问或使用本网站资源!如因使用者违反本声明的规定而触犯中华人民共和国法律的,一切后果由用户自行负责,本站不承担任何责任。
4、用户使用本网站必须遵守适用的法律法规,对于用户违法使用,非法运营而引起的一切责任,由用户自行承担与本站无关。
5、凡以任何方式登陆本网站或直接、间接使用本网站资料者,视为自愿接受本网站声明的约束。
6、如用户会员将密码告知他人或与他人共享同一会员ID,由此导致的任何会员资料泄露、积分丢失以及所带来的任何其它损失,本网站均不负任何责任。
7、本网站如无意中有相关资源丶软件丶源码丶文章内容侵犯了您的权益版权或侵犯了某个企业或个人的知识产权,请来信通知,本站在收到来信核实后立即删除。
8、本站所有售卖的虚拟物品和会员的目的是为了维持网站的日常运营和搬运分享的辛苦费用!用户可自愿赞助购买,量力而为。
内容投诉1、本站提供和发布的所有内容及源码资源均来自于互联网、网友上传,仅供学习交流使用,版权归原著所有,下载本站资源禁止参与商业和非法行为,请在24小时之内自行删除!
2、本站的所有内容都不保证其准确性,完整性,有效性。阅读及下载本站的内容因误导等因素而造成的损失本站不承担连带责任。
3、用户在访问和使用本站资源的前提条件是必须接受本站“免责声明”如不遵守,请勿访问或使用本网站资源!如因使用者违反本声明的规定而触犯中华人民共和国法律的,一切后果由用户自行负责,本站不承担任何责任。
4、用户使用本网站必须遵守适用的法律法规,对于用户违法使用,非法运营而引起的一切责任,由用户自行承担与本站无关。
5、凡以任何方式登陆本网站或直接、间接使用本网站资料者,视为自愿接受本网站声明的约束。
6、如用户会员将密码告知他人或与他人共享同一会员ID,由此导致的任何会员资料泄露、积分丢失以及所带来的任何其它损失,本网站均不负任何责任。
7、本网站如无意中有相关资源丶软件丶源码丶文章内容侵犯了您的权益版权或侵犯了某个企业或个人的知识产权,请来信通知,本站在收到来信核实后立即删除。
8、本站所有售卖的虚拟物品和会员的目的是为了维持网站的日常运营和搬运分享的辛苦费用!用户可自愿赞助购买,量力而为。
小孟网络技术交流分享 » mysql数据库操作