设为首页 收藏本站
查看: 1371|回复: 0

[经验分享] Mysql入门-对表数据的增删改查

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-11-25 09:07:32 | 显示全部楼层 |阅读模式
这一部分是最简单的,也是最麻烦的。简单是因为其实只包括增删该插四个部分。大体上看,增加数据、删除数据、修改数据、查询数据都不麻烦啊,我们日常都是常用的。这个谁不会呢?以前在培训机构学mysql的时候,我就知道,程序员的成长路程上的一个瓶颈就在于数据库。如何书写高维护性的sql语句,如何能保持高维护性的同时又保持执行的高效率,这是个难题。我最近在做一个比较棘手的项目,常常left join 5~6张表,扫表10几万,查询速度慢的惊人。10几万还仅仅是测试数据,等真正的项目上线,数据量可能会达到百万级别。因此低效率的mysql 语句,可能程序直接就崩溃了。兄弟连IT教育(www.lampbrother.net

  因此关于数据这部分的增删改插是最难的,也是至关重要的,一定要学好。但我们今天仅仅书写最简单的增删该插,后面的博客将会持续深入的去整理相关方面的知识。

  增加数据:

  insert into 表名 (字段1, 字段2, 字段3, 字段n) values (值1,值2,值3,值4);

  这个比较简单。这是一条通用语句。可以值inset一条数据,也是insert多条数据。这个在《Mysql学习笔记(二)对表结构的增删改查》的测试sql里面有。可以参考一下,这里就不重复贴代码了。

  注意事项:

  向char 、varchar 、text 以及日期型的字段插入时,字段值要用单引号括起来。

  向自增型auto_increment字段插入数据时,建议插入NULL值,此时字段将向自增型字段插入下一个编号。其实我平时都直接不写。

  向默认值约束字段插入数据时,字段值可以使用default关键字,表示插入的是该字段的默认值。

  插入新纪录时,需要注意表之间的外键约束关系,原则上先给父表插入数据,然后给子表插入数据。

  删除数据:

  删除数据是比较危险的操作,平时在开发测试阶段,可能会用到,但是到了真正的项目上线阶段,是不会有delete权限的。

  语法: delete from 表名 where 条件;

  delete from classes where class_no = 53; (可以继续用《Mysql学习笔记(二)对表结构的增删改查》中的测试sql);

  强调一句,删除数据与修改数据,不加条件都是臭流氓。

  修改数据:

  修改数据也是很危险的操作,在项目上线的时候,只有某些表的某些字段允许更改。

  语法:update 表名 set 字段名=字段值 where 条件。

  update classes set class_name='roverliang' where class_no=52;

  强调一句,删除数据与修改数据,不加条件都是臭流氓。

  查询数据:

  基本上项目中有90%以上关于数据库的操作是查询操作。因此查询语句写的好不好,将直接体现出一个程序员的编程能力。

  反对那些人,一看到很长sql语句就摇头表示否定。他们从一些资料中得知,sql语句写的长会使执行效率下降、简直对长长的mysql语句是避而远之。将本来能一气呵成的mysql硬生生的分成了几个零散的片段。

  对于我们搞技术的人来说,凭感觉是不对的。一切要以事实为基础,sql执行快慢优劣不是凭感觉拍脑袋决定的。真正决定sql执行速度的还是mysql本身,所以遇到疑惑的,就放进mysql里跑一跑。那个快那个慢,就高下立见了。

  如果两者执行时间几乎相当,当然要毫不犹豫的选用一气呵成的sql。好维护啊!能够大大的减少代码量。

  有些朋友可能会反驳说,那么长一段sql,看着都烦人,怎么会好维护呢?这其实与个人习惯有关,对于长的sql语句,我个人平时是这么写的,不知道对不对,请大家给指点下。

  复制代码

  #长长的sql;

  select 字段1,字段2,字段3,字段n

  from 表一 as t1,表二 as t2 ,表三 as t3

  left join 表四 as t4 on t1.字段1 = t4.字段1

  left join 表五 as t5 on t1.字段2 = t5.字段2

  where t1.字段1=1 and t2.字段2=2 and t3.字段3 > 3

  group by t1. 字段1

  order by t1

  limit 1,5;

  复制代码

  总之,一切的原则是要逻辑清晰,排版美观,能对齐的一定要对齐。

  将代码当作白居易的诗歌来写,力求简练,但要兼顾可读性,让三岁小儿与七十岁老妪可懂。

  将代码当作平面设计作品来写, 等号之间、变量之间排版整齐。代码段与代码段之间错落有致,整齐划一。

  不要吝啬空格与换行符。将代码想象为数据流,让代码有流动的空间。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-305270-1-1.html 上篇帖子: mysql群集搭建案例解析 下篇帖子: mysql的介绍;安装及基本配置;mysql数据库运行必备技能
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表