赞
踩
数据库笔试题,包含创建数据库、表、插入记录、查询等操作
以下是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<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)
- )
(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
查询结果:
注:这是某家公司校招的数据库笔试题,以上答案都是自己写的,如有不对之处,敬请指正!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。