phpstudy里面已经集成了mysql了, navicat是数据库的可视化工具,打开navicat连接到mysql,连接上就可以去操控mqsql数据库了。
mysql --> 电视机
| navicat连接上mysql后就可以建立关联,遥控器就可以操控电视机了
navicat --> 遥控器
数据库操作方式:
数据库的相关设置:在phpstudy中 (打开数据库命令行,修改数据库密码等)
出现数据库的命令行工具:命令行演示(了解)
- show databases; -> 查看数据库表列表
- use 数据库名字; -> 切换到指定数据库
- show tables; -> 查看当前使用的数据库中的所有表
- crud(结合图形界面演示) 增删改查操作
图形界面客户端:
连接成功后:前面三个文件不要删,是系统文件,删掉phpstudy就得重装了。
在空白处右键新建数据:
之所以起名是以z开头,是因为数据库的排序是按照首字母排的,这样能把我们自己数据库置于列表的最下面,不去干扰上面的系统数据库。
双击创建好的数据库,就会变成绿色,里面就有各种选项了。
数据库中一行代表一条记录。一列表示一个字段
右键新建表:
字段的数据类型:
整数:int
存储如年龄,产品数量,编号等。 int(0-21亿)
小数:float
重量,工资,奖金,价格等
金钱:decimal
实现小数的精确存储,一般用来存储与钱有关的数字。
字符串:
varchar(n) 用于长度可变的字符串。 比如 狗,小狗狗,可爱的小狗.....
char(n) 用于长度固定的字符串
text 用于存放大量字符串,文章
日期类型: datetime,date(年月日),time(时分秒)
字段的约束条数:
not null : 限制字段值不能为空
default : 设置字段的默认值,在没有录入时自动使用默认值填充。
primary key 主键名 ---> 唯一标识,不能重复,不能为空
设置字段为主键,主键字段的值不能重复,不能为空。而且一个数据表中只能设置一个字段为主键,作为每行记录的唯一身份信息(索引)。
auto_increment ---> 设置字段为自动增长,默认从1开始自动分配编号。自增长字段必须为一个key(索引,数据结构,便于快速查找数据,相当于书的目录),一般与primary key结合使用。
类型必须为整型。
unique key ---> 不能重复
唯一键,设置字段的值为唯一的,可以设置多个字段为唯一键。唯一键字段的值可以为空。
创建数据表
注意 创建表时,每个表必须有一个主键
在索引中给指定字段设置索引类型
保存表:
添加数据:
添加数据:每行输入对应数据后,点击对号,即可创建每一行的数据,id会自动自增显示出来。
但是平常我们不会这么手动这样去添加数据,当数据量庞大的时候,根本不行,我们需要在sql编辑面板中用sql语句去增删改查操作
sql新增:
insert into 表名 (key1,key2,key3...) values (value1,value2,value3...);
字段key的数量要与值value的数量对应
转储数据表到指定位置:防止不小心把数据库表删了,这样有个备份,下次直接拖动存储的文件到数据库中即可。
sql删除操作:(删除是软删除,并不是真从数据库删掉,还留有记录)
detele from 表名 where 条件;
注意sql中一个=号相当于js中的==
sql修改:
update 表 set key=value where 条件;
sql查找:
select 要查询的字段列表 from 表 where 条件;
查找---模糊匹配:
like 和 通配符% 配合使用
SELECT * from stu WHERE name LIKE '周%'; -- 在stu表中的所有字段名中 去查找name名以周开头的结果
SELECT * FROM stu WHERE name LIKE '%星%'; -- 在stu表中的所有字段名中 去查找name名中含有星字的结果
and 用作并且条件,相当于js中的&&
SELECT * FROM stu WHERE age > 18 and age < 25; -- 在stu表中的所有字段名中 去查找age大于18并且小于25的结果
or 用作或者条件,相当于js中||
SELECT * FROM stu WHERE id = 12 or id = 16 or id = 18; -- 在stu表中的所有字段名中,查找id为12,16,18的结果
in 用于一对多的查询
SELECT * FROM stu WHERE id in (3,6,9); -- 用in去方便查询多个条件,查询id为3,6,9的结果
count() 用于计算总数 ,可以用as取别名
SELECT COUNT(*) AS 'total' FROM stu; --计算数据表stu中行的总数
order by 用于排序(升序),order by desc(降序)
SELECT * FROM stu ORDER BY id; -- 按照id升序查找结果
limit 用于截取查找 相当于js中的substr(n,m),从索引为n,截取m个
SELECT * FROM stu LIMIT 0,5; -- 从索引为0,截取5个
SELECT * FROM stu LIMIT 5,2; -- 从索引为5,截取2个,因为上一次截取是五个,五个最后一个索引是4,所以,这次从索引5开始
表连接查询:
主键:表示当前表的数据唯一标识
外键:当前表存放了别的表主键,可以用于关联别的表。
数据表之间通过join和on去连接
当我们想要保存sql编辑器中写的sql文件,ctrl+s起名即可,保存位置在:
注意:在后台语言中去连接mysql数据库后,在准备的sql语句中:如果sql语句中有变量是字符串,变量两边要加单引号,因为数据库的sql语法需要。
双引号是php语法中的双引号
sql语句采用外双内单
如:以php为例:
$name='张三'
$sex='男'
拼sql语句时:
$sql = "insert into stu (name , sex) values ('$name' , '$sex')" ;
通过服务器操作数据库的基本步骤:
1.通过服务器连接上数据库
2.准备sql语句
3.将sql语句传递给数据库执行
4.分析执行结果
5.关闭数据库连接
编辑修改并保存的思路:(有文本信息和图片)
1. 先回显:
首先前端发送要修改的数据的id(列表页带来的id)给后台,后台拿到id,去数据库中找到这个id对应的数据,并返回给前端
2. 前端把用户修改后的信息提交给后台,后台拿到前端传来的id(修改页面的id)去数据库中更新修改后的各个数据信息
3. 后台要判断有前端传来的有没有图片信息,如果有在去数据库中请求更新的时候,也要更新新的图片信息,如果没有,还使用原来的。
后台为什么单独要单独判断图片又没有更改?
是因为如果图片不更改提交后,图片信息是个空值,我们不能拿着空值一股脑的去请求更新。而文本类型的,我们都能去获取到value中现在是什么就传给后台什么。所以,没有修改图片并不能是个空值代,否则就提交后就没图片了。