select语法

语法:select 字段 ...from 表
- --查询全部学生 select 字段 from 表
- select* from student --查询全部学生
- select* from result -- 查询所有成绩
-
- --查询指定字段
- select `studentNo`,`studentName` from student
-
- --使用别用查询,给结果换一个名字,表也可以使用别名
- select `studentNo` as 学号,`studentName` as 学生姓名 from student as s
-
- --拼接函数 Concat(a,b)
- select cincat(`姓名:`,studentName) as 新名字 from student
-
去重 distinct
作用:去除SELECT查询出来的结果中重复的数据,重复的数据只显示一条
- --查询那些同学参加了考试
- select * from result --查询全部的考试成绩
- select diastinct `studentNo` from result --将结果去重
数据库的列
- SELECT VERSION ()--查询系统版本(函数)
- SELECT100*3-1 As 计算结果--用来计算(表达式)
- SELECT auto increment_ increment -- 查询自增的步长(变量)
-
- --学员考试成绩+1分查看
- SELECT studentNo ' , 'studentResult`+1 AS '提分后’FROM resu1t
作用:检索数据中符合条件的值
| 运算符 | 语法 | 描述 |
| and && | a and b a&&b | 逻辑与 |
| or || | a or b a||b | 逻辑或 |
| not ! | not a !a | 逻辑非 |
- --查询考试成绩在95~100分之间
- SELECT studentNo, `StudentResult` FROM result
- WHERE StudentResult>=95 AND StudentResult<=100
-
- -- and& &
- SELECT studentNo, `StudentResult` 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 studentNo != 1000
-
- -- !=not
- SELECT studentNo, `studentResult`FROM result
- WHERE NOT studentNo = 1000
模糊查询:本质是比较运算符
| 运算符 | 语法 | 描述 |
| is null | a is null | 如果操作符为null,结果为真 |
| is not null | a is not null | 如果操作符不为null,结果为真 |
| between and | a between b and c | 若a在b和c之间,则结果为真 |
| like | a like b | SQL匹配,如果a匹配b,则结果为真 |
| in | a in (a1,a2,a3....) | 假设a在a1,或者a2.....其中的某一个值中,结果为真 |
- --查询姓文的同学
- -- like结合%(代表0到任意个字符)_(一个字符)
- SELECT `StudentNo`, 'studentName` FROM `student`
- WHERE StudentName LIKE'刘%'
- --查询姓刘的同学,名字后面只有一个字的
- SELECT `StudentNo`, `StudentName` FROM `student`
- WHEREstudentName LIKE '刘_'
- --查询姓文的同学,名字后面只有两个字的
- SELECT `StudentNo`, `StudentName` FROM `student`
- WHERE StudentName LIKE '刘__'
- --查询名字中间有嘉字的同学%嘉%
- SELECT `StudentNo`, `StudentName` FROM `student`
- WHERE StudentName LIKE '%嘉'
- --===== in(具体的一个或者多个值)=====
- --查询1001,1002,1003号学员
- SELECT `StudentNo`, 'StudentName` FROM `student`
- WHERE StudentNo IN( 1001,1002,1003);
-
- --查询在北京的学生
- SELECT `StudentNo`, `StudentName` FROM `student`
- WHERE `Address` IN('安徽','河南洛阳');
-
- -- ==== null not null====
- --查询地址为空的学生 nu17 ''
- SELECT `studentNo` , `studentName` FROM `student`
- WHERE address='' OR address IS NULL
-
- --查询有出生日期的同学不为空
- SELECT `studentNo` , `studentName` FROM `student`
- WHERE `BornDate` IS NOT NULL
-
- --查询没有有出生日期的同学为空
- SELECT `studentNo` , `studentName` FROM `student`
- WHERE `BornDate` IS NULL
join

- ============联表查询join ==============
- --查询参加了考试的同学(学号,姓名,科目编号,分数)
- SELECT * FROM student
- SELECT * FROM result
- /*思路
- 1.分析需求,分析查询的字段来自哪些表,(连接查询)2.确定使用哪种连接查询?7种
- 确定交叉点(这两个表中哪个数据是相同的)
- 判断的条件:学生表的中 studentNo =成绩表studentNo*/
-
- SELECT s.studentNO, studentName, SubjectNo,StudentResult
- FROM student AS s
- INNER JOIN result As r
- WHERE s.studentNo = r.studentNo

三种连接的对比:


自己的表和自己的表连接,核心:一张表拆为两张一样的表即可

排序:升序 ASC 降序 DESC

为什么要分页?

语法: limit(查询起始下标,pagesize)
练习题:

where (这个值是计算出来的)
本质︰在where语句中嵌套一个子查询语句


