MySQL数据库和表操作(1)请跳转: https://www.toutiao.com/i6782001316597072387/
上一节中结尾提到MySQL查询时字段重命名,这里补充几点:
1、MySQL重命名时,别名可以用英文状态下的单引号或者英文状态下的双引号括起来
![d8a051ecce1e4d93c757b6a1723efd9e.png](https://i-blog.csdnimg.cn/blog_migrate/342043d5bc28b25da9074f6e27173e41.jpeg)
别名使用
2、MySQL重命名时可以省略as
![8c92638b90d2416e9cbb436041815a3e.png](https://i-blog.csdnimg.cn/blog_migrate/60a63070133b29910d42972c61aef2cd.jpeg)
as省略
3、MySQL重命名时,别名无特殊字符的,可以省略单引号或双引号,但是建议按照规范使用。
![22f996372093035deb409c0bb5706717.png](https://i-blog.csdnimg.cn/blog_migrate/12a78931c9c2b2429bfcefa356a79361.jpeg)
省略as和单双引号
4、别名中如果含有特殊字符会报错
![552548cfba4a9acc1be87e5bc9951586.png](https://i-blog.csdnimg.cn/blog_migrate/6eeabb5888b37c851bf8cd23e33fc435.jpeg)
别名中间有特殊字符
这时就需要规范的命名
![71a892b76fe1b6326975206f7e5091f7.png](https://i-blog.csdnimg.cn/blog_migrate/fc7c336528d1326ab89c7245e2624ee5.jpeg)
将含有特殊字符的别名单独加单双引号
表数据更新
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](https://i-blog.csdnimg.cn/blog_migrate/cbaa5fd301deb01c309bd9502336a326.jpeg)
更新数据
查询更新结果:
![dcf13f68e484c27d112fcc201b5c4c9c.png](https://i-blog.csdnimg.cn/blog_migrate/7a80fee487dcf56d3c1d6e5a886b5a01.jpeg)
查询更新结果
数据表删除
这里的drop是删除指定的表,这个操作会同时删除表和表里面的数据,这种一般是对整个表进行销毁的时候使用,需要小心谨慎。
/* EXISTS --> 存在的意思,整句话就是如果要删除的表存在,就删除该表*/
DROP TABLE IF EXISTS 表名 ;
![b57cdc095649ecc1c7624ee12d98f7eb.png](https://i-blog.csdnimg.cn/blog_migrate/9423220c8bce05a739a98381c8ed1605.jpeg)
删除整个表
表中数据删除
对于一些公司技术人员需要维护数据库,就会涉及到删除表中的错误或者异常数据,但是删除操作需要很谨慎,除非有备份,一旦不小心删除了,不能恢复。
delete from 表名 where 字段1='条件1' ;
删除"福建省"下面"年龄"<65岁的客户:
![1fb95a79ca8995bac8b23afeadbae845.png](https://i-blog.csdnimg.cn/blog_migrate/d519cc6809d66313b4f6504d96e675b9.jpeg)
目标删除客户
![01bdce7b276725d3e2fc0f28789765f1.png](https://i-blog.csdnimg.cn/blog_migrate/7044226b320c1aa13d0a895258b4cbdf.jpeg)
删除满足条件的客户
模糊匹配
有时候我们可以自己想从表中查姓名一列数据,姓张(也可以是你想查到的其他姓)的人一共有多少个?这个时候就只能用到模糊查找。
'%'为通配符,按照规则一般是写成 like '%要查询的字符%' 格式,这种方式查询出来的结果'张'字可能存在数据的中间或者最后,跟自己想要的结果就会有些出入,涉及到数据取出来还要二次加工:
select 字段1,字段2 from 表名 where 字段1 like '%张%';
但是在知道姓名第一个字是要查询'张'的时候,如果表中姓名列中,姓前面无空格占用,规范写入数据的,可以使 like '张%' 进行模糊匹配,这样模糊查询出来的结果会更准确,如果有索引的会走索引,因此下面这种方法效率会比上面一种查询效率高:
select 字段1,字段2 from 表名 where 字段1 like '张%';
模糊查询身份证中间年月日是 1960年1月1号的记录:
![e427b90d846fc88daf16c4fc1c0c2ef8.png](https://i-blog.csdnimg.cn/blog_migrate/a24d0242433ca3d0ec222b09e86c4d5e.jpeg)
模糊匹配1960年1月1号的客户记录
注:一般情况不建议在MySQL中使用模糊查询,尤其是数据量较大的表中,效率会很低。
其他知识点:
1、主键一定是索引,但是索引不一定是主键。一个表只能有一个主键或联合主键,但是可以有多个索引。 主键字段必须不能为空,但是索引字段可以为空。
2、索引不是创建得越多越好,索引越多,表占用空间会越大。一般是常用且必须的才创建索引,对于互联网公司来说,数据量庞大的表,索引动不动就能占用1个G以上。
![e363d6132dfe09e09a8ce255da8c02ab.png](https://i-blog.csdnimg.cn/blog_migrate/d2681db2e8681a334ad0d3631adacc46.jpeg)
公司的一个表索引占用空间已经非常大了
3、表中数据列是保存汉字等的,不创建索引。
4、在MySQL中用 EXPLAIN+查询语句 查看是否用到索引。
expain出来的信息有10列,分别是id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra
![cb00387b2f7334f406ec4fbb65d8417f.png](https://i-blog.csdnimg.cn/blog_migrate/3eecc22199fd4f89cc6ae40633d4bdf9.jpeg)
EXPLAIN返回解读
解读建议参考:http://www.cnitblog.com/aliyiyi08/archive/2008/09/09/48878.html
主要关注:select_type(select类型),type(连接类型),key(实际使用到的索引),rows(数值越小越好)