-- 函数 CONCAT(a,b)
SELECT CONCAT('姓名:',studentname) AS 新名字
FROM student;
-- 去重 DISTINCT(重复的数据只显示一条)
SELECT * FROM result; -- 查询全部的考试成绩
SELECT studentno FROM result; -- 查询参加考试的同学
SELECT DISTINCT studentno FROM result; -- 去重
SELECT VERSION(); -- 查询系统版本 (函数)
SELECT 100*99-100 AS 计算结果; -- 计算 (表达式)
SELECT @@auto_increment_increment; -- 查询自增的步长 (变量)
-- 考试成绩+1
SELECT studentno,studentresult FROM result;
SELECT stdentno,studentresult+1 AS '加分' FROM result;
-- WHERE条件子句
-- 作用:检索数据中符合条件的值
-- 搜索的条件由一个或多个表达式组成,结果为布尔值
-- 查询成绩在80-100之间
-- AND
select studentno,studentresult
FROM result
WHERE studentresult>=80 AND studentresult<=100;
-- &&
select studentno,studentresult
FROM result
WHERE studentresult>=80 && studentresult<=100;
-- 模糊查询(区间)
select studentno,studentresult
FROM result
WHERE studentresult BETWEEN 80 AND 100;
-- 除了1000号学生之外的成绩
select studentno,studentresult
FROM result
WHERE studentno != 1000;
select studentno,studentresult
FROM result
WHERE NOT studentno = 1000;
-- 模糊查询
-- 查询姓刘的同学
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 '%华%';
-- 查询1000,1001,1002学号的学生信息
SELECT *
FROM student
WHERE studentno IN (1000,1001,1002);
-- 查询北京的学生信息
SELECT *
FROM student
WHERE address IN ('北京朝阳');
-- 查询地址为空的学生信息
SELECT *
FROM student
WHERE address='' " OR address IS NULL;
-- 查询出生日期不为空的学生信息
SELECT *
FROM student
WHERE borndate IS NOT NULL;
-- 多表查询
-- 查询参加了考试得学生信息
-- JOIN ON 连接查询
-- WHERE 等值查询
-- INNER JOIN
SELECT s.studentno,studentname,subjectno,studentresult
FROM student s
INNER JOIN result 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;
-- INNER JOIN 如果表中至少有一个匹配,就返回行
-- LEFT JOIN 会从左表中返回所有得值,即使右表中没有匹配
-- RIGHT JOIN 会从右表中返回所有得值,即使左表中没有匹配
-- 查询缺考的同学
SELECT s.studentno,studentname,subjectno,studentresult
FROM student s
LEFT JOIN result r
on s.studentno = r.studentno
WHERE studentresult IS NULL;
-- 查询参加考试的同学的学号、姓名、科目名称、成绩
SELECT s.studentno,studentname,subjectname,studentresult
FROM student s
RIGHT JOIN result r
on s.studentno = r.studentno
INNER JOIN `subject` sub
ON r.subjectno = sub.subjectno;
评论 (0)