Mysql学习笔记(三)对表数据的增删改查。
正文内容。
这一部分是最简单的,也是最麻烦的。简单是因为其实只包括增删该插四个部分。大体上看,增加数据、删除数据、修改数据、查询数据都不麻烦啊,我们日常都是常用的。这个谁不会呢?以前在培训机构学mysql的时候,我就知道,程序员的成长路程上的一个瓶颈就在于数据库。如何书写高维护性的sql语句,如何能保持高维护性的同时又保持执行的高效率,这是个难题。我最近在做一个比较棘手的项目,常常left join 5~6张表,扫表10几万,查询速度慢的惊人。10几万还仅仅是测试数据,等真正的项目上线,数据量可能会达到百万级别。因此低效率的mysql 语句,可能程序直接就崩溃了。
因此关于数据这部分的增删改插是最难的,也是至关重要的,一定要学好。但我们今天仅仅书写最简单的增删该插,后面的博客将会持续深入的去整理相关方面的知识。
增加数据:
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;
总之,一切的原则是要逻辑清晰,排版美观,能对齐的一定要对齐。
将代码当作白居易的诗歌来写,力求简练,但要兼顾可读性,让三岁小儿与七十岁老妪可懂。
将代码当作平面设计作品来写, 等号之间、变量之间排版整齐。代码段与代码段之间错落有致,整齐划一。
不要吝啬空格与换行符。将代码想象为数据流,让代码有流动的空间。
Mysql学习笔记(三)对表数据的增删改查。的更多相关文章
- Mysql入门-对表数据的增删改查
这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mysql的时候, ...
- ASP.NET学习笔记(3)——用户增删改查(三层)
说明(2017-10-6 11:21:58): 1. 十一放假在家也没写几行代码,本来还想着利用假期把asp.net看完,结果天天喝酒睡觉,回去的票也没买到,惨.. 2. 断断续续的把用户信息的页面写 ...
- ASP.NET MVC学习---(三)EF简单增删改查
那么现在我们已经大概从本质上了解了ef 巴拉巴拉说了一大堆之后 总算要进入ef的正题了 总在口头说也太不行了是吧~ 没错,现在要用ef进行一些实际的操作 做什么呢? 就做一个入门级的增删改查操作吧 废 ...
- C学习笔记-结构体与二进制文件增删改查
使用结构体整理数据,然后利用二进制存储文件,这样存储的文件类似于数据库,可以实现文件的增删改查 定义结构体 struct student { unsigned int ID; char name[20 ...
- MongoDB学习【三】—MongoDB数据库增删改查
一.数据库的增删查 # 增加 use db # 有则切换,无则新 增 # 查看 show dbs # 查看所有数据库 db # 查看当前库 # 删除 db.dropDatabase() # 不会就用h ...
- 【EF学习笔记04】----------EF简单增删改查
第一步:创建上下文对象 using(var db = new Entities()) { //数据操作 } 新增 UserInfo user = new UserInfo() { UserName = ...
- mongo学习笔记(一):增删改查
安装:我是按这篇来弄的 一.Insert 1.db.person.insert({"name":"jack","age":20}) 2.va ...
- Android学习笔记_9_SQLiteOpenHelper对象之数据库增删改查以及事务回滚操作
一.SQLite数据库: 在Android平台上,集成了一个嵌入式关系型数据库—SQLite,SQLite3支持 NULL.INTEGER.REAL(浮点数字).TEXT(字符串文本)和BLOB(二进 ...
- ASP.NET学习笔记(2)——用户增删改查
说明(2017-7-4 11:48:50): 1. index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transition ...
随机推荐
- APP架子迁移指南(一)
搭架子是脑垂体在放烟花 俗话说吃多少饭,走多少路,上学的时候捧着<设计模式>就想睡觉,现在轮子看得多了,自然有心领神会之感.搭架子就像谈哲学,如高山流水,遇弯则急.遇潭则深.我印象最深的是 ...
- ALinq Dynamic 使用指南——代码的获取与编译
1.下载代码 ALinq Dynamic 项目托管在 CodePlex 网站,你可以使用浏览器下载压缩包,或者通过 SVN 获取. 项目网址:http://esql.codeplex.com/ 压缩包 ...
- 吉特仓库管理系统-.SQL Server 2012 升级企业版
随着业务数据的不断增大,单表的数量已经上亿,查询的数据越来越慢,所以考虑到将数据库表分区,同时也将数据库升级到SQL Server 2012. 当时没有考虑更多,在服务器上安装了 SQL Server ...
- WCF x509证书安装问题汇总
1.win7及以后系统可以使用certlm.msc打开localmachine的证书管理界面.win7前的版本需要使用mmc打开控制台,然后选择文件->添加删除管理单元->选择证书.2.部 ...
- 阅读DNA-2014年读书
- 网页倒计时,动态显示"××年还剩××天××时××分××秒"
var target = document.getElementById('target'); function getTimeString(){ // 要计算任意两个日期的时间差只要修改curren ...
- go println与printf区别
Println 与Printf 都是fmt 包中的公共方法 Println :可以打印出字符串,和变量: Printf : 只可以打印出格式化的字符串,可以输出字符串类型的变量,不可以输出整形变量和整 ...
- 我的第一个DMZ方案实践
方案提出的初衷:外网需要定时和不定时推送数据到内网服务器(只要求数据到达内网,没有要求直接连接到内网) 为什么不是直连到内网:每个人第一想到的是不安全,是的,没错不安全.内网的应用和外网的应用最明显的 ...
- 让所有的浏览器都支持html5
<!--[if lt IE 9]> <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js" ...
- 【Alpha版本】冲刺阶段——Day 6
我说的都队 031402304 陈燊 031402342 许玲玲 031402337 胡心颖 03140241 王婷婷 031402203 陈齐民 031402209 黄伟炜 031402233 郑扬 ...