Mysql基础4-表级查询操作

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,结果为真
betweena between b and c若a在b和c之间,结果为真
likea like bsql匹配,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函数见本专栏下一篇
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值