mysql数据库-03

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中现在是什么就传给后台什么。所以,没有修改图片并不能是个空值代,否则就提交后就没图片了。  

 

posted @ 2021-01-10 03:27  猎奇游渔  阅读(109)  评论(0编辑  收藏  举报