前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【云原生进阶之数据库技术】第一章MySQL-2.3-数据基本操作

【云原生进阶之数据库技术】第一章MySQL-2.3-数据基本操作

作者头像
江中散人_Jun
发布2024-02-24 09:32:51
1450
发布2024-02-24 09:32:51
举报
文章被收录于专栏:云原生布道专栏

1 数据查询SQL操作

1.1 单表查询

1、语法:select from 表名; as:将某个字段取个别名

2、语法:select distinct from 表名; 去掉重复项,对应的字段前加符号表达:

1.1.1 where常用关键字
  • AND、OR:连接多个条件
  • BETWEEN AND:在...之间
  • IS NULL:查询空值
  • IN:查询在某个集中中
  • LIKE:模糊查询

找出名字当中含有O的?(在模糊查询当中,必须掌握两个特殊的符号,一个是%,一个是_)。%代表任意多个字符,_代表任意1个字符。

代码语言:javascript
复制
select ename from emp where ename like '%O%';
1.1.2 通配符

”*“通配符:匹配任意列名 “_"通配符:匹配单个字符 “%”通配符:匹配任意字符

1.1.3 order by子句

可以使用order by子句对查询结果安装一个或多个属性列(多个属性逗号隔开)的升序(ASC)或降序(DESC)排列,默认为升序。

--查询结果按照bookPrice列值的降序排列 select * from books order by bookPrice desc;

1.1.4 聚集函数

对某一组数据进行操作(在where操作之后):(又名多行处理函数)自动忽略null

  • count 计数 count(*)计数总记录的条数 count(comm):表示统计comm字段中不为null的数据总量
  • sum 求和
  • avg 平均值
  • max 最大值
  • min 最小值

例:

代码语言:javascript
复制
#查询book表中年龄最大的

select max(age) from book;
1.1.5 分组函数

将查询结果按某一列或多列的值分组,值相等的为一组。

  • groupby:按照某个字段或者某些字段进行分组
  • having:having是对分组之后的数据进行再次过滤

规则:当一条语句中有group by的话,select后面只能跟分组函数和参与分组的字段。也就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面。

代码语言:javascript
复制
select count(*),pressName from books group by pressName;

如:下列表中,叫 “人民邮电出版社” 名字的有1个,叫 ”清华大学出版社“ 的有6个。

1.1.6 单行处理函数

ifnull(可能为null的数据被当作什么处理):属于单行处理函数分组。

1.1.7 结果集的去重

distinct 关键字去除重复记录(只能出现在所有字段的最前面)。

1.1.8 执行顺序
代码语言:javascript
复制
select 5 
.. 
from 1 
.. 
where 2 
.. 
group by 3 
.. 
having 4 
.. 
order by 6 
... 
limit {[offset,]row_count | row_count OFFSET offset} 7 
## 查询

1.2 连接查询

根据两个表或多个表的列之间的关系来查询数据,即连接查询。

1.2.1 简单连接

连接查询实际是通过表与表之间相互关联的列进行数据的查询,对于关系数据库来说,连接是查询最主要的特征。 简单连接使用逗号将两个或多个表进行连接,也是最常用的多表查询形式。

例:

代码语言:javascript
复制
select b.reader_id,br.book_name from books b,borrow_record br where b.ISBN=br.ISBN;
1.2.2 JOIN连接

除了使用逗号连接外,也可使用JOIN连接。

1.2.2.1 内连接(inner join)

1)等值连接

代码语言:javascript
复制
select * from books b inner join borrow_record br where b.ISBN=br.ISBN;

2)不等连接

代码语言:javascript
复制
select * from books b inner join borrow_record br where b.ISBN<>br.ISBN;
1.2.2.2 外连接(left join 、right join)

1)左连接 on后面也可使用 where执行条件判断

代码语言:javascript
复制
select * from books b left join borrow_record br on b.ISBN=br.ISBN;

2)右连接 on后面也可使用 where执行条件判断

代码语言:javascript
复制
select * from books b right join borrow_record br on b.ISBN=br.ISBN;

1.3 嵌套查询

SQL语言中,一个select-from-where语句被称为一个查询块。将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询被称为嵌套查询。 语法:select from where [表达式] (select from where [表达式] )

1.3.1 带有IN谓语的子查询
代码语言:javascript
复制
select * from books where isbn in (select * isbn from brrowrecord where reader_id='201801');
1.3.2 带有比较运算符的子查询

指父查询与子查询之间用比较运算符连接。可以用 >、=、 等比较运算符。

代码语言:javascript
复制
select * from books where isbn=(select * isbn from brrowrecord where reader_id='201801');
1.3.3 带有ANY(SOME)或ALL谓语子查询

子查询返回值单值时可以用比较运算符,但返回多值时要用ANY(有的系统用SOME)或ALL谓语,使用ANY或ALL谓语时必须同时使用比较运算符。

谓语释义:

例:

代码语言:javascript
复制
#查询读者编号为"201801"的学生未借阅的所有图书的详细信息; 
select * from books where isbn <> all(select isbn from brrowwrecord where reader_id="201801");
1.3.4 带有EXISTS谓语的子查询

EXISTS谓语的子查询不返回任何数据,是一个布尔值(true或false)逻辑判断。使用存在量词EXISTS后,若内层查询结果为空,则外层的WHERE子句返回ture,否则取反。 例:

代码语言:javascript
复制
#查询读者编号为201801的读者没有借阅过的图书信息 
select * from books where not exists (
    select * from borrowrecord where isbn=books.isbn and reader_id="201801"
);

1.4 合并查询

代码语言:javascript
复制
#两个表字段合并显示,两个表相同字段合并后显示一次 
select * from t_major1 union select * from t_major;

1.5 limit

(取出结果集中的部分数据)

代码语言:javascript
复制
limit startindex length
  • startindex表示起始位置,从0开始,0表示第一条数据
  • length表示取几个
  • limit执行的顺序是最后一个

2 数据更新SQL操作

2.1 insert 插入记录

2.1.1 插入单条记录

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

代码语言:javascript
复制
insert into test values(123,'tt'); 
insert into test(pid) values(124);
2.1.2 插入多条记录
代码语言:javascript
复制
insert into test values(125,'ttww'),(126,'ttwwe'),(127,'ttqqq');
2.1.3 子查询,插入多条记录

使用select查询出来的内容字段,插入到inert对应的字段

语法:insert [into] 表名1 [字段1,字段n] select [字段1,字段n] from 表名2 [where语句];

代码语言:javascript
复制
insert into test-1 select * from test-2; 
insert into test-1(pid,name) select pid,name from test-2;

2.2 delete 删除记录

语法:delete from 表名 [where ];

代码语言:javascript
复制
delete from test; ## 删除所有记录 
delete from test where pid==123; #删除id为123的这条记录。

2.3 update 更新记录

语法:update 表名 set 列名1 = 值1,列名2 = 值2,…[where 条件];

参考链接

【数据库】 mysql的四种安装方式_mysql安装-CSDN博客

超级详细的mysql数据库安装指南 - 知乎

Mysql超详细安装配置教程(保姆级) - 知乎

mysql安装教程--超详细图文讲解 - 知乎

MySQL基础(非常全)_mysql基础知识-CSDN博客

mysql基础知识 - 知乎

超全汇总!一篇讲完MySQL的入门干货 - 知乎

MySQL数据库的基础操作_mysql数据库操作-CSDN博客

【收藏级】MySQL基本操作的所有内容(常看常新) - 知乎

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 数据查询SQL操作
    • 1.1 单表查询
      • 1.1.1 where常用关键字
      • 1.1.2 通配符
      • 1.1.3 order by子句
      • 1.1.4 聚集函数
      • 1.1.5 分组函数
      • 1.1.6 单行处理函数
      • 1.1.7 结果集的去重
      • 1.1.8 执行顺序
    • 1.2 连接查询
      • 1.2.1 简单连接
      • 1.2.2 JOIN连接
    • 1.3 嵌套查询
      • 1.3.1 带有IN谓语的子查询
      • 1.3.2 带有比较运算符的子查询
      • 1.3.3 带有ANY(SOME)或ALL谓语子查询
      • 1.3.4 带有EXISTS谓语的子查询
    • 1.4 合并查询
      • 1.5 limit
      • 2 数据更新SQL操作
        • 2.1 insert 插入记录
          • 2.1.1 插入单条记录
          • 2.1.2 插入多条记录
          • 2.1.3 子查询,插入多条记录
        • 2.2 delete 删除记录
          • 2.3 update 更新记录
          • 参考链接
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档