DQL操作

suaxi
2020-06-10 / 0 评论 / 126 阅读 / 正在检测是否收录...

-- 函数 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

评论 (0)

取消