MySQL的几种表外连接及PHP操作MySQL的函数
内连接
按照条件,将左表的每天记录匹配右表,如果条件符合,字段内容将会被保存,如果不符合,则不会被保存;
语法:
select *|字段列表 from 左表 inner join 右表 on 左表.字段=右表.字段...;
Inner 可以省略掉;
简约版语法
select *|字段列表 from 左表 join 右表 on 左表.字段=右表.字段....;
外连接
左外连接
语法:
select *|字段列表 from 左表 left join 右表 on 左表.字段=右表.字段...;
跟内连接基本一样,唯一一点区别:外连接,没匹配成功的话,左表的字段内容会保存,而右表则是以null保存。
右外连接
语法:
select *|字段列表 from 左表 right join 右表 on 左.字段=右表.字段...;
跟内连接基本一样,唯一一点区别:外连接,没匹配成功的话,右表的字段内容会保存,而左表则是以null保存。
自然连接
规则:
只要两张表中具有相同的字段名,系统就认为是一个连接条件,就会主动的去匹配这两个相同的字段名的值是否相同,如果两个表的相同的字段名的值相同,就认为匹配成功;如果两张表中有多个字段名相同,则所有相同的字段名的值都要相同才算是匹配成功!
自然内连接
语法:
左表 natural inner join右表
跟内连接一样,没匹配成功的字段会直接被删除;
自然外连接
语法:
左表 natural left|right join 右表
跟外连接一样,只是匹配条件是系统定而已
PHP操作MySQL
mysql_connect 函数:连接数据库
语法:
Mysql_connect(‘本机名’,’用户名’,’密码’);
断开连接需要使用mysql_close函数!
mysql_query函数:发送操作指令
mysql_query(“操作指令”)
mysql_query 函数如果操作失败的话会返回一个布尔值的(frue),如果成功的话,可能会返回布尔值的(true)也可能返回一个资源结果集
那么,如何提取资源结果集呢?
mysql_fetch_array()函数:提取资源结果集
资源结果集返回的是一个关联及索引并存的一个数组,一次提取,数组指针会下移,及获得下一行数值
MYSQL_BOTH:同时返回关联和索引数组,也是默认值!
MYSQL_fetch_ASSOC:只返回关联数组!
MYSQL_fetch_row:只返回索引数组
当资源结果集使用完了之后,应该主动的释放它:
使用另一个系统函数mysql_free_result(结果集资源);
错误调试函数
因为PHP连接MySQL中不会报错,所以得需要用到错误调试函数来报错
mysql_errno:错误编码
Mysql_error:错误信息
MySQL数据备份
文本备份:
复制粘贴数据表,但每次所以表都要复制,浪费空间
数据备份:
语法:
select *|字段列表 into outfile 文件地址 from 表名;
注意:
文件地址中目录名不能省略,不能备份到一个已经存储了数据的文件中,文件必须由MySQL系统自己新建,也就是说,你只需要指定一个目录,然后设置文件名,MySQL系统就会自己帮你新建好!
Sql备份
语法:
mysqldump -hlocalhost –P3306 -uroot –p 数据库名[数据表1 数据表2……] > 存储路径
还原语法
语法:
方法1
mysql -hPup 数据库名字 < 备份路径
方法2
source 备份路径;