Heim  >  Artikel  >  Datenbank  >  Einige Syntaxen, die PHP-Programmierer für Datenbankoperationen kennen müssen

Einige Syntaxen, die PHP-Programmierer für Datenbankoperationen kennen müssen

迷茫
迷茫Original
2017-03-26 14:14:411545Durchsuche

Wenn Sie neu bei MySql sind, müssen Sie diese syntaktischen Zucker kennen.

  1. SQLDatenbank erstellen

-- 如果存在数据库order,则删除。否则创建数据库
drop database if exists `order`;
-- 创建数据库
create database `order`;

2.SQL Datentabelle erstellen

CREATE TABLE `Users` (
  `ID` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '客户id',
  `Member` varchar(20) DEFAULT NULL COMMENT '会员号',
  `Name` varchar(100) DEFAULT NULL COMMENT '姓名',
  `Phone` varchar(20) DEFAULT NULL COMMENT '手机号码',
  `QQ` varchar(20) DEFAULT NULL COMMENT 'QQ',
  `PassWord` varchar(50) DEFAULT NULL COMMENT '密码',
  `IsOpen` char(2) DEFAULT 'Y' COMMENT '是否禁用',
  `Createtime` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8;
我这里创建了一个Users表,如果你的MySql里面存在多个数据库的话你可以使用 关键词 Use 来告诉mysql你所创建的表属于哪一个库,我这里创建到了上面新建的Order库里面,如果你有mysql或者SQLserver的基础的话
你会觉得这些都很简单,确实如此,主键,默认值,是否为空,是否自增等等,你都了解,不过还是有两个东西值的说一下,一个是没个字段的备注,我个人开发过程中觉得这个非常重要,所以一个简单的备注能让你快速的回忆起
这个字段的作用,COMMENT 就是专门做这个的。第二个是我创建表中的1000这个值,这个是该表的记录会从1000开始,可以自己去定义。uft8设置编码格式。
我这里创建了一个Users表,如果你的MySql里面存在多个数据库的话你可以使用 关键词 Use 来告诉mysql你所创建的表属于哪一个库,我这里创建到了上面新建的Order库里面,如果你有mysql或者SQLserver的基础的话
你会觉得这些都很简单,确实如此,主键,默认值,是否为空,是否自增等等,你都了解,不过还是有两个东西值的说一下,一个是没个字段的备注,我个人开发过程中觉得这个非常重要,所以一个简单的备注能让你快速的回忆起
这个字段的作用,COMMENT 就是专门做这个的。第二个是我创建表中的1000这个值,这个是该表的记录会从1000开始,可以自己去定义。uft8设置编码格式。

3. Gespeicherte Prozeduren erstellen

DELIMITER $$
CREATE DEFINER=`root`@`%` PROCEDURE `RecordPage`(
    tblName varchar(2000),
    SelectFieldName varchar(4000),
    strWhere varchar(4000),
    OrderField varchar(2000),
    PageSize int,
    PageIndex int,
    out iRowCount int  ,            -- 总记录数
    out pagecount int               -- 总分页数
)
$$:begin
     declare v_sqlcounts varchar(4000);
     declare v_sqlselect varchar(4000);
     #拼接查询总记录的SQL语句
     set strWhere=concat(' where ', strWhere);
     set OrderField=concat(' order by ', OrderField);

    #拼接分页查询记录的动态SQL语句
    set v_sqlselect = concat('select ',SelectFieldName,' from ',tblName,strWhere,if(OrderField is not null,OrderField,''),' limit ',(PageIndex-1)*PageSize,' , ',PageSize);
   #select v_sqlselect;leave $$;
   set @sqlselect = v_sqlselect;

   prepare stmtselect from @sqlselect;
        execute stmtselect;
   deallocate prepare stmtselect;
   
       -- set v_sqlcounts = concat('select count(*) into @recordcount from ',tblName,strWhere);
     set v_sqlcounts = concat('select SQL_CALC_FOUND_ROWS ',SelectFieldName,'  from ',tblName,strWhere);
    #select v_sqlcounts;leave $$;
    set @sqlcounts = v_sqlcounts;
    prepare stmt from @sqlcounts;
         execute stmt;
    deallocate prepare stmt;
    #获取动态SQL语句返回值
    -- set iRowCount = @recordcount;
     set iRowCount = (select FOUND_ROWS());
   
end $$$$
DELIMITER ;

创建存储过程的格式,上面是我创建的一个通用分页的存储过程,亲测,可用,只需要对应传参数就行了

4. Über Batches

-- 批量插入
INSERT INTO `order`.`users`(`ID`,`Member`,`Name`,`Phone`,`QQ`,`PassWord`,`IsOpen`,`Createtime`)
VALUES(),(),(),(),(),(),()......;

--批量更新
UPDATE `order`.`users`
SET Name= case ID
    WHEN 1 THEN '111'
    WHEN 2 THEN '222'
    WHEN 3 THEN '333' 
    END
WHERE `ID` in(1,2,3) ;

更新多个字段的时候可以将SET与END之间的部分复制替换成要更新的字段信息

Das obige ist der detaillierte Inhalt vonEinige Syntaxen, die PHP-Programmierer für Datenbankoperationen kennen müssen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn