第一章? 基本操作
一、管理數據庫
難點:創建數據庫
輸入cmd的MySQL安裝路徑C:\Program Files\MySQL\MySQL Server 8.0\bin?
1.查看所有數據庫
show databases;
2.創建數據庫
create database hsusers default charset utf8 collate utf8_general_ci;create database:這是一個 SQL 關鍵字,用于指示數據庫系統創建一個新的數據庫。hsusers:這是要創建的數據庫的名稱。在實際使用時,你可以依據自身需求將其替換為合適的名稱。default charset utf8:指定了該數據庫默認的字符集為 utf8。字符集定義了數據庫存儲和處理文本時所采用的字符編碼方式。utf8 能夠支持多種語言的字符,是一種廣泛使用的字符編碼。collate utf8_general_ci:指定了該數據庫默認的排序規則為 utf8_general_ci。排序規則決定了在進行字符串比較和排序時的規則。utf8_general_ci 中的 ci 表示大小寫不敏感(Case - Insensitive),即數據庫在比較字符串時不會區分大小寫。
3.刪除數據庫
drop database day1db;
4.進入數據庫
use day1db;
5.查看數據庫中的表
show tables;
create database hsusers default charset utf8 collate utf8_general_ci;
二、管理數據表
難點:創建數據表
(一)創建表
在 MySQL 里,你可以使用?CREATE TABLE
?語句來創建表。下面為你詳細介紹其基本語法、示例以及不同參數的作用。
基本語法
sql
CREATE TABLE table_name (column1 datatype [optional_constraints],column2 datatype [optional_constraints],...[table_constraints]
);
語法解釋
CREATE TABLE
:這是用于創建表的關鍵字。table_name
:要創建的表的名稱,需保證在數據庫中該名稱是唯一的。column1, column2, ...
:表中的列名,每個列都有對應的?datatype
(數據類型)。datatype
:指定列可以存儲的數據類型,例如?INT
(整數)、VARCHAR
(可變長度字符串)、DATE
(日期)等。optional_constraints
:可選擇的列約束條件,像?NOT NULL
(非空)、UNIQUE
(唯一)、PRIMARY KEY
(主鍵)、FOREIGN KEY
(外鍵)等。table_constraints
:表級約束條件,用于定義跨列的約束,例如復合主鍵、唯一鍵組合等。
示例
以下是創建一個名為?employees
?的表的示例,該表包含員工的基本信息:
sql
CREATE TABLE employees (id INT NOT NULL AUTO_INCREMENT,first_name VARCHAR(50) NOT NULL,last_name VARCHAR(50) NOT NULL,birth_date DATE,hire_date DATE,salary DECIMAL(10, 2),department_id INT,PRIMARY KEY (id),FOREIGN KEY (department_id) REFERENCES departments(id)
);
示例解釋
id
:是一個自增的整數列,作為主鍵,確保每個員工記錄有唯一的標識符。first_name
?和?last_name
:為可變長度字符串列,用于存儲員工的名字和姓氏,且不能為空。birth_date
?和?hire_date
:為日期列,分別存儲員工的出生日期和入職日期。salary
:是一個十進制數,用于存儲員工的工資,精度為 10 位,小數部分為 2 位。department_id
:是一個整數列,作為外鍵,引用?departments
?表中的?id
?列,用于關聯員工所屬的部門。
創建臨時表
若你需要創建一個臨時表(該表在會話結束時會自動刪除),可以使用?CREATE TEMPORARY TABLE
?語句,語法如下:
sql
CREATE TEMPORARY TABLE temp_table_name (column1 datatype [optional_constraints],column2 datatype [optional_constraints],...[table_constraints]
);
這些示例和語法應該能幫助你在 MySQL 中創建所需的表。在實際使用時,根據具體需求調整列名、數據類型和約束條件。
(二)列約束條件
在 MySQL 中,列約束條件用于限制列中存儲的數據,確保數據的完整性和一致性。以下是常見的列約束條件及其含義:
1.?NOT NULL
- 含義:該約束規定列不允許存儲?
NULL
?值。也就是說,在向該列插入數據時,必須提供一個有效的值。 - 示例:
sql
CREATE TABLE users (id INT,name VARCHAR(50) NOT NULL
);
在這個?users
?表中,name
?列不允許為?NULL
,插入數據時必須提供一個名字。
2.?UNIQUE
- 含義:此約束保證列中的所有值都是唯一的,即同一列中不能有重復的值。
- 示例:
sql
CREATE TABLE employees (id INT,email VARCHAR(100) UNIQUE
);
在?employees
?表中,email
?列的每個值都必須是唯一的,不能有兩個員工使用相同的電子郵件地址。
3.?PRIMARY KEY
- 含義:
PRIMARY KEY
?約束用于唯一標識表中的每一行記錄。它結合了?NOT NULL
?和?UNIQUE
?的特性,即主鍵列的值不能為?NULL
?且必須唯一。一個表只能有一個主鍵,但主鍵可以由多個列組成(復合主鍵)。 - 示例:
sql
CREATE TABLE products (product_id INT PRIMARY KEY,product_name VARCHAR(200)
);
這里?product_id
?列被定義為主鍵,用于唯一標識每個產品。
4.?FOREIGN KEY
- 含義:
FOREIGN KEY
?約束用于建立表與表之間的關聯。它引用另一個表的主鍵列,確保該列中的值必須存在于被引用表的主鍵列中。通過外鍵可以實現數據庫的參照完整性。 - 示例:
sql
CREATE TABLE orders (order_id INT PRIMARY KEY,product_id INT,FOREIGN KEY (product_id) REFERENCES products(product_id)
);
在?orders
?表中,product_id
?列是外鍵,它引用了?products
?表的?product_id
?主鍵列。這意味著?orders
?表中的?product_id
?值必須是?products
?表中已經存在的?product_id
?值。
5.?DEFAULT
- 含義:
DEFAULT
?約束為列指定一個默認值。當插入數據時,如果沒有為該列提供值,則會使用默認值。 - 示例:
sql
CREATE TABLE customers (customer_id INT,status VARCHAR(20) DEFAULT 'active'
);
在?customers
?表中,如果插入數據時沒有為?status
?列提供值,那么該列將自動使用默認值?'active'
。
6.?CHECK
- 含義:
CHECK
?約束用于限制列中的值必須滿足特定的條件。在 MySQL 8.0.16 及以后的版本中,CHECK
?約束是強制執行的。 - 示例:
sql
CREATE TABLE students (student_id INT,age INT,CHECK (age >= 18)
);
在?students
?表中,CHECK
?約束確保?age
?列的值必須大于或等于 18。
7.?AUTO_INCREMENT
- 含義:
AUTO_INCREMENT
?約束用于為整數類型的列自動生成唯一的、遞增的值。通常與?PRIMARY KEY
?約束一起使用,用于自動生成主鍵值。 - 示例:
sql
CREATE TABLE users (user_id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50)
);
在?users
?表中,每次插入新記錄時,user_id
?列會自動生成一個比上一個記錄的?user_id
?值大 1 的新值。
注意:MySQL并非只有這個7個列約束條件,其他孤不常用,在此不作深入講解。