Mysql基础4-表级查询操作

在人生的道路上,不管是潇洒走一回,或者是千山独行,皆须是自己想走的路,虽然,有的人并不是很快就能找到自己的方向和道路,不过,只要坚持到底,我相信,就一定可以找到自己的路,只要找到路,就不必怕路途遥远了。

导读:本篇文章讲解 Mysql基础4-表级查询操作,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

4.SQL查询数据***

4.1 SQL:数据库查询语言

  • 所有的查询操作都用它select
  • 简单复杂的查询都能做
  • 数据库中最核心的语言
  • 使用频率最高

4.2 指定查询字段

-- SELECT * FROM TABLENAME
SELECT * FROM student 
-- 指定字段查询
-- SELECT 字段列,字段列,字段列 FROM TABLENAME  
-- 别名查询--字段、表
-- SELECT 字段列 as 别名1,字段列 as 别名2 FROM TABLENAME
SELECT studentname as 姓名,sex as 性别  FROM student
-- 拼接
SELECT CONCAT('学名:',studentname) as 姓名  FROM student
  • 去重:DISTINCT字段列 去除SELECT查询出来重复的数据只显示一条
SELECT DISTINCT studentno FROM student
SELECT VERSION()  -- 函数
SELECT 20-2 as calc  -- 计算结果
SELECT @@auto_increment_increment  -- 查询自增步长(变量)
  • 数据库中的表达式:文本值,列,null,函数,计算表达式,系统变量…
SELECT 表达式 FROM TABLENAME

4.3 where条件子句

  • 作用检索数据中的符合条件的值
  • 搜索条件是有一个或多个表达式组成,结果为boolean
运算符 语法 描述
and && a and b a&&b 短路与
or || a or b a||b 短路或
Not ! not a !a 短路非
  • 尽量使用英文字母
-- != NOT 
SELECT * FROM student WHERE not studentno=1000
SELECT * FROM student WHERE studentno !=1000
-- 区间查询
SELECT * FROM result WHERE studentresult BETWEEN 75 and 85

4.4 模糊查询

  • 本质:比较运算符,结果为boolean
运算符 语法 描述
is null 操作符为null,结果为真
is not null 操作符不为null,结果为真
between a between b and c 若a在b和c之间,结果为真
like a like b sql匹配,a匹配b,结果为真
in(具体的值) a in(a,b,c) 若a在此列表某个值中,结果为真
-- %代表0到任意个字符,_代表一个字符
SELECT * FROM student WHERE studentname LIKE '赵%'
SELECT * FROM student WHERE studentname LIKE '赵_'
-- 匹配两个字符
SELECT * FROM student WHERE studentname LIKE '赵__'

4.5 联表查询

  • 跨数据库查询在业务层面

  • 数据库来源:本地数据库和云数据库

  • 图片:文件存储数据库MogDB(非关系的)/视频:hdfs、ali-oss存储,评论-redis热点数据库

  • 7 中join理论
    在这里插入图片描述
    在这里插入图片描述

  • mysql中没有full outer join操作,所以有2图

  • 6为 左连接 union 右连接

  • 7 为 左外连接 union 右外连接

  • 字段、表别名中的as 可省略

  • ON 条件是生成临时表时使用的条件,它不管ON中的条件是否为真,都会返回左表中的记录

  • on确定连接(连接查询-等值判断) where确定筛选(等值查询),where筛选是建立表之后进行的操作,

  • 假设存在多张表,先查询两张表后在增加

SELECT s.studentno,s.studentname,r.subjectno,r.studentresult,sub.subjectname  FROM student as s
RIGHT join result r
on s.studentno = r.studentno
JOIN subject sub
on r.subjectno = sub.subjectno
 WHERE s.studentno is not null
操作 描述
join 在笛卡尔积进行筛选
left join 会从左表返回所有的值,即使右边表没有匹配
right join 会从右表返回所有的值,即使左边表没有匹配
inner join 在笛卡尔积中取交集(不取多余的记录也不取null记录)
-- join 并集 where / on s.studentno = r.studentno 都行
-- RIGHT join 左右连接 只能用 on s.studentno = r.studentno
SELECT s.studentno,s.studentname,r.subjectno,r.studentresult  FROM student as s
join result r
WHERE s.studentno = r.studentno

SELECT s.studentno,s.studentname,r.subjectno,r.studentresult  FROM student as s
RIGHT join result r
on s.studentno = r.studentno

4.6 自连接查询

  • 自己表和自己表连接。核心:一张表拆成2张一样的表
    在这里插入图片描述
SELECT f.categoryname 一级目录,s.categoryname 二级目录 FROM category f,category s
WHERE f.`categoryid`=s.`pid`

4.7 分页和排序

  • 关键字顺序不能乱
    在这里插入图片描述

  • 升序asc,降序desc

  • 分页:缓解数据库压力,给人体验好。瀑布流:不断的下拉刷新(图片用瀑布流、博客,文本用分页)

  • limit 起始值,页面大小

  • 起始下标=起始下标+pagesize*(n-1)起始值1、2是第一第二元素的位置。页数n

  • 总页数:total/pagesize

4.8 子查询

  • 上面的where的条件是固定的,若条件是计算出来的呢?

  • 本质:在where的条件中嵌套一个查询语句

  • 子查询:由里及外进行查询,效率高于联表查询

MySql函数见本专栏下一篇

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/123965.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!