sql数据库增删改查基本语句 sql增删改查语法

我在数据库行业工作了近十年,CRUD操作就像呼吸一样自然。
但如果我真想把这些基本句子给你罗列出来,我不得不说,无论代码看起来多么简单,使用它和不使用它之间存在着巨大的差异。

我们先来说一下INSERT。
当我第一次接手一个项目时,一些愚蠢的前端人员将所有用户电子邮件地址更改为小写。
结果他在创建数据库表的时候忘了添加case。
你猜怎么着?整组用户数据直接插入小写字母,这让我后来处理邮件认证的时候差点吐血。
现在,当我编写 INSERT 语句时,我必须考虑:哪些列可以接受 NULL?哪些有默认值?最烦人的是重复键。
此前,有团队曾因此在重复下单时将价格改为0。
他们必须及时弄清楚这一点,否则财务报告就会被炸毁。

我在查询(SELECT)中遇到了几个陷阱。
有一次为了省事写了一个SELECT,结果返回了几十万条记录,直接烧了服务器CPU。
说实话,现在最让我恼火的是那些毕业生连自己想要什么专栏都不知道。
他们坚持使用SELECT来检查用户头像地址并为你拉下整个表。
我教了他们一个技巧:先写WHERE条件,最后在表名前添加表别名,例如SELECT u.id FROM users u WHERE u.status='active'。
这至少会迫使他们考虑需要哪一列数据。

更新(UPDATE)最考验人们的注意力。
我见过的最令人沮丧的事情是一个运维人员半夜过来抱怨数据库数据混乱了。
经过检查,他发现脚本中的WHERE条件写错了,订单金额全部改为1 美分。
我们团队现在规定,在进行任何UPDATE之前,必须首先使用SELECT来打印将受到影响的数据。
一些人抱怨说这是不必要的。
我的反手是“你尝试改变它,发现它是错误的,然后你恢复数据”——你知道把几十万条数据改成默认值是什么感觉吗?系统卡住了两天。

DELETE绝对是SQL操作中的“核武器”。
客户公司删除了整个销售表,因为它执行了没有 WHERE 条件的 DELETE 语句。
第二天产品经理都请病假了。
现在我们的数据库用户手册上写得很清楚:在DELETE之前,必须确认三遍。
第一次是用SELECT打印数据,第二次是在测试环境中执行,第三次是有DBA角色。
有的觉得麻烦,偷偷用DELETE来软删除。
结果,当他们导出数据时,发现所有有删除标记的记录都被导出了,差点就被解雇了。

顺便说一下,我还得提一下TRANSACTION。
那是一个高并发的场景,两个进程同时改变了同一行数据,导致数据一片混乱。
后来我们改用乐观锁,每次更新的时候都检查一下版本号,就解决了这个问题。
在写事务时,我有一个习惯,在更改数据之前锁定 SELECT FOR UPDATE,并在更改后立即释放它。
虽然有人说没有必要,但我还是坚持这样做,毕竟省心。

说到索引,我建议您记住:越多并不是越好,也不是越少越好。
我有一个项目,查询速度降低,因为每个字段都建立了索引。
最好的方法是先使用 EXPLAIN 来分析查询计划,然后看到全表扫描后再考虑添加索引。
最离谱的是,一个DBA给‘%keyword%’这样的字段添加了全文索引。
结果,查询期间 CPU 利用率飙升至 9 0%。
查阅资料后发现,全文索引对于这种晦涩难懂的查询来说,很浪费资源。

我不得不说一下备份。
有一位客户因为没有定期备份而丢失了所有公司数据。
我们建议每日增量备份和每周完整备份。
主要是验证备份的可用性——我见过一些备份三年了,但是当他们恢复它时,他们发现备份文件早已损坏。
现在我们使用LVM快照进行热备份,每天凌晨自动增量,每个月做全卷,恢复测试也是每季度做一次。

其实说到底,这些SQL操作看似简单,但真正使用起来需要经验的积累。
我见过太多初学者在写SQL的时候把SELECT搞乱了,要么是忘记加WHERE条件,要么是事务用得乱七八糟。
您必须记住,数据库不是垃圾箱。
数据是公司的命脉。
写SQL的时候,要像对待自己的妻子一样小心。

mysql增删改查语句

Mysql的增、删、改、查询语句……其实还是挺简单的。

例如,要添加数据,请使用 INSERT INTO。
SQL INSERT INTO 表名(第 1 列,第 2 列) VALUES ('值 1 ', '值 2 ')
要删除数据,请使用 DELETE FROM。
您需要添加一个条件。
SQL DELETE FROM 表名 WHERE 条件
使用 UPDATE 更改数据并添加条件 SQL UPDATE 表名 SET 列 1 ='新值' WHERE 条件
如果要检查数据就用 SELECT,如果要检查全部就写如下。
SQL 从表名称中选择
或检查特定列 SQL 从表名中选择第 1 列、第 2 列
mysql和sql在这些基本语句上没有太大区别。
与某些数据库使用TOP不同,Mysql使用LIMIT来限制结果行数。
例如,检查前 3 项 SQL SELECT FROM 表名 LIMIT 3
请检查第 4 -6 项 SQL 从表名中选择 LIMIT 3 , 3
备份、附加数据库……说实话,这个和Tomcat没有直接关系。
请直接运行。
但是,如果程序内部映射了数据库路径,则操作后必须重新加载程序。

插入数据并尝试 SQL INSERT INTO TABLE NAME (列名 1 , 列名 2 ) VALUES ('值 1 ', 值 2 )
成功执行后,使用 SELECT 再次检查,您将看到新数据。