当前位置:网站首页 > 技术博客 > 正文

增删改查mysql语句



据库最主要的操作就是增(create)删(update)改(retrieve)查(delete)。(CURD) 注意:进行增删改查操作的时候,请务必选中数据库。

SQL中使用insert来表示新增。

注意:

如果是这种情况,说明当前数据库的字符集是有问题的。创建数据库,如果手动指定字符集了,以手动指定的为准,如果没有手动指定,此时就会读取MySQL的配置文件(my.ini),配置文件里面也会写一个字符集。

我们可以每次创建数据库手动指定即可。

insert除了可以插入完整的一行数据之外,还可以指定列插入。此时未被指定的列,则是以默认值来进行填充的。

如果指定多个列,就用逗号,来进行分隔。

在MySQL中,当前一次插入一条记录,分10次插入,效率要远低于一次把10个记录一起插入。因为MySQL是一个“客户端服务器”结构的程序。

原因:

select是sql中最复杂的操作。

全列查询

查询表里的所有列

*指的是通配符。代表了所有的列。注意不要在大环境下使用select 因为服务器的硬件资源是有限的。如果在一些场景中,把某个资源吃光了,就会导致程序出现很严重的问题。

指定列查询

通过指定列查询,相比于上面的select*查询是会精简不少的。

查询列为“表达式”,在查询过程中,进行一个简单地计算

进行表达式查询的时候,查询结果,是一个:临时表; 这个临时表,并不是写入到硬盘中去的,临时表的类型也不是和原始的表完全一致。 select 只是查询,无论如何操作select都不会修改硬盘上的数据!!! 值得注意的是:如果使用的是decimal(3,1),那么98.0 是可以的100是不行的,1.25是不行的。 如果是98.05这种直接对小数点精度进行调整了(四舍五入)如果是10000,就无法调整精度,就直接报错了。 SQL对于类型本身检查并不严格,会尽可能的进行“隐式类型转换”。 Java是一个“强类型”编程语言,对于类型检查非常严格。SQL则是弱类型,会涉及到很多类型转换。 (在SQL中,Ctrl+c是终止当前要执行/要输入的内容)

给查询结果的列,指定别名

as是可以省略的。但是建议加上以增加可读性。

查询的时候,针对列来去重(把有重复的记录,合并成一个)

针对查询结果进行排序

注意:SQL中默认的排序是升序排序也就是“asc”。

如果想要降序,那么手动指定desc(descend 降序)注意和上文desc(describe)表名区别。

MySQL中数据量是非常大的,因此有可能采用的是归并排序。具体到工作中,还得看数据库中的实现。 注意:

不加order by,看起来好像是根据插入的顺序,依次排序的,但实际上,mysql并没有对顺序做任何承诺。

SQL中null和任何值进行计算,结果还是null

每个列的后面都可以加asc和desc;

条件查询,针对查询结果,按照一定的条件,进行筛选

根据查询的结果。按行,进行筛选。 通过where指定一个“条件” 把查询到的每一行,都带入到条件中,看条件是真还是假 把条件为真的行,保留(作为临时表结果),条件为假的,舍弃。 但是要想能够描述“条件”现有一些“关系运算符”&“逻辑运算符”

由于SQL是一个比较老的数据库。所以其与Java中的很多运算符不同。 “=”在SQL中是“比较相等”的意思(在where字句中) “<=>”是针对NULL特殊处理了。使用=来比较某个值和NULL的相等关系,结果仍然是NULL,NULL又会被当成false 模糊匹配:值不要求完全相同,只要满足一部分相等即可。

先把数据库中保存的数据,进行查询,查的时候,每次得到一行,就带入到条件中。

加入or就可以带上空值了。很多sql字句都是可以相互组合的。

这里是两个列进行比较。

在这个代码中,此处的where子句不能够使用列的别名来比较。 比如:

这取决于mysql内部的实现。mysql里执行查询操作的时候,现针对每一行记录,计算条件,并按照条件筛选。满足条件的记录,才会取出对应的列。并且计算列里面的表达式(生成别名)

并且:两边的条件,都符合。逻辑与运算。

逻辑或运算。 注意:条件中,同时有and和or,先计算and后计算or。但是我们一般情况下最好加上()加以区分。

查询语文成绩是60-90分之间:

查询数字成绩是 58 或者 59 或者 98 或者99 分的同学及数学成绩。

查询姓程的同学的成绩。

%可以表示任意个字符(通配符) '程%'表示以程开头的。 '%程’表示以程结尾的。 下划线表示_ 匹配任意一个字符。

模糊查询对于数据库来说,查询开销是比较大的。 mysql支持的模糊匹配功能是非常有限的。但是在实际开发中,可能会遇到更加复杂的情况。于是发明了一个东西, 正则表达式,来描述这种字符串的规则的。详情见

条件查询很重要,不仅仅搭配select使用,update/delect 也会搭配where字句,对应的条件的用法,也是完全相同的。 select * 之所以危险,是不确定查询结果有多少,如果太多们就会把机器的硬盘/带宽吃满,保证查询操作“不危险”的关键,在于控制一次查询,查出来的结果数量。就是靠where子句,通过条件来针对结果进行限制。那么怎么做,才能保证数量可控呢?在查询操作中,引入了一个limit,通过limit来限制查询结果的数量。 直接在查询语句的末尾,加上limit指定N,N就表示这次查询结果的最大值。

在数据库中,针对分页查询的支持,主要就是通过limit来实现的。 直接limit N,查询到的是前N条的东西。搭配offset就可以指定从第几条开始进行筛选了。

将张星星的数学成绩改成89;

修改操作之后,就是切实的改了服务器的硬盘数据了,这样的修改完成后,会“持久生效”。

注意

匹配到了三行,但是程心和程乐乐都是空值,空值是没法进行算术运算的。 update 还可以同时去修改多个列

update还可以搭配order by/limit等子句来进行使用。

update操作也是非常危险的。

删除张星星的成绩

这个操作也是在修改数据库服务器的硬盘,也是持久化删除。 后面的条件和update一样,可以支持where order by limit 。

注意区分:

以上这种删除,只是删除了表中的数据,表依然存在。(空表)

以上删除,才是删除表。

版权声明


相关文章:

  • 代码对比工具compare2024-12-05 23:01:02
  • c语言fwrite的用法2024-12-05 23:01:02
  • dds协议编程2024-12-05 23:01:02
  • sql orm框架2024-12-05 23:01:02
  • 动态内存申请的三个函数2024-12-05 23:01:02
  • 王码五笔输入法98版字根表2024-12-05 23:01:02
  • java并发编程实践和并发编程实战2024-12-05 23:01:02
  • java不同版本的区别2024-12-05 23:01:02
  • jmap命令作用2024-12-05 23:01:02
  • 数据指标体系搭建2024-12-05 23:01:02