PHP操作MySql(MySql基本入门)

MySql基础使用

MySql中常用的字段数据类型

(1)INT 常规整数,有符号取值范围:-231~231-1,无符号取值范围: 0 ~ 2的32次方-1
(2)VARCHAR 用于表示可变长度的字符串
(3)CHAR 固定长度的字符串,假如是没有到固定的长度,后面会自动用空格补齐。
(4)UNSIGNED 用于设置字段数据类型是无符号的。
(5)PRIMARY KEY 用于设置主键,唯一标识符中的某一条记录,能够作为一个唯一的变量来区分每一个变量。用来唯一标识原组的属性或者是属性集(也就是可以有多个属性决定一个主键)称为主键,主键自带有NOT NULL的属性,
(6)AUTO_INCREMENT 用于表示自动增长,每增加一条记录,该字段会自动加1。
(7)NOT NULL 表示该字段不允许出现NULL(不能为空),用于对于账号密码等。
(8)TEXT 用于存储比较长的字符串,或二进制数据
(9)DATETIME 保存日期/时间的数据类型,不能指定长度
(10)BOOL 布尔型数据

MySql的关于数据表的管理(MySql语句的使用)

四个语句,对于已建的数据表,可以进行增删改查等操作。SQL语言,即结构化查询语言。
(1)Select语句–查询记录
(2)Insert语句–添加记录
(3)Delete语句–删除记录
(4)Update–更新记录

Select语句

Select语句用来实现对数据库的查询,从数据库的相关表中查询符合特定条件的记录(行)或字段(列)。
语法使用如下:select from [where条件] ,[ order字段 ] , [group by 字段] ,[limit start,number].
语法示例:
基础使用

select * from student/*查询表中的所有字段*/
select sno,sname from student/*查询表中的指定元素*/
select * from student limit 5/*查询前五条数据*/
select * from student limit 0,5/*查询从5开始的后五条数据*/
select * from student limit 5,10/*查询从5开始的后十条数据*/
select * from student where sage>25/*从数据库中选择student这个表,然后查询这个表里面叫sage的,选择sage>25的字段*/
select * from student where name='Lumxi'/*从数据库中选择student这个表,然后查询这个表里面叫name的,选择name==Lumxi的字段*/
select sno,sname from student where sage between 18 and 20/*从数据库中选择student这个表,然后查询这个表里面叫sno和name的,选择其中关联的对应sage在18和20之间的字段*/
select sno,sname form student where sage in(19,20,21)/*从数据库中选择student这个表,然后查询这个表里面叫sno和name的,选择其中关联的对应sage满足19 20 21的字段*/

模糊查找和有序展示使用

select * from student where sname like '%杰%'/*从数据库中选择student这个表,然后查询这个表中sname,可以找到里面所有含有杰的元素,其中%表示0个或者多个字符,可以匹配任意类型和长度的字符*/
select * from student where sname like '张%'/*找到所有姓张的人*/
select * from student where sanem like '唐_'/*匹配单个任意字符*/
select * from student order by sage asc/*表示按照sage,然后升序排序*/
select * from student order by sage dasc/*表示按照sage,然后降序排序*/
select count(*) from student/*查询该表中共有多少条记录*/
select avg(sage),min(sage),max(sage) from student /*从表中查询对应的数据*/

as关键字的运用:取别名

select count(*) as "学生人数" from student/*把记录总数命名为学生人数*/
select avg(sage) as "平均年龄",min(sage) as "最小年龄",max(sage) as "最大年龄" from student

Distinct关键字的运用:去除掉表中的重复元素

select distinct ssex from student

分组查询功能:group by子句:聚合函数可以与group by语句联合使用,以便实现分类统计查询表中共有多少条记录。

select sdept,count(*) as "各系人数" from student group by sdept/*按照sdept分类统计人数*/
select ssex,count(*) as "人数" from student group by ssex/*按照性别分类统计人数*/

选择分组-having:指定组或聚合的条件,只有满足条件的组才被选出来,having通常与group by子句一起使用。

select sno, count(*)
from grade
group by sno
having count(*) > 3

多表连接查询:查询字段涉及到2张或更多表,表能够连接的提前是表间有公共字段。

/*查询选修了高数课程的学生姓名及其成绩:*/
select student.sno, student.sname, sc.grade
from student, sc, course
where student.sno=sc.sno and sc.cno=course.cno and course.cname="高数"

Insert语句

基本语法表示:insert into 表 (字段1, 字段2, …) values (字段1的值, 字段2的值, …)

//实例:

insert into student values ("201720202701", "陈小乔", "女", 18,'计算机' )
insert into student (sname, ssex, sage) values ("吴小芬", "女", 19) 

/*个人比较习惯第二种的方法*/

Delete语句

基本语法:delete from 表 where 条件

//实例:
delete from student where sno="201720202701"
delete from student where ssex="女" and sage>22

Update语句

基本语法:update 表 set 字段1=字段值1, 字段2=字段值2 , … where 条件

//实例:
update student set sdept="生物工程" where sno="201720202701"

以上仅做简单了解,本次的数据库开发还是使用PHPMyadmin来进行

重点: PHP操作MySql

在php中主要是通过操作mqsqli来进行,默认扩展已经安装。

一、建立、关闭与MySql服务器的连接

(1)连接指定的MySql服务器

   //也可以提前定义好字符串,然后输入函数中。
   $link=mysqli_connect('localhost','root','','',3307);
   var_dump($link);

如上代码,在PHP中建立数据库的连接是首先是 主机名、用户名、密码、数据库名称、端口名称.
当密码错误时,则有

   if(mysqli_connect_errno())
   {
     exit(mysqli_connect_errno());
   }

也可以在PHP中直接创建数据库

// 创建数据库
$sql = "CREATE DATABASE myDB";//新数据库命命
if ($conn->query($sql) === TRUE) {//
    echo "数据库创建成功";
} else {
    echo "Error creating database: " . $conn->error;
}
$conn->close();
mysqli_query($conn, "set character set 'utf8'");//读库 
mysqli_query($conn,"set names 'utf8'");//写库

创建数据库并编写表单中的具体参数,也可以用PHPMyadmin来建表写表

// 使用 sql 创建数据表
$sql = "CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP
)";
 
if ($conn->query($sql) === TRUE) {
    echo "Table MyGuests created successfully";
} else {
    echo "创建数据表错误: " . $conn->error;
}

依照此进行报错格式。

   if(mysqli_connect_errno())
   {
     echo "Your DataBase Password is not corrected!";
     exit(mysqli_connect_errno());
   }

设置php的编码格式

   mysqli_set_charset($link,utf8);

设置为utf-8的编码格式

  mysqli_select_db($link,'student');

选择数据库或者切换数据库,当指定了数据库令牌后,就可以通过这个语句切换数据库。

mysqli_close($link);

关闭MySql与服务器的连接

二、在PHP编码中执行SQL语句

(1)基本操作模板,实际上就是先写好操作数,然后传进接口即可。

   $query="select * from student ";/*设定好Mysql语句*/
   mysqli_query($link,$query);/*提供操作对象和操作数*/

例子如下

   $query="insert into student (sno,sname,sdepet) values ('202025220227','张三','软件工程2班')";
   mysqli_query($link,$query);

PHP中有相当多的函数供我们使用,可以在开发过程根据需要选择,在这里只学习如何调用结果

三、在PHP中向Mysql中插入数据

有以下四条规则:
①PHP中SQL查询语句必须使用单引号
②在SQL中查询的字符串值必须加引号
③数值的值不需要引号
④NULL值不需要引号

语句1:INSERT INTO 语句通常用于向 MySQL 表添加新的记录(插入单个数据)

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)

其中table_name为数据库中具体某张表的名字,然后后面接的是各个表项的名称
VALUES里面接的是要接的是将要赋值的值

$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";

例如在学生表中插入新学生,则操作如下:

<?php
   $servername="localhost";
   $username="root";
   $password="";
   $dbname="students";
   $conn= new mysqli($servername,$username,$password,$dbname);
   if($conn->connect_errno)
   {
     die("连接失败!".$conn->connect_errno);
   }
   mysqli_set_charset($conn,'utf8');
   $sql="INSERT INTO student (sno,sname,sdepet)
   VALUES('202025220229','张夫','20级计算机2班')";
   if($conn->query($sql)==true)
   {
     echo "成功!";
   }
   else
   {
     echo "寄!";
   }
   $conn->close();
?>

语句2:mysqli_multi_query() 函数可用来执行多条SQL语句。

   $sql  ="INSERT INTO student (sno,sname,sdepet)
   VALUES('202025220230','孙夫','20级计算机2班');";
   $sql .="INSERT INTO student (sno,sname,sdepet)
   VALUES('202025220231','王夫','20级计算机2班');";
   $sql .="INSERT INTO student (sno,sname,sdepet)
   VALUES('202025220232','李夫','20级计算机2班');";
   if($conn->multi_query($sql)===true)
   {
     echo "成功!";
   }

语句3:MySql预处理语句

预处理语句的原理如下: 创建SQL语句模板并发送到数据库。预留的值使用参数“?”标记,如:

   $sql  ="INSERT INTO student (sno,sname,sdepet)
   VALUES(?,?,?)";

数据库解析,编译,对SQL语句模板执行查询优化,并存储结果不输出。
执行:最后,将应用绑定的值传递给参数("?" 标记),数据库执行语句。应用可以多次执行语句,如果参数的值不一样。
使用示例:

   $Insert=$conn->prepare("INSERT INTO student (sno,sname,sdepet) VALUES(?,?,?)");
   $Insert->bind_param("sss",$sno,$sname,$sdepet);
   //设置参数并执行相关操作
   $sno="202025220234";
   $sname="王老五";
   $sdepet="20软件工程3班";
   $Insert->execute();

依照此可以直接编写相关接口。
其中,特别说明bind_param函数的使用
第一个参数用来指定变量的type,具体如下:
i - integer(整型)
d - double(双精度浮点型)
s - string(字符串)
b - BLOB(布尔值)
那么在这里的sss指代的就是三个字符串形的变量

四、在PHP中向MySql读取数据

关键语句:SELECT(用来从数据库中选择符合要求相关数据)
使用样例如下:

   $sql="SELECT * FROM student";
   $result=mysqli_query($conn,$sql);
   if(mysqli_num_rows($result))
   {
     while($row = mysqli_fetch_assoc($result))
     {
       echo "学号:".$row["sno"]." "."姓名".$row["sname"]." "."专业班级:".$row["sdepet"]."<br>";
     }
   }

注:mysqli_fetch_assoc() 函数从结果集中取得一行作为关联数组。也就是从result中取出一行来打印。
mysqli_num_rows指的是数据库中数据的行数,假如有数据的话就进入打印,否则不进入。

五、Where子句

简述:WHERE 子句用于提取满足指定标准的的记录。

SELECT column_name(s)
FROM table_name
WHERE column_name operator value

使用示例

   $sql="SELECT * FROM student WHERE sno ='202025220227'";
   $result=mysqli_query($conn,$sql);
   while($row =mysqli_fetch_assoc($result))
   {
     echo $row['sno'] . " " . $row['sname'];
     echo "<br>";
   }

注:mysqli_fetch_assoc也可以换成是mysqli_fetch_array
都表示从结果集中取出一行数据出来使用

六、order by语句

ORDER BY 关键词用于对记录集中的数据进行排序。
ORDER BY 关键词默认对记录进行升序排序,需要使用降序排序的时候,需要使用DESC关键字

SELECT column_name(s)
FROM table_name
ORDER BY column_name(s) ASC|DESC

使用示例如下:

   $sql="SELECT * FROM student ORDER BY sno";
   $result=mysqli_query($conn,$sql);
   while($row =mysqli_fetch_assoc($result))
   {
     echo $row['sno'] . " " . $row['sname'];
     echo "<br>";
   }

当降序排序的时候

   $sql="SELECT * FROM student ORDER BY sno DESC";
   $result=mysqli_query($conn,$sql);
   while($row =mysqli_fetch_assoc($result))
   {
     echo $row['sno'] . " " . $row['sname'];
     echo "<br>";
   }

也可以通过多个键值来排序,只有当第一个键值无法排序的时候才会使用第一个。

六、Updata语句

UPDATE 语句用于更新数据库表中已存在的记录。
WHERE 子句规定了哪些记录需要更新。如果省去 WHERE 子句,所有的记录都会被更新!
为了让 PHP 执行上面的语句,我们必须使用 mysqli_query() 函数。该函数用于向 MySQL 连接发送查询或命令。

实例

UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value
   $sql="UPDATE student SET sname='张奇夫' WHERE sno='202025220227' ";
   mysqli_query($conn,$sql);

七、DELETE语句

DELETE FROM 语句用于从数据库表中删除记录。

DELETE FROM table_name
WHERE some_column = some_value
$sql="DELETE FROM student WHERE sname='张奇夫' ";
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值