sql语句关键字执行顺序
基本查询语句
#去重distinct关键字,不推荐,效率低,后面主要是order by
SELECT DISTINCT age FROM student;
SELECT name FROM student;
## ORDER BY后面可以跟多个条件,DESC降序排序
SELECT * FROM student ORDER BY age,id DESC;
#先from(拿到所有的数据)然后where条件为真交给select,条件为假继续下一条判断下一条语句
SELECT * FROM student WHERE id > 3;
#想要id值为1,3,5,7的
SELECT id,name FROM student WHERE id=2 or id =3 or id =4;
SELECT id,name FROM student WHERE id in(2,3,4);
#GROUP BY分组根据某个字段的值对数据进行分组(1组1条记录)
#select后面的内容必须出现在group by中,如果没有出现就必须放在聚合函数中
# 聚合函数
count()
max()
min()
sum()
SELECT count(*) FROM student;
SELECT count(name) FROM student;
SELECT gender,count(gender) FROM student GROUP BY gender ;
# having 必须用在group by 之后.用于对分组的结果进行二次筛选
SELECT gender,count(gender) FROM student GROUP BY gender HAVING count(gender)>3 ;
#查询前几条数据
SELECT * FROM student LIMIT 3;
##分页查询
#OFFSET代表跳过几条记录查询后面的
SELECT * FROM student LIMIT 3 OFFSET 2;
#简写的方式,LIMIT前面的数字是offset后面的是limit
SELECT * from student LIMIT 0,2;
SELECT * from student LIMIT 2,2;
SELECT * from student LIMIT 4,2;
1ike模糊查询
%任意个字符任意一个字符
# %代表任意数量字符
select from score where cno LIKE '3%';
# _代表一个字符
select*from student where sname like'%_军';
子查询查考
https://blog.csdn.net/weixin_44827418/article/details/105752312
多表查询
不同多表查询的关系图
笛卡尔积
select * from student,score
基于笛卡尔积去除重复的数据寻找公共列(两张表都有的列)
寻找公共列(两张表都有的列)sno在学生表和成绩表中都有存在,所有sno是公共列公共列是指逻辑意义上的相同列,而不是字段名一致
最初的连接语法
select from student,score where student.sno =score.sno;
内连接和上面的S0L很类似内连接表达式的是两表的地位一致,没有主次之分,输出两表的公共部分。
所谓的公共部分如上所示没有1©8的数据,公共是指在两表中都出现的
内连接的语法是:select 字段列表 from 表1 inner join 表2 on 公共列的值相等
select sno from student;
select distinct sno from;
select sname,cno,degree from student s,score sc where s.sno sc.sno;
select from student s inner join score sc on s.sno sc.sno
外连接和内连接相比最大的区别在于:外连接区分主次,会显示主表的所有数据
学生表101183105107188109成绩表101103105107109
如果以学生表为主表,将会有15条记录!
主表的所有数据都会显示,主表有次表没有的显示为ul1
外连接
左连接
select from student s left outer join score sc on s.sno sc.sno;
右连接
select from student s right outer join score sc on s.sno = sc.sno;
注意
一
group by之后想要筛选只能用having,绝对不可以跟where语句,group by前面可以有where语句.
二
group by后面跟着的字段,select后面只能跟这个字段以及聚合函数,不能有其他字段
三
聚合函数(avg、sum、max、min、count),不能作为条件放在where之后,但可以放在having之后