当前位置:文档之家› 数据库sql高级查询教务_答案

数据库sql高级查询教务_答案

数据库sql高级查询教务_答案
数据库sql高级查询教务_答案

设教学数据库Education 有三个关系:

学生关系S (SNO ,SNAME ,AGE ,SEX ,SDEPT );学习关系SC (SNO ,CNO ,GRADE );课程关系C (CNO ,CNAME ,CDEPT ,TNAME ) 查询问题:

检索计算机系的全体学生的学号,姓名和性别; 检索学习课程号为C2的学生学号与姓名; 检索选修课程名为“DS ”的学生学号与姓名; (4)检索选修课程号为C2或C4的学生学号; (5)检索至少选修课程号为C2和C4的学生学号;

(6)检索不学C2课的学生姓名和年龄; (7)检索学习全部课程的学生姓名;

(8)查询所学课程包含学生S3所学课程的学生学号。

(1)检索计算机系的全体学生的学号,姓名和性别;

SELECT Sno ,Sname ,Sex FROM S

WHERE Sdept =’CS ’;

(2)检索学习课程号为C2的学生学号与姓名;

(3)检索选修课程名为“DS ”的学生学号与姓名

本查询涉及到学号、姓名和课程名三个属性,分别存放在S 和C 表中,但S 和C 表没有直接联系,必须通过SC 表建立它们二者的联系。 C → SC → S 基本思路:

(1)首先在C 表中找出“DS ”课程的课程号Cno ;

(2)然后在SC 表中找出Cno 等于第一步给出的Cno 集合中的某个元素Cno ;

(3)最后在S 关系中选出Sno 等于第二步中Sno 集合中某个元素的元组,取出Sno 和Sname 送入结果表列。

SELECT Sno ,Sname FROM S

WHERE Sno IN (SELECT Sno FROM SC

WHERE Cno IN (SELECT Cno FROM C

WHERE Cname=‘DS ’));

检索选修课程号为C2或C4的学生学号;

2.SELECT S.Sno ,Sname

FROM S ,SC

WHERE S.Sno=SC.Sno AND https://www.doczj.com/doc/fc14425220.html,o=‘C2’;

1.SELECT Sno ,Sname

FROM S

WHERE Sno IN ( SELECT Sno FROM SC WHERE Cno=‘C2’)

SELECT Sno

FROM SC

WHERE Cno=‘C2’OR Cno=‘C4’;

检索至少选修课程号为C2和C4的学生学号;

SELECT Sno

FROM SC X,SC Y

WHERE X.Sno=Y.Sno AND https://www.doczj.com/doc/fc14425220.html,o=‘C2’AND https://www.doczj.com/doc/fc14425220.html,o=‘C4’;

检索不学C2课的学生姓名和年龄;

检索学习全部课程的学生姓名;

在表S中找学生,要求这个学生学了全部课程。换言之,在S 表中找学生,在C中不存在一门课程,这个学生没有学。

SELECT Sname

FROM S WHERE NOT EXISTS

(SELECT *

FROM C

WHERE NOT EXISTS

(SELECT *

FROM SC

WHERE SC.Sno=S.Sno AND https://www.doczj.com/doc/fc14425220.html,o=https://www.doczj.com/doc/fc14425220.html,o));

查询所学课程包含学生S3所学课程的学生学号。

分析:不存在这样的课程Y,学生S3选了Y,而其他学生没有选。

SELECT DISTINCT Sno

FROM SC AS X

WHERE NOT EXISTS

(SELECT *

FROM SC AS Y

WHERE Y.Sno=‘S3’AND NOT EXISTS

(SELECT *

FROM SC AS Z

WHERE Z.Sno=X.Sno AND https://www.doczj.com/doc/fc14425220.html,o=https://www.doczj.com/doc/fc14425220.html,o));

1.SELECT Sname

FROM S

WHERE Sno NOT IN ( SELECT Sno

FROM SC

WHERE Cno=‘C2’);2.SELECT Sname

FROM S

WHERE NOT EXISTS ( SELECT *

FROM SC

WHERE SC.Sno=S.Sno AND Cno=‘C2’);

设教学数据库Education有三个关系:

学生关系S(SNO,SNAME,AGE,SEX,SDEPT);

学习关系SC(SNO,CNO,GRADE);

课程关系C(CNO,CNAME,CDEPT,TNAME)

查询问题:

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

2:查考试成绩有不及格的学生的学号

3:查所年龄在20至23岁之间的学生姓名、系别及年龄。

4:查计算机系、数学系、信息系的学生姓名、性别。

5:查既不是计算机系、数学系、又不是信息系的学生姓名、性别

6:查所有姓“刘”的学生的姓名、学号和性别。

7:查姓“上官”且全名为3个汉字的学生姓名。

8:查所有不姓“张”的学生的姓名。

9:查DB_Design课程的课程号。10:查缺考的学生的学号和课程号。

11:查年龄为空值的学生的学号和姓名。

12:查计算机系20岁以下的学生的学号和姓名。

13:查计算机系、数学系、信息系的学生姓名、性别。

14:查询选修了C3课程的学生的学号和成绩,其结果按分数的降序排列。

15:查询全体学生的情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列。

16:查询学生总人数。

17:查询选修了课程的学生人数。

18:计算选修了C1课程的学生平均成绩。

19:查询学习C3课程的学生最高分数。

20:查询各个课程号与相应的选课人数。

21:查询计算机系选修了3门以上课程的学生的学号。

22:求基本表S中男同学的每一年龄组(超过50人)有多少人?要求查询结果按人数升序排列,人数相同按年龄降序排列。23:查询每个学生及其选修课程的情况。

24:查询选修了C2课程且成绩在90分以上的所有学生。

25:查询每个学生选修的课程名及其成绩。

26:统计每一年龄选修课程的学生人数。

27:查询选修了C2课程的学生姓名。

28:查询与“张三”在同一个系学习的学生学号、姓名和系别。29:查询选修课程名为“数据库”的学生学号和姓名。

30:查询与“张三”在同一个系学习的学生学号、姓名和系别。31:查询选修课程名为“数据库”的学生学号和姓名。

32:查询选修了C2课程的学生姓名。

33:查询所有未选修C2课程的学生姓名。

34:查询与“张三”在同一个系学习的学生学号、姓名和系别。35:查询选修了全部课程的学生姓名。

36:查询所学课程包含学生S3所学课程的学生学号

(1)比较

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

SELECT Sname,Sage

FROM S

WHERE Sage<20; (NOT age>=20)

例2:查考试成绩有不及格的学生的学号

SELECT DISTINCT Sno

FROM SC

WHERE grade<60;

(2)确定范围

例3:查所年龄在20至23岁之间的学生姓名、系别及年龄。

SELECT Sname,Sdept,Sage

FROM S

WHERE Sage BETWEEN 20 AND 23;

(3)确定集合

例4:查计算机系、数学系、信息系的学生姓名、性别。

SELECT Sname,Ssex

FROM S

WHERE Sdept IN (’CS’, ‘IS’, ‘MATH’);

例5:查既不是计算机系、数学系、又不是信息系的学生姓名、性别

SELECT Sname,Ssex

FROM S

WHERE Sdept NOT IN (’CS’, ‘IS’, ‘MATH’);

(4)字符匹配

例6:查所有姓“刘”的学生的姓名、学号和性别。

SELECT Sname,Sno,Ssex

FROM S

WHERE Sname LIKE ‘刘%’;

例7:查姓“上官”且全名为3个汉字的学生姓名。

SELECT Sname

FROM S

WHERE Sname LIKE ‘上官_ _’;

例8:查所有不姓“张”的学生的姓名。

SELECT Sname,Sno,Ssex

FROM S

WHERE Sname NOT LIKE ‘张%’;

例9:查DB_Design课程的课程号。

SELECT Cno

FROM C

WHERE Cname LIKE ‘DB\_Design’ ESCAPE ‘\’;

(5)涉及空值的查询

例10:查缺考的学生的学号和课程号。

SELECT Sno,Cno

FROM SC

WHERE Grade IS NULL;(不能用=代替)

{ 有成绩的 WHERE Grade IS NOT NULLL;}

例11:查年龄为空值的学生的学号和姓名。

SELECT Sno,Sname

FROM S

WHERE Sage IS NULL;

(6)多重条件查询

例12:查计算机系20岁以下的学生的学号和姓名。

SELECT Sno,Sname

FROM S

WHERE Sdept=‘CS’ AND Sage<20;

例13:查计算机系、数学系、信息系的学生姓名、性别。

SELECT Sname,Ssex

FROM S WHERE Sdept =’CS’ OR Sdept =‘IS’ OR Sdept =’MATH’);

3、对查询结果排序

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

SELECT Sno,Grade

FROM SC

WHERE Cno=‘C3’

ORDER BY Grade DESC;

例15:查询全体学生的情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列。

SELECT *

FROM S

ORDER BY Sdep,Sage DESC;

4.聚合函数的使用

例16:查询学生总人数。

SELECT COUNT(*)

FROM S

例17:查询选修了课程的学生人数。

SELECT COUNT(DISTINCT Sno)

FROM SC

例18:计算选修了C1课程的学生平均成绩。

SELECT AVG(Grade)

FROM SC

WHERE Cno=‘C1’;

例19:查询学习C3课程的学生最高分数。

SELECT MAX(Grade)

FROM SC

WHERE Cno=‘C3’;

5、对查询结果分组

例20:查询各个课程号与相应的选课人数。

SELECT Cno,COUNT(Sno)

FROM SC

GROUP BY Cno;

该SELECT语句对SC表按Cno的取值进行分组,所有具有相同Cno值的元组为一组,然后对每一组作用聚合函数COUNT以求得该组的学生人数。

如果分组后还要求按一定的条件对这些组进行筛选,最终只输出满足指定条件组,则可以使用HAVING短语指定筛选条件。

例21:查询计算机系选修了3门以上课程的学生的学号。

SELECT Sno

FROM SC

WHERE Sdept=‘CS’

GROUP BY Sno

HAVING COUNT(*)>3;

WHERE子句与HAVING短语的根本区别在于作用对象不同。WHERE

子句作用于基本表或视图,从中选择满足条件的元组。HAVING短语作用于组,从中选择满足条件的组。

例22:求基本表S中男同学的每一年龄组(超过50人)有多少人?要求查询结果按人数升序排列,人数相同按年龄降序排列。 SELECT Sage,COUNT(Sno)

FROM S

WHERE Ssex='M'

GROUP BY Sage

HAVING COUNT(*)> 50

ORDER BY 2,Sage DESC;

二、多表查询

1、联接查询

例23:查询每个学生及其选修课程的情况。

SELECT S.Sno,Sname,Sage,Ssex,Sdept,Cno,Grade

FROM S, SC

WHERE S.Sno=SC.Sno;

例24:查询选修了C2课程且成绩在90分以上的所有学生。

SELECT S.Sno,Sname

FROM S,SC

WHERE S.Sno=SC.Sno

AND https://www.doczj.com/doc/fc14425220.html,o=‘C2’

AND SC.Grade > 90;

例25:查询每个学生选修的课程名及其成绩。

SELECT S.Sno,Sname,Cname,SC.Grade

FROM S,SC,C

WHERE S.Sno=SC.Sno AND https://www.doczj.com/doc/fc14425220.html,o=https://www.doczj.com/doc/fc14425220.html,o

例26:统计每一年龄选修课程的学生人数。

SELECT Sage,COUNT(DISTINCT S.Sno)

FROM S,SC

WHERE S.Sno=SC.Sno

GROUP BY S;

由于要统计每一个年龄的学生人数,因此要把满足WHERE子句中条件的查询结果按年龄分组,在每一组中的学生年龄相同。此时的SELECT子句应对每一组分开进行操作,在每一组中,年龄只有一个值,统计的人数是这一组中的学生人数。

1、嵌套查询

(1)带有IN谓词的子查询

指父查询与子查询之间用IN进行联接,判断某个属性列值是否在子查询的结果中。

例27:查询选修了C2课程的学生姓名。

SELECT Sname

FROM S

WHERE Sno IN

( SELECT Sno

FROM SC WHERE Cno=‘C2’);

例28:查询与“张三”在同一个系学习的学生学号、

姓名和系别。

分析:

(1)确定“张三”所在的系;

(2)查找所有在X系学习的学生。

SELECT Sdept

FROM S

WHERE Sname=‘张三’;

SELECT Sno,Sname,Sdept

FROM S

WHERE Sdept=‘X’

把第一步查询嵌入到第二步查询中,用以构造第二步查询的条件。

SELECT Sno,Sname,Sdept

FROM S

WHERE Sdept IN

(SELECT Sdept

FROM S

WHERE Sname=‘张三’);

例29:查询选修课程名为“数据库”的学生学号和姓名。

本查询涉及到学号、姓名和课程名三个属性,分别存放在S 和C表中,但S和C表没有直接联系,必须通过SC表建立它们二者的联系。 C → SC → S

基本思路:

(1)首先在C表中找出“DB”课程的课程号Cno;

(2)然后在SC表中找出Cno等于第一步给出的Cno 集合中的某个元素Cno;

(3)最后在S关系中选出Sno等于第二步中Sno 集合中某个元素的元组,取出Sno 和Sname送入结果表列。

SELECT Sno,Sname

FROM S

WHERE Sno IN

(SELECT Sno

FROM SC

WHERE Cno IN

(SELECT Cno

FROM C

WHERE Cname=‘DB’));

联接查询方式

(2)带有比较运算符的子查询

例30:查询与“张三”在同一个系学习的学生学号、

姓名和系别。

SELECT Sno,Sname,Sdept

FROM S

WHERE Sdept =

(SELECT Sdept

FROM S AS S1, S AS S2

WHERE S1.Sdept=S2.Sdept

AND S2.Sname=‘张三’

FROM S

WHERE Sname=‘张三’);

例31:查询选修课程名为“数据库”的学生学号和姓名。

SELECT Sno,Sname

FROM S

WHERE Sno IN

(SELECT Sno

FROM SC

WHERE Cno =

(SELECT Cno

FROM C

WHERE Cname=‘DB’));

(3)带有EXISTS谓词的子查询

(1)带有EXISTS谓词的子查询不返回任何实际数据,它只产生逻辑值。

例32:查询选修了C2课程的学生姓名。

1.SELECT Sname

FROM S

WHERE Sno IN

( SELECT Sno

FROM SC

WHERE Cno=‘C2’);

2.SELECT Sname

FROM S

WHERE EXISTS

( SELECT *

FROM SC

WHERE SC.Sno=S.Sno AND Cno=‘C2’);

例33:查询所有未选修C2课程的学生姓名。

SELECT Sname

FROM S

WHERE NOT EXISTS

( SELECT *

FROM SC

WHERE SC.Sno=S.Sno AND Cno=‘C2’);

[NOT]EXISTS 实际上是一种内、外层互相关的嵌套查询,只有当内层引用了外层的值,这种查询才有意义。

例34:查询与“张三”在同一个系学习的学生学号、

姓名和系别。

SELECT Sno,Sname,Sdept

FROM S AS S1

WHERE EXISTS

(SELECT * FROM S AS S2

WHERE S2.Sdept=S1. Sdept AND S2.Sname=‘张三’);相关子查询

例35:查询选修了全部课程的学生姓名。

在表S中找学生,要求这个学生学了全部课程。换言之,在S表中找学生,在C中不存在一门课程,这个学生没有学。

SELECT Sname

FROM S

WHERE NOT EXISTS

(SELECT *

FROM C

WHERE NOT EXISTS

(SELECT *

FROM SC

WHERE SC.Sno=S.Sno AND https://www.doczj.com/doc/fc14425220.html,o=https://www.doczj.com/doc/fc14425220.html,o));

例36:查询所学课程包含学生S3所学课程的学生学号分析:不存在这样的课程Y,学生S3选了Y,而其他学生没有选。

SELECT DISTINCT Sno

FROM SC AS X

WHERE NOT EXISTS

(SELECT *

FROM SC AS Y

WHERE Y.Sno=‘S3’ AND NOT EXISTS

(SELECT *

FROM SC AS Z

WHERE Z.Sno=X.Sno AND https://www.doczj.com/doc/fc14425220.html,o=https://www.doczj.com/doc/fc14425220.html,o));

数据库基础操作语句

一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2…from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar 类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键:Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、说明:几个高级查询运算词 A:UNION 运算符

MySQL数据库高级查询和多表查询二

机试测试试卷 (MySQL数据库应用与开发) 注意:考试结束试卷必须交Array 回,不交回试卷者成绩无效题目:MySQL 数据库高级查询和多表查询 一、语言和环境 A、实现技术 SQL 语句练习 B、环境要求 Mysql5.7+Navicat 二、实验要求 1、创建名为 s_t 的数据库,参数全部使用 UTF-8 实验目的: 通过上机实验验证数据库的多表的高级查询操作。 实验内容:

1、将s_t数据库还原。 2、在s_t数据库中,完成以下多表连接查询的操作。 (1)查询计算机系学生的修课情况,要求列出学生的名字、所修课的课程号和成绩。 (2)查询“信息管理系”修了“计算机文化学”的学生姓名和成绩。 (3)查询所有选修了Java课程的学生情况,列出学生姓名和所在系。 (4)统计每个系的学生的考试平均成绩。 (5)统计计算机系学生每门课程的选课人数、平均成绩、最高成绩和最低成绩。 (6)查询与刘晨在同一个系学习的学生的姓名和所在的系。 (7)查询与“数据结构”在同一个学期开设的课程的课程名和开课学期。 (8)查询至少被两个学生选的课程的课程号。 (9)查询全体学生的选课情况,包括选修了课程的学生和没有选修课程的学生。 (10)查询没人选的课程的课程名。 (11)查询计算机系没有选课的学生,列出学生姓名和性别。 (12)统计计算机系每个学生的选课门数,包括没有选课的学生。 (13)查询信息管理系选课门数少于3门的学生的学号和选课门数,包括没有选课的学生。查询结果按选课门数递增排序。 (14)查询考试成绩最高的三个成绩,列出学号、课程号和成绩。 (15) 查询Java考试成绩最高的前三名的学生的姓名、所在系和VB考试成绩。 (16)查询选课人数最少的两门课程(不包括没有人选的课程),列出课程号和选课人数。 (17)查询计算机系选课门数超过2门的学生中,考试平均成绩最高的前2名(包括并列的情况)学生的学号、选课门数和平均成绩。 (18)将计算机系的学生信息保存到#ComputerStudent局部临时表中。 (19)将选了Java课程的学生的学号及成绩存入永久表Java_Grade中。 (20)统计每个学期开设的课程总门数,将结果保存到永久表Cno_Count表中 (21)利用例19题生成的新表,查询第2学期开设的课程名、学分和课程总门数。 3、在s_t数据库中,完成以下多表的高级查询操作。 (1)查询选了Java课程的学生的学号、姓名、所在系和成绩,并对所在系进行如下处理:“计算机系”:显示“CS”;“信息管理系”:显示“IM”;“通信工程系”:显示“COM”。(2)查询“C001”课程的考试情况,列出学号和成绩,对成绩进行如下处理:如果成绩大于等于90,则在查询结果中显示“优”;如果成绩在80到89分之间,则在查询结果中显示“良”;如果成绩在70到79分之间,则在查询结果中显示“中”;如果成绩在60到69分之间,则在查询结果中显示“及格”;如果成绩小于60分,则在查询结果中显示“不及格”。 (3)统计每个学生的考试平均成绩,列出学号、考试平均成绩和考试情况,其中考

MYSQL数据库基本操作命令

MYSQL数据库基本操作命令 用户名和密码:123456 创建一个名称为mydb1的数据库。 create database mydb1; 查看所有数据库 show databases; 创建一个使用utf-8字符集的mydb2数据库。 create database mydb2 character set utf8; 创建一个使用utf-8字符集,并带校对规则的mydb3数据库。 create database mydb3 character set utf8 collate utf8_general_ci; 显示库的创建信息 show create database mydb3; 删除前面创建的mydb1数据库 drop database mydb1; 查看服务器中的数据库,并把其中某一个库的字符集修改为gb2312; alter database mydb2 character set gb2312; show create database mydb2; 备份库 1、准备库的数据 create database mydb1; use mydb1; create table test ( id int ); insert into test(id) values(1); select * from test; 2、删除库:drop database mydb1; 3、 4.1 创建库:create database mydb1; 4.2 \. test.sql (通过执行脚本文件实现) 5、

创建一个员工表 use mydb1; 进入库 create table employee ( id int, name varchar(20), gender varchar(4), birthday date, entry_date date, job varchar(40), salary double, resume text )character set utf8 collate utf8_general_ci; 查看库中所有表 show tables; 查看表的创建细节 show create table employee; 查看表的结构 desc employee; 在上面员工表的基本上增加一个image列。 alter table employee add image blob; 修改job列,使其长度为60。 alter table employee modify job varchar(60); 删除sex列。 alter table employee drop gender; 表名改为user。 rename table employee to user; 修改表的字符集 alter table user character set gb2312; show create table user; 列名name修改为username alter table user change column name username varchar(20); 使用insert语句向表中插入一个员工的信息。 insert into employee(id,username,birthday,entry_date,job,salary,resume)

SQLServer数据库的高级操作

(1)批处理 (2) (2)变量 (3) (3)逻辑控制 (5) (4)函数 (7) (4.1)系统函数 (7) (4.2)自定义函数 (13) (5)高级查询 (23) (6)存储过程 (35) (7)游标 (36) (8)触发器 (50) SQL Server 数据库的高级操作 (1) 批处理 (2) 变量 (3) 逻辑控制 (4) 函数 (5) 高级查询 */ (1)批处理 将多条SQL语句作为一个整体去编译,生成一个执行计划,然后,执行! 理解批处理的关键在于"编译",对于由多条语句组成的一个批处理, 如果在编译时,其中,有一条出现语法错误,将会导致编译失败! create table t ( a int,

)

-- 如果多行注释中包含了批处理的标识符go -- 在编译的过程中代码将会被go分割成多个部分来分批编译-- 多行注释的标记将会被分隔而导致编译出错 -- 以下几条语句是三个非常经典的批处理 -- 你猜一下会添加几条记录! /* insert into t values (1,1) go */ insert into t values (2,2) go /* insert into t values (3,3) */ go -- 查询看添加了几条记录 select * from t

truncate table t (2)变量 -- 全局变量 SQL Server中全局变量由系统定义、系统维护,用户一般仅可对其进行读取!-- 查看SQL Server版本 print @@version -- 服务器名称 print @@servername -- 系统错误编号 insert into t values ('a','a') print @@error insert into t values ('a','a') if @@error = 245 print 'Error' -- SQL Server 版本的语言信息 print @@LANGUAGE -- 一周的第一天从星期几算起 print @@datefirst

SQL Server 2005 数据查询练习题及答案

Sql 语句答案: 1. select姓名,单位 from读者 where姓名like'李%' 2. select书名,出版单位 from图书 3. select出版单位,书名,单价 from图书 where出版单位='高等教育出版社' order by单价desc 4. select书名,出版单位,单价 from图书 where单价between 10.00 and 20.00 order by出版单位,单价asc 5. select书名,作者 from图书 where书名like'计算机%' 6. select借阅.总编号,借书证号 from图书,借阅 where图书.总编号=借阅.总编号and借阅.总编号in('112266','449901') 7.select distinct姓名,单位 from读者inner join借阅 on借阅.借书证号=读者.借书证号 8. select书名,姓名,借书日期 from图书inner join借阅 on图书.总编号=借阅.总编号 join读者 on借阅.借书证号=读者.借书证号 where读者.姓名like'李%' 9. select distinct读者.借书证号,姓名,单位 from借阅inner join读者 on借阅.借书证号=读者.借书证号 where借阅.借书日期>='1997-10-1' 10. select借书证号

from借阅 where总编号in(select总编号 from图书 where书名='FoxPro大全') 11. select姓名,单位,借书日期 from借阅,读者 where借阅.借书证号=读者.借书证号and借书日期=(select借书日期 from借阅,读者 where借阅.借书证号=读者.借书证号and姓名='赵正义') 12. select distinct借书证号,姓名,单位 from读者 where借书证号not in(select借书证号 from借阅 where借书日期>='1997-07-01') 13. select max(单价)最高单价,min(单价)as最低单价,avg(单价)as平均单价from图书 where出版单位='科学出版社' 14. select count(借书证号) from借阅 where借书证号in(select借书证号 from读者 where单位='信息系') 15. select出版单位,max(单价)最高价格,min(单价)as最低价格,count(*)册数from图书 group by出版单位 16. select单位,count(借阅.借书证号) from借阅,读者 where借阅.借书证号in(select借书证号 from读者) group by单位 17. select姓名,单位 from读者 where借书证号in(select借书证号 from借阅 group by借书证号 having count(*)>=2)

数据库基本操作习题与答案

第三章数据库基本操作 一、选择题 1. 如果需要给当前表增加一个字段,应使用的命令是________。 A) APPEND B) INSERT C) EDIT D) MODIFY STRU 2. 设表文件及其索引已打开,为了确保指针定位在物理记录号为1的记录上,应该使用命令________。 A) SKIP 1 B) SKIP -1 C) GO 1 D) GO TOP 3. 要显示数据库中当前一条记录的内容,可使用命令________。 A) LIST B) BROWSE C) TYPE D) DISPLAY 4. 在当前表中,查找第2个女同学的记录,应使用命令________。 A) LOCATE FOR 性别="女" B) LOCATE FOR 性别="女" NEXT 2 C) LIST FOR 性别="女" CONTINUE D) LOCATE FOR 性别="女" CONTINUE 5. Visual FoxPro的数据库表之间可建立两种联系,它们是________。 A) 永久联系和临时联系B) 长期联系和短期联系 C) 永久联系和短期联系D) 长期联系和临时联系 6. 数据库表的索引中,字段值不能有重复的索引有________种。 A) 1 B) 2 C) 3 D) 4 7. 建立表间临时关联的命令是________。 A) LET RELATION TO命令 B) JOIN命令 C) SET RELATION TO命令 D) 以上都不是 8. 通过关键字建立表间的临时关联的前提是________。 A) 父表必须索引并打开B) 子表必须索引并打开 C) 两表必须索引并打开D) 两表都不必索引 9. 查询设计器的“筛选”选项卡上,“插入”按钮的作用是________。 A) 用于增加查询输出字段B) 用于增加查询的表 C) 用于增加查询去向D) 用于插入查询输出条件 10. 在多工作区的操作中,如果选择了4,7,8号工作区并打开了相应的数据库,在命令窗口执行命令SELECT 0,其功能是________。 A) 选择4号工作区为当前工作区B) 选择0号工作区为当前工作区 C) 选择7号工作区为当前工作区D) 选择8号工作区为当前工作区 11. 表结构中空值(NULL)的含义是________。 A) 空格B) 尚未确定

数据库实验报告高级查询

实验三高级查询 1实验目的 (1)掌握SQL的高级查询的使用方法,如分组统计、嵌套查询、集合查询等等。 2实验内容 2.1 掌握SQL高级查询使用方法 (1)分组统计。 (2)嵌套查询,包括IN查询、EXISTS查询。 (3)集合查询。 3实验要求 (1)深入复习教材第三章SQL有关高级查询语句。 (2)根据书上的例子,针对TPCH数据库模式设计分组统计查询、嵌套查询(IN、EXISTS)语句和集合查询语句,每种类型的基本查询至少要设计一个查询,描述清楚查询要求,运行你所设计的查询语句,并截图相应的实验结果,每幅截图并要有较为详细的描述。也可以按照附2所列示例查询做实验。 (3)实验步骤和实验总结中要详细描述实验过程中出现的问题、原因和解决方法。 4实验步骤 4.1 掌握SQL高级查询使用方法 1 不带分组过滤条件的分组统计查询。 统计每个顾客订购金额。 Select sum(totalprice) From orders O,customer C Where O.custkey=C.custkey Group by O.custkey 2 带分组过滤条件的分组统计查询。 查询平均每个订单金额超过1000元的顾客编号及其姓名。 Select C.custkey,https://www.doczj.com/doc/fc14425220.html, From orders O,customer C Where O.custkey=C.custkey Group by C.custkey,https://www.doczj.com/doc/fc14425220.html, Having A VG (O.totalprice)>1000

3IN嵌套查询。 查询订购了“海大”制造的“船舶模拟驾驶舱”的顾客。 Select O.custkey From orders O Where O.orderkey in (select L.orderkey From lineitem L, Where L.partkey in (select P.partkey From part P Where https://www.doczj.com/doc/fc14425220.html,=’ 船舶模拟驾驶舱’and p.mfgr=’ 海大’)) 4单层EXISTS嵌套查询。 查询没有购买过“海大”制造的“船舶模拟驾驶舱”的顾客。 Select O.custkey From orders O Where not exists (select * From lineitem L Where L.orderkey=O.orderkey and L.partkey in (select P.partkey From part P Where https://www.doczj.com/doc/fc14425220.html,=’ 船舶模拟驾驶舱’and p.mfgr=’ 海大’)) 5双层EXISTS嵌套查询。 查询至少购买过顾客“张三”购买过的全部零件的顾客姓名。 Select distinct https://www.doczj.com/doc/fc14425220.html, From customer C1,order O1,lineitem L1,part P1 Where C1.custkey=O1.custkey and O1.orderkey=L1.orderkey=P1.partkey and Not exists (select * Where C2.custkey=O2.custkey and O2.orderkey=L2.orderkey=P2.partkey and https://www.doczj.com/doc/fc14425220.html,=’ 张三’and Not exists (select * From customer C3,order O3,lineitem L3,part P3 Where C3.custkey=O3.custkey and O3.orderkey=L3.orderkey=P3.partkey and P2.partkey=P3.partkey And C3,name=https://www.doczj.com/doc/fc14425220.html,) )

JAVA数据库基本操作增删改查(精)

JAVA 数据库基本操作, 增删改查 package mypack; JAVA 数据库基本操作, 增删改查 import java.sql.Connection; import java.sql.ResultSet; import java.util.ArrayList; public class DbOper {//查询多行记录public ArrayList select({Connection conn =null; ResultSet rs =null; try {import java.sql.PreparedStatement; import java.sql.SQLException; PreparedStatement pstmt =null; ArrayList al =new ArrayList(; conn =DbConn.getConn(;pstmt =conn.prepareStatement(“select *from titles ”; rs =pstmt.executeQuery(;while (rs.next({Titles t =new Titles(;t.setTitleid(rs.getString(1;t.setTitle(rs.getString(2;al.add(t;}}catch (SQLExceptione { e.printStackTrace(;}finally {try {//TODO 自动生成catch 块if (rs!=null rs.close(;if (pstmt!=nullpstmt.close(;if (conn!=nullconn.close(;}catch (SQLExceptione { e.printStackTrace(;}}//TODO 自动生成catch 块 return al; }//查询单个对象public Titles selectOne(Stringtitleid{Connection conn =null; ResultSet rs =null; try {PreparedStatement pstmt =null; Titles t =new Titles(;

实验4:数据库的高级查询操作

实验四:数据库的各类数据查询操作 一、实验目的 掌握SQL程序设计基本规范,熟练运用SQL语言实现数据的各种查询和设计,包括连接查询、嵌套查询、集合查询等。 二、实验内容和要求 针对KingbaseES数据库设计单个表针对自身的连接查询,设计多个表的连接查询;设计各种嵌套查询和集合查询。了解和掌握SQL查询语句各个子句的特点和作用,按照SQL程序设计规范写出具体的SQL查询语句,并调试通过。 三、实验步骤 连接查询 1. 查询每个学生及其选修课程的情况: select student.*, sc.* from student, sc where student.sno=sc.sno 比较: 笛卡尔集: select student.*, sc.* from student, sc 自然连接: select student.sno, sname, ssex, sdept, cno, grade from student, sc where student.sno=sc.sno 2. 查询每一门课程的间接先行课(只求两层即先行课的先行课): select https://www.doczj.com/doc/fc14425220.html,o, Second.pcno 间接先行课from course First, course Second where First.pcno=https://www.doczj.com/doc/fc14425220.html,o 比较: select https://www.doczj.com/doc/fc14425220.html,o, Second.pcno 间接先行课from course First, course Second where First.pcno=https://www.doczj.com/doc/fc14425220.html,o and Second.pcno is not null 3. 列出所有学生的基本情况和选课情况, 若没有选课,则只列出基本情况信息: SQL Server 中: select s.sno, sname, ssex,sdept, cno, grade from student s, sc sc where s.sno*=sc.sno 4. 查询每个学生的学号, 姓名, 选修的课程名和成绩: select S.sno, sname, cname, grade from student S, course C, sc SC where S.sno=SC.sno and https://www.doczj.com/doc/fc14425220.html,o=https://www.doczj.com/doc/fc14425220.html,o 5. 查询平均成绩在80分以上的学生姓名 Select sname from student,sc where student.sno=sc.sno GROUP BY sc.sno HAVING AVG(sc.grade)>80; 高级查询 使用带IN谓词的子查询 1.查询与’刘晨’在同一个系学习的学生的信息: select * from student where sdept in (select sdept from student where sname='刘晨') 比较: select * from student where sdept = (select sdept from student where sname='刘晨') 的异同

sql查询练习题含答案

--(1)查询20号部门的所有员工信息。 select * from emp e where e.deptno=20; --(2)查询奖金(COMM)高于工资(SAL)的员工信息。 select * from emp where comm>sal; --(3)查询奖金高于工资的20%的员工信息。 select * from emp where comm>sal*0.2; --(4)查询10号部门中工种为MANAGER和20号部门中工种为CLERK的员工的信息。select * from emp e where (e.deptno=10 and e.job='MANAGER') or (e.deptno=20 and e.job='CLERK') --(5)查询所有工种不是MANAGER和CLERK, --且工资大于或等于2000的员工的详细信息。 select * from emp where job not in('MANAGER','CLERK') and sal>=2000; --(6)查询有奖金的员工的不同工种。 select * from emp where comm is not null; --(7)查询所有员工工资和奖金的和。 select (e.sal+nvl(https://www.doczj.com/doc/fc14425220.html,m,0)) from emp e; --(8)查询没有奖金或奖金低于100的员工信息。 select * from emp where comm is null or comm<100; --(9)查询员工工龄大于或等于10年的员工信息。 select * from emp where (sysdate-hiredate)/365>=10; --(10)查询员工信息,要求以首字母大写的方式显示所有员工的姓名。 select initcap(ename) from emp; select upper(substr(ename,1,1))||lower(substr(ename,2)) from emp; --(11)显示所有员工的姓名、入职的年份和月份,按入职日期所在的月份排序, --若月份相同则按入职的年份排序。 select ename,to_char(hiredate,'yyyy') year,to_char(hiredate,'MM') month from emp order by month,year; --(12)查询在2月份入职的所有员工信息。 select * from emp where to_char(hiredate,'MM')='02' --(13)查询所有员工入职以来的工作期限,用“**年**月**日”的形式表示。 select e.ename,floor((sysdate-e.hiredate)/365)||'年' ||floor(mod((sysdate-e.hiredate),365)/30)||'月' ||floor(mod(mod((sysdate-e.hiredate),365),30))||'日' from emp e; --(14)查询从事同一种工作但不属于同一部门的员工信息。

数据库操作及查询

第三章数据库操作及查询§1刨建数据库表 一、表的分类:库表、自由表。 二、数据库表与自由表的区别 库表:各个表之间有关联 特点:A:长表名和长字段名。 B:每个字可以有提示和注释。 C:可以定义缺省值。 D:字段级的规则和记录级的规则。 自由表: foxbase 表,独立 三、表结构的定义 操作方法:A:表设计器 B:命令create < 表名> 四、表记录的输入 1、追加方式 2、定义结构时同时输入

五、表记录添加 1)、键盘输入 2)、从已有文件中追加 A、INSERT –SQL 命令 命令格式: INSERT INTO 表名[(字段名1[,字段名2,…])] V ALUES(表达式1[,表达式2,…]) 功能:在表尾追加一个新记录,并直接输入记录数据。 说明:表不必事先打开,字段与表达式的类型必须相同。 例如:INSERT INTO TEACHER(BH,XM,XB,JBGZ)V ALUES (“02005”,“张华”,“女”,2021) B、APPEND 命令 格式:APPEND [BLANK] 功能:向表中追加记录 说明:使用BLANK子句能在表尾追加一条空记录。若不选取则进入全屏幕编缉方式。 C、APEND FROM 命令

格式:APPEND FROM <文件名> FIELDS <字段名表> [FOR< 条件>][[TYPE ] DELIMITED[WITH <定界符>/WITH BLANK/WITH TAB]/SDF/XLS]] 功能:在当前的表尾部追加一批记录,这些记录来自于指定的文件。 说明:1、源文件的类型可以为表、系统数据格式文件、定界格文本文件、Excel文件。 2、执行该文件时源表不用打开。 例如:先将表数据导入到EXCEL表中,然后再追加到空表中。 appe from tyty type xls 六、表的打开和关闭 1、表的打开 A: 命令 use B: “文件”——“打开” C:在窗口菜单的“数据工作”期命令来打开 2)、表的关闭 A、命令:

数据库原理实验报告模板-实验四高级查询

大连海事大学 数据库原理课程实验报告(2013-2014学年第二学期) 实验四高级查询 班级:软件工程四班 学号:2220121787 姓名:马跃 指导教师:曹志英 成绩: 大连海事大学软件工程系 2014年6 月23 日

目录 1实验目的 (3) 2实验内容 (3) 2.1掌握SQL高级查询使用方法 (3) 3实验要求 (3) 4实验步骤 (3) 4.1掌握SQL高级查询使用方法 (3) 5总结与体会 (6) 5.1实验中出现的问题及其解决方案 (6) 5.2总结 (7) 5.3体会 (7)

1实验目的 (1)掌握SQL的高级查询的使用方法,如分组统计、嵌套查询、集合查询等等。 2实验内容 2.1 掌握SQL高级查询使用方法 (1)分组统计。 (2)嵌套查询,包括IN查询、EXISTS查询。 (3)集合查询。 3实验要求 (1)深入复习教材第三章SQL有关高级查询语句。 (2)根据书上的例子,针对DBTestBed数据库模式设计分组统计查询、嵌套查询(IN、EXISTS)语句和集合查询语句,每种类型的基本查询至少要设计一个查询,描述清楚查询要求,运行你所设计的查询语句,并截图相应的实验结果,每幅截图并要有较为详细的描述。也可以按照附1所列示例查询做实验。 (3)实验步骤和实验总结中要详细描述实验过程中出现的问题、原因和解决方法。 4实验步骤 4.1 掌握SQL高级查询使用方法 (1)不带分组过滤条件的分组统计查询。 统计2013-2014上学期信息学院(01)开设的每门课程的最高分,最低分,及平均成绩。 select C.coursename,avg(score)AVGS,max(score)MAXS,min(score)MINS from tb_select_course A,Tb_Cultivate_Scheme B,Tb_Course_info C where A.schemeid=B.schemeid and B.cyear='2013'and B.term='上'and C.courseid=B.courseid and C.deptid='01' group by C.coursename

实验3 SQL的高级查询

实验3 SQL的高级查询 一、实验目的 1.继续掌握基本的SELECT查询及其相关子句的使用 2.掌握复杂的SELECT查询、如多表查询,子查询,连接,分组和嵌套查询 3.掌握SQL中的集合并运算union 4.掌握SQL中元组的插入、修改、删除操作(insert,update,delete)。 二、预备知识: SQL中的连接操作: 假设R与K是基本数据表。基本表的连接操作可以分为五类: ●内连接 R inner join K on <条件> 只返回满足条件的行 ●左外连接 R left join K on<条件>返回满足条件的行及左表R中所有的行。如果左表的某条 记录在右表中没有匹配记录,则在查询结果中右表的所有选择属性列用NULL填充。 ●右外连接 R right join K on <条件>返回满足条件的行及右表K中所有的行 ●完全外连接 R full join K on <条件>返回满足条件的行及左右表R,K所有的行。当某条记录 在另一表中没有匹配记录,则在查询结果中对应的选择属性列用NULL填充。 ●交叉连接R CROSS JOIN K:相当于广义笛卡尔积。不能加筛选条件。 三、实验环境 1.个人计算机或局域网 2.Windows 2000操作系统 3.SQL Server 2000数据库管理系统 四、实验步骤 1.启动查询分析器,选择学生选课数据库 2.在学生选课数据库中分别使用SQL命令完成指定任务。 五、实验内容: 1.查询所有学生的情况以及他们选修的课程和得分 2.查询所有学生的姓名以及他们选修的课程名和得分 3.检索已经选了课程的学生的姓名、选修课程和成绩(提示:使用inner join) 4.检索每个学生的姓名,选修课程和成绩,没有选修的同学也列出。 5.列出所有学生所有可能的选课情况(提示:使用cross join) 6.检索每个学生的姓名、选修课程,没有选修的同学和没有被选修的课程也列出 7.求学生的总人数和平均年龄 8.求选修了各课程的学生的人数 9.对计算机系的学生按课程列出选修了该课程的学生的人数 10.查询每个学生的平均成绩 11.求选修课程超过或等于2门的学生的学号 12.查询学生的学号、姓名、所有学生所有课程的最高成绩 13.查询学生的学号、课程号及对应成绩与所有学生中所有课程的最高成绩的差值 14.查询陈小红同学的学号及所选修的课程号 15.查询没有选修C02课程的学生姓名

实验08 数据表的高级查询操作

实验八数据表的高级查询操作 课程名称:数据库技术 实验名称:数据的高级查询实验课时:2课时实验时间:第9周 实验环境:SQL Server 2005 实验目的: 1、掌握左连接、右连接、全接连的查询。 2、掌握带“IN”谓词的子查询。 3、掌握带比较运算符谓词的子查询。 4、掌握带“EXISTS”谓词的子查询。 实验内容: 【说明】把第1、5、14、15题做在实验报告中。 注意:使用student数据库完成第1、3、4、5、7、10、14、15、17题;使用stu_course数据库完成第2、6、8、9、11、12、13、16、18题。 1、查询“06级网络技术班”班级的学生,显示学生学号、姓名、班级名称和班级代码。(连 接查询) 2、查询选修了课程的每个学生的学号、姓名、选修的课程名称和成绩。(连接查询) 3、查询“06级软件工程班”的学生信息(要求用连接谓词为“=”和“IN”的两种方法)。 4、查询不是“06级软件工程班”的学生信息,并显示所在的班级名称(连接查询) 。 5、查询不是“06级软件工程班”的学生信息。 6、查询“课程注册”表中成绩没有不及格的学生,显示学生的学号和最低成绩。 (说明:如果表中学生的成绩都是及格,则自己动手把其中一个学生的某门课程改成不及格。)7、查询“课程注册”表中成绩没有不及格的学生,显示学生的学号、姓名、课程号和成绩。 (提示:用带有“IN”的嵌套查询方法)。 8、查询选修了课程的每个学生学号、姓名、选修的课程名及成绩。 9、使用stu_course数据库,查询选修2号课程且成绩在80分以上的所有学生的学号、姓名. 10、使用student数据库,查询选修“0003”号课程且成绩在80分以上的学生的学号、姓 名,并显示该选修课的课程号、成绩、任课教师的教师编号和姓名。 11、查询每个学生及其选修课程的情况包括没有选修课程的学生(左外连接)。 12、查询开设选修的课程及选修课程的学生情况,包括没有被学生选修的课程(右外连接)。 13、查询每个学生及每门选修课程的情况包括没有选修课程的学生和没有被选的课程(全 外连接)。 14、查询和“孙辉”在同一个班级学习的学生信息(提示:用带IN的子查询方法)。 15、查询选修了“网络营销”课程的学生学号、姓名(试用带IN的子查询方法求解) 。 16、查询选修了课程名为“数据库”的学生学号和姓名。(试用子查询方法求解) 。 17、查询“经济管理系”和“商务技术系”的学生信息(要求用连接查询和带“IN”的子查 询两种方法)。 18、查询其他系中比信息系(IS)任意一个学生年龄小的学生,显示其姓名、年龄和所在系部。 (试用带ANY/ALL和集函数两种方法) 19、附加题:查询所有选修了1号课程的学生姓名。(试用带EXISTS谓词的方法求解)

数据库与表的基本操作

第四章数据库与表的基本操作 实验4-1 数据库及表的操作 (一)实验目的 1.掌握创建数据库的基本操作方法。 2.熟练掌握创建表结构和输入记录的操作方法。 3.熟练掌握修改表结构、浏览和修改表记录数据的操作。 4.熟练掌握建立索引的操作。 5.掌握创建表间联系的操作。 (二)实验内容及步骤 1.创建数据库 【实例4-1】在实验2-1所建立的“教学管理.pjx”项目中,创建一个“学生成绩.dbc”数据库。 操作步骤如下: (1)打开“教学管理.pjx”项目。 (2)在“项目管理器”窗口中,选择“数据库”,然后单击“新建”按钮,打开“新建数据库”对话框,单击其中的“新建数据库”按钮,打开“创建”对话框,如图4-1所示。 图4-1“创建”对话框 (3)在“保存在”文本框中,选择保存数据库的文件夹“程序VX”;在“数据库名”文本框中,输入数据库名称“学生成绩”。 (4)单击“保存”按钮,即在指定位置建立一个“学生成绩.dbc”数据库文件。 此时,在VFP主窗口中弹出一个“数据库设计器”窗口,同时还激活了“数据库设计器”工具栏,如图4-2所示。

18 数据库应用学习与实训指导 图4-2“数据库设计器”窗口 2.创建数据表 【实例4-2】在“教学管理.pjx”项目中,创建学生表(Student.dbf)、成绩表(Grade.dbf)、课程表(Course.dbf)、授课表(Teach.dbf)和教师表(Teacher.dbf)。各个表的结构和数据记录如图4-3、图4-4、图4-5、图4-6、图4-7、图4-8、图4-9、图4-10、图4-11和图4-12所示。 图4-3学生表(Student.dbf)的结构 图4-4学生表(Student.dbf)的记录浏览窗口

带答案--实验6:SQL高级查询

实验六高级查询 【实验目的与要求】 1、熟练掌握IN子查询 2、熟练掌握比较子查询(尤其要注意ANY、ALL谓词如何用集函数代替) 3、熟练掌握EXISTS子查询(尤其是如何将全称量词和逻辑蕴含用EXISTS谓词代替) 4、熟练掌握复杂查询的select语句 【实验准备】 1.准备好测试数据 2.熟悉多表查询与嵌套查询的用法。 【实验内容】 5.1.嵌套子查询 以下实验在前面实验中创建的CPXS数据库中完成,请根据前面实验创建的表结构和数据,完成如下嵌套查询:(也可以不按指导书给出的思路写查询语句,只要是正确的即可,有疑问时可以和同学及老师商量你的查询语句是否正确) 查询在2004年3月18日没有销售的产品名称(不允许重复)。 用IN子查询: 写出对应SQL语句并给出查询结果: USE CPXS SELECT产品名称 FROM CP WHERE产品编号not IN (SELECT产品编号FROM CPXSB WHERE销售日期='2004-3-12') select distinct 产品名称 from CP where 产品编号 not in ( select 产品编号 from CPXSB where 销售日期='2004-3-18' );

用EXISTS子查询: 写出对应SQL语句并给出查询结果: select distinct 产品名称 from CP where 产品名称!=all ( select 产品名称 from CP where exists ( select 产品编号 from CPXSB where 销售日期!='2004-03-18' and CP.产品编号=CPXSB.产品编号 ) ) 查询名称为“家电市场”的客户在2004年3月18日购买的产品名称和数量。 用IN子查询: 写出对应SQL语句并给出查询结果: select 产品名称,数量 from CPXSB left join CP on(CPXSB.产品编号=CP.产品编号) where 客户编号 in ( select 客户编号 from XSS

相关主题
文本预览
相关文档 最新文档