数据库题目

1、数据库表书Book,字段 BookID,Bookname、Price、PublicID;表出版社Pulic,字段PublicID、PublicName、PublicTEL
1)查询出Book表Price超过20的书,按BookID降序;
2)统计出每个出版社里所有书Book的平均价格Price;
3)所有书价格下调5%。

1、SQL语句:
select BookID,Bookname,Price,PublicID from Book where Price>20 Order by BookID desc;

2、SQL语句:
Select PublicID,avg(Price) from Book group by PublicID;

3、SQL语句:
update Book set price=price*(1-5%)

2、详见下图
根据以下表格,按要求写出SQL语句
Order_history表格
Date(日期) Name(用户名) Game_id(游戏ID) Amout($)(充值金额)
2017-02-01 张三 100 100
2017-02-02 李四 101 60
2017-02-03 李四 100 500
2017-02-03 张三 102 200
2017-02-04 王五 100 1000
1、统计2017-02-01到2017-02-04时间段内“张三”充值的次数;
2、修改2017-02-03那天“张三”的充值金额为2000;
3、查询2017-02-03这天的充值金额在100到1000的人员名单。

1、SQL语句:
Select count(Amout) from Order_histoty group by name having Name=’zhangsan’;

2、SQL语句
update Order_history set Amout=2000 where Date=to_date(‘20170203’,’yyyy-mm-dd’) and name=’张三’;

3、SQL语句:
Select name from Order_histoty where day=to_date(‘20170203’,’yyyy-mm-dd’) and (Amout>=100 and Amout<=1000);



3、假设mysql数据库有两张表,储数据为某班级所有学生的语文、数学、英语成绩,请使用MYSQL语法写出查询语句,查询此班级内有哪些同学的所有科目都及格。
A)表a字段:姓名、学号
B)表b字段:学号、学科、分数

SQL语句:

找到学号对应的所有学科中分数最低的大于60,那么所有学科都及格了。

1、按学号分组找出该组最低的分数
(select 学号,min(分数) from b group by 学号)

找出学号:
Select 学号 from (select 学号,min(分数) from b group by 学号) where min>60

找出姓名:
select 姓名 from a in(Select 学号 from (select 学号,min(分数) from b group by 学号) where min>60);

4、详见下图
有如下两张数据表:
部门表:tb_Depts (部门ID、部门名称)
员工表:tbl_Employees (员工ID、部门ID、姓名)
请用一条SQL查询语句,查询出以下结果,没有部门的员工的部门名称字段用“未标志”代替。
员工ID 部门ID 姓名 部门名称
1 1 员工1 部门1
2 2 员工2 未标识

SQL> select tbl_Employees.*,tb_Depts. 部门名称 from tbl_Employees inner join tb_D
epts on (tb_Depts.id=tbl_Employees. 部门ID);

5、题目如下:
表student ,表Achievement
某班学生和考试成绩信息分别如下表student和表Achievement所示:
student achievement
ID Name ID Mark
1 Jack 1 90
2 Marry 2 96
3 Rose 3 88
4 Bob 4 86
5 John 5 83
6 Betty 6 85
7 Robert 7

其中ID为学生的编号,Name为姓名,Mark为成绩,请针对以下问题,写出相应的SQL语句。

1)请查询成绩>85分的学生的姓名;
SQL语句:select ID,Name from Student where ID IN(select ID from Achievement where Mark>85);

2)请查询成绩>=90分的人数;
SQL语句:select count(Mark) from (select ID,Mark from Achievement where Mark>=90 );

3)Robert此次考试考了80分,但是成绩没能录入表中,请将其成绩添加进去;
SQL语句:update Achievement set Mark=80 where ID= (select ID from Sudent where Name=’ Robert’);

4)请将Rose的成绩修改为87;
Update Achievement set Mark=87 where ID= (select ID from Student where Name=’Rose’);

update Achievement set Mark=87 where ID=3;

5)请删除Betty的两个表的记录;
SQL语句:
delete from Achievement where ID=(select ID from Sudent where Name=’ Betty’);

delete from Student where Name=’ Betty’;

6)请你使用熟悉的语言将Achievvement表的分数由高到低排序并打印。

Select Mark from Achievement Order by Mark desc;

用一条SQL 语句 查询出每门课都大于80 分的学生姓名。
表名为chengji
name kecheng fenshu
张三 语文 81
张三 数学 75
李四 语文 76
李四 数学 90
王五 语文 81
王五 数学 100
王五 英语 90
创建表如下:

思路:先按姓名分组,找出所有分数中最小的分数;然后在最小的分数里找出分数大于80的学生的名字。因为只有分数最低的学科都大于80分,才能保证每门课都大于80分。

SQL语句1: select name from (select name,min(fengshu) minfengshu from chengji group by name ) where minfengshu>80;

SQL语句2:select name from chengji group by name having min(fengshu)>80;

SQL语句1和SQL语句2实现了一样的功能。

原文地址:https://www.cnblogs.com/xianmin/p/14017081.html