MySQL(day 3)

MySQL(day 3)

1.DQL (Date Query Language)

1.1 指定查询字段

SELECT * FROM student; --查询全部学生
/* select 字段 from 表*/
SELECT `StudentNo`,`studentName` FROM student;--查询指定字段
SELECT `studentno` As 学号,`studentname` As 学生姓名 From student As s;--可以给字段取别名,也可以给表取别名;
SELECT CONCAT('姓名:',studentname) As 新名字 From student;
/* 函数 Concat(a,b)*/
image-20210104205945249

语法:SELECT 字段,…FROM 表

1.2 去重查询

SELECT * FROM result;--查询全部从result中
SELECT `studentNo` FROM result;--查询那些同学参加了考试
SELECT DISTINCT `studentNo` FROM result;--发现重复数据,去重
SELECT VERSION;--查询系统版本
SELECT 100*3-1 As 计算结果;
SELECT @@auto_increment;--查询自增步长
SELECT `studentno`,`studentResult`+1 AS `提分后` FROM result;--学员考试成绩+1后结果;

1.3 where 条件子句

作用:检索数据中符合条件的值;

SELECT `studentNo`,`studentResult` From result WHERE StudentResult>=95 && StudentResult<=100;
  --查询考试成绩在5-100分之间
SELECT `studentNo`,`studentresult` From result WHERE studentresult BETWEEN 95 AND 100;
  --模糊查询(区间)
SElect `studentNo`,`studentResult` FRom result WHERE StudentNo!=1000;
--除学号1000之外的学生成绩
SElect studentNo,`studentResult` FRom result WHERE NOT StudentNo=1000;--除学号1000之外的学生成绩

1.4模糊查询

比较运算符

运算符语法
IS NuLLa is null
Between anda between B and C
likea like B,SQL匹配
INa in (a1,a2,a3…),a为a1,a2…其中一个为真
1.4.1 like 语句
SELECT `studentNo`,`studentname` FROM `student` WHERE studentname LIKE '刘%'--查询姓刘的同学,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 '%嘉%';
--查询名字中间有嘉字的同学 %嘉%
1.4.2 in语句
SELECT `studentno`,`studentname` FROM `student` WHERE studentNo in(1001,1002,1003);
--查询1001,1002,1003号学员
SELECT `studentno`,`studentname` FROM `student` WHERE address in('XX','xxxxx');
--查询在XXX的学生
SELECT `studentno`,`studentname` FROM `student` WHERE address = '' OR adress is NULL;
--查询地址为空的学生
SELECT `studentno`,`studentname` FROM `student` WHERE `BornDate` is not null;
--查询出身日期不为空的同学
SELECT `studentNo`,`studentname` FROM `student` WHERE `BornDate` is null;
--查询出生日期为空的同学

注:in(具体的一个或多个值),与like语句不兼容;

1.5联表查询

1.5.1(join)

join (连接的表) on (判断的条件) 连接查询

where 等值查询

思路:分析查询的字段来自那些表(连接查询);确定使用哪种查询,确定交叉点(两个表中数据相同的);判断条件

SELECT s.studentNo,studentName,SubjectNo,StudentResult 
FROM student AS s
INNER JOIN result AS r
on /*(where)*/ s.studentNo = r.studentNo;
--
SELECT s.studentNo,studentname,SubjectNo,StudentResult
FROM student AS s  --AS可以省略
LEFT JOIN result r
on s.studentNo = r.studentNo;
--
SELECT s.studentNo,studentname,SubjectNo,StudentResult
FROM student AS s  --AS可以省略
RIGHT JOIN result r
on s.studentNo = r.studentNo;
--
SELECT s.studentNo,studentname,SubjectNo,StudentResult
FROM student AS s  --AS可以省略
LEFT JOIN result r
on s.studentNo = r.studentNo
WHERE StudentResult is null;
--查询缺考的学生

思考题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XoxGoIj2-1609852786302)(C:\Users\q3315\AppData\Roaming\Typora\typora-user-images\image-20210105111117538.png)]

SELECT s.studentNo,studentname,SubjectNo,StudentResult
FROM student s
RIGHT JOIN result r
on s.studentNo = r.studentNo
INNER JOIN `subject` sub  --再连接一张表
on r.SubjectNo = sub.subject;
--涉及多表查询

总结

  1. SELECT 查询的数据
  2. FROM 表
  3. 联接方式 JOIN 联接的表 ON 交叉条件
  4. 多张表查询从两张表开始

from a left join b 以a为基准查询;

from a right join b 以b为基准

from a INNER join b 表中至少有一个匹配就返回行


1.5.2 自连接(了解)

自己的表与自己的表连接,核心是一张表拆成两张表

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值