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