数据库笔试题,包含创建数据库、表、插入记录、查询等操作
以下是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
查询结果:
注:这是某家公司校招的数据库笔试题,以上答案都是自己写的,如有不对之处,敬请指正!