MYSQL上机题

1. 使用sql语句创建数据库,名称为CustomDB

2. 创建数据表customer(客户)、deposite(存款)、bank(银行),表结构如下:(10分)

customer的表结构

属性名称

类型与长度

中文含义

备注

c_id

char(6)

客户标识

主键,非空

name

varchar(30)

客户姓名

非空

location

Varchar(30)

工作地点

salary

decimal(8,2)

工资

bank的表结构

属性名称

类型与长度

中文含义

备注

b_id

char(5)

银行标识

主键,非空

bank_name

char(30)

银行名次

非空

deposite的表结构

属性名称

类型与长度

中文含义

备注

d_id

int

存款流水号

主键,非空,自增

c_id

char(6)

客户标识

外键,关联customer表的c_id

b_id

char(5)

银行标识

外键,关联bank表的b_id

dep _date

date

存入日期

amount

decimal(8,2)

存款金额

3、录入数据:

customer的数据如下

c_id

name

location

salary

101001

孙杨

广州

1234

101002

郭海

南京

3526

101003

卢江

苏州

6892

101004

郭惠

济南

3492

bank的数据如下:

b_id

bank_name

B0001

工商银行

B0002

建设银行

B0003

中国银行

B0004

农业银行

deposite的数据如下:

d_id

c_id

b_id

dep_date

amount

1

101001

B0001

2011-04-05

42526

2

101002

B0003

2012-07-15

66500

3

101003

B0002

2010-11-24

42366

4

101004

B0004

2008-03-31

62362

5

101001

B0003

2002-02-07

56346

6

101002

B0001

2004-09-23

353626

7

101003

B0004

2003-12-14

36236

8

101004

B0002

2007-04-21

26267

9

101001

B0002

2011-02-11

435456

10

101002

B0004

2012-05-13

234626

11

101003

B0003

2001-01-24

26243

12

101004

B0001

2009-08-23

45671

4、修改数据(sql语句实现):

1.将数据表deposite中孙杨的存款金额加10000

2.将数据表deposite中所属账户为工商银行并且存入日期为2011-04-05的人员的存款金额加1000

3.将数据表deposite中郭海的银行标识改为建设银行

5、查询数据(sql语句实现):

1.查询孙杨的存款信息(显示信息:客户ID,客户姓名,银行名称,存款金额)

2.查询日期为2011-04-05这一天进行过存款的客户ID,客户姓名,银行名称,存款金额

3.查询郭海在工商银行的存款信息(显示信息:客户ID,客户姓名,银行标识,银行名称,存款日期,存款金额)

4.查询工商银行存款大于等于一万的客户姓名(使用表链接和子查询两种方式实现)

5.查询在农业银行存款前五名的客户存款信息(显示信息:客户姓名,银行名称,存款金额)

6.查询姓“卢”的客户的存款信息(显示信息:客户姓名,银行名称,存款金额)

详细答案如下:

/*创建顾客表*/

create table if not exists customer(

c_id char(6) primary key,

name varchar(30)not null,

location varchar(30),

salary decimal(8,2)

);

/*客户表插入数据*/

insert into customer

values(‘101001‘,‘孙杨‘,‘广州‘,1234),

(‘101002‘,‘郭海‘,‘南京‘,3526),

(‘101003‘,‘卢江‘,‘苏州‘,6892),

(‘101004‘,‘郭惠‘,‘济南‘,3492);

/*创建银行表*/

create table if not exists bank(

b_id char(5) primary key,

bank_name char(30) not null

);

/*bank表插入数据*/

insert into bank

values(‘B0001‘,‘工商银行‘),

(‘B0002‘,‘建设银行‘),

(‘B0003‘,‘中国银行‘);

insert into bank

values(‘B0004‘,‘农业银行‘);

/*创建存款表(注意外键的代码使用)*/

create table if not exists deposite(

d_id int(10) auto_increment primary key,

c_id char(6),

b_id char(5),

dep_date date,

amount decimal(8,2),

constraint FK_c_id foreign key(c_id) references customer(c_id)

);

/*deposite表插入数据*/

insert into deposite

values(1,‘101001‘,‘B0001‘,‘2011-04-05‘,42526),

(2,‘101002‘,‘B0003‘,‘2012-07-15‘,66500),

(3,‘101003‘,‘B0002‘,‘2010-11-24‘,42366),

(4,‘101004‘,‘B0004‘,‘2008-03-31‘,62362),

(5,‘101001‘,‘B0003‘,‘2002-02-07‘,56346),

(6,‘101002‘,‘B0001‘,‘2004-09-23‘,353626),

(7,‘101003‘,‘B0004‘,‘2003-12-14‘,36236),

(8,‘101004‘,‘B0002‘,‘2007-04-21‘,26267),

(9,‘101001‘,‘B0002‘,‘2011-02-11‘,435456),

(10,‘101002‘,‘B0004‘,‘2012-05-13‘,234626),

(11,‘101003‘,‘B0003‘,‘2001-01-24‘,26243),

(12,‘101004‘,‘B0001‘,‘2009-08-23‘,45671);

四、修改数据(sql语句实现):

1.将数据表deposite中孙杨的存款金额加10000

update  deposite set amount =amount+10000

where c_id in(select c_id from customer where name=‘孙杨‘);

2.将数据表deposite中所属账户为工商银行并且存入日期为2011-04-05的人员的存款金额加1000

update deposite set amount=amount+1000

where dep_date=‘2011-04-05‘ and b_id

in(select b_id from bank where bank_name=‘工商银行‘);

3.将数据表deposite中郭海的银行标识改为建设银行

update deposite set b_id=(select b_id from bank where bank_name=‘建设银行‘)

where c_id in(select c_id from customer where name=‘郭海‘);

五、查询数据(sql语句实现):

1.查询孙杨的存款信息(显示信息:客户ID,客户姓名,银行名称,存款金额)

方法(1):内连接查询

SELECT customer.c_id,customer.name,bank.bank_name,deposite.amount

FROM deposite

INNER JOIN  customer on customer.c_id= deposite.c_id

INNER JOIN  bank on bank.b_id=deposite.b_id

and customer.name=‘孙杨‘

方法(2):表连接查询:

SELECT customer.name,customer.c_id,bank.bank_name,deposite.amount

from customer,bank,deposite

WHERE  customer.c_id= deposite.c_id

and bank.b_id= deposite.b_id and customer.name=‘孙杨‘;

2.查询日期为2011-04-05这一天进行过存款的客户ID,客户姓名,银行名称,存款金额

方法(1):内连接查询:

SELECT customer.c_id,customer.name,bank.bank_name,deposite.amount

FROM deposite

INNER JOIN  customer on customer.c_id= deposite.c_id

INNER JOIN  bank on bank.b_id=deposite.b_id

and deposite.dep_date=‘2011-04-05‘;

方法(2):表连接查询:

SELECT customer.name,customer.c_id,bank.bank_name,deposite.amount

from deposite,customer,bank,

WHERE deposite.dep_date=‘2011-04-05‘

and customer.c_id= deposite.c_id

and bank.b_id= deposite.b_id ;

3.查询郭海在建设银行的存款信息(显示信息:客户ID,客户姓名,银行标识,银行名称,存款日期,存款金额)

方法(1):内连接查询:

SELECT customer.c_id,customer.name,bank.b_id ,bank.bank_name,

deposite.amount,deposite.dep_date

FROM deposite

INNER JOIN  customer on customer.c_id= deposite.c_id

INNER JOIN  bank on bank.b_id=deposite.b_id

and customer.name=‘郭海‘ and bank.bank_name=‘建设银行‘;

方法(2):表连接查询:

SELECT customer.c_id,customer.name,bank.b_id ,bank.bank_name,

deposite.amount,deposite.dep_date

FROM deposite,bank,customer

WHERE  customer.c_id= deposite.c_id

and bank.b_id=deposite.b_id

and customer.name=‘郭海‘ and bank.bank_name=‘建设银行‘;

4.查询工商银行存款大于等于一万的客户姓名(使用表链接和子查询两种方式实现)

方法(1):子查询:

SELECT customer.name FROM customer WHERE  c_id in (

SELECT c_id from deposite WHERE amount in

(SELECT amount  from deposite WHERE  amount>1000 and b_id IN

(SELECT b_id from bank where bank_name=‘工商银行‘)));

方法(2):表连接查询:

SELECT customer.name

FROM deposite,bank,customer

WHERE  customer.c_id= deposite.c_id

AND bank.b_id=deposite.b_id

WHERE amount>10000 AND bank_name=‘工商银行‘;

方法(3):内连接查询:

SELECT customer.name

FROM deposite

INNER JOIN  customer on customer.c_id= deposite.c_id

INNER JOIN  bank on bank.b_id=deposite.b_id

WHERE amount>10000 AND bank_name=‘工商银行‘;

5.查询在农业银行存款前五名的客户存款信息(显示信息:客户姓名,银行名称,存款金额)a

方法(1):内连接查询:

SELECT customer.name,bank.bank_name,deposite.amount

FROM deposite

INNER JOIN  customer on customer.c_id= deposite.c_id

INNER JOIN  bank on bank.b_id=deposite.b_id

WHERE bank_name=‘农业银行‘ ORDER BY amount DESC LIMIT 5

方法(2):表连接查询:

SELECT customer.name,bank.bank_name,deposite.amount

FROM deposite,bank,customer

WHERE  customer.c_id= deposite.c_id

AND bank.b_id=deposite.b_id

and bank_name=‘农业银行‘ ORDER BY amount DESC LIMIT 5;

6.查询姓“卢”的客户的存款信息(显示信息:客户姓名,银行名称,存款金额)

方法(1):内连接查询:

SELECT customer.name,bank.bank_name,deposite.amount

FROM deposite

INNER JOIN  customer on customer.c_id= deposite.c_id

INNER JOIN  bank on bank.b_id=deposite.b_id  where name LIKE ‘卢%‘;

方法(2):表连接查询:

SELECT customer.name,bank.bank_name,deposite.amount

FROM deposite,bank,customer

WHERE customer.c_id= deposite.c_id

AND bank.b_id=deposite.b_id  AND name LIKE ‘卢%‘;

mysql的题目_mysql经典例题相关推荐

  1. mysql查询语句题目_MySQL经典练习题及答案,常用SQL语句练习50题

    --1.查询"01"课程比"02"课程成绩高的学生的信息及课程分数 select a.* ,b.s_score as 01_score,c.s_score as ...

  2. 45道mysql数据库题目_MySQL 45道练习题

    --1. 查询Student表中的所有记录的Sname.Ssex和Class列. SELECT sname,ssex,class FROMstudent;--2.查询教师所有的单位即不重复的Depar ...

  3. oracle竖着显示数据,2020 Oracle、mysql经典例题一(如何把表格数据竖着排列)

    2020 Oracle.mysql经典例题一(如何把表格数据竖着排列) 2020 Oracle.mysql经典例题一(如何把表格数据竖着排列) Oracle.mysql经典例题--如何把表格成绩竖着排 ...

  4. mysql 张三的语文成绩_八道 经典的 MYSQL 面试题目(有答案)

    八道 经典的 MYSQL 面试题目(有答案) ***答案统一在 最下面哦*** (1)表名:购物信息 购物人 商品名称 数量 A 甲 2 B 乙 4 C 丙 1 A 丁 2 B 丙 5 -- (其他用 ...

  5. mysql经典例题50道52

    mysql经典例题50道52 初学mysql写了50道例题 初学mysql写了50道例题 建表:create table Student(SId varchar(10),Sname varchar(1 ...

  6. mysql函数示例_mysql函数备忘单和示例

    mysql函数示例 There are a ton of functions provided by MySQL and most of them are used extensively. I wi ...

  7. [二分查找] 二:二分查找的经典例题

    1.何时应该会使用二分查找 当题目中出现有序数组时 当时间复杂度要求为log(n)时 搜索范围可以一次缩小一半时 2. 经典例题1 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引.如果 ...

  8. 双指针算法(三):力扣【167.两数之和 | 经典例题

    本文将讲述双指针算法的一个经典例题,167.两数之和 [题目描述] 给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target . 函数应该以长 ...

  9. 华为杯数学建模优秀论文_数学建模经典例题(2011年国赛A题与优秀论文)

    数学建模经典例题 (更多往期经典例题可点击文章最后相关推荐哦) 试题中的附件1.2和3请点击"阅读原文"查看 相关推荐数学建模经典例题(2000年国赛A题与优秀论文)数学建模经典例 ...

最新文章

  1. python urllib2 开启调试
  2. Kafka 安装及快速入门
  3. java spring 服务器关闭_通过springboot怎么停止服务器??
  4. Ubuntu 16.04 64位安装arm-linux-gcc交叉编译器以及samba服务器
  5. hbase scan超时设置_深入浅出HBase系列(二)
  6. 【直播预告】第四范式Intel AI应用与异构内存编程挑战赛
  7. 成大事必备9种能力、9种手段、9种心态
  8. linux bash shell中,单引号、 双引号,反引号(``)的区别及各种括号的区别
  9. Oracle的REDO和UNDO
  10. 秋风秋雨愁煞人:寒宵独坐心如捣
  11. Python批量检查网页是否被注入其他页面
  12. Css学习总结(2)——60个有用CSS代码片段
  13. 互联网产品经理的核心竞争力是什么呢?
  14. Datalogic DS2100
  15. Vue3中数据更新函数effect的实现
  16. Ajax小实例   用户注册异步验证
  17. 遇到电脑任务栏卡死怎么办
  18. vue引入图片的方式
  19. 【剑指offer】解题思路汇总
  20. 总结2012年世界经济形势主要特征

热门文章

  1. 我做了一款iOS12捷径市场,也许是目前最好看也是最具技术含量的ShortCuts小程序
  2. 使用itextpdf生成pdf
  3. 算法_数学问题_Question10_马克思手稿中的数学(java实现)
  4. 【NYOJ】[845]无主之地1
  5. ad如何计算电路板的pin数量_各类EDA软件统计pin数方法
  6. 按文件名批量分类文件到文件夹
  7. 没有人能够一味地淡定,没有人能够一味地忍受
  8. iOS APP上架App Store其中一个步骤就是要把ipa文件上传到App Store
  9. js 购物车数量增减,总价格联动变化
  10. 内部专家亲自揭秘!滴滴对象存储系统的演进之路