--注意如果第二天登录查询成绩表,发现没有数据,应该是插入后没有commit的原因,重新commit就好了。
SQL> insert into 成绩 values(1,'语文',60);
已创建 1 行。
SQL> insert into 成绩 values(1,'数学',60);
已创建 1 行。
SQL> insert into 成绩 values(1,'英语',60);
已创建 1 行。
SQL> insert into 成绩 values(2,'语文',70);
已创建 1 行。
SQL> insert into 成绩 values(2,'数学',70);
已创建 1 行。
SQL> insert into 成绩 values(3,'语文',80);
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from 成绩;
SNO KM SCORE
---------- ---------- ----------
1 语文 60
1 数学 60
1 英语 60
2 语文 70
2 数学 70
3 语文 80
已选择6行。
--现在就ok了,现在我要查出每个学生,所有成绩的总和。(使用group by、sum函数)
SQL> select sno,sum(score) from 成绩 group by sno;
SNO SUM(SCORE)
---------- ----------
1 180
2 140
3 80
--现在要求每一个科目的平均成绩。
SQL> select km,avg(score) from 成绩 group by km;
KM AVG(SCORE)
---------- ----------
数学 65
语文 70
英语 60
--求成绩大于平均成绩的学生的学号和成绩(使用having加上条件即可,平均成绩为60)
SQL> select sno,avg(score) from 成绩 group by sno having(avg(score)>60);
SNO AVG(SCORE)
---------- ----------
2 70
3 80
--要查出平均成绩大于所有学生平均成绩的学号和平均成绩(改变having后面的条件)
SQL> select sno,avg(score) from 成绩 group by sno having(avg(score)>(select avg(score) from 成绩));
SNO AVG(SCORE)
---------- ----------
2 70
3 80
--看的迷糊的可以拆分开来看。
SQL> select avg(score) from 成绩;
AVG(SCORE)
----------
66.6666667
SQL> select sno,avg(score) from 成绩 group by sno;
SNO AVG(SCORE)
---------- ----------
1 60
2 70
3 80
--查平均成绩大于60的学生的学号和平均成绩并按照学号的降序排列
SQL> select sno,avg(score) from 成绩 group by sno having(avg(score)>60) order by sno desc;
SNO AVG(SCORE)
---------- ----------
3 80
2 70
--连接符||
SQL> select '学号是:'||sno||'姓名是:'||sname from student2;
'学号是:'||SNO||'姓名是:'||SNAME
----------------------------------------------------------------------------
学号是:5姓名是:AAAA
学号是:1姓名是:一行琉璃
学号是:2姓名是:一行琉璃璃酱
学号是:3姓名是:AA
学号是:4姓名是:
Sql操作符的优先级从高到低的顺序是:
算术操作符--最高优先级
连接操作符
比较操作符
Not逻辑操作符
And逻辑操作符
Or逻辑操作符--最低优先级
--sql函数
单行函数、分组函数、分析函数