MYSQL表的增删改查

首先我们要明确一下我们操作的是那部分数据

电脑上有一个数据库服务器---》管理着很多个数据库(数据的集)---》很多张数据表(保存着真实的数据)---》很多数据行(记录)---》很多列(字段)

新增(CREATE)

语法:insert into 表名字段1,字段2 values (值,值);

单行数据+全列插入 insert into 表名 values(值,值...);(简写方式,不写类名,在values列表中按照表中字段顺序设置对应的值)

指定列插入+多行数据

insert into 表名(指定列...) values(值

一条insert语句在values部分可以跟很多个values组,每一组表示要插入的一个数据行

一次插入一条数据和一次插入多条数据哪个效率高?

1.执行所有SQL时都有网络开销(这是个不可控因素)

2.写入数据时还有磁盘IO开销

3.每执行一条SQL语句都会开启一个事务,事务的开启和关闭都会消耗系统资源

综合来看(在可控范围内)一次提交多条比一次提交一条效率高

查询(RETRIEVE)

1.全列查询

语法 select*from 表名;(*表中所有的列,这在生产环境中是十分危险的操作,因为在生产环境中,一个表中的数据量会有很多)

2.指定列查询

语法 select 列名列名...from 表名;

3.查询结果是一个表达式

效果就是让所有的列中都包含一个表达式的值,他本身不在我们的表中,他在临时表中(列与列也可以进行计算)

4.别名 列名+列名+列名as别名(别名中如果包含空格,必须用单引号引起来)

5.去重查询

关键字DISTINCT

语法:select distinct 列名 from 表名(注意:在查询结果中,每一列都相同MYSQL才认为是重复数据)

(因为id不同,所以第一个查询结果不变)

6.排序

order by(用这个子句会在查询结果中根据指定规则排序)

排序规则:1.升序 ASC 2.降序desc

语法:select 列名 from 表名 order by 列名ASC/DESC(默认升序)

MYSQL中NULL比较特殊

1.无论和什么值运算,结果均为null;

2.NULL始终被判定为false

3.不是0

注意SQL中可以对多个字段进行排序,排序优先级与书写顺序有关(可以为不同字段设置不同的排序规则)

7.条件查询

关键词 where

根据指定的一些条件,过滤掉不符合条件的记录,把符合条件的记录返回给用户

运算符:

1.比较运算符

> >= < <= 和JAVA中用法一样

= 等于 NULL=NULL,结果为NULL !=,<>不等于

<=>等于NULL安全专门针对NULL NULL<=>NULL 结果为1

between a0 and a1 a0,a1 区间查询(闭区间)

in (option,..) 列表或者集合,如果是option中任意一个返回true

IS NULL /IS NOT NULL 判断是否为null

Like 模糊匹配 %表示任意多个字符 _表示一个字符(孙% 孙是第一个,后面可以有无数个,有几个_就要有多少个字符)

2.逻辑运算符

AND 类似JAVA中的&&

OR 类似JAVA中的||

NOT 类似JAVA中的!

优先级 NOT>AND>OR

建议通过小括号来指定优先级

语法 :select 列名 from表名 where 列名/表达式(必须完整)运算符 条件;

where子句中不能用别名这与MYSQL执行SQL语句的顺序有关:1.确定表 2.符号条件 3.执行select后面的指定列 4.排序

8.分页查询

关键词:LIMIT

不加限制记录条数的查询是不安全的

语法:

select 列名 from 表名 where..order by.. limit n offset s;(查询n条,从s开始)

修改(UPDATE)

语法:

update 表名 set column=expr,column=expr...where..order by..limit ;

只要找到符合条件的数据行就会一次性符合条件的数据行全部修改了(如果不加条件的修改表中的记录,这是非常危险的操作)

删除(DELETE)

语法:

DELETE FROM 表名where..order by..limit..;

在生产过程中一般不使用DELETE操作,一般会在表中加入一个DELETEBASE字段,用来表示字段是否删除,用update更新就可以实现删除功能,实质上并未删除

相关推荐
BAGAE11 分钟前
星链卫星数据获取:从太空安全到实时通信的技术革命
网络·数据结构·数据库·算法·云计算·hbase
zh_xuan14 分钟前
Android导出并查看数据库
数据库·sqlite
加加and减减15 分钟前
Docker真实安装mysql8教程并优化配置
运维·mysql·docker·容器
小短腿的代码世界24 分钟前
Qt定时器高精度架构:从QTimer源码到纳秒级定时调度
数据库·qt·架构
herinspace30 分钟前
管家婆辉煌软件如何新增往来单位档案分类
服务器·数据库·电脑·管家婆软件
程序猿乐锅31 分钟前
【MySQL | 第九篇】MySQL 存储过程
数据库·mysql
栗子~~43 分钟前
金融场景下BigDecimal 运算规范 + 常用场景使用 + 数据库字段设计详解
java·数据库·金融
王小王-1231 小时前
基于深度学习的个性化音乐推荐系统的设计与开发
人工智能·深度学习·mysql·vue·推荐算法·个性化音乐推荐系统·音乐预测
他们叫我技术总监1 小时前
Kettle(PDI)连接TDengine数据库实战:一个有趣的小现象
大数据·数据库·tdengine
SilentSamsara1 小时前
RAG 系统入门:LangChain/LlamaIndex + Chroma 向量数据库的检索增强实战
数据库·人工智能·python·青少年编程·langchain