数据库sql语句笔试题--包含创建数据库、表、插入记录、查询等操作

数据库笔试题,包含创建数据库、表、插入记录、查询等操作


以下是sql server语句,因为自己电脑上没有装sql server,只装了mysql,所以悲剧了,在创建数据库的时候一直报错,以为自己的语句写的有问题,到后来才把sql语句复制到 sql server上能完美运行时,才幡然醒悟!但后面sql语句是用mysql写的,运行都没问题,我想应该是差不多的吧。

1.    创建数据库。要求用SQL语句创建满足如下要求的数据库:

(1)    数据库名称为School;

(2)    主数据文件:逻辑名为SchoolData,文件名为“D:\School\SchoolData.mdf”,文件初始大小为50MB,文件的最大大小不受限制,文件的增长率为20%。

(3)    日志文件:逻辑名为SchoolLog,文件名为“D:\School\SchoolLog.ldf,”文件初始大小为10MB,文件的最大大小为50MB,文件的增长率为1MB;

create database School
on primary
(name='SchoolData',
filename='D:\School\SchoolData.mdf',
size=50MB,
maxsize=unlimited ,
filegrowth=20%)
log on(
name='SchoolLog',
filename='D:\School\SchoolLog.ldf',
size=10MB,
maxsize=50MB,
filegrowth=1MB
)

2.    创建数据类型和表,增加约束。

(1)    表tblstudent(学生表):

列名

数据类型

可空性

约束

备注

stuID

bigint

非空

primary key

学号

stuName

nvarchar(10)

非空

 

姓名

stuSex

nchar(1)

非空

只能是‘男’或‘女’

性别

stuBirth

datetime

可空

小于系统当前时间getdate()

出生日期

stuNum

nvarchar(18)

可空

Unique

身份证号

Departed

int

可空

 

系号

City

nvarchar(10)

可空

默认是“杭州”

城市

stuTelphone

type_telphone

可空

 

电话号码

sql语句如下:

create table tblstudent(
stuID bigint primary key,
stuName nvarchar(10) not null,
stuSex nchar(1) not null,
stuBirth datetime,
stuNum nvarchar(18) unique,
Departed int,
City nvarchar(10) default '杭州' ,//设置默认值
constraint ck_tblstudent_stusex check(stuSex IN('男','女') ),//建立约束
constraint ck_tblstudent_stuBirth check(stuBirth<getdate())
)  

(2)    表tblscore(成绩表):

列名

数据类型

可空性

约束

备注

stuID

bigint

非空

foreign key 引用tblstudent中的stuID

学号

Math

Int

可空

0~100分

数学

English

Int

可空

0~100分

英语

Computer

Int

可空

0~100分

计算机

Summary

Int

可空

 

总计

 SQL语句如下:

create table tblscope(
stuID bigint ,
Math int,
English int,
Computer int,
Summary int,
/*建立外键约束*/
constraint stuID_FK foreign key (stuID) references tblstudent(stuID),
constraint ck_tblscope_Math CHECK(Math between 0 and 100 or Math is null),
constraint ck_tblscope_English CHECK(English between 0 and 100 or English is null),
constraint ck_tblscope_Computer CHECK(Computer between 0 and 100 or Computer is null)
)

3.使用SQL语句插入下表中的数据:

(1)tblstudent(学生表):

stuID

stuName

stuSex

stuBirth

stuNum

Departed

City

stuTelphone

1001

赵毅

1990 /1/1

510111199001014279

1

杭州

1324362888

1002

钱尔

1993 /2/2

110008199302022325

2

杭州

1776789999

(2)tblscope(成绩表):

stuID

Math

English

Computer

Summary

1001

70

80

90

null

1002

45

55

60

null

使用SQL语句插入表(2)tblscope中的数据(在插入下表数据之前,tblstudent表中必须有对应的stuID),语句如下:

/*批量插入,当添加一条新的记录时,可以省略字段名,但每个字段都必须有值)*/
insert into tblscope values(1001,70,80,90,null),(1002,45,55,60,null);

4.找出总成绩最高的学生的学号和姓名

 SQL语句如下:

/*第一步:从tblscope表中找出最高成绩*/
select  max(Math+English+Computer) from tblscope 

/*第二步:从tblscope表中找出总成绩=最高分的那位学生ID*/
select stuID from tblscope group by stuID having 
sum(Math+English+Computer)=(select  max(Math+English+Computer) from tblscope )

/*第三步:根据最高分查出来的学生stuID再来查询学生信息*/
select stuID,stuName from tblstudent where stuID=
(select stuID from tblscope group by stuID having 
sum(Math+English+Computer)=(select  max(Math+English+Computer) from tblscope ))

5.统计男生女生的人数

SQL语句如下:

select stuSex as '性别',count(*) as '人数 'from tblstudent group by stuSex
查询结果:


注:这是某家公司校招的数据库笔试题,以上答案都是自己写的,如有不对之处,敬请指正!



  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
交互式SQL的使用 环境:WINDOWS,Microsoft SQL Server 实验要求: 1,创建Student数据库,包括Students,Courses,SC结构如下: Students(SNO,SNAME,SEX,BDATE,HEIGHT,DEPARTMENT) Courses(CNO,CNAME,LHOUR,CREDIT,SEMESTER) SC(SNO,CNO,GRADE) (注:下划线示主键,斜体示外键),并插入一定数据。 2.完成如下的查询要求及更新的要求。 (1)查询身高大于1.80m的男生的学号和姓名; (2)查询计算机系秋季所开课程的课程号和学分数; (3)查询选修计算机系秋季所开课程的男生的姓名、课程号、学分数、成绩; (4)查询至少选修一门电机系课程的女生的姓名(假设电机系课程的课程号以EE开头); (5)查询每位学生已选修课程的门数和总平均成绩; (6)查询每门课程选课的学生人数,最高成绩,最低成绩和平均成绩; (7)查询所有课程的成绩都在80分以上的学生的姓名、学号、且按学号升序排列; (8)查询缺成绩的学生的姓名,缺成绩的课程号及其学分数; (9)查询有一门以上(含一门)三个学分以上课程的成绩低于70分的学生的姓名; (10)查询1984年~1986年出生的学生的姓名,总平均成绩及已修学分数。 (11) 在STUDENT和SC关系中,删去SNO以’01’开关的所有记录。 (12)在STUDENT关系中增加以下记录: (13)将课程CS-221的学分数增为3,讲课时数增为60 3.补充题: (1) 统计各系的男生和女生的人数。 (2) 列出学习过‘编译原理’,‘数据库’或‘体系结构’课程,且这些课程的成绩之一在90分以上的学生的名字。 (3) 列出未修选‘电子技术’课程,但选修了‘数字电路’或‘数字逻辑’课程的学生数。 (4) 按课程排序列出所有学生的成绩,尚无学生选修的课程,也需要列出,相关的学生成绩用NULL示。 (5) 列出平均成绩最高的学生名字和成绩。(SELECT句中不得使用TOP n子句) 4.选做题:对每门课增加“先修课程”的属性,用来示某一门课程的先修课程,每门课程应可记录多于一门的先修课程。要求: 1) 修改结构的定义,应尽量避免数据冗余,建立必要的主键,外键。 2) 设计并插入必要的测试数据,完成以下查询: 列出有资格选修数据库课程的所有学生。(该学生已经选修过数据库课程的所有先修课,并达到合格成绩。) 注意:须设计每个查询的测试数据,并在查询之前用INSERT语句插入中。 提交作业形式: 1) 建立Student数据库SQL脚本,插入所有数据项的SQL脚本(包括所有的测试数据)。 2) 完成查询要求的SQL语句脚本。 3) 选做题:须提交修改数据库定义的SQL脚本,插入测试数据的SQL脚本以及用于查询SQL语句
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值