學習筆記12(選做)
本章討論了 MySQL關係資料庫系統;介紹了 MySQ L並指出了它的重要性;展示瞭如 何在Linux機器上安裝和執行MySQL ;演示瞭如何使用MySQL在命令模式和批處理模式 下使用SQL指令碼建立和管理資料庫;說明了如何將MySQL與C程式設計相結合;演示瞭如何 將MySQL與PHP整合,通過動態Web頁面建立和管理資料庫。
MySQL
MySQL (MySQL2018 )是一個關係資料庫系統(Codd 1970 )c在關係資料庫中,資料 儲存在表中。每個表由多個行和列組成。表中的資料相互關聯。表也可能與其他表有關聯。 關係結構使得可在表上執行查詢來檢索資訊並修改資料庫中的資料。關係資料庫系統的標準 查詢語言是SQL (結構化查詢語言),包括MySQLo
MySQL是一個開源資料庫管理系統,由伺服器和客戶機組成。在將客戶機連線到服 務器後,使用者可向伺服器輸入SQL命令,以便建立資料庫,刪除資料庫,儲存、組織和檢 索資料庫中的資料。MySQL有廣泛的應用。除了提供標準的資料庫系統服務外,MySQL 和PHP (PHP 2018)已成為大多數資料管理和線上商務網站的主幹網。本章介紹了 MySQLo我們將介紹MySQL的基礎知識,包括如何在Linux中安裝/配置MySQL,如 何使用MySQL建立和管理簡單資料庫,以及如何在C語言和PHP程式設計環境中與MySQL 互動。
安裝 MySQL
對於Ubuntu 16.04及以後版本,通過以下操作安裝MySQL:
sudo apt-get install mysql-server
mysql-server包包括一個MySQL伺服器和一個客戶機。在安裝MySQL時,它會詢問根用 戶密碼。使用者可以使用與Ubuntu相同的登入密碼。安裝MySQL後,可通過執行指令碼對其 進行配置以獲得更好的安全性:
mysqlsecureinstallation
要得到簡單和標準的安全設定,讀者可以按Y,然後按ENTER,以接受所有問題的預設值。
Slackware Linux預裝了 MySQL,但仍然需要配置。否則,Slackware會在MySQL數 據庫啟動時顯示一條錯誤訊息。在Slackware 14.0或更早版本中,可通過以下步驟配置
(I)設定my.cnf : MySQL在啟動時載入一個名為my.cnf的配置檔案。該檔案要在首
次設定MySQL時建立。在/etc目錄中,有幾個示例my.cnf檔案,檔名分別是my-small. cnf. my-large.cnf等。選擇所需的版本來建立my.cnf檔案,如
cp /etc/my-small.cnf /etc/my.cnf
(2)安裝所需資料庫:MySQ L需要一個所需資料庫集,用於使用者識別等。要安裝它們, 可使用mysql使用者作為超級使用者,並使用以下命令安裝所需的初始資料庫。
mysql_install_db
(3 )設定所需的系統許可權:該步驟確保mysql使用者擁有mysql系統的所有權。
chown -R inysql.mysql /var/lib/mysql
(4 )通過以下操作使Zetc/rc.d/rc.mysqld可執行:
chmod 7S5 /etc/rc.d/rc.mysqld
這將在後續系統引導上自動啟動MySQL守護程序mysqldo
Slackware 14.2 使用 MariaDB 代替 MySQL。除了未繫結到 Oracle 之外,MariaDB 與 My- SQL資料庫基本相同。事實上,它仍然使用mysqld作為它的守護程序名。在Slackware 14.2中,MySQL已經有一個預設.cnf檔案,所以不再需要第1步。按照上面列出的第2 步到第4步配置MySQL。配置完成後,通過以下操作手動啟動MySQL守護程序mysqld:
/etc/rc.d/rc.mysqld -start
使用 MySQL
假設MySQL伺服器已經設定好並在Ubuntu或Slackware Linux機器上執行。MySQL 伺服器可以設定為支援不同的使用者。為簡單起見,我們將只假定根使用者。為了使用MySQL, 使用者必須執行一個MySQL客戶機來連線到服務器。MySQL支援來自遠端IP主機的客戶機 連線。為了簡單起見.我們將在同一臺機器(即預設本地主機)上執行伺服器和客戶機。下 面幾節介紹如何使用MySQL管理資料庫。
連線到MySQL伺服器
使用MySQL的第一步是執行MySQL客戶機程式。從X-window終端輸入MySQL客 戶機命令mysql,它連線到同一臺計算機上預設本地主機上的MySQL服務器。
mysq:! -u root -p # specify the root user with password
Enter password: # enter the MySQL root user password
mysql > # mysql prompt
;連線到MySQL伺服器後,即可訪冋MySQL shell,如mysql>提示符所示 MySQL shell類似於普通的shello它會顯示一個mysql>提示符,要求使用者輸入可供MySQL伺服器 執行的SQL命令。與普通sh類似,它還維護一個命令歷史記錄,允許使用者通過箭關鍵冋憶 和修改先前的命令。然而,它只接受MySQL命令或MySQL指令碼,而不接受普通sh命令。 在輸入MySQL命令時,讀者要注意以下幾點。
・所有的MySQL命令列末尾必須是分號。對於長命令,可在單獨行中輸入命令短語 (按下ENTER鍵)。MySQL將會通過-> 符號繼續提示更多的輸入,直到它看到一個 結束分號。
• MySQL命令列不區分大小寫。雖然不是強制要求,但為了清楚和更容易識別,通常 使用大寫編寫MySQL命令,使用小寫編寫資料庫、表、使用者名稱或文字。
顯示資料庫
SHOW DATABASES
命令可顯示MySQL中的當前資料庫。
新建資料庫如果資料庫dbname還不存在,那麼CREATE DATABASE dbname命令將建立一個名為 dbname的新資料庫。如果資料庫已經存在,則可以使用可選的IF NOT EXISTS子句對該命 令進行限定,以避免出現錯誤訊息。
mysql> CREATE DATABASE testdb Query OK; 1 row affected (0.02 sec) # mysql response
建立新資料庫後,輸入SHOW DATABASES以査看結果。
mysql> SHOW DATABASES; + + I Database + + I information_schema | I mysql | I per formance_schema | I test I I testdb I + + 5 rows in set (0.00 sec)
14.3.4刪除資料庫
DROP DATABASE dbname
會刪除已存在的命名資料庫。該命令可以用一個可選的IF EXISTS子句限定。注意,DROP操作是不可逆的。一旦資料庫被刪除,就無法撤銷或恢復。 因此,須謹慎使用。
mysql> DROP DATABASE testdb; Query OK; one row affected (0.04 sec) mysql> SHOW DATABASES; + + I Database I info rma t i on_s chema | I mysql I I performance_schema | I test I + + 4 rows in set (0.01 sec)
選擇資料庫
假設MySQL已經有幾個資料庫。為了操作特定的資料庫,使用者必須通過USE dbname 命令選擇一個數據庫。
修改表
ALTER TABLE
命令用於新增、刪除或修改當前表中的列。它還用於新增和刪除當前表 中的各種約束條件。
修改表名
如需修改表名,可使用以下命令:
ALTER TABLE table_name RENAME TO new_name;新增列
要在表中新增列,可使用以下命令:
ALTER TABLE table_name ADD column_name datatype;
刪除行
可使用以下命令刪除列:
ALTER TABLE table_name DROP column_name datatype;
更改/修改行
可使用以下命令修改表中某列的資料型別:
ALTER TABLE table_name ALTER COLUMN column_name datatype;C語言MySQL程式設計
MySQL可以與多種程式語言配合使用,如C語言、Java和Python等。本節介紹如何
進行C語言MySQL程式設計。C語言程式與MySQL之間的介面由mysqlclient庫中的一系列 MySQL C API 函式(C API 2018a, b)支援。
使用C語言構建MySQL客戶機程式
思考以下C程式,它可以列印libmysqlclient庫版本。
// client.c file #include <stdio.h> #include <my_global.h> #include <mysql.h> int maln(int argc, char *argc[]) printf("MySQL client version is : %s\n", mysql_get_client_info());
若要編譯程式,可輸入
gcc client.c -I/usr/include/mysql/ -Imysqlclient
注意,-I選項將包含檔案路徑指定為/usr/include/mysql, -1選項指定mysqlclient庫。 然後,執行a.out。它會列印
MySQL client version is : version_nurober, e.g. 5.5.53
使用C語言連線到MySQL伺服器