1. 程式人生 > >mysql經典例題

mysql經典例題

auto pos like dep 並且 姓名 銀行 where inner

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經典例題