如果你初识mysql的话,那么这些语法糖你有必要知道。
sql创建数据库
-- 如果存在数据库order,则删除。否则创建数据库
drop database if exists `order`;
-- 创建数据库
create database `order`;
2.sql创建数据表
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.创建存储过程
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.关于批量
-- 批量插入
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之间的部分复制替换成要更新的字段信息
以上就是php程序员对数据库操作必须要知道的一些语法的详细内容。