关闭

很全的sql用法

发表于:2008-4-03 13:09

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:网络转载

最后,再补充一些:

分组group

  常用于统计时,如分组查总数:
select gender,count(sno)
from students
group by gender
(查看男女学生各有多少)

  注意:从哪种角度分组就从哪列"group by"

  对于多重分组,只需将分组规则罗列。比如查询各届各专业的男女同学人数 ,那么分组规则有:届别(grade)、专业(mno)和性别(gender),所以有"group by grade, mno, gender"

select grade, mno, gender, count(*)
from students
group by grade, mno, gender

  通常group还和having联用,比如查询1门课以上不及格的学生,则按学号(sno)分类有:

select sno,count(*) from grades
where mark<60
group by sno
having count(*)>1

  6.UNION联合

  合并查询结果,如:

SELECT * FROM students
WHERE name like ‘张%’
UNION [ALL]
SELECT * FROM students
WHERE name like ‘李%’

  7.多表查询

  a.内连接

select g.sno,s.name,c.coursename
from grades g JOIN students s ON g.sno=s.sno
JOIN courses c ON g.cno=c.cno
(注意可以引用别名)
b.外连接
b1.左连接
select courses.cno,max(coursename),count(sno)
from courses LEFT JOIN grades ON courses.cno=grades.cno
group by courses.cno

  左连接特点:显示全部左边表中的所有项目,即使其中有些项中的数据未填写完全。

  左外连接返回那些存在于左表而右表中却没有的行,再加上内连接的行。

  b2.右连接

  与左连接类似

  b3.全连接

select sno,name,major
from students FULL JOIN majors ON students.mno=majors.mno

  两边表中的内容全部显示

  c.自身连接

select c1.cno,c1.coursename,c1.pno,c2.coursename
from courses c1,courses c2 where c1.pno=c2.cno

  采用别名解决问题。

  d.交叉连接

select lastname+firstname from lastname CROSS JOIN firstanme

  相当于做笛卡儿积
55/5<12345
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • jison1986
    2008-4-18 12:22:14

    说声谢谢了,可以好好整理了+

  • mengyanrong521
    2008-4-15 10:11:15

    非常好,谢谢啊,呵呵,收藏

  • chenhuiylj
    2008-4-13 22:56:07

    xiexie!

  • maihua258
    2008-4-09 15:01:08

    非常感谢,为以后作准备!~

  • coffeexl
    2008-4-08 09:49:22

    收藏了~

  • leolee34
    2008-4-07 10:22:52

    好东西,谢谢共享了!

  • weimin1021
    2008-4-05 21:43:12

    交差连接cross join

  • ghostzxh
    2008-4-04 09:05:46

    对我非常有帮助,收藏了!

  • ★星の金币
    2008-4-03 15:40:10

    不错,收藏~~~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号