MySQL查询语句学习

1.查询(select)

语法1:

SELECT 字段 FROM 表名
例子:
--查询全部的学生
SELECT * FROM student
--查询指定字段
SELECT `StudentNo`,`StudentName` FROM student
---别名AS:给结果起一个名字,可以给字段起别名,也可以给表起别名
SELECT `studentNo` AS 学号,`StudentName` AS 学生姓名 FROM student AS s

拓展:concat拼接查询

作用:将括号中的a与b拼接显示在结果中

例子:
-- 函数Concat(a,b)
SELECT CONCAT('姓名:',StudentName) AS 新名字 FROM student

拓展:distinct去重查询

作用:去除SELECT查询出来的结果中重复的数据,重复的数据只显示一条

例子:
-- 查询一下有哪些同学参加了考试,成绩
SELECT * FROM result -- 查询全部的考试成绩
SELECT `StudentNo` FROM result -- 查询有哪些同学参加了考试
SELECT DISTINCT `StudentNo` FROM result -- 查询时发现重复数据就会去除

语法2:

SELECT 表达式 FROM 表

表达式:数据库的列

例子:
-- 函数查询数据库系统版本
SELECT VERSION()
-- 计算(表达式)
SELECT 10*5+1 AS 计算结果
-- 查询自增的步长(变量)
SELECT @@auto_increment_increment
-- 查看学号、成绩+1分
SELECT `StudentNo`,`StudentResult`+1 AS '加1分后成绩' FROM result

WHERE子句

搜索的条件由一个或多个表达式组成,结果为布尔值

部分运算符:

运算符语法描述
and &&a and b a&&b逻辑与,两个都为真,结果为真
or ||a or b a||b逻辑或,其中一个为真,则结果为真
not !not a !a逻辑非,真为假,假为真
例子:
-- 无where子句
SELECT studentNo,`StudentResult` FROM resut
-- 查询考试成绩在95~100分之间
SELECT studentNo,`StudentResult` FROM result
WHERE StudentResult>=95 AND StudentResult<=100
-- and &&
SELECT studentNo,`StudentResukt` FROM result
WHERE StudentResult>=95 && StudentResult<=100

-- 模糊查询(闭区间)
SELECT studentNo,`StudentResult` FROM result
WHERE StudentResult BETWEEN 95 AND 100

-- 除了1000号学生之外的同学的成绩
SELECT studentNo,`StudentResult` FROM result
WHERE NOT studentNo = 1000

2.模糊查询

模糊查询体现在:比较运算符,属于where子句中

模糊查询的相关运算符
运算符语法描述
IS NULLa is null如果操作符为NULL,则结果为真
IS NOT NULLa is not null如果操作符不为NULL,则结果为真
BETWEENa between b and c若a在b和c之间,则结果为真
Likea like bSQL匹配,如果a匹配b,则结果为真
例子:
-- 查询姓刘的同学
-- like结合 %(代表0到任意个字符) _(一个字符)
SELECT `StudentNo`,`StudentName` FROM `student`
WHERE StudentName LIKE '刘%'
-- 查询姓刘的同学,名字后面只有一个字的
SELECT `StudentNo`,`StudentName` FROM `student`
WHERE StudentName LIKE '刘_'
-- 查询姓刘的同学,名字后面只有两个字的
SELECT `StudentNo`,`StudentName` FROM `student`
WHERE StudentName LIKE '刘  '
-- 查询名字重击有嘉字的同学
SELECT `StudentNo`,`StudentName` FROM `student`
WHERE StudentName LIKE '%嘉%'
拓展:类似的in

in只用在具体的一个或多个的值

-- 查询1001,1002,1003号学员
SELECT `StudentNo`,`StudentName` FROM `student`
WHERE StudentNo IN (1001,1002,1003);

3.联表查询

操作符:
操作描述
Inner join如果表中至少有一个匹配,就返回行
left join会从左表中返回所有的值,即使右表中没有匹配
right join会从右表中返回所有的值,即使左表中没有匹配
语法简述:

join on连接查询(join后面跟连接的表,on后面判断条件)

where 等值查询

思路:
  1. 分析需求,分析查询的字段来自哪些表(连接查询)

  2. 确定使用哪种连接查询

  3. 确定交叉点(这两个表中哪个数据是相同的)

    即判断的条件:学生表中的studentNo = 成绩表中的studentNo

例子:
-- Inner Join
SELECT s.studentNO,studentName,SubjectNo,StudentResult
FROM student AS s
INNER JOIN result AS r
WHERE s.studentNO = r.studentNO
-- Right Join
SELECT s.studentNO,studentName,SubjectNo,StudentResult
FROM student s
RIGHT JOIN result r
ON s.studentNO = r.studentNO
-- Left Join
SELECT s.studentNO,studentName,SubjectNo,StudentResult
FROM student s
LEFT JOIN result r
ON s.studentNO = r.studentNO
-- 查询缺考的同学
SELECT s.studentNO,studentName,SubjectNo,studentResult
FROM student s
LEFT JOIN result r
ON s.studentNO = r.studnetNO
WHERE StudentResult IS NULL
-- 联两张表
SELECT s.studentNo,studenName,SubjectName,`StudentName`,`StudentResult`
FROM student s
RIGHT JOIN result r
ON r.studentNo = s.studentNo
INNER JOIN `subject` sub
ON r.SubjectNo = sub.subjectNo

关于嵌套查询

关于嵌套查询,理论上来讲,所有的嵌套查询都可以通过联表查询来实现,博主认为在初学阶段只需要学习其中一种即可,在本文中不作总结。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值