查询语句的语法:
select() * | 字段列表 from 表列表 where 条件 查询可以返回一个结果集
select * from mytable
select id,name from mytable
select * from mytable where id=3
select * from mytable where age<20
not非 and与 or或
select * form mytable where age<20 and gender=1
常见的数学函数
1、count函数 可以查询满足条件的记录数 无法计算null值,并且会忽略null值 分页中使用。
2、max获取最大值 min获取最小值 字符串的话比较ascii码值
3、avg获取平均值 它的参数一般是数值 对于字符串无法转换,返回0
order by 排序
语法: select * | 字段列表 from 表列表 where order by 排序字段列表 asc(升序) | desc(降序)
limit 获取指定范围的数据
limit后只有一个参数:相当于获取指定的前n条记录
selecte * from mytable limit 3
//注意:order by必须写在limit的前面
selecte * from mytable order by id desc limit 3
limit后两个参数:limit n(偏移量,从0开始),m(获取的记录数) 从偏移量n开始,取m条
以下两种写法均可。
select * from mytable limit 2,4
select * from mutable limit 4 offset 2
我们需要将不同的数据放在不同的表中,便于我们日后的管理及使用。
多表查询
使用select * where的方式 等号在where后面写是判断的意思
select * from student,class where student.cid = class.classid
select studentid,studentname,age,gender,classname from student,class where student.id = class.classid
以上两种书写方式已经被第三种书写方式给替代了 join on
select * from student JOIN class on student.cid = class.classid
left join 左侧表作为主表。可获取左表中的所有数据,如果建立关联的字段在右表中没有存在,则右表中相应字段的数据默认为空
select * from student left JOIN class on student.cid = class.classid
right join 右表作为主表, 获取右表中的所有数据,如果建立关联的字段在左表中没有存在,则左表中相应的字段的数据默认为空
select * from student right JOIN class on student.cid = class.classid
建立php与数据库之间的连接
1、在php中使用musqli_connect函数就可以实现php与服务器的链接,
函数的参数为主机,用户名,密码,要操作的数据库
并且此函数会自动的打开连接。
函数的返回值为布尔值,
(1)连接成功就会返回一个连接对象(资源)
(2)连接失败的话会返回false
下面是几种常见连接失败的情况
Unknown database "mybase1" 数据库找不到,注意名称是否正确
Access denied for user 'root'@'localhost'(using password:YES):密码错误或用户名错误
mysqli_connect() 一般是服务器相关的错误
所以需要参数来接收。
2、之后需要判断连接是否成功?
header("Content-Type:text/html;charset=utf-8); //设置当前php的返回值的编码为utf-8
$conn = musqli_connect("localhost","root","root","mybase");
mysqli_set_charset($conn,"utf8"); //保证服务器返回值的编码与当前php编码一致,设置服务器的返回数据的编码。mysqli_set_chaset(连接对象,编码格式字符串);
函数die或exit 既可以打印输出结果,又可以阻止下面代码的继续执行。
3、连接成功之后,创建sql语句,执行相关的操作
(1)新增数据
在执行新增语句时,mysqli_query有返回值,成功为true;失败则为false
$sql="insert into mytable values(null,'张三',30,'男')";
$result = mysqli_query($conn,$sql); //result就是来接收mysqli_query的返回值,接收之后需要进行判断的。
if($result){
echo '新增成功';
}else{
echo '新增失败';
echo mysqli_error($conn); //mysqli_error(连接对象);它可以输出最近一条sql语句在执行时所产生的错误信息。
}
(2)修改操作
$sql = "update mytable set age = 20 where id = '3'";
$result = mysqli_query($conn,$sql);
if($result){
echo '修改成功';
}else{
echo '修改失败';
echo mysqli_error($conn); //打印出失败的原因
}
(3)删除操作
$sql = "delete from mytable where id = '4'";
$result = mysqli_query($conn,$sql);
if($result){
echo '删除成功';
}else{
echo '删除失败';
echo mysqli_error($conn);
(4)查询操作
1、设置响应头header("Content-Type:text/html;charset:utf-8");
2、建立数据连接 $conn=mysqli_connect("localhost","root","root","mybase");
3、设置编码
mysqli_set_charset($conn,"utf8");
或者:mysqli_query($conn,"set naes utf-8"); 比较常见
4、判断连接状态 if(!$conn){die("连接失败")};
5、创建查询语句 $sql = "select * from mytable";
6、执行查询语句、接收 $result = mysqli_query($conn,$sql);
注意:查询语句的返回结果并不是表中的数据,而只是一个针对表数据的引用。
如果查询失败,则返回false
如果成功,则有两种情况:有结果集无数据或有结果集也有数据
判断结果集中是否有数据 mysqli_num_rows(结果集)可以判断当前结果集中是否有数据行
提取数据中的函数
需要注意:以下函数只能读取一行数据,但是读取完这一行数据之后,会自动的将指针移动到下一行,如果没有读取到任何的数据,则返回null。
mysqli_fetch_array(查询语句返回的结果集) 返回只是一个数组,同时生成索引数组和关联数组两种形式
mysqli_fetch_array(结果集资源,返回的内容的形式)
返回的内容的形式包括 MYSQL_ASSOC(关联数组) MYSQL_NUM (索引数组) MYSQL_BOTH(两个都包含的数组)
mysqli_fetch_assoc(查询语句返回的结果集) 返回值是关联数组
mysqli_fetch_row(查询语句返回的结果集) 返回值是索引数组
if(!$result){
die("查询失败");
}else if(mysqli_num_rows($result)==0){
die("结果集为空");
}else{
while($arr=mysqli_fetch_array($result,MYSQL_ASSOC)){
$res[]=$arr;
}
print_r($res);
}