查询表的全部信息:
--student是要查询的表
select * from student
使用别名查询表中的某个字段,或使用别名创建一个新的字段:
select name as studentname from student --把查询出来的名字的列名改为学生姓名
select YEAR(GETDATE()) - YEAR(birthday) as age from student --查询学生的年龄,列名为age
使用where关键字,根据条件查询表中的某个字段。下面关键字进行组合使用,即可确定筛选条件。
比较 | =, >, >=, <=, <, <>, != |
确定范围 | BETWEEN … AND …, NOT BETWEEN … AND… |
确定集合 | IN, NOT IN |
字符匹配 | LIKE, NOT LIKE |
空值 | IS NULL, IS NOT NULL |
多重条件 | AND, OR |
如查询姓名不为空的学生:
select * from student where name IS NOT NUll
查询出生日期在2002到2004年之间的学生:
select * from student where birthday year(birthday) BETWEEN 2002 AND 2004
使用group by可以将数据按照分组进行查询,具有相同属性值的行会划分为一组,例如统计每门课程的选课人数(多门课,每门课有多人)。查询语句如下。
select count(*) from SC group by Cno
having用于对分组后的统计结果再进行筛选,它的功能与WHERE类似,但它用于组而不是单个记录。并且在having by 中可以使用聚合函数。例如查询每门课程的选课人数不少于20人的课程。
select count(*) from SC group by Cno having count(*) >=20
left join 左连接:以左表为条件,在右表查询相等的连接条件,右表没有符合条件的则用null替代。
right join 右连接:以右表为条件,在左表查询相等的连接条件,左表没有符合条件的则用null替代。
inner join 内连接:只返回符合连接条件的数据
例:查询全体学生的选课情况, 包括没有选课的学生。
select * from SC left join S on SC.Sno = S.Sno