1、SQL查询语句,蔡海洋,Select-SQL数据查询语言,SQL(Structured Query Language)是结构化查询语言。关系数据库管理系统都采用SQL语言作为数据库语言,SQL语言特点,类似于英语自然语言,简单易学是一种面向集合的语言可独立使用,也可嵌入到宿主语言中使用具有查询、操纵、定义和控制功能所使用的表无需打开和建立关联,SQL查询,基本查询 SELECTFROM带条件查询 WHERE嵌套查询多表查询 (JOINON)排序输出 ORDER BY重定向输出 INTO | TO分组统计查询 GROUP BY,SQL简单查询,格式: SELECT ALL | DISTINCT
2、FROM 说明:DISTICT:显示无重复结果的记录选择项:可以是字段名、常量或表达式FROM后的查询来源可以是基本表或视图,基本查询举例,列出全部学生信息 Select * from student,基本查询举例,列出全部学生的姓名和年龄,去掉重名Select distinct 姓名,year(date()-year(出生日期); as 年龄 from student,基本查询举例,求出所有学生的入学成绩平均分 Select avg(入学成绩) as 入学成绩平均分; from student,带条件查询,格式: SELECT FROM WHERE 常用运算符:= != = =560 and
3、 入学成绩any (sele 成绩 from choose where 课程号=01102),Choose,Choose,嵌套查询举例返回一组值的子查询,列出选修“01101”课的学生中成绩比选修“01102”的最高成绩高的学生的学号和成绩。sele 学号,成绩 from choose where 课程号=01101 and;成绩all (sele 成绩 from choose where 课程号=01102),Choose,Choose,嵌套查询举例返回一组值的子查询,列出选修“数据库原理”或“软件工程”的所有学生的学号 Sele 学号 from choose where 课程号 in; (
4、sele 课程号 from course where ; 课程名= “数据库原理” or 课程名= 软件工程 ),Choose,多表查询等值联接,按对应字段的共同值将一个表中的记录与另一个表中的记录相联接。例输出所有学生的成绩单,要求给出学号、姓名、课程号、课程名和成绩。sele a.学号,a.姓名,b.课程号,c.课程名,b.成绩;from student a,choose b,course c; where a.学号=b.学号 and b.课程号=c.课程号,sele a.学号, a.姓名, b.课程号, c.课程名, b.成绩; from student a inner join cho
5、ose b; inner join course c; on c.课程号 = b.课程号 on a.学号 = b.学号,多表查询非等值联接,例列出选修“01102”课的学生中,成绩大于学号为“200109”的学生该门课成绩的那些学生的学号及其成绩。sele a.学号,a.成绩 from choose a,choose b;where a.成绩b.成绩 and a.课程号=b.课程号and b.课程号= 01102 and b.学号= 200109,sele a.学号,a.成绩 from choose a,choose b;where a.成绩b.成绩 and a.课程号=b.课程号and b.
6、课程号= 01102 and b.学号= 200109,Choose,Choose,排序查询,格式: ORDER BY ASC | DESC例按性别顺序列出学生的学号、姓名、性别、课程名及成绩,性别相同的再先按课程后按成绩由高到低排序。sele a.学号,a.姓名,a.性别,c.课程名,b.成绩 ;from 学生 a,选课 b,课程 c;where a.学号=b.学号 and b.课程号=c.课程号;order by a.性别,c.课程名,b.成绩 desc,输出流向查询,格式:INTO ARRAY | CURSOR | TABLE | DBFTO TO PRINTERTO SCREEN,分组
7、查询,格式: GROUP BY HAVING 说明:GROUP BY :分组查询。常规输出字段的值每组只取其中一条记录的字段值作为查询结果。HAVING:设置过滤条件,与GROUP BY一起使用,指定结果中的组必须满足的条件,例 分别统计男女人数。sele 性别, count(性别) from student ;group by 性别例 分别统计男女中少数民族学生人数。sele 性别, count(性别) from student ;group by 性别 where 少数民族否注:先where筛选,后分组统计。,例列出成绩平均分大于80分的课程号 sele 课程号,avg(成绩) from
8、choose ;group by 课程号 having avg(成绩)= 80注:先分组统计,后having筛选 。,SQL定义语句,定义基本表 CREATE TABLE (字段名1 类型 长度 ,字段名2 类型 长度 , )修改表 增加字段:ALTER TABLE ADD 修改字段:ALTER TABLE ALTER 删除字段:ALTER TABLE DROP删除表 DROP TABLE ,SQL表记录操作语句,插入记录 INSERT INTO (字段序列) VALUES(记录具体值)更新记录 UPDATE SET ,删除记录 DELETE FROM WHERE ,实验作业,例6.6/ 6.7(2)/ 6.9/ 6.10/ 6.11/ 6.12 6.13/ 6.14(1)/ 6.15/ 6.17/ 6.20 6.21/ 6.23/ 6.24,