建議用 TXT 文檔來寫代碼 然后粘貼至cmd命令直接運行
創建students庫,表名為student,表包含以下字段: id(主鍵) name(姓名) age(年齡) sex(性別) sc(綜合積分) ; insert student values(0,"小姐",1,24,188) create table student( id int auto_increment primary key not null, name varchar(10) not null, sex enum("男","女","中性"), age int , jf int )default charset="utf8"; 3)(10分)向表里添加5條數據,自定義各個字段數據類型; insert student values(0,"小劉",1,20,158); insert student values(0,"小崔",2,21,159); insert student values(0,"小錢",3,22,128); insert student values(0,"小林",2,23,138); insert student values(0,"小姐",1,24,188); 4)(10分)查詢出所有學生的信息,並輸出; select * from student; 5)(10分)查詢所有女生的信息,並輸出 select * from student where sex=2; 6)(10分)查詢所有男生且綜合積分49分以下的信息,並輸出 select * from student where sex=1 and jf=158; 7)(10分)給綜合積分低於49分以下的同學,綜合積分加上50,並查看信息 update student set jf=jf+50 where jf=158; 8)(10分)查詢出所有姓張的同學的信息,並輸出。 select * from student where name like "%小%"; 9)(10分)刪除ID是1的記錄,如果沒有相關記錄則提示 delete from student where id=1; 10)(10分)將性別為女的記錄年齡統一加2歲,並查看信息 update student set age=age+2 where sex=2; 11)(10分)查看所有同學的綜合積分情況 select jf from student;
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.查詢姓“盧”的客戶的存款信息(顯示信息:客戶姓名,銀行名稱,存款金額) 1. 使用sql語句創建數據庫,名稱為CustomDB 答:`create database if not exists CustomDB;` 2. 創建表,代碼如下: 答: ``` /*創建顧客表*/ 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 ); 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) ); CREATE TABLE `deposit` ( `d_id` int NOT NULL AUTO_INCREMENT PRIMARY KEY , `c_id` varchar(6) , `b_id` varchar(5) , `dep_date` date , `dep_type` enum('1','3','5') , `amount` decimal(8,2) , FOREIGN KEY (`c_id`) REFERENCES `customer` (`c_id`), FOREIGN KEY (`b_id`) REFERENCES `bank` (`b_id`) ); create table deposite( d_id int not null auto_increment primary key, c_id varchar(6), b_id varchar(5), dep_date date, dep_type enum('1','3','5'), amount decimal(8,2), foreign key(c_id) references customer(c_id), foreign key(b_id) references bank(b_id) ); insert into deposite values(1,'101001','B0001','2011-04-05',1,42526), (2,'101002','B0003','2012-07-15',1,66500), (3,'101003','B0002','2010-11-24',2,42366), (4,'101004','B0004','2008-03-31',3,62362), (5,'101001','B0003','2002-02-07',3,56346), (6,'101002','B0001','2004-09-23',1,353626), (7,'101003','B0004','2003-12-14',2,36236), (8,'101004','B0002','2007-04-21',1,26267), (9,'101001','B0002','2011-02-11',1,435456), (10,'101002','B0004','2012-05-13',2,234626), (11,'101003','B0003','2001-01-24',3,26243), (12,'101004','B0001','2009-08-23',2,45671); ``` 1. 將數據表deposite中孫楊的存款金額加10000 ``` update deposite set amount =amount+10000 where c_id in(select c_id from customer where name='孫楊'); ``` 1. 將數據表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='工商銀行'); ``` 1. 將數據表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='郭海'); ``` 1. 查詢孫楊的存款信息(顯示信息:客戶ID,客戶姓名,銀行名稱,存款金額) ``` ## 內連接查詢
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='孫楊'; ##表連接查詢
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='孫楊'; ``` 1. 查詢日期為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; ``` 1. 查詢郭海在工商銀行的存款信息(顯示信息:客戶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='建設銀行'; ``` 1. 查詢工商銀行存款大於等於一萬的客戶姓名(使用表鏈接和子查詢兩種方式實現) ``` 方法(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='工商銀行'; ``` 1. 查詢在農業銀行存款前五名的客戶存款信息(顯示信息:客戶姓名,銀行名稱,存款金額) ``` 方法(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; ``` 1. .查詢姓“盧”的客戶的存款信息(顯示信息:客戶姓名,銀行名稱,存款金額) ``` 方法(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 '盧%'; ``` 1. 創建存儲過程update_salary,更新customer表的salary屬性,將salary低於5000的客戶的salary變為原來的2倍. ``` create procedure update_salary() update customer set salary = salary * 2 where salary < 5000; ```