数据库笔试题,包含创建数据库、表、插入记录、查询等操作
以下是sql server语句,因为自己电脑上没有装sql server,只装了mysql,所以悲剧了,在创建数据库的时候一直报错,以为自己的语句写的有问题,到后来才把sql语句复制到 sql server上能完美运行时,才幡然醒悟!但后面sql语句是用mysql写的,运行都没问题,我想应该是差不多的吧。
(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
)
(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
(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)
)
(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);
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 ))
SQL语句如下:
select stuSex as '性别',count(*) as '人数 'from tblstudent group by stuSex
查询结果:
注:这是某家公司校招的数据库笔试题,以上答案都是自己写的,如有不对之处,敬请指正!