MySQL 基礎(一):數據類型與表管理

概念

簡單一句話概括,數據庫(DataBase)是按照數據結構來組織、管理和存儲數據的倉庫。

常見的數據庫

  1. Oracle
  2. DB2
  3. SQL Server
  4. Postgre SQL
  5. MySQL

相關術語

數據庫系統(DataBase System)DBS

  1. 數據庫(DataBase)
  2. 數據庫管理系統(DataBase Management System)DBMS
  3. 應用開發工具
  4. 管理員及用戶 DBA

SQL 語言–Stuctured Query Language:結構化查詢語言

  1. DDL 數據定義語言
  2. DML 數據操作語言
  3. DQL 數據查詢語言
  4. DCL 數據控制語言

MySQL 相關操作

配置文件

my.cnf 是 MySQL 的配置文件

登錄/退出 MySQL

  • 登錄

mysql -u root -p
mysql -u root -proot 直接加上密碼

  • 獲取版本號:

mysql -V
mysql --version

  • 登錄的同時打開數據庫

mysql -u root -p -D db_name

  • 退出:exit/quit

注意 :

  1. 命令行結束符默認使用 ;'\g 結束;
  2. 可以通過 help 或者 \h 或者 ? 加上相關關鍵字來查看手冊。
    例如:help create database

SQL 語句語法規範

常用 MySQL 的關鍵字需要大寫, 庫名、表名、字段名等使用小寫;SQL 語句支持拆行操作,拆分的時候不能把完整的單詞拆開;數據庫名稱、表名稱、字段名稱不要使用 MySQL 的保留字。

常用的 SQL 語句

SELECT USER()  --得到登錄用戶
SELECT VERSION() --得到 MySQL 版本信息
SELECT NOW() --得到當前的日期時間
SELECT DATABASE() --得到當前打開的數據庫
SHOW WARNINGS  --查看上一步操作產生的警告信息
SHOW DATABASES --查看所有的數據庫
mysql 中的註釋:# 或 -- 註釋內容

數據庫相關操作

創建數據庫

  • 創建數據庫
1. CREATE (DATABASE|SCHEMA) db_name;
注意:數據庫名稱最好有意義;名稱不要包含特殊字符或者 MySQL 關鍵字。

2. 檢查數據庫是否存在,不存在則創建
CREATE DATABASE [IF NOT EXISTS] db_name; 

3. 創建數據庫的同時指定編碼方式
CREATE DATABASE [IF NOT EXISTS] db_name 
DEFAULT CHARACTER SET 'charset';
  • 查看當前服務器下的全部數據庫
SHOW DATABASES|SCHEMAS;
  • 查看指定數據庫的詳細信息
SHOW CREATE DATABASE db_name;
  • 修改指定數據庫的編碼方式
ALTER DATABASE db_name [DAFAULT] CHARACTER SET 'charset';
  • 打開指定數據庫
USE db_name;

數據表的相關操作

  • 數據表
  1. 是數據庫的重要組成部分之一,數據時保存在數據表中。
  2. 數據表由行 (row) 和列 (column) 來組成。
  3. 每個數據表至少有一列,行可以有零行、一行或多行。
  4. 表名要求唯一,不要包含特殊字符,最好是有意義的。
  • 創建數據表
CREATE TABLE [IF NOT EXISTS] tbl_name(
         字段名稱 字段類型 [完整性約束],
         字段名稱 字段類型 [完整性約束],
         ....
)ENGINE=存儲引擎(默認INNODB) CHARSET=編碼方式;
CREATE TABLE IF NOT EXISTS user(
      id INT,
      username VARCHAR(20),
      password CHAR(32),
      age TINYINT,
      tel CHAR(11),
      sex ENUM('男','女','保密')
)ENGINE=INNODB CHARSET=UTF8;
  • 查看當前數據庫下已有的數據表
SHOW TABLES;
SHOW FULL TABLES [FROM|IN] db_name [LIKE 'pattern'|WHERE expr];
  • 查看錶的詳細信息
SHOW CREATE TABLE tbl_name;
  • 查看錶的結構
DESC tbl_name;
DESCRIBE tbl_name;
SHOW COLUMNS FROM tbl_name;
  • 刪除表
DROP TABLE IF EXISTS tbl_name;
  • 向表中添加數據
INSERT INTO tbl_name(字段1,字段2...) 
VALUES(1,值2...); -- 字段名省略時默認全部字段添加數據
  • 表結構的相關操作
1. 添加字段
ALTER TABLE tbl_name ADD 字段名稱 字段屬性
[完整性約束條件] [FIRST|AFTER 字段名稱];

2. 刪除字段
ALTER TABLE tbl_name DROP 字段名稱;

3. 添加默認值
ALTER TABLE tbl_name ALTER 字段名稱 
SET DEFAULT 默認值;

4. 刪除默認值
ALTER TABLE tbl_name ALTER 字段名稱 
DROP DEFAULT;

5. 修改字段類型
ALTER TABLE tbl_name MODIFY 字段名稱 字段類型
[FIRST|AFTER 字段名稱];

6. 修改字段名、字段類型
ALTER TABLE tbl_name CHANGE 原字段名稱 新字段名稱 
字段類型 [FIRST|AFTER 字段名稱]

7. 添加主鍵
ALTER TABLE tbl_name ADD PRIMARY KEY(字段名稱);

8. 刪除主鍵
ALTER TABLE tbl_name DROP PRIMARY KEY;
如果有AUTO_INCREMENT,應先去掉它,再刪除主鍵。 

9. 添加唯一索引
ALTER TABLE tbl_name ADD UNIQUE KEY|INDEX index_name(字段名稱);

10. 刪除唯一索引
ALTER TABLE tbl_name DROP INDEX index_name;

11. 修改數據表的名稱
ALTER TABLE tbl_name RENAME [TO|AS] new_tbl_name;RENAME TABLE tbl_name TO new_tbl_name;

12. 修改 AUTO_INCREMENT 的值
ALTER TABLE tbl_name AUTO_INCREMENT=;

MySQL 數據類型

  • 數值型

    整數型整數型
    浮點型
    浮點型

  • 字符串類型
    字符串型
    注意:

  1. CHAR 的查詢效率高於 VARCHARCHAR 相當於是拿空間換時間,VARCHAR 是拿時間換空間。

  2. CHAR 存儲的時候,會用空格填充到指定的長度,但在檢索的時候會去掉後面的空格;VARCHAR 存儲的時候不會進行填充,檢索時後面的空格會留下。

  3. TEXT 列不能有默認值,檢索時不存在大小寫轉換。

  • 日期時間類型
    日期時間類型

MySQL 完整性約束

  1. UNSIGNED 無符號,沒有負數,從 0 開始;
  2. ZEROFILL 零填充,當數據的顯示長度不夠的時候使用前補 0 的效果填充至指定長度;
  3. NOT NULL 非空約束,也就是插入值的時候該字段必須給值;
  4. DEFAULT 默認值,如果插入記錄的時候沒有賦值,則使用默認的;
  5. PRIMARY KEY 主鍵,標識記錄的唯一性,值不能重複,一個表只能有一個主鍵;
  6. UNIQUE KEY 唯一性,一個表中可以有多個字段是唯一索引,同樣的值不能重複,但是 null 值除外;
  7. AUTO_INCREMENT 自增長,只能用於數值列,而且配合索引使用用,默認起始值是 1,每次增長 1;
  8. FOREIGN KEY 外鍵約束;

MySQL 存儲引擎

MyISAM 存儲引擎

  1. 默認 MyISAM 的表會在磁盤中產生 3 個文件:.frm 表結構文件、.MYD 數據文件、.MYI 索引文件 。

  2. 可以在建表的時候指定數據文件和索引文件的存儲位置,只有 MyISAM 表支持:DATA DIRECTORY [=] 數據保存的絕對路徑、INDEX DIRECTORY [=] 索引文件保存的絕對路徑 。

  3. MyISAM 的單表最大支持的數據量是 2 的 26 次方記錄。

  4. 每個表最多可以建立 64 個索引。

  5. 如果是複合索引,每個複合索引最多包含 16 個列,索引值最大長度是 1000B。

  6. MyISAM 引擎的存儲格式

    SHOW TABLE STATUS LIKE ‘表名’\G – 查看存儲格式

    a. 定長(FIXED靜態)是指字段中不包含 VARCHAR/TEXT/BLOB
    特點:靜態表的查詢速度很快;當數據出現異常時,也很容易恢復

    b. 動態(DYNAMIC) 只要字段中包含 VARCHAR/TEXT/BLOB
    特點:處理數據複雜,性能很低,但佔用空間小。

    c. 壓縮(COMPRESSED) myisampack 創建 。

InnoDB 存儲引擎

  1. 設計遵循 ACID 模型,支持事務,具有從服務崩潰中恢復的能力,能夠最大限度保護用戶的數據。
  2. 支持行級鎖,可以提升多用戶併發時的讀寫性能。
  3. 支持外鍵,保證數據的一致性和完整性。
  4. InnoDB 擁有自己的緩衝池,常用的數據和索引都在緩存中。
  5. 在 INSERT、uPDATE、DELETE 操作,InnoDB 會使用一種 change buffering 的進制來自動優化,還可以提供一致性的讀,並且還能夠緩存變更的數據,減少磁盤 I/O,提高性能。
  6. 創建 InnoDB 表後會產生兩個文件:.frm 表結構文件、.ibd 數據和索引存儲表空間中。
  7. 所有的表都需要創建主鍵,最後配合 AUTO_INCREMENT,也可以放到經常查詢的列作爲主鍵。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章