1.DQL 查询数据(重点)
SELECT 字段 FROM 表; -- 查询所有的学生 SELECT * FROM `student`; -- 别名,给查询结果起一个名字,可以给字段起别名,也可以给表起别名 -- AS后不用加单引号 SELECT `StudentNo` AS 学号, `StudentName` AS 学生姓名 FROM `student`; -- 函数CANCAT,括号内的并在一个列输出 SELECT CONCAT('NAME:'`StudentName`) AS 学生姓名 FROM `student`;
通常来说,BIGINT
能满足整数存储的需求,VARCHAR(N)
能满足字符串存储的需求,这两种类型是使用最广泛的。
SELECT DISTINCT `字段名` FROM `表名 `; -- 删去重复的结果 SELECT VERSION(); -- 查询系统版本 SELECT 100*3-1 AS 计算结果; -- 以计算结果为列名显示结果 SELECT @@AUTO_INCREMENT_INCREMENT; -- 查询自增的步长 -- 数据全部加一后查看 SELECT `grade`+1,`result`+1 AS 加一后 FROM result; SELECT `grade` FROM result WHERE grade>=5 AND grade<=10; SELECT `grade` FROM result WHERE grade BETWEEN 5 AND 10; SELECT `grade` FROM result WHERE NOT grade = 10; -- 选择不等于10的
模糊查询
-- 查询刘某 SELECT `name` , `number` FROM result WHERE `name` LIKE '刘_'; -- 查询刘某某 SELECT `name` , `number` FROM result WHERE `name` LIKE '刘__'; -- 查询刘姓的人 SELECT `name` , `number` FROM result WHERE `name` LIKE '刘%'; -- 查询范围内的人 -- IN(具体的一个或多个值) SELECT `name` , `number` FROM result WHERE `number` IN (1000,1001,1002);
1.1联表查询
-- 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 WHERE s.studentNo = r.studentNo; -- 查询缺考的同学 SELECT s.studentNo,studentName,SubjectNo,StudentResult FROM student s LEFT JOIN result r ON s.studentNo = r.studentNo WHERE StudentResult IS NULL; -- in与虚拟表 select sname from student where sid not in ( select score.student_id from score where course_id in ( select course.cid from course inner join teacher on course.teacher_id = teacher.tid where teacher.tname = "李平老师" ) ); -- FULL JOIN SELECT column_name(s) FROM table_name1 FULL JOIN table_name2 ON table_name1.column_name=table_name2.column_name;
操作 | 描述 |
---|---|
INNER JOIN | 如果表中至少有一个匹配,就返回行(有至少一个交集时) |
LEFT JOIN | 会从左表中返回所有的值,即使右表没有匹配 |
RIGHT JOIN | 会从右表中返回所有的值,即使左表没有匹配 |
FULL JOIN | 并集,只要左右表中其中一个有数据,就返回行 |
1.2自连接(了解)
-- 查询父子信息(把一张表看成两张一摸一样的表) SELECT a.`myId` AS '父栏目', b.`myId` AS '子栏目' FROM `category` AS a,`category` AS b WHERE a.`myId`=b.`pId`;
1.3分页和排序
分页 LIMIT
-- 语法: LIMIT起始值,页面的大小 -- LIMIT 0,5 1~5 -- LIMIT 1,5 2~6 -- LIMIT 6,5 7~11 -- 第N页 (N-1)*5
排序 ORDER BY
-- 升序ASC -- 降序DESC -- 降序排列 ORDER BY `studentName` DESC