(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 布尔型数据
四个语句,对于已建的数据表,可以进行增删改查等操作。SQL语言,即结构化查询语言。
(1)Select语句–查询记录
(2)Insert语句–添加记录
(3)Delete语句–删除记录
(4)Update–更新记录
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 into 表 (字段1, 字段2, …) values (字段1的值, 字段2的值, …)
//实例:
insert into student values ("201720202701", "陈小乔", "女", 18,'计算机' )
insert into student (sname, ssex, sage) values ("吴小芬", "女", 19)
/*个人比较习惯第二种的方法*/
基本语法:delete from 表 where 条件
//实例:
delete from student where sno="201720202701"
delete from student where ssex="女" and sage>22
基本语法:update 表 set 字段1=字段值1, 字段2=字段值2 , … where 条件
//实例:
update student set sdept="生物工程" where sno="201720202701"
以上仅做简单了解,本次的数据库开发还是使用PHPMyadmin来进行
在php中主要是通过操作mqsqli来进行,默认扩展已经安装。
(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与服务器的连接
(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中SQL查询语句必须使用单引号
②在SQL中查询的字符串值必须加引号
③数值的值不需要引号
④NULL值不需要引号
INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)
其中table_name为数据库中具体某张表的名字,然后后面接的是各个表项的名称
VALUES里面接的是要接的是将要赋值的值
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', '[email protected]')";
例如在学生表中插入新学生,则操作如下:
$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();
?>
$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 "成功!";
}
预处理语句的原理如下: 创建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指代的就是三个字符串形的变量
关键语句: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"]."
";
}
}
注:mysqli_fetch_assoc() 函数从结果集中取得一行作为关联数组。也就是从result中取出一行来打印。
mysqli_num_rows指的是数据库中数据的行数,假如有数据的话就进入打印,否则不进入。
简述: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 "
";
}
注:mysqli_fetch_assoc也可以换成是mysqli_fetch_array
都表示从结果集中取出一行数据出来使用
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 "
";
}
当降序排序的时候
$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 "
";
}
也可以通过多个键值来排序,只有当第一个键值无法排序的时候才会使用第一个。
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 FROM 语句用于从数据库表中删除记录。
DELETE FROM table_name
WHERE some_column = some_value
$sql="DELETE FROM student WHERE sname='张奇夫' ";