1.用?作为标志位
绑定参数可以绑定变量,后面再赋值
可以直接执行$stmt->execute(数组传入参数)
2.别名的方式
把?改为 :别名
设置参数就用别名设置而不是1,2了
通上面1差不多,就是1,2索引变成别名索引
3.绑定变量输出查询结果
数据库操作的抽象层。同一种方法,可以操作不同的数据库。
<?php try{ //初始化连接,也可以通过ini配置,php.ini配置等 $pdo=new PDO("mysql:host=localhost;dbname=asd",用户名,密码); $pdo->getAttribute();//获取属性 $pdo->setAttribute();//设置属性 //执行SQL语句 $stmt=$pdo->query(sql);//用于查询 $result=$stmt->fetchAll();//返回所有数据 参数 PDO::FETCH_ASSOC //都赋值为null释放资源 $result = null; $pdo->exec(sql);//用于删除增加更新等操作 }catch(PDOException $e){ die(message); } ?>
grant all privileges on *.* to ltzz@localhost identified by '123456'; #grant 权限 on 数据库.表 to 用户名@链接地址 identified by '密码'; drop user ltzz@localhost;#删除用户 revoke select on *.* from ltz@'%';#移除权限
all privileges表示所有权限
*.*表示所有数据库的所有表
ltzz@localhost表示 链接账户@链接地址 '%'为允许所有地址链接
with grant option表示拥有授予权限
show database
在mysql数据库中有授权表。
user表中记录着权限,db和host
tables_priv 表的授权
columns_priv 列授权
运行时间
数据备份
安全和访问控制
性能的优化
使用日志排错和统计
SERIALIZABLE 序列化,同时只能存在一个事务排队的形式,会卡住
REPEATABLE READ 可重复读,同一个事务中一般读来读去都是一样的
READ COMMITTED 提交读,别的事务commit后就可以读到了
READ UNCOMITTED 未提交读,其他事务不用提交,修改了,这边就能查询到了。
select @@autocommit;#它为1时表示自动提交开启 set @@autocommit = 1;#打开
可以认为mysql的操作都是事务,就是每执行成功就自动提交一次
=0关闭时,只有手动commit,事务才会提交
show engines;#innoDB支持事务处理,默认就是它 start transaction;#开启事务处理(begin,begin work) #一系列的SQL #一系列的SQL commit;#提交结束 rollback;#回滚结束
事务管理作为一个单独单元,里面有多个SQL事务管理语句,只有全部执行成功,事务处理才算成功,不然就会回滚整个单元。
原子性 每个事务是一个不可分割的单元
一致性 成功和失败都必须是一致的,都成功要不都失败
孤立性 与其他事务隔离,每个事务只有完全执行完毕才能看到结果
持久性 即使系统崩溃,一个提交的事务仍然在坚持。
就是查询的查询,多个查询嵌套,一般从最里面开始。比较耗性能,也可以用内连
select bdesc from branches where cid=(select cid from client where cname ="Rabbit")
一些例子:
select cname from clients where cid= (select cid,count(bid) from branches group by cid having count(bid) = 2) //可以查询多个,用in select sname from services where sid in (select sid from branches_services where bid =1031) //用exist判断是否存在 select * from clients where exists (select bid from branches_service group by bid having count(bid) > 2) select avg(s.stotal) from (select bid,count(sid) as stotal from branches_services group by bid) as s;