0
点赞
收藏
分享

微信扫一扫

sql server 单表查询

书呆鱼 2022-04-13 阅读 109

(1)查询指定列

例:查询全体学生的学号与姓名

SELECT S_no,S_name FROM Student;

(2)查询全部列

例:查询全体学生的详细记录

    SELECT * FROM Student;
注意:其中*相当于全部列

(3)查询经过计算的值

例:查询全体学生的姓名及其出生年份

SELECT S_name,2022-S_age  //查询结果的第2列是一个 算术表达式
FROM Student;

(4)消除取值重复的行

例:查询选修了课程的学生学号

SELECT DISTINCT S_no
FROM Student;

(5) ORDER BY 子句

用户可以用ORDER BY子句对查询结果按照一个或多个属性列的升序(ASC)或降序(DESC)排列,默认值为升序。

例:查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列

SELECT S_no,Grade
FROM SC
WHERE C_no='3'
ORDER BY Grade DESC;

(6)查询满足条件的元组

查询满足指定条件的元组可以通过WHERE子句实现。WHERE子句常用的查询条件如下表所示

查询条件

谓词

比较

=,>,<,>=,<=,!=,<>,!>,!<; NOT+上述比较运算符

确定范围

BETWEEN AND,NOT BETWEEN AND

确定集合

IN,NOT IN

字符匹配

LIKE,NOT LIKE

空值

IS NULL,IS NOT NULL

多重条件(逻辑运算)

AND,OR,NOT

其含义是查找指定的属性列值与<匹配串>相匹配的元组。<匹配串>可以是一个完整的字符串,也可以含有通配符 %

  • %(百分号)代表任意长度(长度可以为0)的字符串。例如:a%b 表示以a开头,以b结尾的任意长度的字符串。如acb、addgb、ab等。

例1:查询所有年龄在20岁以下的学生姓名及其年龄

SELECT S_name,S_age
FROM Student
WHERE S_age<20;

例2:查询年龄在20~23岁之间的学生的姓名、系别和年龄

SELECT S_name,S_dept,S_age
FROM Student
WHERE S_age BETWEEN 20 AND 23

例3:查询出课程号为01001、02001、02003的所有课程,要求显示出课程号course_no、课程名称course_name。(用in运算符)。

select course_no,course_name
from Course
where course_no in('01001','02001','02003')

此处介绍下字符匹配

谓词LIKE可以用来进行字符串的匹配。

例1:查询所有姓“李”的男同学,要求显示其学号s_no、姓名s_name、性别s_sex、出生日期s_birthday。

select s_no,s_name,s_birthday,s_sex
from student 
where s_sex = '男' and s_name like '李%'

例2:查询所有姓名中含有“一”字的同学,要求显示其学号s_no、姓名s_name。

select s_no,s_name 
from student 
where s_name like '%一%'

总结:此次整理了SQL数据查询中有关单表查询的程序,其中应格外注意

  • 字符匹配中 % 和 _ 的区别。
  • 聚集函数只能用于 SELECT子句 和 GROUP BY子句 中的 HAVING 子句。
举报

相关推荐

0 条评论