mysql explain 为空_MySQL数据库和表操作(2)

MySQL数据库和表操作(1)请跳转: https://www.toutiao.com/i6782001316597072387/

上一节中结尾提到MySQL查询时字段重命名,这里补充几点:

1、MySQL重命名时,别名可以用英文状态下的单引号或者英文状态下的双引号括起来

d8a051ecce1e4d93c757b6a1723efd9e.png

别名使用

2、MySQL重命名时可以省略as

8c92638b90d2416e9cbb436041815a3e.png

as省略

3、MySQL重命名时,别名无特殊字符的,可以省略单引号或双引号,但是建议按照规范使用。

22f996372093035deb409c0bb5706717.png

省略as和单双引号

4、别名中如果含有特殊字符会报错

552548cfba4a9acc1be87e5bc9951586.png

别名中间有特殊字符

这时就需要规范的命名

71a892b76fe1b6326975206f7e5091f7.png

将含有特殊字符的别名单独加单双引号

表数据更新

UPDATE 表名 SET 字段1='新值1', 字段2='新值2', 字段3='新值3'

WHERE 字段1='条件1' and 字段2='条件2';

将 "福建省" 下面身份证是 "35222719500815****"客户的身份证号码、年龄、金额更新为:身份证="35222719500815****",年龄="60",金额="80000"。

UPDATE financial SET idcard='35222719500815****', age='60', amount='80000'

WHERE province='福建省' and idcard='35222719550815****';

更新数据:

d788e85021294016f35b44f2031fcc6b.png

更新数据

查询更新结果:

dcf13f68e484c27d112fcc201b5c4c9c.png

查询更新结果

数据表删除

这里的drop是删除指定的表,这个操作会同时删除表和表里面的数据,这种一般是对整个表进行销毁的时候使用,需要小心谨慎。

/* EXISTS --> 存在的意思,整句话就是如果要删除的表存在,就删除该表*/

DROP TABLE IF EXISTS 表名 ;

b57cdc095649ecc1c7624ee12d98f7eb.png

删除整个表

表中数据删除

对于一些公司技术人员需要维护数据库,就会涉及到删除表中的错误或者异常数据,但是删除操作需要很谨慎,除非有备份,一旦不小心删除了,不能恢复。

delete from 表名 where 字段1='条件1' ;

删除"福建省"下面"年龄"<65岁的客户:

1fb95a79ca8995bac8b23afeadbae845.png

目标删除客户

01bdce7b276725d3e2fc0f28789765f1.png

删除满足条件的客户

模糊匹配

有时候我们可以自己想从表中查姓名一列数据,姓张(也可以是你想查到的其他姓)的人一共有多少个?这个时候就只能用到模糊查找。

'%'为通配符,按照规则一般是写成 like '%要查询的字符%' 格式,这种方式查询出来的结果'张'字可能存在数据的中间或者最后,跟自己想要的结果就会有些出入,涉及到数据取出来还要二次加工:

select 字段1,字段2 from 表名 where 字段1 like '%张%';

但是在知道姓名第一个字是要查询'张'的时候,如果表中姓名列中,姓前面无空格占用,规范写入数据的,可以使 like '张%' 进行模糊匹配,这样模糊查询出来的结果会更准确,如果有索引的会走索引,因此下面这种方法效率会比上面一种查询效率高:

select 字段1,字段2 from 表名 where 字段1 like '张%';

模糊查询身份证中间年月日是 1960年1月1号的记录:

e427b90d846fc88daf16c4fc1c0c2ef8.png

模糊匹配1960年1月1号的客户记录

注:一般情况不建议在MySQL中使用模糊查询,尤其是数据量较大的表中,效率会很低。

其他知识点:

1、主键一定是索引,但是索引不一定是主键。一个表只能有一个主键或联合主键,但是可以有多个索引。 主键字段必须不能为空,但是索引字段可以为空。

2、索引不是创建得越多越好,索引越多,表占用空间会越大。一般是常用且必须的才创建索引,对于互联网公司来说,数据量庞大的表,索引动不动就能占用1个G以上。

e363d6132dfe09e09a8ce255da8c02ab.png

公司的一个表索引占用空间已经非常大了

3、表中数据列是保存汉字等的,不创建索引。

4、在MySQL中用 EXPLAIN+查询语句 查看是否用到索引。

expain出来的信息有10列,分别是id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra

cb00387b2f7334f406ec4fbb65d8417f.png

EXPLAIN返回解读

解读建议参考:http://www.cnitblog.com/aliyiyi08/archive/2008/09/09/48878.html

主要关注:select_type(select类型),type(连接类型),key(实际使用到的索引),rows(数值越小越好)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值