select查询语句(3)(4)
第10讲 SELECT 查询

查询命令
2.选择表中的行
------在WHERE子句中规定查询条件
例: 列出所有教授的信息。 SELECT * FROM T WHERE Ttitle='教授'; 例:列出在“D01”系工作的所有教师的信息。 SELECT * FROM T WHERE Dnum='D01';
例:列出月工资在1800元和2400元之间的教师 信息。 SELECT * FROM T WHERE Tsalary BETWEEN 1800 AND 2400;
第十讲
SQL的数据操纵功能
SQL的DDL是用来生成、修改、删除数据库结构的, 它并不涉及数据。 数据库的数据操作由数据操纵语言DML来完成, 主要包括SELECT、INSERT、DELETE和UPDATE等4 个语句,即通过它们实现查询和更新(查、插、 删、改)。
查询的基本语句
SQL中的核心是数据库查询语句,它的一般格式是: SELECT <目标列> FROM <表或视图名> [WHERE <条件表达式>] [GROUP BY <列名> [HAVING <条件>]] [ORDER BY <列名> [ASC/DESC]];
例:计算SC表中学号为S030101的学生所选修课程的总成绩
例:计算SC表中学号为S030101的学生所选修课程的总成绩
SELECT SUM(Score) FROM SC WHERE Snum=‘S030101’
AVG 函数
语法: AVG(表达式) 说明:该函数只能对数值类型的字段进行计算。
例1:计算SC表中学号为S030101的学生所选修课程的平均分。 SELECT AVG(Score) FROM SC; 例2:计算T表中所有女教师的平均工资。
数据库查表 select语句

数据库查表 select语句数据库查表 select 语句在数据库中,select 语句是用于查询表中数据的一种语句。
通过 select 语句,我们可以查看表中的数据,也可以对数据进行筛选、排序、分组和计算等操作,非常方便实用。
select 语句的基本语法如下:```sql SELECT column1, column2, … FROMtable_name; ```其中,column1、column2、… 表示要查询的列(数据字段),可以是一个,也可以是多个;table_name 表示要查询的表名,可以是一个,也可以是多个。
下面是一些实例:```sql SELECT * FROM employees; -- 查询employees 表中的所有数据 SELECT emp_no, birth_date, first_name, last_name FROM employees; -- 查询employees 表中的指定列 SELECT * FROM employees WHERE emp_no = 10001; -- 查询 employees 表中emp_no=10001 的记录 ```在 select 语句中,我们还可以使用一些运算符和函数来进行更加复杂的查询和操作。
比如:- 算术运算符:+、-、*、/、%; - 比较运算符:=、!=、<、>、<=、>=、BETWEEN、LIKE 等; - 逻辑运算符:AND、OR、NOT; - 聚合函数:SUM、AVG、MAX、MIN、COUNT 等; - 分组函数:GROUP BY、HAVING 等; - 排序函数:ORDER BY 等。
下面是一些示例:```sql SELECT emp_no, first_name, last_name, salary FROM employees WHERE salary > 10000; -- 查询salary>10000 的员工信息 SELECT emp_no, first_name, last_name, salary*12 AS annual_salary FROM employees; -- 查询员工的年薪(月薪*12),并使用 AS 语句给计算结果起别名 SELECT dept_name, AVG(salary) AS avg_salary FROM employees JOIN departments USING (dept_no) GROUP BY dept_name HAVING AVG(salary) > 10000; -- 查询各个部门的平均工资并排序 SELECTfirst_name, last_name, COUNT(*) AS num_of_dept FROM dept_manager JOIN employees ONdept_manager.emp_no=employees.emp_no GROUP BYdept_manager.emp_no ORDER BY num_of_dept DESC LIMIT 10; -- 查询担任部门经理次数最多的前 10 名员工 ```需要注意的是,在进行 select 查询时,我们查询的表中可能存在大量数据,如果没有进行适当的索引或优化,查询速度可能会较慢。
数据库查表 select语句

数据库查表 select语句数据库查表select 语句是数据库查询语言中最常用的语句之一,用于从数据库中检索所需的数据。
下面是一些关于数据库查表select 语句的相关内容,旨在帮助读者更好地理解和应用该语句。
1. select 语句的基本语法SELECT column1, column2, ...FROM table_nameWHERE condition;2. 查询所有数据SELECT * FROM table_name;3. 查询指定列的数据SELECT column1, column2 FROM table_name;4. 使用别名SELECT column_name AS alias_name FROM table_name;5. 查询满足条件的数据SELECT * FROM table_name WHERE condition;6. 使用运算符进行条件查询SELECT * FROM table_name WHERE column_name = value; SELECT * FROM table_name WHERE column_name > value;SELECT * FROM table_name WHERE column_name LIKE 'pattern';7. 多条件查询SELECT * FROM table_name WHERE condition1 AND condition2; SELECT * FROM table_name WHERE condition1 OR condition2;8. 查询排序结果SELECT * FROM table_name ORDER BY column_name ASC/DESC;9. 查询唯一的数据SELECT DISTINCT column_name FROM table_name;10. 查询统计信息SELECT COUNT(column_name) FROM table_name;SELECT AVG(column_name) FROM table_name;SELECT SUM(column_name) FROM table_name;SELECT MIN(column_name) FROM table_name;SELECT MAX(column_name) FROM table_name;11. 使用聚合函数进行分组查询SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name;12. 查询结果限制SELECT * FROM table_name LIMIT number;13. 查询结果分页SELECT * FROM table_name LIMIT number OFFSET offset;14. 连接查询SELECT * FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;15. 子查询SELECT column_name FROM table_name WHERE column_name IN (SELECT column_name FROM table_name);以上是关于数据库查表select 语句的一些常见用法和语法规则。
数据库原理及应用SQL-Server 第6章-SELECT数据查询

6/69
简单查询(2)
❖ 查询全部列
将表中的所有属性列都选出来,可以有两种方法。一种方法就是在 SELECT关键字后面列出所有列名;另一种方法是如果列的显示顺序与 其在基表中的顺序相同,也可以简单地将<目标列表达式>指定为“*”。
例 查询全体学生的详细记录。 USE JXGL GO SELECT * FROM S GO
2021/9/19
10/69
带有WHERE子句的查询 (2)
确定范围
语句BETWEEN…AND…和NOT BETWEEN…AND…可以用来查找 属性值在(或不在)指定范围内的元组,其中BETWEEN后是范围的下 限(即低值),AND后是范围的上限(即高值)。
例 查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、 系别和年龄。
基本语句SELECT—FROM—WHERE的含义是:根据WHERE子句 的条件表达式,从FROM子句指定的基本表或视图中找出满足条件的 元组,再按SELECT子句中的目标列表达式,选出元组中的属性值形 成结果表。
2021/9/19
5/69
简单查询(1)
❖ 查询指定列
在很多情况下,用户只对表中的一部分属性列感兴趣,这时可以通 过在SELECT子句的<目标列表达式>中指定要查询的属性列。
USE JXGL GO SELECT SNAME,SEX FROM S WHERE SDEPT IN('CS','MA','IS') GO
2021/9/19
12/69
带有WHERE子句的查询 (4)
字符匹配
运算符LIKE可以用来进行字符串的匹配。其一般语法格式如下: [NOT] LIKE ’<匹配串>’[ESCAPE ’<换码字符>’]
常用SELECT语句汇总

常用SELECT语句汇总一、单表查询(一)按照条件查询相关记录Select 字段1,字段2……字段N from 表 where 条件含义:从表中根据where 条件查询记录,每条记录显示的字段按照字段1、字段2….字段N的设置显示注:select语句中的标点符号及运算符必须使用英文半角字符。
例1:从凭证库中查询2004年1月31日的凭证,每条凭证只显示凭证日期、凭证号、科目名称、借方金额、贷方金额、会计月份 6个字段Select 凭证日期,凭证号,科目名称,借方金额,贷方金额,会计月份 From 凭证库 where 凭证日期=’2004-1-31’例2:根据业务_个人基本情况表,找出缴存状态为”正常”的记录,查出的记录只显示姓名、身份证号、单位账号及个人账号 4个字段Select 个人姓名,身份证号,单位账号,个人账号 from 业务_个人基本情况表 where 账户状态=’1’例3:从科目余额表中查询出2010年借方金额大于50万或2010年借方金额小于10万的记录,每条记录只显示摘要、科目编码、借方金额、贷方金额、年度5个字段Select摘要,科目编码,借方金额,贷方金额,年度 From 科目余额 where(借方金额>500000 and 年度=2010) or (借方金额<100000 and 年度=2010)Select top 100 字段1,字段2……字段N from 表 where 条件含义:从表中根据where 条件查询记录,显示前100条记录,每条记录按照字段1、字段2….字段N的设置显示例1:从凭证库中查询2004年1月31日的前100条凭证,每条2凭证只显示凭证日期、凭证号、科目名称、借方金额、贷方金额、会计月份 6个字段Select top 100凭证日期,凭证号,科目名称,借方金额,贷方金额,会计月份 From 凭证库where 凭证日期=’2004-1-31’例2:根据业务_个人基本情况表,找出缴存状态为”正常”的前100条记录Select top 100个人姓名,身份证号,单位账号,个人账号 from 业务_个人基本情况表where 账户状态=’1’(二)通配符的使用*表示将全部的字段内容都显示出来例1:从业务_电子警察表中筛选出无车号或者车牌号小于3位的记录Select * from 业务_电子警察 where 车号=’’ or Len(车号)<3 例2:从科目余额表中查询出2002年收入大于50万的记录 Select * from 科目余额 where 借方金额>500000 and 年度=2002%表示零或多个字符例1:从凭证库中查询2003年各月的房租收入情况Select month(凭证日期) as 月份, sum(贷方金额) as 房租金额 from 凭证 where 摘要 like ‘%房租%’ and 年度=2003例2:从凭证库中查询 2008年包含税的记录Select * from 凭证库 where摘要 like ‘%税%’ and 年度=2008 _表示任何一个字符例1:根据科目余额表查询出目编码为10开头的一级科目记录 Select * from 科目余额where 科目编码 like ‘10_’例2:根据凭证库查询科目名称长度为4且以银行开始的前100条记录Select top 100 * into 银行记录表from 凭证库 where 科目名称 like ‘银行_ _’3(三)查询的记录生成新表select字段1,字段2……字段N into 新表 from 旧表 where 条件含义:从旧表中按照条件查询相关记录并生成新表例1:从捐款明细账中查询并生成2005年通过邮寄汇款的捐款名单Select * into 2005年邮寄捐款表 from 业务_捐款明细表 where 捐款方式=’邮寄’ and year(捐款时间)=2005例2:根据业务_个人基本情况表,找出缴存状态为”正常”的记录,生成”业务_临时_个人基本情况表”Select 个人姓名,身份证号,单位账号,个人账号 into业务_临时_个人基本情况表from 业务_个人基本情况表 where 账户状态=’1’(四)查询出的字段重新命名select字段1 as 字段11,字段2 as 字段22……字段N as 字段nn from表 where 条件或者select字段1 as 字段11,字段2 as 字段22……字段N as 字段nn into 新表 from 旧表where 条件例1:从科目余额表中查询出科目编码为4121、4125、4126、4128的记录,并把借方发生额字段重新命名为经费支出情况、贷方发生额命名为经费收入情况select科目编码,科目名称,借方发生额 as 经费支出情况,贷方发生额 as 经费收入情况,期末余额 from 科目余额 where 科目编码 like ’4121’ or 科目编码 like ‘4125’ or 科目编码 like ‘4128’ or 科目编码 like ‘4126’例2:从凭证库中查询2003年各月的房租收入情况Select month(凭证日期) as 月份, sum(贷方金额) as 房租金额 into 2003年房租收入情况表from 凭证库 where 科目编码4like ‘40702’ and 摘要 like ‘%租%’(五)常用子句select字段into 新表 from 旧表 where 条件 order by 字段 Asc/DescOrder by 对查询结果进行排序, ASC升序排序,Desc降序排序例1:从科目余额表中查询出2002年收入大于50万的记录 Select * from 科目余额 where 借方金额>500000 and 年度=2002 order by 借方金额 asc例2:分析2008年人员支出构成Select 科目编码,科目名称,sum(借方金额) as 金额合计 from 凭证库 where 科目编码like ‘501%’ group by 科目编码 order by sum(借方金额) descselect字段into 新表 from 旧表 where 条件 Group by 字段 Group by 可以快速而简便地将查询结果按照指定的字段进行分组例1:把凭证库中的记录按照科目名称分组Select 科目名称,科目编码,借方金额,贷方金额 from 凭证库 group by 科目名称例2:从凭证库中查询并2003年各月的房租收入情况 Select month(凭证日期) as 月份, sum(贷方金额) as 房租金额 from 凭证 where 科目编码 like ‘40702’ and 摘要 like ‘%租%’ group by month(凭证日期)例3:从凭证库中查询科目编码为501开头的记录,并根据不同的科目编码分析借方金额情况Select 科目编码,科目名称,sum(借方金额) as 金额合计 from 凭证库 where 科目编码like ‘501%’ group by 科目编码 order by sum(借方金额) descselect字段into 新表 from 旧表 where 条件 Group by 字段 Having 分组条件5Having语句通常跟在Group by语句后,作为分组后的过滤条件例1:根据凭证库查询科目名称包含事业的记录,并按照科目名称分组Select 科目名称,count(*) as 科目数量 from凭证库 group by 科目名称 having 科目名称 like ‘%事业%’例2:根据业务_缴存种类统计表,统计出单位为所有职工缴存的住房公积金金额都一样的单位账号,生成业务_临时_缴存种类统计表Select 单位账号 into 业务_临时_缴存种类统计表 from 业务_缴存种类统计表 group by 单位账号 having count (单位金额)=1(六)常用函数Year (日期) 返回某个日期的年份例:从捐款明细账中查询并生成2005年通过邮寄汇款的捐款名单Select * into 2005年邮寄捐款表 from 业务_捐款明细表 where 捐款方式=’邮寄’ and year(捐款时间)=2005Month(日期) 返回某个日期的月份例:从凭证库中查询2003年各月的房租收入情况Select month(凭证日期) as 月份, sum(贷方金额) as 房租金额 into 2003年房租收入情况表from 凭证库 where 科目编码 like ‘40702’ and 摘要 like ‘%租%’Sum(数值列名/数值字段名) 返回满足条件的某一数值列中的数值的总和例1:统计2008年凭证库借方金额的总发生额Select sum(借方金额) as 借方金额汇总 from 凭证库 where 年度=2008例2:根据业务_手续费返还表查询2005年、2006年,不同客户的返还金额合计Select 客户代码,sum(返还金额) as 返还金额合计 into 业务。
SQL(一)select查询语句

SQL(⼀)select查询语句1.select语法select <列的集合> from <表名>where <条件>group by <列名>having <条件>order by <排序字段和⽅式>limit startRow,number;group by:根据给定列的值进⾏分组统计,可指定多列,列之间以逗号分割,列必须是分组列或列函数(列有重复值)。
having:跟随group by后⾯使⽤,对分组的结果添加限制条件。
order by:列名 ASC(升序-默认)或DESC(降序)limit startRow,number 等同 limit number offset startRow:设置了select语句返回的记录数,startRow:表⽰第⼀个返回记录⾏的偏移量,从0开始number:表⽰返回记录⾏的最⼤数⽬limit 5,10:表⽰返回记录⾏6-15limit 95,-1:表⽰返回记录⾏96-lastlimit 5:表⽰返回前5个记录⾏2.例⼦提取特定列特定值+别的列的数据select id,class,theme,labels from t_products where secrecy=1;条件可以是=,包含部分内容select * from urls where content like "%内容%";%在mysql中表⽰字符串通配符SELECT DEPT, MAX( SALARY ) AS MAXIMUM, MIN( SALARY ) AS MINIMUM #AS MAXIMUM:把函数⽣成的结果输出在这个列⾥FROM staffGROUP BY DEPTHAVING COUNT( * ) >2 #表⽰根据DEPT列分组后选择组内数据个数⼤于2的才返回输出ORDER BY DEPT。
select查询语句

SELECT查询语句精华一、简单查询简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。
它们分别说明所查询列、查询的表或视图、以及搜索条件等。
例如,下面的语句查询testtable表中姓名为"张三"的nickname 字段和email字段。
SELECT nickname,emailFROM testtableWHERE name='张三'(一) 选择列表选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。
1、选择所有列例如,下面语句显示testtable表中所有列的数据:SELECT *FROM testtable2、选择部分列并指定它们的显示次序查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。
例如:SELECT nickname,emailFROM testtable3、更改列标题在选择列表中,可重新指定列标题。
定义格式为:列标题=列名列名列标题如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题:SELECT 昵称=nickname,电子邮件=emailFROM testtable4、删除重复行SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。
使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。
5、限制返回的行数使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT 时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。
例如:SELECT TOP 2 *FROM testtableSELECT TOP 20 PERCENT *FROM testtable(二) FROM子句FROM子句指定SELECT语句查询及与查询相关的表或视图。
《SELECT查询语句》PPT课件_OK

2021/8/30
------江阴职业技术学院计算机系------
2
数据定义语言
• 数据定义语言 (Data Definition Language, DDL) 是SQL语言集中,负责数据结构定义 与数据库对象定义的语言,由CREATE、 ALTER与DROP三个语法所组成。
2021/8/30
------江阴职业技术学院计算机系------
WHERE Age NOT BETWEEN 20 TO 22 --------------------------------------------------------------------------------------• SELECT * FROM Tb_Student
WHERE Age IN (20,21,22) ---------------------------------------------------------------------------------------
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 自身连接
[例3-51] 查询所有比“刘伟”工资高的教师姓名、工 资和刘伟的工资。
方法1: SELECT X.TN,X.Sal AS Sal_a,Y.Sal AS Sal_b FROM T AS X ,T AS Y WHERE X.Sal>Y.Sal AND Y.TN='刘伟' 方法2: SELECT X.TN, X.Sal,Y.Sal FROM T AS X INNER JOIN T AS Y ON X.Sal>Y.Sal AND Y.TN='刘伟'
表之间满足一定条件的行进行连接时,FROM子句指明进行连接的 表名,WHERE子句指明连接的列名及其连接条件
利用关键字JOIN进行连接:当将JOIN 关键词放于FROM子句中时, 应有关键词ON与之对应,以表明连接的条件
3
1. JOIN ON语句连接查询 ⑴ 使用JOIN ON 语句进行连接查询 SELECT column_list FROM {表1 [join_类型] JOIN 表2 ON 连接条件} [WHERE 查询条件]
22
单值子查询是指子查询只返回一行数据。可以用“=” 和 其外部查询相联系。 [例3-54] 查询与“刘伟”老师职称相同的教师号、姓名
SELECT TNo,TN FROM T WHERE Prof= ( SELECT Prof FROM T WHERE TN= '刘伟')
使用比较运算符 (=, >, <, >=, <=, !=)
4
【例】从student及student_coursSE jwgl GO select student.student_id , student.student_name , student_course.course_id , student_course.grade from student join student_course on student.student_id = student_course.student_id
11
[例3-49] 查询所有选课学生的学号、姓名、选课名称 及成绩。
SELECT S.SNo,SN,CN,Score FROM S,C,SC WHERE S.SNo=SC.SNo AND o=o
[例3-50] 查询每门课程的课程名、任课教师姓名及其 职务、选课人数。
SELECT CN,TN,Prof,COUNT(SC.SNo) FROM C,T,TC,SC WHERE T.TNo=TC.TNo AND o=o AND o=o GROUP BY o
19
COMPUTE类似于总计。如在COMPUTE后加上BY关键 字,则查询的结果为带具体内容的分类统计。 【例】用COMPUTE BY子句按学号汇总出student_course 表中每个学生的的学号及总成绩。 USE jwgl GO SELECT ‘学号‘ = student_id , ’成绩‘ = grade FROM student_course ORDER BY student_id COMPUTE SUM(grade) BY student_id
SELECT S.SNo,SN,CNo,Score FROM S LEFT OUTER JOIN SC ON S.SNo=SC.SNo
15
连接查询的要点: • ①一般而言,基于主键和外键指定查询条件,连 接条件可使用“主键=外键”。 • ②应尽可能限制连接语句中表的数目,连接的表 越多,查询处理的时间越长。 • ③对于连接表的两个列应有相同或类似的数据类 型。 • ④ 不要使用空值作为连接条件,因为空值计算不 会和其它任何值相等。
5
⑵ 使用WHERE子句的连接查询语法形式 SQL Server 连接语法形式: SELECT 列名列表 FROM 表1,表2…. WHERE {表1.列名=表2.关联列名,表2.列名=表3.关联 列名,…} [and 查询条件]
6
【例】从student及student_course两个表中检索学生的学号、 姓名、学习课程号及课程成绩。 USE jwgl GO select student.student_id , student.student_name , student_course.course_id , student_course.grade from student , student_course WHERE student.student_id = student_course.student_id
20
值得注意的是,在使用COMPUTE和COMPUTE BY时, 有如下限制: • ① DISTINCT不允许同集合函数一起用,不能包含text、 ntext、image数据类型。 • ② COMPUTE子句中的列必须在SELECT后面的选择 列表中。 • ③ SELECT INTO不与COMPUTE子句一起使用。 • ④ 若使用了COMPUTE BY,则必须使用ORDER BY。 • ⑤ COMPUTE BY后出现的列必须与ORDER BY后出 现的列相同,或者是它的子集。它必须具有相同的从左 到右顺序并且以相同的表达式开头,不能跳过任何表达 式。
10
RIGHT(OUTER) JOIN
FULL(OUTER)JOIN
CROSS JOIN
• 等值连接与非等值连接
[例3-48] 查询“刘伟”老师所讲授的课程,要求列出 连接条件 ,当比 教师号、教师姓名和课程号。 较运算符为“=”
时,称为等值连 方法1: 接。其他情况为 SELECT T.TNo,TN,CNo 非等值连接。 FROM T,TC WHERE (T.TNo = TC. TNo) AND (TN='刘伟') 方法2: SELECT T.TNo, TN, CNo FROM T INNER JOIN TC ON T.TNo = TC.TNo WHERE (TN = '刘伟') 引用列名TNo时要加上表名前缀,这是因为两个表中的列名相同, 必须用表名前缀来确切说明所指列属于哪个表,以避免二义性。
本节首页
9
JION的分类
INNER JOIN 显示符合条件的记录,此为默认值
LEFT(OUTER)JOIN
为左(外)连接,用于显示符合条件的数据行以 及左边表中不符合条件的数据行,此时右边数据 行会以NULL来显示 右(外)连接,用于显示符合条件的数据行以及 右边表中不符合条件的数据行。此时左边数据行 会以NULL来显示 显示符合条件的数据行以及左边表和右边表中不 符合条件的数据行。此时缺乏数据的数据行会以 NULL来显示 将一个表的每一个记录和另一表的每个记录匹配 成新的数据行
23
1. 使用IN或NOT IN关键字 多值子查询是指子查询返回的不是一行而是 一组行数据。则可使用IN 或NOT IN和其外部 查询相联系。IN表示属于的关系,即是否在 所选数据集合之中。NOT IN则表示不属于集 合或不是集合的成员。
16
使用UNION子句
UNION子句的作用是把两个或多个SELECT语句查询的结果 组合成一个结果集。UNION子句的语法形式如下: Select_statement UNION [ALL] Select_statement […n] 使用UNION时,请注意以下4点: • ① UNION中从源表选择的所有列表必须具有相同列数、 相似数据类型和相同的列序。 • ② 列名来自第一个SELECT语句。 • ③ 如果希望整个结果集以特定的顺序出现,则UNION中 应使用ORDER BY子句来指定对结果集的排序顺序。 • ④ 在合并结果时,将从结果集中删除重复行。若使用 ALL,结果集中包含所有的行。
7
【例】从student、course及student_course三个表中检索学 生的学号、姓名、学习课程号、学习课程名及课程成绩。 USE jwgl GO SELECT student.student_id , student.student_name , student_course.course_id , course.course_name , student_course.grade from student , student_course , course WHERE student.student_id = student_course.student_id AND course.course_id = student_course.course_id
13
[例3-52] 检索所有学生姓名,年龄和选课名称。
SELECT SN,Age,CN FROM S,C,SC WHERE S.SNo=SC.SNo AND o=o
14
• 外连接
左外部连接 右外部连接
而在外部连接中,参与连接的表有主从之分,以主表 的每行数据去匹配从表的数据列。 符合连接条件的数据将直接返回到结果集中,对那些 不符合连接条件的列,将被填上NULL值后再返回到结 果集中。 [例3-53] 查询所有学生的学号、姓名、课程号及成绩 (没有选课的同学的选课信息显示为空)。
本节首页
18
使用COMPUTE和COMPUTE BY子句
使用COMPUTE和COMPUTE BY就既能浏览数据又看到统 计的结果。 COMPUTE BY子句的语法形式如下: COMPUTE row_aggregate (column_name ) […n] [BY column_name_list] 【例】用COMPUTE子句汇总出student_course表中每个学生 的学号及总成绩。 USE jwgl GO SELECT '学号‘ = student_id , '成绩‘ = grade FROM student_course ORDER BY student_id COMPUTE SUM(grade)
本节首页