240 likes | 328 Views
SELECT-SQL 查询语句. SQL(Structure Query Language ,结构化查询语句 ) 是美国国家标准局按 ANSI 确认的关系数据库语言的标准,用于对关系型数据库中的数据进行存储、查询、更新等操作。 SQL 语言是一种交互式的计算机语言,它不仅能在单机环境下提供对数据库的各种访问操作,而且还可作为一种分布式数据库语言用于客户 / 服务器模式数据库应用的开发。. SQL 命令动词. 查询功能.
E N D
SELECT-SQL查询语句 • SQL(Structure Query Language,结构化查询语句)是美国国家标准局按ANSI确认的关系数据库语言的标准,用于对关系型数据库中的数据进行存储、查询、更新等操作。SQL语言是一种交互式的计算机语言,它不仅能在单机环境下提供对数据库的各种访问操作,而且还可作为一种分布式数据库语言用于客户/服务器模式数据库应用的开发。
查询功能 • SQL查询语句的格式主要有SELECT 子句、FROM子句、INTO子句、TO子句、WHERE子句、GROUP BY子句和ORDER BY 子句,
SELECT主要短语的含义: • SELECT 说明要查询的数据 • FROM 说明要查询的数据来自那个或那些表; • WHERE 说明查询条件;
GROUP BY短语用于对查询结果进行分组,可以利用它进行分组汇总; • HAVING短语必须跟随GROUP BY使用,它用来限定分组必须满足的条件; • OREDR BY短语用来对查询的结果进行排序,默认为升序。ASC升序(ascent) ,DESC降序(descent)
简单查询 • SELECT 、FROM 、WHERE 三个子句构成最常用的、最基本的SQL查询语句。
SELECT-SQL应用举例 • 查询STUDENT.DBF表中的全部信息。 • SELECT * FROM STUDENT • 查询STUDENT.DBF表中所有同学的姓名,院系 • SELECT 姓名,院系 FROM STUDENT
查询STUDENT.DBF表中女生的全部信息 • SELECT * FROM STUDENT WHERE 性别=“女”
SELECT 姓名,出生日期 as 出生日 FROM STUDENT • 查询结果的字段名列表可以使用别名
查询STUDENT.DBF表中所有同学的学号、姓名和年龄。查询STUDENT.DBF表中所有同学的学号、姓名和年龄。 • SELECT 学号,姓名,YEAR(DATE())-; YEAR(出生年月) AS 年龄 FROM STUDENT • 查询STUDENT.DBF表中所有“公共卫生"专业或"临床医学"专业同学的学号,姓名,专业信息。 • SELECT 学号,姓名,专业 FROM STUDENT WHERE 专业=“公共卫生" OR 专业="临床医学"
查询SCORE.DBF表中所有同学的学号、计算机成绩(降序)。查询SCORE.DBF表中所有同学的学号、计算机成绩(降序)。 • SELECT 学号,成绩 FROM SCORE ORDER BY 成绩 DESCENT • 查询计算机成绩前三名学生 • SELECT * TOP 3 FROM SCORE ORDER BY 成绩 DESC
查询STUDENT表中学号以98开头的男同学的所有信息查询STUDENT表中学号以98开头的男同学的所有信息 • SELECT * FROM STUDENT WHERE 学号 LIKE "98*" and 性别="男"
简单的联接查询 • 找出“数据挖掘原理”成绩大于等于80分以上的学生学号姓名和专业 • SELECT student.学号,姓名,院系 as 专业 • FROM student,score,course • WHERE 成绩>=80 AND course.课程名="数据挖掘原理" and student.学号=score.学号 AND score.课程号=course.课程号; • SELECT student.学号, student.姓名, student.院系 FROM student INNER JOIN (course INNER JOIN score ON course.课程号 = score.课程号) ON student.学号 = score.学号 WHERE score.成绩>=80 AND course.课程名="数据挖掘原理";
嵌套查询 • 找出“数据挖掘原理”成绩大于等于80分以上的学生学号姓名和专业还可一这样写 • SELECT student.学号, student.姓名, student.院系 AS 专业 • FROM student, score, course • WHERE (((score.成绩)>=80) AND ((score.课程号) in (select course.课程号 from course where 课程名="数据挖掘原理"))); • 上述SQL语句执行的是两个过程,首先在course中找出课程名为“数据挖掘原理”课程号
联合查询 • 例 :查询STUDENT.DBF表中所有“公共卫生"专业或"临床医学"专业同学的学号,姓名,专业信息。 • SELECT 学号,姓名 FROM STUDENT WHERE 专业="临床医学" UNION; SELECT 学号,姓名 FROM STUDENT WHERE 专业=“公共卫生"
举例 • 显示所有已选课同学的学号、姓名 • select distinct student.学号,姓名 from student, course where student.学号=course.学号 • select 学号,姓名 from student where 学号 in(select distinct 学号 from course)
显示所有没有选课的同学的信息 • select * from student where 学号 not in(select 学号 from course)
显示所有成绩在90分以上(含90)的同学的姓名、所属院系和所选的课程名称和成绩显示所有成绩在90分以上(含90)的同学的姓名、所属院系和所选的课程名称和成绩 • select 姓名,院系,课程名,成绩 from student,sc,course where student.学号 not in (select distinct 学号 from sc where 成绩<90) and student.学号=sc.学号and sc.课程号=course.课程号
查询与刘昕在同一个系学习的学生信息 • select * from student where 院系=(select 院系 from student where 姓名="刘昕") • 当子查询的结果是一个值时,可以用IN,也可以用等号(=),但是当子查询的结果是一组值时,只能用IN
简单的计算查询 • 命令参数 说明 • COUNT(*) 计算表中记录的总数 • COUNT(列) 对一列中的值计算个数 • SUM(数值表达式) 计算数值表达式的和 • AVG(数值表达式) 计算数值表达式的平均值 • MIN(表达式) 求(数值、日期、字符)最小值 • MAX(表达式) 求(数值、日期、字符)最大值
SELECT Sum(SCORE.成绩) AS 总计 • FROM SCORE;
统计基础医学专业学生的平均分数 • SELECT Avg(SCORE.成绩) AS 平均分 FROM SCORE WHERE SCORE.学号 In (SELECT 学号 FROM STUDENT WHERE 院系="基础医学");
分组与计算 • 分别统计男生和女生的人数 • SELECT 性别,COUNT(*) AS 人数 FROM STUDENT GROUP BY 性别 • 按专业统计人数并按降序排列 • SELECT 院系,COUNT(*) as 人数 FROM STUDENT GROUP BY 院系 ORDER BY 2 DESC
查询至少有两门以上课程不及格的学生信息 • Select * from student where 学号 in (select 学号 from score where 成绩<60 group by 学号 having count(*)>=2)