SELECT select_expr FROM table_reference
[ WHERE where_condition ]
[ GROUP BY ]
[ HAVING ]
[ ORDER BY ]
[ LIMIT ]
select 定义列的别名
SELECT column_name [ AS ] column_alias
不允许在where子句中使用列别名,这是因为,执行where代码时,可能尚未确定列值。
join:
table_reference [ INNER | CROSS ] JOIN table_factor [ join_condition ]
select distinct xx, xs_kc.yy from kc inner join xs_kc on (kc.pp=xs_kc.pp)
该语句个根据ON关键字后面的连接条件,合并两个表。内连接是系统默认的,可以省略INNER关键字。使用内连接后,from子语句ON条件主要用来连接表,其他并不属于连接表的条件可以使用where子句来指定。
select xs.学号,姓名,课程名,成绩 from xs join xs_kc on xs.学号=xs_kc.学号 join kc on xs_kc.课程号=kc.课程号 where 课程名=‘xxxx’ and ddd>=80
join可以有多个,每个都用on表示连接条件。
作为特例,可以将一个表与他自身进行连接,称为自连接。若要在一个表中查找具有相同列值的行,则可以使用自连接。使用自连接时需要为表名指定两个别名,且对所有列的引用均要用别名限定。
select a.学号, a.课程号,b.课程号,a.成绩 from xs_kc a join xs_kc b on a.成绩=b.成绩 and a.学号=b.学号 and a.课程号!=b.课程号。
查找xscj数据库中课程不同、成绩相同的学生的学号、课程号、成绩。
select I from xs where name is [ not ] null;
使用HAVING子句的目的与WHERE子句类似,不同的是WHERE子句是用来在from子句之后选择行,而HAVING子句用来在GROUP BY子句后选择行。 HAVING子句中的条件可以包含聚合函数,而WHERE不行。