選擇
數據庫技術的基本概念與方法:
E-R圖提供了表示信息世界中實體,屬性和聯系的方法
數據庫系統的核心是數據庫管理系統
E-R圖是數據庫設計的工具之一,它一般適用於建立數據庫的概念模型
將E-R圖轉換到關系模式時,實體與聯系都可以表示成關系
在關系數據庫設計中,設計關系模式屬於數據庫設計的邏輯設計階段
從E-R模型向關系模型轉換,一個M:Ndex聯系轉換成一個關系模式時,該關系模式的鍵是M端實體鍵與N端實體鍵組合
數據庫和表:
VAR類型不是MySQL中常用的數據類型
表數據的基本操作:
CREATE語句不是表數據的基本操作語句
數據庫的查詢:
在MySQL中,通常使用SELECT語句來進行數據的檢索,輸出操作
在SELECT語句中,可以使用GROUP BY字句,將結果集中的數據行根據選擇列的值進行邏輯分組,以便能匯總表內容的子集,即實現對每個組的聚集計算。
填空
數據庫技術的基本概念與方法:
數據庫系統的三級模式結構是指數據庫系統是由模式,外模式和內模式三級構成
數據庫系統的運行與應用結構有客戶/服務器結構(C/S結構)和瀏覽器/服務器結構(B/S結構)兩種
在數據庫的三級模式體系結構中,外模式與模式之間的映射實現了數據庫的邏輯獨立性
用二維表結構表示實體以及實體間聯系的數據模型稱為關系數據模型
數據庫設計包括概念設計,邏輯設計和物理設計
在E-R圖中,矩形表示實體
MySQL概述:
MySQL數據庫所支持的SQL語言主要包含數據定義語言(DDL),數據操縱語言(DML),數據控制語言(DCL)和MySQL擴展增加的語言要素幾個部分
在MySQL的安裝過程中,若選用“啟用TCP/IP網絡”,則MySQL會默認選用的端口號是3306
MySQL安裝成功后,在系統中回默認建立一個root用戶
MySQL安裝包含典型安裝,定制安裝和完全安裝三種安裝類型
數據庫和表:
在MySQL,通常使用NULL值來表示一個列值沒有值或缺值的情形
在CREATE TABLE語句中,通常使用PRIMARY KEY關鍵字來指定主鍵
表數據的基本操作:
在MySQL中,可以使用INSERT或REPLACE語句,向數據庫中一個已有的表插入一行或多行元組
數據
在MySQL中,可以使用DELETE語句或TRANCANTE語句刪除表中的一行或多行數據
在MySQL中,可以使用UPDATE語句來修改,更新一個表或多個表中的數據
數據庫的查詢:
SELECT語句的執行過程是從數據庫中選取匹配的特定行和列,並把這些數據組織成一個結果集,然后以一張臨時表的形式返回
當使用SELECT語句返回的結果集中行數很多時,為了便於用戶對結果數據的瀏覽和操作,可以使用LIMIT子句來限制被SELECT語句返回的行數。
索引:
創建普通索引時,通常使用的關鍵字是INDEX或KEY
創建唯一性索引時,通常使用的關鍵字是UNIQUE
視圖:
在MySQL中,可使用CREATE VIEW語句創建視圖
在MySQL中,可使用DROP VIEW語句刪除視圖
數年據完整性約束與表維護語句:
MySQL支持關系模型中實體完整性,參照完整性和用戶定義的完整性三種不同的完整性約束
觸發器:
在實際使用中,MySQL所支持的觸發器有INSERT觸發器,DELETE觸發器和UPDATE觸發器三種
訪問控制與安全管理:
在MySQL中,可以使用CREATE語句來為指定數據庫添加用戶。
在MySQL中,可以使用revoke語句來實現權限的撤銷。
簡答
數據庫技術的基本概念與方法:
簡述什么是數據庫管理系統,它的功能有哪些?
數據庫管理系統是一種操作和管理數據庫的大型軟件,是用於建立,使用和維護數據庫,簡稱dbms。它對數據庫進行統一的管理和控制,以保證數據庫的安全性和完整性。它的主要功能有數據定義,數據操作,數據庫的運行及管理,數據組織,存儲及管理,數據庫的保護及維護,通信功能等
簡述什么是數據庫系統?
數據庫,數據庫管理系統與操作數據庫的應用程序,加上支撐它們的硬件平台,軟件平台與數據庫有關的人員(如DBA,程序設計者等)一起,就構成了一個完整的數據庫系統。
什么是模式,外模式和內模式?
模式:稱為邏輯模式,是數據庫的主題,是數據的全局結構和特征描述。
外模式:稱為子模式和用戶模式,是數據庫看得見的局部數據的邏輯結構和特征的描述,是數據庫的用戶視圖,是與某種應用相關的邏輯表示。
內模式:稱為存儲模式,定義了數據庫中的全體物理結構,有定義數據的存儲方法。
簡述C/S結構和B/S結構的區別
CS是建立在局域網的基礎上,BS是建立在廣域網的基礎上,BS容易維護,只需要升級服務端,CS升級比較困難,需要所有用戶客戶端都要升級
簡述關系規范化的過程
對於存在數據冗余,插入異常,刪除異常問題的關系模式,應采取將一個關系模式分解為多個關系模式的方法進行處理。一個低一級范式的關系模式,通過模式分解可以轉換為若干個高一級范式的關系模式,這就是所謂的規范化過程
MySQL概述:
列舉MySQL的系統特性
良好的可移植性,支持多操作平台,支持多線程,支持多種編程語言,支持大型數據庫
簡述MySQL的安裝與配置過程
把MySQL文件壓縮包解壓后,用管理員模式運行dos界面,進入到MySQL解壓的文件內bin層,輸入mysqld-install命令
列舉兩個常用的MySQL客戶端管理工具
MySQL命令行客戶端,MySQL圖形化管理工具phpAdmin
請解釋SQL是何種類型的語言?
SQL是結構化查詢語言(Structured Q-ery Language)的英文縮寫,它是一種專門用來與數據庫通信的語言
數據庫和表:
分別解釋AUTO_INCREMENT,默認值和NULL值的用途
AUTO_INCREMENT:為列設置自增屬性,只有整型列才能設置;
默認值:在向表插入數據時,如果沒有明確給出某個表列所對應的值,則此時DBMS允許為此表列指定的一個值;
NULL值:默認設置,不是not null就是null。
使用MySQL命令行客戶端在MySQL中創建一個名為db_test的數據庫
CREATE DATABASE db_test;
使用MySQL命令行客戶端在數據庫db_test中,創建一個網絡留言版系統中用於描述網絡留言內容的數據表content,該表的結構如下:
(注:諸多練習將基於這里創建的數據庫db_test和表content)
USE db_test:
Database changed CREATE TABLE content
(content-id INT NOT NULL AUTO-INREMENT PRIMARY KEY,
subject VARCHAR(200);
words VARCHAR(1000);
username VARCHAR(50);
face VARCHAR(50);
email VARCHAR(50);
createtime DATETIME);
表數據的基本操作:
簡述INSERT語句與REPLACE語句的區別
insert: 插入一條新的數據, 假如主鍵相同的話會報錯
replace: 要插入的數據中索引值不同於表中任意一條數據的索引值,就增加一條新的數據,等同於
insert,否則,替換原來的數據,等同於先delete再insert
簡述DELETE語句與TRUNCATE語句的區別
DELETE語句和TRUNCATE語句,都是刪除數據表中的數據,但是它們對數據庫的影響是很不一樣的。一般來講DELETE用於日常數據表的刪除操作,TRUNCATE則用於對數據庫整體性的維護性操作。
TRUNCATE TABLE 比 DELETE 速度快,且使用的系統和事務日志資源少。 DELETE 語句每次刪除一行,並在事務日志中為所刪除的每行記錄一項。
TRUNCATE TABLE 通過釋放存儲表數據所用的數據頁來刪除數據,並且只在事務日志中記錄頁的釋放。
TRUNCATE,DELETE,DROP放在一起比較:
TRUNCATE TABLE:刪除內容、釋放空間但不刪除定義。 刪除定義:用DESCRIBE TABLE語句可以查出來的那些內容,包括列名和每列的存儲格式。
DELETE TABLE:刪除內容不刪除定義,不釋放空間。
DROP TABLE:刪除內容和定義,釋放空間
通俗點說:
truncate刪除的更徹底,所有的日志記錄都會沒有,並且是一把全清,不會有where條件。
有個比較大的區別就是truncate后自增長的ID列也會歸零,以后插入記錄ID從1開始。
但是delete后你再插入記錄,ID會從上次最大的數字開始。
delete 可以配合where條件。
使用INSERT語句向數據庫db_test的表content中插入一行描述了下列留言信息的數據:留言ID號由系統自動生成;留言標題為“MySQL問題請教”;留言內容為“MySQL中對表數據的基本操作有哪些?”;
留言人姓名為“MySQL初學者”;臉譜圖標文件名為“face.jpg”;電子郵件為“tom@gmail.com”;留言創建日期和時間為系統當前時間。
USE db_test;
Database changed INSERT INTO content(content_id,subject,words,username,face,email,createtime);
VALUES(NULL,'MySQL問題請教','MySQL中對表數據的基本操作有哪些?'
'MySQL初學者','face.jpg','tom@gmail.com',now());
使用UPDATE語句將數據庫db_test的表content中留言人姓名為"MySQL初學者"的留言內容修改為"如何使用INSERT語句?"
USE db_test;
Database changed UPDATE content
SET words='如何使用INSERT語句?'
WHERE username='MySQL初學者';
使用DELETE語句將數據庫db_test的表content中留言人姓名為"MySQL初學者"的留言信息刪除。
USE db_test;
Database changed DELETE FROM content
WHERE username='MySQL初學者';
數據庫的查詢:
什么是子查詢?
子查詢:一個查詢語句嵌套在另一個查詢語句內部的查詢。
請簡述UNION語句的作用。
把所有查詢的結果合並到一起,然后去掉相同的記錄。
使用SELECT語句將數據庫db_test的表content中留言人姓名為"MySQL初學者"的所有留言信息檢索出來。
USE db_test;
Database changed
SELECT * FROM content WHERE username='MySQL初學者';
索引:
簡述索引的概念及其作用
索引是對數據庫中一列或多列的值進行排序的一種結構。使用索引可提高數據庫中特定數據的查詢速度。
列舉索引的幾種分類
普通索引,唯一索引,主鍵索引,全文索引,聚類索引,空間索引,單個索引,復合索引
簡述在MySQL中創建,查看和測除索引的SQL語句
create index indexname on tablename;
show index from tablename;
drop index indexname on tablename;
簡述索引的弊端
索引會增加表單的更新時間,而且索引會占用額外的物理空間,降低運行速度
用CREATE INDEX語句在數據庫db_test的表content中,根據留言標題列的前三個字符采用默認的索引類創建一個升序索引index_subject。
USE db_test;
CREATE INDEX index_subject ON content(subject(3)ASC);
視圖:
解釋視圖與表的區別
視圖由表產生,是虛擬的表,表可以存儲數據,視圖不能儲存數據
使用視圖的益處
1.可以定制用戶數據,聚集特定的數據
2.可以簡化數據的操作
3.基表中的數據就有了一定的安全性
4.可以合並分離的數據,創建分區視圖
在數據庫db_test中創建視圖content_view,要求該視圖包含表content中所有留言人姓名為"MySQL初學者"的信息,並要求保證今后對該視圖數據的修改都必須符合留言人姓名為”MySQL初學者“這個條件
USE db_test;
CREATE VIEW content_view AS SWERE username='MySQL初學者' WITH CHECK OPTION
數年據完整性約束與表維護語句:
什么是實體完整性?
實體完整性:規定表的每一行在表中是唯一的實體;參照完整性:指2個表的關鍵字和外關鍵字的數據應一致,保證了表之間的數據一致性,防止了數據丟失或無意義的數據在數據庫中的擴散;用戶定義的完整性:不同關系的數據庫系統根據其應用環境的不同,往往需要一些特殊的約束條件。
MySQL是如何實現實體完整性約束的?
通過主鍵和外鍵的約束來實現
觸發器:
USEdb_test;
CREATE TRIGGER content_delete_trigger AFTER DELETE ON content FOR EACH ROW SET@str=' old content deleted! ';
事件:
什么是事件?
事件就是需要在指定的時刻才被執行的某些特定任務,其中這些特定任務通常是一些確定的SQL語句
簡述事件的作用
事件可根據需要在指定的時刻被事件調度器調用執行,並以此可取代原先只能由操作系統的計划任務來執行的工作。
事件與觸發器的區別
事件與觸發器相似,都是在某些事情發生的時候才被啟動,因此事件也可稱作臨時觸發器,其中事件基於特定時間周期觸發來執行某些任務,而觸發器是基於某個表所產生的事件觸發的,它們的區別也在於此。
在數據庫db_test中創建一個事件,用於每個月將表content中姓名為”MySQL留言者“的留言人所發的全部留言信息刪除,該事件開始於下個月並且在2013年12月31日結束。
USE db_test;
DELIMITER$$ CREATE EVENT IF NOT EXISTS event_delete_content ON SCHEDULE EVERY | MONTH ENDS' 2013-12-31 '
DO
BEGIN
IF YEAR(CURDATE())<2013 THEN
DELETE FROM content
WHERE username=' MySQL初學者 ';
END IF;
END$$
存儲過程與存儲函數:
什么是存儲過程?
存儲過程是一組為了完成某特定功能的SQL語句集,其實質上就是一段存放在數據庫中的代碼,它可以由聲明式的SQL語句(如CREATE,UPDATE和SELECT等語句)和過程式SQL語句(如IF-THEN-ELSE控制結構語句)組成。
舉例使用存儲過程的益處
可增強SQL語句的功能和靈活性,良好的封閉性;高性能;可減少網絡流量;存儲過程可作為一種安全機制來確保數據庫的安全性和數據的完整性
簡述游標在存儲過程中的作用
游標是一個被SELECT語句檢索出來的結果集。在存儲了游標后,應用程序或用戶就可以根據需要滾動或瀏覽其中的數據。
簡述存儲過程的與存儲函數的區別
1.存儲函數不能擁有輸出參數,這是因為存儲函數自身就是輸出參數;而存儲過程可以擁有輸出參數。
2.可以直接對存儲函數進行調用,且不需要使用CALL語句;而對存儲過程的調用,需要使用CALL語句。
3.存儲函數中必須包含一條RETURN語句,而這條特殊的SQL語句不允許包含於存儲過程中。
在數據庫db_test中創建一個存儲過程,用於實現給定表content中一個留言人的姓名即可修改表content中該留言人的電子郵件地址為一個給定的值。
USE db_test;
DELIMITER$$
CREATE PROCEDURE sp_update email(IN User_name VARCHAR(50) , IN e_mail VARCHAR(50))
BEGIN
UPDATE content SET email=e_mail WHERE username=user_name;
END$$
訪問控制與安全管理:
在MySQL中可以授予的權限有哪幾組?
在MySQL中可以授予的權限有這樣幾組:列權限;表權限;數據庫權限;用戶權限
在MySQL的權限授予語句中,可用於指定權限級別的值有哪幾類格式?
* :表當前數據庫中的所有表
*. :表所有數據庫中的所有表
db_name.* :表某個數據庫中的所有表
db_name.tbl_name:表某個數據庫中的某個表或視圖,db_name指定數據庫名,tbl_name指定表名或視圖名。
tbl_name:表某個表或視圖,tbl_name指定表名或視圖名
db_name.routine_name:表某個數據庫中的某個存儲過程或函數,routine_name指定存儲過程名或函數名。
假定當前系統中不存在用戶wanming,請編寫一段SQL語句,要求創建這個新用戶,並為其設置對應的系統登錄口令“123”,同時授予該用戶在數據庫db_test的表content上擁有SELECT和UPDATE的權限。
USE db_test;
GRANT SELEC ON db_test.content TO ' warnming ' @ ' localhost ' IDENTIFIED BY '123'
備份與恢復:
為什么MySQL中需要進行數據庫的備份與恢復操作?
保證數據的完整性和可靠性
MySQL數據庫備份與恢復的常用方法有哪些?
1.使用SQL語句備份和恢復表數據
2.使用MySQL客戶端實用程序備份和恢復數據
使用直接復制方法實現數據庫備份與恢復時,需要注意哪些事項?
1.兩個服務器必須使用相同或兼容的MySQL版本
2.兩個服務器必須硬件結構相同或相似,除非要復制的表使用MyISAM存儲格式,這是因為這種表可以為在不同的硬件體系中共享數據提供了保證。
二進制日志文件的用途是什么?
由於二進制Et志包含了數據備份后進行的所有更新,因此二進制日志的主要目的就是在數據恢復時能夠最大可能地更新數據庫。
請使用SELECT INTO ... OUTFILE語句,備份數據庫db_test中表content的全部數據到C盤的BACKUP目錄下一個名為backupcontent.txt的文件中,要求字段值如果是字符則用雙引號標注,字段值之間用逗號隔開,每行以問號為結束標志。
USE db_test;
SELECT*FROM content INTO OUTFILE'C:/BACKUP/backupcontent.txt'
FIELDS TERMINATED BY','
OPTIONALLY ENCLOSED BY' " '
LINES TERMINATED BY' ? ' ;
PHP是什么類型的語言?
是英文超文本預處理語言Hypertext Preprocessor的縮寫,PHP是一種HTML內嵌式的語言,是一種在服務器執行的嵌入HTML文檔的腳本語言,語言的風格有類似於C語言,被廣泛的運用。PHP的另一個含義是:菲律賓比索的標准符號
解釋嵌入在HTML文檔中的PHP腳本用什么標記符進行標記?
使用標簽“ < ?php “ 和 ” ? > ”
簡述使用PHP進行MySQL數據庫編程的基本步驟
1.首先建立與MySQL數據庫服務器的連接
2.然后選擇要對其進行操作的數據庫
3.再執行相應的數據庫操作,包括對數據的添加,刪除,修改和查詢等
4.最后關閉與MySQL數據庫服務器的連接
請編寫一段PHP程序,要求可通過該程序實現向數據庫db_test的表content中,插入一行描述了下列留言信息的數據:留言ID號由系統自動生成;留言標題為“MySQL問題請教”;留言內容為:“MySQL中對表數據的基礎操作有哪些?”;留言人姓名為“MySQL初學者”;臉譜圖標文件名為“face.jpg”;電子郵件為“tom@gmail.com”;留言創建日期和時間為系統當前時間。
開發實例:
使用PHP語言和MySQL數據庫編寫一個論壇留言板系統
1.html表單,提交數據至c.php
2。c.php連接數據庫,將數據存到mysql,同時讀取數據,輸出至html頁面
使用PHP語言和MySQL數據庫編寫一個電子公告系統
使用PHP語言和MySQL數據庫編寫一個博客管理系統
使用PHP語言和MySQL數據庫編寫一個用戶登陸系統