PHP[入门]P16-php中数据库的操作

这是我早期的 php 学习笔记,php 的学习版本版本是 5.6、7,🐟2020/05/06年从有道笔记导出至此。

day16

1.mysql函数

使用方式:

select 函数(字段名) as 字段别名 from tablename ;

注:尽量不用

as 给字段起别名

2.分组:

select count(age) as count ,age from tablename group by 字段名;

select count(age) as count ,age from tablename group by 字段名 having 条件;

分组以后数据再次过滤 条件使用having

3.链接:

内连接:

隐式链接:select 表1.字段 [as 别名], 表n.字段 from 表1 [别名], 表n where 条件;

显示链接:select 表1.字段 [as 别名], 表n.字段 from 表1 [别名] join 表n on 条件;

表1 inner join 表2 on 条件

表1 join 表2 on 条件

inner一般使用习惯是可以省略掉的

外链接:

左连接:select 表1.字段 [as 别名], 表n.字段 from 表1 [别名] left join 表n on 条件;

说明:以左边表数据为准进行匹配查询 如果右边对应表没有对应数据 null

右链接:select 表1.字段 [as 别名], 表n.字段 from 表1 [别名] right join 表n on 条件;

select guser.username,goods.name ........

说明:以什么方式关联就以什么表为主

4.子查询

以一个结果集作为另一个查询的一部分或者是条件

select * from user where gid in (select gid from goods);

5.全外链接(记录联合)

将讲个关联查询结果合并到一起,没有对应的数据时候 用null

select * from guser lu left join goods lg on lu.gid=lg.gid union select * from guser ru right join goods rg on ru.gid = rg.gid;

union 是将 union all 后的结果进行一次distinct,去除重复记录后的结果

6.修改更新:

update money set balance=balance-500 where userid = 15;

update 要操作的字段名 set 字段名=字段名(实际的意义指字段里的对应值)-190 where 条件

两个表同时修改

update user u, goods g set u.gid=0, g.price=1799 where u.id=8 and u.gid=g.gid;

说明: 先将user表里 gid 值 把user表中id为8的用户gid改成0 然后运用关联gid值 就是拿到的user gid 再把goods修改

7.清空表记录

1.delete 删除 说明: 索引也就通常说的id 是自增的使用delete删除数据 id保留 再添加数据时候从删除前的id+1

2.truncate table user; 说明:与delete的区别就是 清空数据时候连索引值一起清空。

8.权限控制(了解):

show grants;显示用户

创建用户:

create user 'username'@'host' identified by 'password';

赋予操作权限:

grant 权限 [privileges] on 库.表 to 用户@主机 [identified by '密码'];

刷新:

flush privileges;

剥夺权限:

revoke select on test.* from 'aaa'@'%';

说明:

* 代表操作索引的表

% 代表模糊匹配

all 所有操作(insert delete select update)

9.事务

默认的配置autocommit值是1 自动提交

将set autocommit=0;以后意思是手动提交; commit

开启事务:

begin; //如果begin不好使时候可以使用set autocommit=0;

提交事务:

commit;

回滚:

rollback;

10.导入导出

导出:mysqldump -uroot -p 数据库 > xxx.sql

// 一定是退出mysql

导入:mysql -uroot -p 数据库 < xxx.sql

//注意: 一定新建一个数据库