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;

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

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

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

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

时间: 2024-10-17 22:33:26

Mysql学习笔记(三)对表数据的增删改查。的相关文章

Mysql入门-对表数据的增删改查

这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mysql的时候,我就知道,程序员的成长路程上的一个瓶颈就在于数据库.如何书写高维护性的sql语句,如何能保持高维护性的同时又保持执行的高效率,这是个难题.我最近在做一个比较棘手的项目,常常left join 5~6张表,扫表10几万,查询速度慢的惊人.10几万还仅仅是测试数据,等真正的项目上线,数据量可能会达到百万

ASP.NET学习笔记(2)——用户增删改查

说明(2017-7-4 11:48:50): 1. index.html 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <

MySQL学习笔记之五 有关数据表操作

MySQL在创建表的时候,创建一个.frm文件保存表和列定义.索引存储在一个有.MYI(MYindex)扩展名的文件并且数据存储在有.MYD(MYData)扩展名的文件中.   一.用SHOW/ DESCRIBE语句显示数据表的信息 语法: SHOW TABLES [FROM db_name] [LIKE wild] or SHOW COLUMNS FROM tbl_name [FROM db_name] [LIKE wild] or SHOW INDEX FROM tbl_name [FROM

Mybatis学习总结(二)—使用接口实现数据的增删改查

在这一篇中,让我们使用接口来实现一个用户数据的增删改查. 完成后的项目结构如下图所示: 在这里,person代表了一个用户的实体类.在该类中,描述了相关的信息,包括id.name.age.id_num信息.而personMapper则是该实体类的一个配置文件.需要注意的是,在上一篇博文中,namespace属性的值是其本身,而在这一篇中,使用的是接口.那么两者有什么区别呢?使用接口,那么相关的操作方法不用自己去实现,只需要调用该接口的相关的方法就能够实现相应的功能. 那么,在这里就有一个问题,接

Node.js + MySQL 实现数据的增删改查

通过完成一个 todo 应用展示 Node.js + MySQL 增删改查的功能.这里后台使用 Koa 及其相应的一些中间件作为 server 提供服务. 初始化项目 $ mkdir node-crud && cd $_ $ yarn init -y && npx gitignore node 上面的命令创建了一个空文件夹 node-crud,进入之后初始化一个 package.json 以及创建 .gitignore 文件. 安装 Koa 并创建 app.js 以启动一个

yii中数据的"增删改查"相关工作!(此文比较乱,需细看)

使用findByPk()根据数据表主键查询的是对象,不需要使用foreach()循环出来 但是使用findall()和find()查询的是对象类型的数组需要使用foreach()循环出来 ======================================= public function getMinLimit () { $sql = "..."; $result = yii::app()->db->createCommand($sql); $query = $r

数据的增删改查(三层)

进行数据操作必然少了对数据的增删改查,用代码生成器生成的代码不是那么满意!方便在今后使用,这里就主要写“数据访问层(Dal)” 注:这里由于是用于用于测试时,临时建的数据库用于测试使用,在实际使用过程中些许改点参数就可以使用了 /// <summary> /// 是否存在该记录 /// </summary> public bool Exists(long Id) { string sql = "select count(*) Name from t_temp where

ios CoreData框架的使用,对上下文数据的增删改查,表与表之间的关联,1对多,1对1,谓词查询,多表连接

这里是只是代码,因为博客插入图片效果不是很好,我自己写的总结比较详细,有兴趣的朋友可以在评论里留下邮箱,我收到后会发给大家. 转载注明出处,重视原创者的劳动成果,谢谢! - (void)viewDidLoad { [super viewDidLoad]; [self _creatTable];//插入数据 //    [self _query];// 查询数据 // KVC很霸道,即使readonly通过kvc也可赋值,kvo精华 //    Book * book = [[Book alloc

MySQL学习笔记(三)&mdash;索引

一.概述 1.基本概念       在大型数据库中,一张表中要容纳几万.几十万,甚至几百万的的数据,而当这些表与其他表连接后,所得到的新的数据数目更是要大大超出原来的表.当用户检索这么大量的数据时,经常会感觉慢.这个时候要提高数据库的检索性能,就必须要用到索引.给表追加合适的索引能极大的改善数据检索的效率,提供数据库性能.      索引是在存储引擎中实现的,因此每种存储引擎的索引都不一定完全相同,而且每种存储引擎也不一定支持所有的索引类型.      所有存储引擎支持每个表至多16个索引,总索