DQL(Data Query Language数据查询语言)
➢查询数据库数据,如SELECT语句
➢简单的单表查询或多表的复杂查询和嵌套查询
➢数据库语言中最核心、最重要的语句
➢使用频率最高的语言
今天用到的数据库表
SELECT语法
SELECT [ALL|DISINCT]
{*|table*|[table.field1[as alias1][,table.field2[as alias2]][,...]]}ROM table_n2ame[as table_alias]
[left|out|inner join table_name2] #联合查询
[WHERE ...] #指定结构需满足的条件
[GROUP BY ...] #指定结果按照那几个字段分组
[HAVING ...] #过滤分组的记录必须满足的次要条件
[ORDER BY ...] #指定查询记录按一个或者多个条件排序
[LIMIT{[offset,]row_count | row_countOFFSET offset }]; #指定查询的记录从哪条到哪条
[]括号代表可选的;
{}括号代表必须的;
#MYSQL的注解符,也可以用/该处为注释/
相当于打开表的操作
SELECT * FROM tabl1;
查询指定列(学号,姓名)
SELECT studentno,studentname FROM student;
使用as,为查询结果取一个新名字
SELECT CONCAT('姓名:',studentname) AS 新姓名 FROM student;
查看哪些同学参加了考试(学号)——去除重复项(DISTINCT )
SELECT DISTINCT studentno FROM result;
如果不加DISTINCT ,则默认ALL,即全部查询
select查询中可以使用表达式
SELECT @@auto_increment_increment
SELECT VERSION();
SELECT 100*3-1 AS 计算结果;
学院考试成绩集体提高一分
SELECT studentno,studentresult+1 FROM result;
满足条件的查询(WHERE)
WHERE条件语句
➢用于检索数据表中符合条件的记录
➢搜索条件可由一个或多个逻辑表达式组成,结果一般为真或假
➢搜索条件的组成
➢ ➢ 逻辑操作符
➢ ➢ 比较操作符
IS NUL
SELECT s.studentno,s.studentname,r.studentresult
FROM student s
JOIN restult r
ON s.studentno=r.studentno
WHERE r.studentresult IS NULL;
查询成绩在80到90之间的学生信息AND
SELECT * FROM STHDENT WHERE studentresult>=80 AND studentresult<=90;
IN
SELECT studentname from student where studentresult in(80,90,100)
like迷糊查询
% 代表0到任意字符
_ 代表一个字符
查询姓李的学生姓名
SELECT studentname
from student
where studentresult like '李%';
查询姓李的名字是两个字的学生是学生姓名
SELECT studentname
from student
where studentresult like '李_';
模糊查询 综合应用
查找姓李的学生即对用的成绩
SELECT s.studentno,r.studentresult
form student s
join result r
on (s.studentno=r.studentno)
where s.studentname like '李%'
BETWEEN AND
GROUP BY 语句
分组
HIVING语句
在分组后进一步过滤
SELECT s.studentname,g.gradename
FROM student s
join
grade g
on (s.gradeid=g.gradeid);
SELECT s.gradename,g.gradename,j.subjectname
FROM student s
JOIN
grade g
ON (s.gradeid=g.gradeid)
join subject j
ON (g.gradeid=j.gradeid);
JOIN语句
引用连接
https://blog.csdn.net/plg17/article/details/78758593
这里使用scott数据库,首先导入数据库
mysql -uroot -p123QWEasd! <scott.sql
进入MySQL数据库
use scott;
show tables;
select * from emp;
内连接
内连接返回的是两个表中重合的阴影部分
(1)等值连接
查询没有员工的部门
select d.dept,e.ename
from dept d
join emp e
on(d.deptno=e.deptno)
where e.name=null;
(2)非等值连接
select e.ENAME,e.SAL,e.GRADE
from EMP e
join SALGRADE s
on (e.SAL between 1000 and 1200);
左连接
右连接
自连接
https://www.cnblogs.com/weichao1996/articles/8519973.html
本质是把一张表当成两张表来使用
通过自连接可以列出员工对应的领导的表
select e.ename empname,m.ename manger
from emp p
join emp m
on (e.mgr=m.empno);