MySQL是一種流行的開源數據庫,具有出色的可擴展性和性能。以下是MySQL的基礎知識點概述:
1. 數據庫和表
MySQL是由多個數據庫組成的,每個數據庫包含多個表。表是數據的集合,它們由列和行組成。每列定義表中的一個屬性。
# 創建一個名為 mydatabase 的新數據庫 CREATE DATABASE mydatabase; # 創建一個新表 CREATE TABLE employees ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, firstname VARCHAR(30) NOT NULL, lastname VARCHAR(30) NOT NULL, email VARCHAR(50), reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB;
2. 數據類型
MySQL支持多種數據類型,包括數值、字符串、日期/時間等。以下是一些示例:
CREATE TABLE example ( column1 INT, column2 VARCHAR(50), column3 DOUBLE, column4 DATE, column5 TIMESTAMP );
3. 索引
索引可以提高MySQL查詢性能。它們是數據庫中特定列的值的快速引用??梢栽趧摻ū頃r添加索引。
CREATE TABLE employees ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, firstname VARCHAR(30) NOT NULL, lastname VARCHAR(30) NOT NULL, email VARCHAR(50), reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX (lastname, firstname) ) ENGINE=InnoDB;
4. 主鍵和外鍵
主鍵是表中唯一的標識符。外鍵是另一個表的主鍵。外鍵用于將多個表連接在一起。
CREATE TABLE employees ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, firstname VARCHAR(30) NOT NULL, lastname VARCHAR(30) NOT NULL, email VARCHAR(50), reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB; CREATE TABLE orders ( order_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, customer_id INT(6) UNSIGNED NOT NULL, order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX (customer_id), FOREIGN KEY (customer_id) REFERENCES employees(id) ) ENGINE=InnoDB;
5. 視圖
視圖是對數據進行過濾和排序的虛擬表。它們是根據數據庫中的一個或多個表創建的。
CREATE VIEW customer_list AS SELECT customers.id, CONCAT(customers.firstname, ' ', customers.lastname) AS full_name, orders.order_date FROM customers INNER JOIN orders ON customers.id = orders.customer_id;
這是MySQL的一些基礎知識點。更深入的學習MySQL需要學習更多的高級主題,如性能優化、復制和故障恢復等。