QT学习:常用SQL命令

这里简单介绍以下在QT中常用的SQL命令,在之后将会新增一个分类专栏专门讲数据库。

一、SELECT语句

完备的SELECT语句很复杂,其主要的子句如下:

SELECT [DISTINCT] [别名.]字段名或表达式 [AS 列标题] /* 指定要选择的列或行及其限定 */ 
//SELECT子句指出查询结果中显示的字段名,以及字段名和函数组成的表达式等。可用DISTINCT去除重复的记录行;AS列标题指定查询结果显示的列标题。当要显示表中所有字段时,可用通配符“*”代替字段名列表。  
FROM table_source /* FROM子句,指定表或视图 */ 
[ WHERE search_condition ] /* WHERE子句,指定查询条件 */  
[ GROUP BY group_by_expression ] /* GROUP BY子句,指定分组表达式 */ 
[ ORDER BY order_expression [ ASC | DESC ]] /* ORDER BY子句,指定排序表达式和顺序 */ 
// GROUP BY子句和ORDER BY子句分别对查询结果进行分组和排序。

其中,SELECT和FROM子句是不可缺少的。
下面用示例说明使用SQL语句对Student数据库进行的各种查询。
(1)查询Student数据库。查询students表中每个同学的姓名和总学分。

USE Student SELECT name,score FROM students 

(2)查询表中所有记录。查询students表中每个同学的所有信息。

SELECT * FROM students 

(3)条件查询。查询students表中总学分大于或等于90的同学的情况。

SELECT * FROM students WHERE score >= 90

(4)多重条件查询。查询students表中所在系为“计算机”且总学分大于或等于90的同学的情况。

SELECT * FROM students WHERE department='计算机' AND score >= 90

(5)使用LIKE谓词进行模式匹配。查询students表中姓“李”且单名的学生情况。

SELECT * FROM students WHERE name LIKE '李_' 

(6)用BETWEEN…AND指定查询范围。查询students表中不在1998年出生的学生情况。

SELECT * FROM students WHERE birthday NOT BETWEEN '1998-1-1' and '1998-12-31'

(7)空值比较。查询学分尚不确定的学生情况。

SELECT * FROM students WHERE score IS NULL 

(8)自然连接查询。查找计算机系学生姓名及其“C++程序设计”课程的考试分数情况。

SLELCT name,grade FROM students, courses,grades, 
WHERE department = '计算机' AND coursename= ' C++程序设计' AND students.studentid = grades.studentid AND courses.courseid = grades.coursesid

(9)IN子查询。查找选修了课程号为110的学生情况。

SELECT * FROM students WHERE studentid IN 
( SELECT studentid FROM courses WHERE courseid = '110' ) 

在执行包含子查询的SELECT语句时,系统首先执行子查询,产生一个结果表,再执行外查询。
(10)比较子查询。这种子查询可以认为是IN子查询的扩展,它是表达式的值与子查询的结果进行比较运算。查找课程号102的成绩不低于课程号110的最低成绩的学生学号。

SELECT studentid FROM grades WHERE courseid = '102' AND grade !< ANY ( SELECT grade FROM grades WHERE courseid = '110' 
) 

(11)EXISTS子查询。EXISTS谓词用于测试子查询的结果集是否为空表,若子查询的结果集不为空,则EXISTS返回TRUE,否则返回FALSE。EXISTS还可与NOT结合使用,即NOT EXISTS,其返回值与EXISTS刚好相反。
查找选修110号课程的学生姓名。

SELECT name FROM students WHERE EXISTS ( SELECT * FROM grades WHERE studentid = students.studentid AND courseid = '206' 
)

(12)查找选修了全部课程的同学姓名(查找没有一门功课不选修的学生)。

SELECT name FROM students WHERE NOT EXISTS ( SELECT * FROM courses WHERE NOT EXISTS ( SELECT * FROM grades WHERE studentid= students.studentid AND courseid=courses.courseid 
) ) 

(13)查询结果分组。将各课程成绩按学号分组。

SELECT studentid,grade FROM grades GROUP BY studentid 

(14)查询结果排序。将计算机系的学生按出生时间先后排序。

SELECT * FROM students WHERE department = '计算机' ORDER BY birthday

二、常用聚合函数

在对表数据进行检索时,经常需要对结果进行汇总或计算,如在学生成绩数据库中求某门功课的总成绩、统计各分数段的人数等。聚合函数用于计算表中的数据,返回单个计算结果。常用的聚合函数见下图:
QT学习:常用SQL命令_第1张图片
(1)求选修课程110的学生的平均成绩。

SELECT AVG(grade) AS ' 课程110平均成绩' FROM grades WHERE courseid = '110' 

(2)求选修课程110的学生的最高分和最低分。

SELECT MAX(grade) AS '课程110最高分' , MIN(grade) AS '课程110最低分' FROM grades WHERE courseid = '110' 

(3)求学生的总人数。

SELECT COUNT(*) AS '学生总数' FROM students

你可能感兴趣的:(QT学习,qt,sql,数据库)