第一题
某班学生和考试成绩信息如下表Student所示:
Student表
ID SName Mark
1 Jack 90
2 Marry 96
3 Rose 88
4 Bob 86
5 John 83
6 Belty 85
7 Robert
其中ID为学生的编号,SName为姓名,Mark为成绩,请针对以下问题,写出相应的SQL:
CREATE TABLE student(id tinyint unsigned primary key auto_increment,snamevarchar(10) not null,mark decimal(4,1));
1、 请查询成绩大于85分的学生的姓名;
SELECT sname FROM student WHERE mark > 85;
2、 请查询成绩大于等于90分的人数;
SELECT count(id) FROM student WHERE mark >= 90;
3、 Robert此次考试考了80分,但是成绩没能录入表中,请将其成绩添加进入;
UPDATE student SET mark = 80 WHERE id = 7;
4、 请将Rose的成绩修改为87.5;
UPDATE student SET mark = 87.5 WHERE id = 3;
5、 请删除Belty的记录;
DELETE FROM student WHERE id = 6;
6、 查询分数在83和90之间的学生名字
SELECT sname FROM student WHERE mark >= 83 and mark <= 90;
SELECT sname FROM student WHERE mark between 83 and 90;
7、 查询首字母为J的学生姓名
SELECT sname FROM student WHERE sname like ‘J%’;
8、 查询学习最好的学生姓名和成绩
SELECT sname,max(mark),mark FROM student;
第二题
现有关系数据库如下:
同学表(学号char(6)、姓名、性别、年龄、名族、身份证号、宿舍号)
宿舍表(宿舍号char(6)、宿舍电话)
用SQL语言实现下列功能的sql语句代码:
1、 创建数据表[宿舍表]代码:
宿舍表(宿舍号char(6)、宿舍电话)
要求使用:主键(宿舍号)
CREATE TABLE dormitory(did char(6) primary key,telvarchar(13));
2、 创建数据表[同学表]代码:
同学表(学号char(6)、姓名、性别、年龄、民族、身份证号、宿舍号)
要求使用:主键(学号)、外键(宿舍号)、默认(汉族)、非空(民族、姓名、年龄)、唯一(身份证号)
CREATE TABLE student1(sid char(6) primary key,snamevarchar(10) not
null,sexenum(‘男’,’女’,’保密’),age tinyint unsigned not
null,nationalityvarchar(10) not null default ‘汉族’,cidvarchar(18)
unique,ssid char(6),foreign key(ssid) references dormitory(did) on
delete cascade on update cascade);
3、 将下列宿舍信心添加到宿舍表的代码
宿舍号 宿舍电话
101 6331157
102 6331777
1)、修改:宿舍号为101的宿舍电话:6331158
UPDATE dormitory SET tel = ‘6331158’ WHERE did = ‘101’;
2)、删除:宿舍号为102的宿舍信息
DELETE FROM dormitory WHERE did = ‘102’;
第三题
根据要求编写SQL语句,设有一个数据表Store_Information,用于存储2009年某连锁商店各地分店的每月营业额信息,片段如下:
sName Sales sDate
北京店 15000 2009-6-10
天津店 2500 2009-6-10
北京店 3000 2009-6-10
哈尔滨店 7000 2009-6-11
1)、创建该表,所有字段均不可为空
CREATE TABLE store_information(snamevarchar(10) not null,sales decimal(8,2) not null,sdate date not null);
2)、修改表结构,添加一列可以为空的备注信息:Memo
3)、将所有分店名称均由”某某店”改成”某某分店”,改后片段如下
sName Sales sDate Memo
北京分店 15000 2009-6-10
天津分店 2500 2009-6-10
北京分店 3000 2009-6-10
哈尔滨分店 7000 2009-6-11
UPDATE store_information SET sname = ‘北京分店’ WHERE sname = ‘北京店’;
UPDATE store_information SET sname =replace(sname,’店’,’分店’);
4)、查询各分店的平均日营业额
SELECT sname,round(avg(sales)/30,2) FROM store_information GROUP BY sname;
5)、查询哪些分店的营业总额超过了17000
SELECT sname,sum(sales) FROM store_information GROUP BY sname HAVING sum(sales) > 17000;