当前位置:首页 » 数据仓库 » sql数据库经典例题豆丁网
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql数据库经典例题豆丁网

发布时间: 2022-09-26 15:28:44

A. sql数据库

第一个
select*fromswheresnoin(
selectsnofromscwherecnoin(
selectcnofromcwherecteacher='李明'
)
)

第二个
selects.sname,sc,sum(sgrade)fromsleftjoinscons.sno=sc.sno
wheresc.sgrade>=60
groupbys.sname
第三个
createindexc_cno_indexONc(cno)

B. SQL数据库题目

1、创建数据库
create database 学生成绩数据库
on primary
(name='学生成绩数据库_mdf',
filename='e:\学生成绩数据库.mdb',
size=1,
maxsize=10,
filegrowth =10%)
log on
(name='学生成绩数据库_ldf',
filename='e:\学生成绩数据库.ldf',
size=1,
maxsize=10,
filegrowth =10%)
2、创建课程表
create table 课程表
(课程号 char(6) primary key,
课程名称 char(20) not null,
任课教师 char(8))
3、 创建学生表
create table 学生表
(学号 char(6) primary key,
姓名 char(8) not null,
性别 char(2) constraint ck_性别 check( 性别 in ('男','女')),
民族 char(20) not null default '汉')
4、创建成绩表
create table 成绩表
(学号 char(6) not null foreign key(学号) references 学生表(学号),
课程号 char(6) not null foreign key(课程号) references 课程表(课程号),
分数 int constraint ck_分数 check(分数 between 0 and 150))
5、添加信息
insert 课程表(课程号,课程名)
values ('100001', '大学语文')
insert 课程表(课程号,课程名)
values ('100002', '大学英语')
6. 写出创建成绩表视图(学号,姓名,课程号,课程名称,成绩)的代码
create view 成绩表视图
as
select 学生表.学号,姓名,课程表.课程号,课程名称,成绩
from 学生表,课程表,成绩表
where 学生表.学号=成绩表.学号 and 成绩表.课程号=课程表.课程号
7. 写出计算大学语文课程成绩最高分、最低分、平均分的代码
select max(分数) '最高分数',min(分数) '最低分数',avg(分数) '平均分数'
from 成绩表
where 学号 in (select 学号
from 课程表
where 课程名称='大学语文')
8、 检索姓李的女同学的信息:姓名、性别、民族
select 姓名,性别,民族
from 学生表
where 姓名 like '李%' and 性别='女'

C. SQL数据库的例题请教一下大家

看了你的题,首先几个表需要说明一下Out_Goods和In_Goods在定义表时少了Sh_address列,列的属性参考Provider表中的Address

问题解答:
问题1、自定义一个函数,计算供货商编号为PD001所提供产品的平均价格,如果平均价格〉70,则输出“价格适中”;如果平均价格<=70,则输出价格较低。
CREATE FUNCTION [dbo].[fn_calc_avg_price]
(
@PID char(10) = 'PD001'-----------货商编号,此处默认值为PD001
)

RETURNS varchar(50) AS

BEGIN
DECLARE @vchPriceDesc varchar(50)
DECLARE @mnyPriceAvg money

SELECT @mnyPriceAvg = AVG(PPrice)
FROM Proct WHERE PID = @PID

IF (@mnyPriceAvg > 70) SET @vchPriceDesc = '价格适中'
IF (@mnyPriceAvg <= 70) SET @vchPriceDesc = '价格较低'

RETURN @vchPriceDesc
END

问题2、创建一个内联表值函数,返回一个时间段内的出货信息,要求包括出货商品名称、供货商名称、出货价格、出货数量、出货日期。
CREATE FUNCTION [dbo].[fn_get_out_goods_info]
(
@dtBeginTime datetime, --------------------------时间段的起始时间
@dtEndTime datetime --------------------------时间段的终止时间
)

RETURNS @TempTable table
(
out_proct_name varchar(20),
out_provider_name varchar(20),
out_proct_price money,
out_proct_num int,
out_date datetime
)
AS

BEGIN
INSERT INTO @TempTable
SELECT
Proct.PName,
Provider.ProviderName,
Out_Goods.OutPrice,
Out_Goods.OutNum,
Out_Goods.OutDate
FROM
Proct, Provider, Out_Goods
WHERE
Provider.ProviderId = Out_Goods.ProviderId
AND Proct.PId = Out_Goods.PId
AND Out_Goods.OutDate <= @dtEndTime
AND Out_Goods.OutDate >= @dtBeginTime
RETURN
END

问题3、创建一个after触发器,当Provider 供货商信息表中的ProviderId发生更改时,同时更改In_Goods进货信息表和Out_Goods出货信息表ProviderId字段的值。
CREATE TRIGGER [trig_update_proID]
ON [dbo].[Provider]
AFTER UPDATE

AS

IF UPDATE(ProviderID)
BEGIN
UPDATE In_Goods SET ProviderID = (SELECT ProviderID FROM INSERTED) WHERE ProviderID = (SELECT ProviderID FROM DELETED)
UPDATE Out_Goods SET ProviderID = (SELECT ProviderID FROM INSERTED) WHERE ProviderID = (SELECT ProviderID FROM DELETED)
END

问题4、定义一个存储过程,要求使用游标,计算某段时间内售出产品的平均价格。

坦白的说,其实没必要使用游标,既然用了,那就顺便用下WHILE循环好了
CREATE PROCEDURE [dbo].[sp_calc_part_sales_price]
(
@dtBeginTime datetime,
@dtEndTime datetime
)
AS

DECLARE @mnyTotalPrice money
DECLARE @mnyCurPrice money
DECLARE @nCount int SELECT @nCount = 0

DECLARE cursPrice CURSOR LOCAL
FOR SELECT OutPrice FROM Out_Goods WHERE Out_Goods.OutDate <= @dtEndTime AND Out_Goods.OutDate >= @dtBeginTime

OPEN cursPrice
FETCH NEXT FROM cursPrice INTO @mnyCurPrice

WHILE @@FETCH_STATUS=0
BEGIN
SET @nCount = @nCount + 1
SET @mnyTotalPrice = @mnyTotalPrice + @mnyCurPrice
FETCH NEXT FROM cursPrice INTO @mnyCurPrice
END

IF @nCount = 0 SELECT 0 AS '平均价格'
IF @nCount > 0 SELECT @mnyTotalPrice/@nCount AS '平均价格'

OK,就这样吧,如果有不明白或者我写错的地方,再联系,Good Luck!

D. SQL数据库练习题

1. SQL Server 2000是典型的关系型数据库产品。 ( 1 )
2. 在一台计算机上可以同时运行多个版本的SQL Server。 ( 1 )
3. 在SQL Server中日志文件是维护数据库完整性的重要工具。 ( 0 )
4. 在定义数据表时,定义某列为标识列的关键字是Identity。 ( 1 )
5. 浮点数据类型的优点是能够存储范围非常大的数字,但容易发生误差。 ( 0 )
6. 数据库完整性的目的是为了防止错误信息输入和输出。 ( 0 )
7. 在Update语句中,一次可以更新多个表。 ( 0)
8. 尽量使用Select * ,可以加快查询速度。 ( 0 )
9. 在SQL Server 2000中表示注释可以用类似c语言的/*...*/和//。 ( 0 )
10. 在SQL Server中,RTRIM函数删除字符串右边的空白字符。 ( 1 )
11. 一个表只能有一个聚集索引(簇索引)。 ( 1 )
12. SQL查询语言中,如果没有指定排序方式,则默认是升序方式。 ( 1 )
13. 在SQL Server 2000中ntext类型的字段不能进行排序操作。 ( 0 )
14. 在SQL Server 2000中bit类型的字段不能建立索引。 ( 1 )
15. 在被定义为唯一索引的列上的数据不能有重复的值。 ( 1 )
16. 在被定义为唯一索引的列上的数据不允许空。 ( 0可以的但是只能有一个null值 )
17. 在SQL Server中,每张表都应该建立一个索引,以提高查询速度。 ( 0 )
18. 视图在SQL Server中是一张虚拟表。 ( 1 )
19. 当一个视图由2个以上基本表构成时,不能进行删除视图中的数据。 ( 0 )
20. 在SQL Server中,触发器是一种特殊的存储过程。 ( 1 )
21. 由于存储过程是解释执行,所以每次执行时都要检查是否有语法错误。 ( 0 )
22. 可以在用户正在使用的数据库上执行数据库恢复操作。 ( 0 )
1表示正确

E. SQL数据库几个题目,100分悬赏!高手请进!

1、 select eno, ename,age from emp where job_title=‘高级’ and gender=1

2、
∏eno, ename,age (φjob_title=‘高级’ and gender=1 (emp))
注:其中的∏表示投影,φ表示选择.

4、create index 索引名 on emp (eno)

5、select dept.dname ,count(emp .eno) from dept ,emp
where emp.dno=dept.dno
group by dename

6、select dept.dno ,dept.dname, avg(salary) from dept ,emp
where emp.dno=dept.dno and salary>3000
group by dename ,dno

F. SQL数据库题目!!!急急急!!!

1)Students表:包含SNo,SName,SSex,SClass,SAge 其中SNo为主键
2)Courses表:包含CNo,CName,CGrade(开设学期),CScore(学分)、IsProfession(是否是专业课) 其中CNo为主键
3)Scores表:包含SNo,CNo,Score 其中SNo和CNo分别与Students中的SNo和Courses中的CNo有外键关系。
1)查询全班年龄在20岁至24岁之间的所有学生的信息。
select * from Students where SAge>=20 and SAge<=24 (是否包含20和24,修改相关=号)
2)查询开设学期为2的所有的专业课程号、课程名称、和学分。
select CNo,CName,CScore from Courses where CGrade=2 and IsProfession=1(假设专业课是此值为1)
3)查询学号为000004学生的所有课程的成绩。
select Scores.SNo,Scores.CNo,Courses.CName,Scores.Score from Scores INNER JOIN Courses ON Scores.CNo=Courses.CNo where Scores.SNo='000004'
4)查询姓名为“王明”的学生的所有及格课程的课程名称和成绩。
select Scores.SNo,Scores.CNo,Courses.CName,Scores.Score from Scores INNER Join
Courses ON Scores.CNo=Courses.CNo where Scores.SNo in (select SNo from Students where SName='王明') and Scores.Score>=60
5)查询班级为“0401”的所有学生的课程名为“SQL数据库管理”的成绩,按成绩降序的方式排列,如果成绩相同,则按照学号进行排列。
select Scores.SNo,Scores.CNo,Courses.CName,Scores.Score from Scores INNER Join
Courses ON Scores.CNo=Courses.CNo where Scores.SNo in (select SNo from Students
where SClass='0401' order by Scores.Score

G. SQL数据库试题求解

------------------------------------------------------
create table students(st_id varchar(20),st_name varchar(50),sex varchar(10))

insert into students(st_id,st_name,sex)
select 'st001','张杰', '男' union all
select 'st002', '公孙燕飞' ,'男' union all
select 'st003', '王楠', '女' union all
select 'st004', '王伟', '男' union all
select 'st005','李燕纹', '女' union all
select 'st006', '孙武' ,'男'
select *
from students

create table teachers(t_id varchar(20),t_name varchar(50),t_lesson varchar(50))

insert into teachers

select 't001', '张老师' ,'数学' union all
select 't002', '李老师', '英语'

delete from results
create table results(r_id varchar(20),r_fenshu int,r_stid varchar(50),r_tid varchar(50))

insert into results
select 'r001','90', 'st001', 't002' union all
select 'r002', '68', 'st005', 't001' union all
select 'r003', '92', 'st003' ,'t001' union all
select 'r004', '82', 'st006', 't002' union all
select 'r005', '70', 'st002', 't002' union all
select 'r006', '86', 'st002', 't001' union all
select 'r007', '57', 'st003', 't002' union all
select 'r008', '76', 'st006', 't001' union all
select 'r009', '55', 'st001', 't001' union all
select 'r010', '77', 'st004', 't002' union all
select 'r011', '58', 'st005', 't002'
----------------------------------------------------------
1.
select st_id
from students
where st_name = '王伟'

2.select st_id,st_name
from students
where st_name like '__燕%'

3 select st_name,len(st_name) as 名字长度
from students
where sex ='男'

4 select min(r_fenshu) as 最低分数
from teachers t inner join results r on t.t_id =r.r_tid
where t_lesson ='数学' --这个是不考虑成绩中有null值的
5 select s.st_id as 学生编号,r_fenshu as分数,r_tid as 课目号
from students s inner join results r on s.st_id =r.r_stid
where s.sex='女'
--如果还要课目的名称的话请用下面的
select s.st_id as 学生编号,r.r_fenshu as 分数,r.r_tid as 课目号,t.t_lesson as 课目名称
from students s inner join results r on s.st_id =r.r_stid
inner join teachers t on r.r_tid = t.t_id
where s.sex='女'

6 select avg(r.r_fenshu)
from results r inner join teachers t on r.r_tid = t.t_id
where t.t_lesson='英语'

7.select *
from students s inner join results r on s.st_id =r.r_stid
inner join teachers t on r.r_tid = t.t_id
where s.st_id in (select top 2 st_id from students order by st_id desc)
order by s.st_id desc

8 select sum(r.r_fenshu) as 总分
from results r inner join students s on r.r_stid =s.st_id
where s.st_name = '王楠'
9.select distinct s.st_id,s.st_name
from students s inner join results r on s.st_id = r.r_stid
where st_id not in (select r_stid from results where r_fenshu<60) and st_id not in (select r_stid from results where r_fenshu >=90)

10 update results
set r_fenshu = r_fenshu + 10
--如果分数不可能大于100请用这句 set r_fenshu = case when r_fenshu + 10 <=100 then r_fenshu + 10 else 100 end
where r_stid in (select st_id from students where sex='女')

1 进阶题
select t.t_name,count(*)
from students s,teachers t,results r
where r.r_tid = t.t_id
and s.st_id =r.r_stid
and r.r_fenshu >= 60
and t.t_id in (select t_id from teachers where t_lesson='数学' )
--and t_lesson='数学'
group by t.t_name

2

select top 1 sum(r_fenshu) as 总分,t.t_lesson,t_id,t_name
from results r,teachers t
where r.r_tid = t.t_id
group by t.t_lesson,t_id,t_name
order by 总分 desc

3. delete from results where r_stid in (select r_stid from results group by r_stid having count(r_tid) = 1)

1 选做题
select d.name from sysobjects d where d.xtype='U'
2.select top 5 * from students order by newid()

H. sql数据库一道试题帮忙做做

---1)
创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话
CREATE
TABLE
student
(

[id]
[int]
IDENTITY(1,1)
NOT
NULL,

[student_id]
[nvarchar](50)
NULL,

[studen_name]
[nvarchar](50)
NULL,

[age]
[int]
NULL
,

[sex]
[nvarchar](5)
NULL,

[address]
[nvarchar](200)
NULL,

[tel]
[nvarchar](20)
NULL
)
--2)
修改学生表的结构,添加一列信息,学历
ecation
alter
table
student
add
ecation
nvarchar(10)
NULL
--3)
修改学生表的结构,删除一列信息,家庭住址
alter
table
student
drop
column
address
--5)
修改学生表的数据,将电话号码以11开头的学员的学历改为“大专”
update
student
set
ecation='大专'
where
tel
like
'11%'
--6)
删除学生表的数据,姓名以C开头,性别为‘男’的记录删除
delete
student
where
studen_name
like
'C%'
and
sex='男'
--7)
查询学生表的数据,将所有年龄小于22岁的,学历为“大专”的,学生的姓名和学号示出来
select
studen_name,student_id
from
student
where
age<12
and
ecation='大专'
--8)
查询学生表的数据,查询所有信息,列出前25%的记录
select
TOP
25
PERCENT
*
from
student
--9)
查询出所有学生的姓名,性别,年龄降序排列
select
studen_name,sex,age
from
studen
order
by
age
desc
--10)
按照性别分组查询所有的平均年龄
select
avg(age)
as
age
from
studen
group
by
sex

I. 求诸位大侠帮我看看这个SQL数据库的题目

一、单项选择题(2分*15)
1. 一个班级有多个学生,每个学生只能属于一个班级,班级与学生之间是(B )
A. 一对一的联系 B.一对多的联系 C.多对一的联系 D.多对多的联系
2. 一个关系中的主属性( A )
A.至多一个 B.可多个 C.必须多个 D.可以零个
3. 顾客可到多个商场购物,商场有很多顾客购物,商场与顾客之间的联系方式是( C )
A.1:1 B.1:n C. m:n D.m:1
4. 实体间的联系方式有( D )
A.1种 B.2种 C.3种 D.4种
5. 按给定条件从一个关系中挑选出指定的属性组成一个新关系运算是( A )
A.选择 B.投影 C.连接 D.自然连接
6. DB,DBS,DBMS三者之间的关系是( C )
A.DB包括DBS和DBMS B.DBS包括DB和DBMS
C.DBMS包括DBS和DB D.DBS与DB和DBMS无关
7. 表示数据库的概念模型一般使用( C )
A.用户活动图 B.数据流图
C.E-R图 D.流程图
8.DB是指( D )
A.数据库应用软件B.数据库管理软件C.数据的集合 D.数据库系统
9.数据库系统达到了数据独立性,是因为采用了( D )
A.层次模型 B.网状模型 C.关系模型 D.三级模式结构
10.数据独立性是指( B )之间相互独立,彼此不受影响。
A.应用程序和用户 B.应用程序和数据 C.数据库和用户 D.数据库和程序员
11.在SQL语言中,创建基本表应使用( B )语句
A.CREATE SCHEMA B.CREATE TABLE
C.CREATE VIEW D.CREATE DATABASE
12.与WHERE AGE BETWEEN 18 AND 20 完全等价的是( D )
A.WHERE AGE > 18 AND AGE < 20
B.WHERE AGE >= 18 AND AGE < 20
C.WHERE AGE > 18 AND AGE <= 20
D.WHERE AGE >= 18 AND AGE <= 20
13.在WHERE子句的条件表达式中,可以用( B )通配符与所在位置的零个或多个字符相匹配。
A. * B.% C. ? D. __
14.在WHERE子句的条件表达式中,可以用( D )通配符与所在位置的单个字符相匹配 A. * B.% C. ? D. __
15.SQL属于( C )数据库语言
A. 层次型 B. 网状型 C.关系型 D.面向对象型

二、填空题(1分*10)
1. 数据库的三级模式指的是 外模式、模式和内模式 。
2.一个表上只能创建 ( 1 ) 个主键约束。
3.数据库的一个表中的一个字段被定义为char数据类型,长度为15,在这个字段中输入“123”,则此字段占用 ( 15 ) 个存储空间。
4.使用T-SQL语句删除表需要使用( DROP TABLE ) 语句。
5.数据库的一个表中的一个字段被定义为varchar数据类型,长度为15,在这个字段中输入“123”,则此字段占用 ( 3 ) 个存储空间。
6. 数据库系统的数据独立性包括 ( 逻辑 ) 独立性和 ( 物理 ) 独立性。
7.创建数据库的T-SQL语句是 ( CREATE DATABASE ) 。

J. 请回答,下面的SQL数据库题目,不胜感激!

这题都不好好做,以后怎么工作噢。。。

4://考察in语法
select * from kc where 课程号 in ('101','102','302');

6.//考察对group by的理解
select 课程号,count(*) from xs_kc group by 课程号;

8.//考察对where语句中的and的理解。
select count(*) from xs_kc where 课程号=(select 课程号from kc where 课程名='c语言') and 成绩>60;