1. 程式人生 > 實用技巧 >MySQL實驗之英語助手

MySQL實驗之英語助手

英語單詞助手

基本要求:實現單詞的管理,英語單詞常用例句的管理,測試題目隨機生成的管理。

(1)建立相應的資料庫及相關表、屬性、約束、規則、預設等;

(2)使用SQL語句,在你設計的每個表中插入至少10條資料,要求記錄滿足資料約束要求,且儘量真實可信

(3)自行設計查詢要求,給出經常需要用到的查詢語句;

(4)編寫進行資料管理的儲存過程、檢視、觸發器。

功能需求參考:

(1)實現英語單詞的檢索、翻譯

(2)實現例句的檢索

(3)根據難度隨機生成單詞題目

(4)刪除單詞時,相關資訊是否刪除

base查詢語句:

CREATE DATABASE IF NOT EXISTS english;

CREATE
TABLE IF NOT EXISTS `vocabularies`( `word_id` INT UNSIGNED NOT NULL, `word` VARCHAR(20), `translate` VARCHAR(20), `level` CHAR(4) CHECK(level in ('四級','六級')), PRIMARY KEY ( `word_id` ) )ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO vocabularies VALUES(1,'abandon','拋棄、丟棄','四級'); INSERT
INTO vocabularies VALUES(2,'abnormal','不正常的、變態的','四級'); INSERT INTO vocabularies VALUES(3,'entrepreneur','企業家、主辦人','六級'); INSERT INTO vocabularies VALUES(4,'match','競賽;對手','四級'); INSERT INTO vocabularies VALUES(5,'delete','刪除','四級'); INSERT INTO vocabularies VALUES(6,'embrace','擁抱、包圍','四級'); INSERT
INTO vocabularies VALUES(7,'fashionable','流行的、時髦的','四級'); INSERT INTO vocabularies VALUES(8,'generally','一般地、通常地','四級'); INSERT INTO vocabularies VALUES(9,'climax','頂點、高潮','六級'); INSERT INTO vocabularies VALUES(10,'illustration','說明、圖解','四級'); INSERT INTO vocabularies VALUES(11,'journalist','記者、新聞工作者','四級'); INSERT INTO vocabularies VALUES(12,'knowledge','知識、學識、知道','四級'); INSERT INTO vocabularies VALUES(13,'lawn','草坪、草地、草場','四級'); INSERT INTO vocabularies VALUES(14,'capacity','容量、能力','四級'); INSERT INTO vocabularies VALUES(15,'accommodate','容納;供應、供給','六級'); INSERT INTO vocabularies VALUES(16,'academy','私立中學、專科院校','六級'); INSERT INTO vocabularies VALUES(17,'bruise','青腫、傷痕','六級'); INSERT INTO vocabularies VALUES(18,'brutal','殘忍的、野蠻的','六級'); INSERT INTO vocabularies VALUES(19,'hardware','五金器具、硬體','四級'); INSERT INTO vocabularies VALUES(20,'clause','子句;條款','六級'); INSERT INTO vocabularies VALUES(21,'dock','船塢、碼頭、船廠','六級'); INSERT INTO vocabularies VALUES(22,'doctrine','教義、主義、學說','六級'); INSERT INTO vocabularies VALUES(23,'bargain','交易','四級'); INSERT INTO vocabularies VALUES(24,'envisage','面對、正視、想象','六級'); # DROP TABLE vocabularies CREATE TABLE IF NOT EXISTS `examples`( `sentence_id` INT UNSIGNED NOT NULL PRIMARY KEY, `sentence` VARCHAR(100), `translate` VARCHAR(100), `word_in_sentence_id` INT UNSIGNED, FOREIGN KEY(word_in_sentence_id) REFERENCES vocabularies(word_id) )ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO examples VALUES(1,'The baby had been abandoned by its mother.','這個嬰兒被母親遺棄了。',1); INSERT INTO examples VALUES(2,'This stops the cells from growing abnormally.','這阻止了細胞畸形發育。',2); INSERT INTO examples VALUES(3,'An entrepreneur is more than just a risk taker. He is a visionary.','企業家不僅要能承擔風險,還應富於遠見。',3); INSERT INTO examples VALUES(4,'He was watching a football match.','他正在觀看一場足球比賽。',4); INSERT INTO examples VALUES(5,'Your name has been deleted from the list.','你的名字已從名單上刪掉。',5); INSERT INTO examples VALUES(6,'They embraced and promised to keep in touch.','他們互相擁抱,許諾將保持聯絡。',6); INSERT INTO examples VALUES(7,'It is becoming fashionable to have long hair again.','現在又開始流行蓄長髮了。',7); INSERT INTO examples VALUES(8,'I generally get up at six.','我一般六點鐘起床。',8); INSERT INTO examples VALUES(9,'The festival will climax on Sunday with a gala concert.','星期天的音樂盛會將把這次會演推向高潮。',9); INSERT INTO examples VALUES(10,'The statistics are a clear illustration of the point I am trying to make.','這些統計數字清楚地闡明瞭我要陳述的要點。',10); INSERT INTO examples VALUES(11,'The main character is a journalist in flight from a failed marriage.','主角是一個逃避失敗婚姻的記者。',11); INSERT INTO examples VALUES(12,'He has a wide knowledge of painting and music.','他在繪畫和音樂方面知識淵博。',12); INSERT INTO examples VALUES(13,'In summer we have to mow the lawn twice a week.','夏天我們每週得修剪草坪兩次。',13); INSERT INTO examples VALUES(14,'The theatre has a seating capacity of 2 000.','那座劇院能容納2 000名觀眾。',14); INSERT INTO examples VALUES(15,'The hotel can accommodate up to 500 guests.','這家旅館可供500位旅客住宿。',15); INSERT INTO examples VALUES(16,'It is a military academy.','這是一所軍校。',16); INSERT INTO examples VALUES(17,'She had slipped and badly bruised her face.','她滑了一跤,摔得鼻青臉腫。',17); INSERT INTO examples VALUES(18,'He was the victim of a very brutal murder.','他是一樁惡性謀殺案的受害者。',18); INSERT INTO examples VALUES(19,'Do I have the hardware?','有必備的硬體設施麼?',19); INSERT INTO examples VALUES(20,'He has a clause in his contract which entitles him to a percentage of the profits.','他的合同中有一項條款,使他有權分得一定比例的利潤。',20); INSERT INTO examples VALUES(21,'The ship was in dock .','船泊在船塢。',21); INSERT INTO examples VALUES(22,'The doctrine was based on three fundamental principles. ','這個學說建立在三條基本原理之上。',22); INSERT INTO examples VALUES(23,'He and his partner had made a bargain to tell each other everything.','他和他的合夥人約定,要互通訊息,毫無保留。',23); INSERT INTO examples VALUES(24,'What level of profit do you envisage?','你預計會有什麼樣的利潤水平?',24); CREATE TABLE IF NOT EXISTS `vocabulary_tiku`( `vocabulary_tiku_id` INT UNSIGNED NOT NULL PRIMARY KEY, `title` VARCHAR(50), `A` VARCHAR(50), `B` VARCHAR(50), `C` VARCHAR(50), `D` VARCHAR(50), `word_level` CHAR(4) CHECK(level in ('四級','六級')), `word_in_tiku_id` INT UNSIGNED NOT NULL, FOREIGN KEY(word_in_tiku_id) REFERENCES vocabularies(word_id) )ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO vocabulary_tiku VALUES(1,'下面哪個單詞的意思是"拋棄、丟棄"?',"abandon","abc","abc","abc","四級",1); INSERT INTO vocabulary_tiku VALUES(2,'下面哪個單詞的意思是"不正常的、變態的"?',"abnormal","abc","abc","abc","四級",2); INSERT INTO vocabulary_tiku VALUES(3,'下面哪個單詞的意思是"企業家、主辦人"?',"entrepreneur","abc","abc","abc","六級",3); INSERT INTO vocabulary_tiku VALUES(4,'下面哪個單詞的意思是"競賽;對手"?',"match","abc","abc","abc","四級",4); INSERT INTO vocabulary_tiku VALUES(5,'下面哪個單詞的意思是"刪除"?',"delete","abc","abc","abc","四級",5); INSERT INTO vocabulary_tiku VALUES(6,'下面哪個單詞的意思是"擁抱、包圍"?',"embrace","abc","abc","abc","四級",6); INSERT INTO vocabulary_tiku VALUES(7,'下面哪個單詞的意思是"流行的、時髦的"?',"fashionable","abc","abc","abc","四級",7); INSERT INTO vocabulary_tiku VALUES(8,'下面哪個單詞的意思是"一般地、通常地"?',"generally","abc","abc","abc","四級",8); INSERT INTO vocabulary_tiku VALUES(9,'下面哪個單詞的意思是"頂點、高潮"?',"climax","abc","abc","abc","六級",9); INSERT INTO vocabulary_tiku VALUES(10,'下面哪個單詞的意思是"說明、圖解"?',"illustration","abc","abc","abc","四級",10); INSERT INTO vocabulary_tiku VALUES(11,'下面哪個單詞的意思是"記者、新聞工作者"?',"journalist","abc","abc","abc","四級",11); INSERT INTO vocabulary_tiku VALUES(12,'下面哪個單詞的意思是"知識、學識、知道"?',"knowledge","abc","abc","abc","四級",12); INSERT INTO vocabulary_tiku VALUES(13,'下面哪個單詞的意思是"草坪、草地、草場"?',"lawn","abc","abc","abc","四級",13); INSERT INTO vocabulary_tiku VALUES(14,'下面哪個單詞的意思是"容量、能力"?',"capacity","abc","abc","abc","四級",14); INSERT INTO vocabulary_tiku VALUES(15,'下面哪個單詞的意思是"容納;供應、供給"?',"accommodate","abc","abc","abc","六級",15); INSERT INTO vocabulary_tiku VALUES(16,'下面哪個單詞的意思是"私立中學、專科院校"?',"academy","abc","abc","abc","六級",16); INSERT INTO vocabulary_tiku VALUES(17,'下面哪個單詞的意思是"青腫、傷痕"?',"bruise","abc","abc","abc","六級",17); INSERT INTO vocabulary_tiku VALUES(18,'下面哪個單詞的意思是"殘忍的、野蠻的"?',"brutal","abc","abc","abc","六級",18); INSERT INTO vocabulary_tiku VALUES(19,'下面哪個單詞的意思是"五金器具、硬體"?',"hardware","abc","abc","abc","四級",19); INSERT INTO vocabulary_tiku VALUES(20,'下面哪個單詞的意思是"子句;條款"?',"clause","abc","abc","abc","六級",20); INSERT INTO vocabulary_tiku VALUES(21,'下面哪個單詞的意思是"dock"?',"船塢、碼頭、船廠","abc","abc","abc","六級",21); INSERT INTO vocabulary_tiku VALUES(22,'下面哪個單詞的意思是"教義、主義、學說"?',"doctrine","abc","abc","abc","六級",22); INSERT INTO vocabulary_tiku VALUES(23,'下面哪個單詞的意思是"交易"?',"bargain","abc","abc","abc","四級",23); INSERT INTO vocabulary_tiku VALUES(24,'下面哪個單詞的意思是"面對、正視、想象"?',"envisage","abc","abc","abc","六級",24);

delete查詢語句:

#建立觸發器:根據單詞刪除該單詞的例句、題庫
CREATE TRIGGER `deleteAssociationByWord`
AFTER DELETE
ON `vocabularies` FOR EACH ROW
BEGIN
    DELETE FROM examples
    WHERE word_in_sentence_id=OLD.`word_id`;
    DELETE FROM vocabulary_tiku
    WHERE word_in_tiku_id=OLD.`word_id`;
END

#刪除觸發器
DROP TRIGGER deleteAssociationByWord

#先關閉外來鍵約束檢查,再執行刪除語句,最後再開啟外來鍵約束檢查
SET foreign_key_checks = 0;
DELETE FROM vocabularies
WHERE word="climax";
SET foreign_key_checks = 1;

lookFor查詢:

# 根據單詞查詢該單詞的翻譯、等級
CREATE PROCEDURE queryTranslateByWord(IN wordParam VARCHAR(20))
BEGIN
    SELECT word,translate,vocabularies.`level`
    FROM vocabularies
    WHERE word like wordParam;
END

# 刪除該儲存過程
DROP PROCEDURE IF EXISTS queryTranslateByWord

# 呼叫方法
CALL queryTranslateByWord('%ab%')

# 根據單詞查詢該單詞的例句
CREATE PROCEDURE queryExampleByWord(IN wordParam VARCHAR(20))
BEGIN
    SELECT word,sentence,examples.translate
    FROM vocabularies,examples
    WHERE vocabularies.word_id=examples.word_in_sentence_id AND word=wordParam;
END

# 刪除該儲存過程
DROP PROCEDURE IF EXISTS queryExampleByWord

# 呼叫方法
CALL queryExampleByWord('climax')

produce查詢:

# 根據級別(四級 六級)生成簡單測試題
CREATE PROCEDURE produceTestByLevel(IN levelParam CHAR(4))
BEGIN
    SELECT title,A,B,C,D
    FROM vocabulary_tiku
    WHERE word_level=levelParam
    ORDER BY RAND() LIMIT 5;
END

# 刪除該儲存過程
DROP PROCEDURE IF EXISTS produceTestByLevel

# 呼叫方法
CALL produceTestByLevel('四級');

view查詢:

#建立檢視
CREATE VIEW theView
AS
SELECT vocabularies.word,vocabularies.translate,vocabularies.`level`,examples.sentence
FROM vocabularies INNER JOIN examples ON vocabularies.word_id=examples.word_in_sentence_id

SELECT *
FROM theView

#刪除檢視
DROP VIEW theView