SQL的简单查询实例教程_第1页
SQL的简单查询实例教程_第2页
SQL的简单查询实例教程_第3页
SQL的简单查询实例教程_第4页
SQL的简单查询实例教程_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SQL的简单查询实例教程 关键词:菜鸟学数据库之简单 SQL语句小结 为了大家更容易 理解我举出的SQL语句,本文假定已经建立了 一个学生成绩管理数据 库,全文均以学生成绩的管理为例来描述。 1. 在查询结果 中显示列名: a. 用 as 关键字: select name as 姓名from students order by age b. 直接表示 :select name 姓名from studentsorder by age 2. 精确查找: a. 用 in 限定范围:select * from students where native in ( 湖南,四川) b. between.a

2、nd: select * from students where age between 20 and 30 c. “ =” select * from students where name =李山 d. like:select * fromstudentswhere name like 李%(注意查询条件中有“, 则说明是部分匹配,而且还有先后信息在里面,即查找以李”开头的匹配项。所以若查询 有 李”的所有对象,应该命令:李:若是第二个字 为李,则应为_李%或_李或_李 _。) e. 匹配检查符:select * from courses 与in(.)类似,而且可以表示范围,如: A-C%

3、) where cno like AC%(表示或的关系, select * from courses where cno like 3. 对于时间类型变量的处理 a. smalldatetime :直接按照字符串处理的方式 进行处理,例如: 1980-12-31 select * from students where birth =1980-1-1 and birth = 4. 集函数 a. count() 求和,如:select count(*)from students(求学生总人数) b. avg( 歹U)求平均,如: select avg(mark) from grades wher

4、e cno= B2 c. max(列)和min(列),求最大与最小 5. 分组 group 常用于统计时,如分组查总数: select gender,count(sno) from students group by gender (查看男女学生各有多少) 注意:从哪种角度分组就从哪列group by 对于多重分组,只需将分组规则罗列。比如查询各届各专业的男女同学人数,那么分 组规则有:届别(grade)、专业(mno)和性别(gender),所以有group by grade, mno, gen der select grade, mno, gender, count(*) from stu

5、dents group by grade, mno, gender 通常group还和having 联用,比如查询1门课以上不及格的学生,则按学号(sno) 分类有: select sno ,co un t(*)from grades where mark1 6. UNION 联合 合并查询结果,女口: SELECT * FROM students WHERE name like 张 UNION ALL SELECT * FROM students WHERE name like 李 7. 多表查询 a.内连接 select g.sno,,c.coursename from gra

6、des g JOIN students s ON g.sno=s.sno JOIN courses c ONo=o (注意可以引用别名) b. 外连接 b1.左连接 select o,max(coursename),count(sno) from courses LEFT JOIN grades ON o=o group by o 左连接特点:显 示全部左边表中的所有项目,即使其中有些项中的数据未填写完全。 左外连接返回那 些存在于左表而右表中却没有的行,再加上内连接的行。 b2.右连接 与左连接类似 b3.全连接 select sno,name,major from students FUL

7、L JOIN majors ONstudents.mno=majors.mno 两边表中的内容 全部显示 c. 自身连接 select c1.c no ,c1.course name,c1.p no ,c2.course name from courses c1,courses c2 where c1.pno=o 采用别名解决问题。 d. 交叉连接 select last name+first namefrom last name CROSS JOIN firsta nme 相当于做笛卡儿积 8. 嵌套查询 a. 用关键字IN,如查询李山的同乡: select * from stude nts

8、 where native in (select native fromstudents where name= 李山) b. 使用关键字EXIST,比如,下面两句是等价的: select * from stude nts where sno in (select sno from grades where cno= B2) select * from stude nts where exists (select * from grades where grades.s no=stude nts.s no AND cno= B2 ) 9. 关于排序order a.对于排序order ,有两种方

9、法:asc升序和desc降序 b.对于排序order,可以按照查询条件中的某项 排列,而且这项可用数字表示,如: select sno ,co un t(*),avg(mark) from grades group by sno hav ing avg(mark)85 order by 3 10. 其他 a. 对于有空格的识别名称,应该用括住。 b. 对于某列中没有数据的特定查询可以用null判断,如select snocoursenofrom grades where mark IS NULL c. 注意区分在嵌套查询中使用的any与all的区别,any相当于逻辑运算“而all则 相当于逻辑

10、运算& ” d. 注意在做 否定意义的查询是小心进入陷阱: 女口,没有选修B2 课程的学生: select students.* from students, grades where students.sno=grades.sno AND o B2 上面的查询方式 是错误的,正确方式见下方: select * from stude nts where not exists (select * from grades where grades.sno=students.snoAND eno=B2) 11. 关于有难度多重嵌套查询 的解决思想: 女口,选修了全部 课程的学生: select * from students where not exists ( select * from

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论