Ch14學習筆記——MySQL資料庫系統
Ch14學習筆記——MySQL資料庫系統
14.1 MySQL簡介
MySQL (MySQL2018 )是一個關係資料庫系統(Codd 1970 )。在關係資料庫中,資料儲存在表中。每個表由多個行和列組成。表中的資料相互關聯。表也可能與其他表有關聯。關係結構使得可在表上執行查詢來檢索資訊並修改資料庫中的資料。關係資料庫系統的標準查詢語言是SQL (結構化查詢語言),包括MySQL。
14.2 安裝MySQL
在Ubuntu20.04
中使用sudo apt install mysql-server
安裝MySQL。
使用mysql_secure_installation
命令進行安全配置
一路yes保持預設,設定密碼
到此已完成MySQL資料庫的安裝和配置。
14.3 使用MySQL
使用命令sudo mysql -u root -p
命令連線到資料庫。
14.3.1 簡單的命令
命令 | 作用 |
---|---|
SHOW DATABASES; | 顯示資料庫 |
CREATE DATABASE |
建立資料庫 |
DROP DATABASE |
刪除資料庫 |
use |
選擇資料庫 |
14.3.2 複雜一點點的命令
1. MySQL中的資料型別
- 數值型別
INT
:整數4位元組,TINYINT
:1位元組,SMALLINT
:2位元組FLOAT
:浮點數
- 字串型別
CHAR(size)
:固定長度字串,長度為1~255位元組VARCHAR(size)
:可變長字串,但不能使用任何空格TEXT
:可變長度的字串
- 日期和時間型別
DATE
:日期格式為YYYY-MM-DD
格式TIME
:以HH:MM:SS
格式儲存時間
2. 表操作
建立表和刪除表
使用CREATE TABLE <TABLENAME>
命令建立表,使用DROP TABLE <TABLENAME>
刪除表
-
示例 建立一個帶有如下資料結構的表
struct students{ int student_id; # an integer ID number must exist char name[20]; # name string of 20 chars int score; # an integer exam score, which may not exist }
使用如下命令
CREATE TABLE students ( student_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, name CHAR(20), score INT );
修改表
-
插入行
INSERT INTO table_name VLAUES (columnValue1, columnValue2, ... .);
-
刪除行
DELETE FROM table_name; # delete all rows of a table DELETE FROM table_name WHERE condition; # delete row by condition
-
更新表
UPDATE table_name SET col1 = value1, col2 = value2, ... WHERE condition;
-
修改表
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; # 修改行
14.3.13 關聯表
1. 一對一關係
一對一(1-1 )關係是指兩個表僅基於一個匹配行相互關聯的關係。可以使用主鍵-外來鍵約束條件建立這類關係。
2. 一對多關係
在資料塊中,一對多或1-M關係比1-1關係更常見,也更有用。一對多關係是指一 個表中的一行在另一個表中有多個匹配行的關係。可以使用主鍵-外來鍵關係來建立這種關係。
3. 多對多關係
如果一個表中的多條記錄與另一個表中的多條記錄相關,則兩個表具有多對多(M-M) 關係。
4. 連線操作
在MySQL中,可使用連線操作在多個表中檢索資料。連線操作有4種不同的型別。
-
(INNER) JOIN table 1, table2
:檢索兩個表中共有的項。 -
LEFT JOIN table 1, table2
:檢索表1中的項以及兩個表中共有的項。 -
RIGHT JOIN tablel,table2
:檢索表2中的項以及兩個表中共有的項。 -
OUTER JOIN tabell,table2
:檢索兩個表中非共有以及沒有用的項。
14.3.16 MySQL 指令碼
與普通Unix/Linux sh 一樣,MySQL shell也可以接受和執行指令碼檔案。MySQL指令碼文 件的字尾是.sql
。它們包含MySQL伺服器要執行的MySQL命令。我們可以使用MySQL 指令碼來建立資料庫,在資料庫中建立表,插入表條目和修改表內容,而不是手動輸入命令列。