数据库基础 SoL Server 2000 模块五 数据查询
数据查询 模块五
数据车基础一-s0sene2000 数据查询模块能力面的形成 简单查询 Select…From… 单表查询 条件查询 where 分类查询 group by. having.. 数据查询 多表查询 多表连接查询 多表连接综合查询 子查询简单子查询 操作符子查询 四 wu H..a E wvaI w s
数 据 查 询 单表查询 多表查询 子 查 询 简单查询 Select… From… 条件查询 where… 分类查询 group by…having… 多表连接查询 多表连接综合查询 简单子查询 操作符子查询 数据查询模块能力面的形成
数据库基础 SoL Server 2000 任务 简单查询 elect..From..(2学时) 从学生基本信息表中查询所有记录。在【查询分析器】输入如下代码 选中后按巧键运行,如图1所示。 图1 注:星号(*)用于代指所查询表中的所有字段(列)
任务一 Select… From…(2学时) 1. 从学生基本信息表中查询所有记录。在【查询分析器】输入如下代码, 选中后按F5键运行,如图1所示。 图1 注:星号(*)用于代指所查询表中的所有字段(列)。 简单查询
数据库基础 SoL Server 2000 2.查询学生基本信息表中的学生姓名、班级编号。 select xm, bjbh from stu 注:语句中使用的标点符号必须采用英文格式 3.查询语句的其它用法 a.将查询字段改名显示。在【查询分析器】中如下输入代码,运行 如图2所示。 图3 通过“as”,以“姓名”为字段名而不再是“xm’显示stu表中的字段名 b.作为一般计算器使用,即不使用From语句。如 elect1+2as加法 以“加法”为字段名显示结果:3 注:像这种不属于所查询表中的字段如果不通过“as”指定別名,则 结果中将提示“无列” 如图3
2. 查询学生基本信息表中的学生姓名、班级编号。 select xm, bjbh from stu 注:语句中使用的标点符号必须采用英文格式。 3. 查询语句的其它用法 a. 将查询字段改名显示。在【查询分析器】中如下输入代码,运行 如图2所示。 图2 图3 通过“as ”,以“姓名”为字段名而不再是“xm ”显示stu表中的字段名 。 b. 作为一般计算器使用,即不使用From语句。如 Select 1+2 as 加法 --以“加法”为字段名显示结果:3 注:像这种不属于所查询表中的字段如果不通过“as ”指定别名,则 结果中将提示“无列名”。如图3所示
数据库基础 SoL Server 2000 c.查询字段运算结果后的结果。在查询分析器输入如下代码,将显示平时 成绩和期末成绩各占40%和60%作为总成绩的结果。运行如图4所示。 注:几个常用函数 select psc*0.4+qmcj*0.6as期末成绩 Getdate(。返回系统的当前日期。如 select getdate 期末成绩 显示系统当前时间 2005-06-1216:39:14.810 Dateparto。以整数形式返回日期中的 736.20 指定部分。如 171.80 select datepart( month, getdate0)as月份 显示当前日期中的“月”:6 图4 Substring o。返回指定字符串中指定位置的子串。如 Select Substring (xh, h,9,12) as当 2号 from stu 返回stu表中学生号中从第9个字符开始、第12个字符结束的字符串:1001 更多函数请参阅查询分析器的帮助文件
c. 查询字段运算结果后的结果。在查询分析器输入如下代码,将显示平时 成绩和期末成绩各占40%和60%作为总成绩的结果。运行如图4所示。 注:几个常用函数: ·Getdate()。返回系统的当前日期。如: select getdate() 显示系统当前时间: 2005-06-12 16:39:14.810 ·Datepart()。以整数形式返回日期中的 指定部分。如: select datepart(month,getdate()) as ‘月份‘ --显示当前日期中的“月”:6 ·Substring()。返回指定字符串中指定位置的子串。如: Select Substring(xh, 9, 12) as 学号 from stu 返回stu表中学生号中从第9个字符开始、第12个字符结束的字符串:1001 更多函数请参阅查询分析器的帮助文件。 图4
改据库基动一S0sene200 d.去掉重复记录。如 Select distinct bjbh from stu 返回stu表中所有的班级编号(无重 对查询结果进行排序。如: select xh, xm, zcj from stu order by xh desc 按学号降序显示stu表中的学号、姓名、成绩。如图5所示。 select h, xm, zc from stu 41022071013刘初阳350 041022071012钟 300.0 041022071011任建新3220 041022071010胡青松321.0 5_091027109王250 041022071008李智30.0 041022071007王龙291.0 041022061004姜黎明456.0 图5 注:desc按降序排序,asc按升序排序。 f.查询限定个数记录 Select top 5 xm from stu 查询stu表中前5个学生姓名。 注:top后的数值限定返回记录的个数,如果数值后加上 percent,则指示百分 值。如: select top5 percent* from stu返回stu表中前5%个学生记
d. 去掉重复记录。如: Select distinct bjbh from stu 返回stu表中所有的班级编号(无重复)。 e. 对查询结果进行排序。如: select xh,xm,zcj from stu order by xh desc 按学号降序显示stu表中的学号、姓名、成绩。如图5所示。 图5 注:desc按降序排序,asc按升序排序。 f. 查询限定个数记录。 Select top 5 xm from stu 查询stu表中前5个学生姓名。 注:top 后的数值限定返回记录的个数,如果数值后加上percent,则指示百分 值。如:select top 5 percent * from stu返回stu表中前5%个学生记
数据库基础 SoL Server 2000 g.Case函数查询。在查询分析器输入如下代码,运行结果如图6所示 select h 成绩等级=case when gmc j=60 and gmc j=70 and gmc j=80 and qmc j=60 and qmc=70 and qmcj<80 =80 and 3如= 从x表查询所有学生的 e⊥se end 学号、成绩等级(新字段) from xk 和期末成绩,成绩等级根据 成绩等级c 期末成绩按分数段划分。 141022021001优 90 41022021001中 79 041022021001中 041022021002不及格56.0 041022021002不及格_58.0 图6
g. Case函数查询。在查询分析器输入如下代码,运行结果如图6所示: select xh, 成绩等级=case when qmcj =60 and qmcj=70 and qmcj =80 and qmcj <90 then ‘良’ else ‘优’ end, qmcj from xk 图6 从xk表查询所有学生的 学号、成绩等级(新字段) 和期末成绩,成绩等级根据 期末成绩按分数段划分
数据库基础 SoL Server 2000 注:case函数用于计算多个条件列表并返回相应的值。Case具有以下两种 语法格式 简单函数。将某个表达式的值与一组简单表达式的值进行比较以返回 结果。如: case qmc J when60then‘六十 when70then“七 end 将qmcj的值分别与60、70比较是否相等,并跟据比较返回“六十”或“七 ,若都不匹配,有没有else语句,则返回空值。 这种用法要求case后先跟上一个具体的表达式(或字段名),再用 该表达式的值与每个when语句中的单个值进行比较(是否相等),不 能使用任何关系或逻辑等运算符 搜索函数。计算一组布尔表达式以确定结果。如本例。 另外,Case函数必须以end结束,且end后还可以用逗号连接下一个 要查询的字段;Ese是可选语句
注:case函数用于计算多个条件列表并返回相应的值。Case具有以下两种 语法格式: ·简单函数。将某个表达式的值与一组简单表达式的值进行比较以返回 结果。如: case qmcj when 60 then ‘六十’ when 70 then ‘七十’ end 将qmcj的值分别与60、70比较是否相等,并跟据比较返回“六十”或“七 十” , 若都不匹配,有没有else语句,则返回空值。 这种用法要求case后先跟上一个具体的表达式(或字段名),再用 该表达式的值与每个when语句中的单个值进行比较(是否相等), 不 能使用任何关系或逻辑等运算符。 · 搜索函数。计算一组布尔表达式以确定结果。如本例。 另外,Case函数必须以end结束,且end后还可以用逗号连接下一个 要查询的字段;Else是可选语句
数据库基础 SoL Server 2000 实训 1.查询stu表中的xm、xh、bjbh,并将列名显示为姓名、学号、班级编号。 2.查询stu表中的Ⅻm、xb,xb根据值男或女分别改为皿、f并按Ⅻm降序显示。 3.查询xk表中的xh、kch,并将出生日期经过操作后以新字段“年龄”显示。 返回退出
实训一 1.查询stu表中的xm、xh、bjbh,并将列名显示为姓名、学号、班级编号。 2.查询stu表中的xm、xb,xb根据值男或女分别改为m、f并按xm降序显示。 3.查询xk表中的xh、kch,并将出生日期经过操作后以新字段“年龄”显示。 返回 退出
数据库基础 SoL Server 2000 任务二条件查询 where.(1学时) 关系条件 Select* from stu where xm=’李春华 查询名为“李春华”的学生的所有信息。又如: Select i from stu where zcj)200 查询总成绩超过200分的所有学生信息。 注:关系运算符包括=、〈、)、◇(或!=)、)、>=(!<)。 Select x form stu where csrq! '12 /31/86 and csrq<=12/31/887 查询出生日期在86年12月21日和88年12月21日之间的学生记录。 2.逻辑条件 select xm, xb from stu where bjbh='041022021 查询stu表中班级编号为“041022021”的学生姓名和性别。 注:逻辑运算符包括not、and、or
任务二 条件查询where…(1学时) 1. 关系条件 Select * from stu where xm=’李春华’ 查询名为“李春华”的学生的所有信息。又如: Select * from stu where zcj>200 查询总成绩超过200分的所有学生信息。 注:关系运算符包括= 、、<>(或!=)、)、>=(!<)。 又如: Select * form stu where csrq!< '12/31/86' and csrq <='12/31/88' 查询出生日期在86年12月21日和88年12月21日之间的学生记录。 2. 逻辑条件 select xm,xb from stu where bjbh=’ 041022021’ 查询stu表中班级编号为“041022021”的学生姓名和性别。 注:逻辑运算符包括not、 and、 or