久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

Z-BlogPHP SQL(二)

2023-09-08 193

本文內(nèi)容僅適用于1.7 及更高版本!

一、USEINDEX FORCEINDEX IGNOREINDEX

注:本指令是 mysql 專用的,分別是使用索引,強制使用索引,跳過索引

$sql = $zbp->db->sql->get()->select($zbp->table['Post'])
->useindex('zbp_log_TPISC', 'zbp_log_VTSC')
->sql;
SELECT * FROM zbp_post USE INDEX ( zbp_log_TPISC ,zbp_log_VTSC )

二、SQL INSERT INTO 語句

$sql = $zbp->db->sql->get()->insert($zbp->table['Post'])
->data(array('log_Title' => 'test','log_Type' => '0'))
->sql;
INSERT INTO zbp_post (log_Title,log_Type) VALUES ( 'test' , '0' )

三、SQL UPDATE 語句

$sql = $zbp->db->sql->get()->update($zbp->table['Post'])
->where('=', 'log_ID', 1)
->data(array('log_Title' => 'test','log_Type' => '1'))
->sql;
UPDATE zbp_post SET log_Title = 'test', log_Type = '1' WHERE log_ID = '1'

四、SQL DELETE 語句

$sql = $zbp->db->sql->get()->delete($zbp->table['Post'])
->where('=', 'log_ID', 1)
->sql;
DELETE FROM zbp_post WHERE log_ID = '1'

五、CREATE 數(shù)據(jù)庫、表、索引

1、CREATE DATABASE

可以在 mysql 和 pgsql 下創(chuàng)建數(shù)據(jù)庫:

$sql = $zbp->db->sql->get()->create()->database('zbp')->ifnotexists()->sql;
CREATE DATABASE IF NOT EXISTS zbp

2、CREATE TABLE

這里的例子只是 sql 鏈用法的展示,實際上我們已經(jīng)把 sql 鏈的方法包裝好了,用$zbp->db->CreateTable 方法會更便捷。

創(chuàng)建一個表,先定義數(shù)據(jù)結(jié)構:

$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_table')
->data($tableData)
->option(array('engine' => 'InnoDB'))
->option(array('charset' => 'utf8mb4'))
->option(array('collate' => 'utf8mb4_general_ci'))
->sql;
$zbp->db->query($sql);
echo $sql;

SQL 語句輸出:

CREATE TABLE IF NOT EXISTS zbp_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=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci AUTO_INCREMENT=1

備注:可以指定表的引擎和字符集,如果不指定則從 option 文件讀取系統(tǒng)的配置

3、CREATE INDEX

$sql = $zbp->db->sql->get()->create($zbp->table['Post'])
->index(
array('zbp_post_index_stt'=>array('log_Status','log_Type','log_Tag'))
)
->sql;
CREATE INDEX zbp_post_index_stt ON zbp_post ( log_Status , log_Type , log_Tag )

六、DROP 數(shù)據(jù)庫、表、索引

1、DROP DATABASE

$sql = $zbp->db->sql->get()->drop()->database('zbp')->sql;
DROP DATABASE zbp

2、DROP TABLE

$sql = $zbp->db->sql->get()->drop()->table('zbp_table2')->ifexists()->sql;
DROP TABLE IF EXISTS zbp_table2

3、DROP INDEX

$sql = $zbp->db->sql->get()->drop('zbp_table')->index('zbp_table_id')->sql;
DROP INDEX zbp_table_id ON zbp_table

七、ALTER修改/添加字段

1、添加字段

$sql = $zbp->db->sql->get()->ALTER($zbp->table['Post'])
->ADDCOLUMN('log_IsHide integer NOT NULL DEFAULT \'0\'')
->ADDCOLUMN('log_CreateTime', 'integer NOT NULL DEFAULT \'0\'')
->ADDCOLUMN('log_Tel', 'varchar(250)')
->ADDCOLUMN('log_Note', 'text', 'NOT NULL')
->sql;
// ADDCOLUMN 內(nèi)的參數(shù)可以寫成一個,也可以寫成多個
ALTER TABLE zbp_post ADD COLUMN log_IsHide integer NOT NULL DEFAULT '0' ,ADD COLUMN log_CreateTime integer NOT NULL DEFAULT '0' ,ADD COLUMN log_Note text NOT NULL

2、修改字段

注:只有 mysql 和 pgsql 支持,sqlite 不能修改字段;

$sql = $zbp->db->sql->get()->ALTER("zbp_post")
->ALTERCOLUMN('log_IsHide INTEGER NOT NULL DEFAULT \'0\'')
->sql;
# mysql 生成
ALTER TABLE zbp_post MODIFY log_IsHide INTEGER NOT NULL DEFAULT '0'
# pgsql 生成
ALTER TABLE zbp_post ALTER COLUMN log_IsHide INTEGER NOT NULL DEFAULT '0'

3、刪除字段

$sql = $zbp->db->sql->get()->ALTER("zbp_post")
->DROPCOLUMN('log_IsHide')
->DROPCOLUMN('log_CreateTime')
->DROPCOLUMN('log_Note')
->sql;
ALTER TABLE zbp_post DROP COLUMN log_IsHide ,DROP COLUMN log_CreateTime ,DROP COLUMN log_Note

八、SQL統(tǒng)計函數(shù)

在這里我們僅以 COUNT 做為例子,取出每一個作者的文章總數(shù)并分組顯示:

$sql = $zbp->db->sql->get()->select($zbp->table['Post'])
->column('log_AuthorID')
->count(array('log_ID'=>'num'))
->where(array('=', 'log_Type' ,'0'))
->groupBy('log_AuthorID')
->sql;
SELECT log_AuthorID, COUNT(log_ID) AS num FROM zbp_post WHERE log_Type = '0' GROUP BY log_AuthorID

九、SQL隨機取記錄

1.7 里新增了隨機讀取的功能,同時支持三種數(shù)據(jù)庫

這里舉例隨機取 5 篇文章:

$sql = $zbp->db->sql->get()->select($zbp->table['Post'])
->where('=','log_Type',0)
->random(5)
->sql;
-- mysql 生成的 sql
SELECT *
FROM zbp_post
WHERE log_Type = '0'
AND log_ID >=
(SELECT FLOOR( RAND() * (
(SELECT MAX(log_ID)
FROM `zbp_post`)-
(SELECT MIN(log_ID)
FROM `zbp_post`)) +
(SELECT MIN(log_ID)
FROM `zbp_post`))) LIMIT 5
-- pgsql 和 sqlite 生成的 sql
SELECT * FROM zbp_post WHERE log_Type = '0' ORDER BY Random() LIMIT 5

使用 GetList 函數(shù)隨機獲取文章的方法:

GetList(null,null,null,null,null,null,array('random'=>5));
// 1.7 以更高版本的GetList加以改進了
GetList(array('random'=>4,'cate'=>1)); // 獲取分類1下的隨機4篇文章

十、SQL事務處理

  • BEGIN 開始一個事務
  • ROLLBACK 事務回滾
  • COMMIT 事務確認
// 開始一個事務
$zbp->db->sql->get()->transaction('begin')->query;
// 中間sql處理
// 提交事務
$zbp->db->sql->get()->transaction('commit')->query;
BEGIN;
COMMIT;

注意:MySQL 只有 InnoDB 引擎支持事務,MyISAM 引擎不支持事務,所以安裝時就要選擇數(shù)據(jù)庫引擎為 InnoDB,如果安裝好后可以在 phpmyadmin 里對全部的表進行引擎切換。

更多Z-BlogPHP SQL鏈式操作可參閱:《Z-BlogPHP SQL(一)

  • 廣告合作

  • QQ群號:4114653

溫馨提示:
1、本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享網(wǎng)絡內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。郵箱:2942802716#qq.com(#改為@)。 2、本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)裁,轉(zhuǎn)載請注明出處“站長百科”和原文地址。
Z-BlogPHP SQL(二)
上一篇: Z-BlogPHP SQL(一)
Z-BlogPHP SQL(二)
下一篇: PHP基本語法