MySQL必知必會知識點總結一二

一、MySQL官方文檔地址

https://dev.mysql.com/doc/refman/5.7/en/

二、MySQL常用命令

1、如何登陸MySQL數據庫

mysql -u username -p

2、如何開啓/關閉mysql服務

service mysql start/stop

3、查看mysql的狀態

service mysql status

4、如何顯示數所有數據庫

show databases

5、如何獲取表內所有字段對象的名稱和類型

describe table_name;

三、SQL分類

SQL全程爲Structure Query Language(結構化查詢語言)。

SQL 語句主要可以劃分爲以下 3 個類別:

1、DDL(Data Definition Languages)語句:數據定義語言,這些語句定義了不同的數據段、 數據庫、表、列、索引等數據庫對象的定義。常用的語句關鍵字主要包括 create、drop、alter 等。

2、DML(Data Manipulation Language)語句:數據操縱語句,用於添加、刪除、更新和查詢數據庫記錄,並檢查數據完整性,常用的語句關鍵字主要包括 insert、delete、update 和 select 等。

3、DCL(Data Control Language)語句:數據控制語句,用於控制不同數據段直接的許可和 訪問級別的語句。這些語句定義了數據庫、表、字段、用戶的訪問權限和安全級別。主要的語句關鍵字包括 grant、revoke 等。

四、MySQL使用幫助命令

在 MySQL 使用過程中,快速查找某一個命令的使用方法和實例。使用命令:

mysql> ? contents;

示例:

1、mysql> ? Data Types;

2、mysql> ? show create table;

3、mysql> ? show

4、mysql> ? int 
。。。。。。

因此,只要是對於某一個命令不是很熟的話,使用? 命令名稱 即可顯示其用法。

五、MySQL支持的數據類型

1、數值類型

常見的數值類型如下:

注:這裏的最小值和最大值代表的是寬度。

對於這幾種常見的數值類型,我們應該知道存儲的所佔的字節,我們還要知道INT最大的長度爲10位數字,那麼我們設置11爲,如:int(11)也是無用的,最多隻能爲10位數字。TINYINT最大支持3位,那麼我們設置tinyint(4)也是無用的。

2、日期時間類型

上圖可以看出,每種日期時間類型都有一個有效值範圍,如果超出這個範圍,在默認的SQLMode下,系統會進行錯誤示,並將以零值來進行存儲。不同日期類型零值的表示如下:

提示:

(1)日期格式中只有TIMESTAMP 可以使用MySQL提供的函數,實現自動設置時間和自動更新時間,腳本如下:

`create_time` timestamp DEFAULT CURRENT_TIMESTAMP,
`update_time` timestamp DEFAULT CURRENT_TIMESTAMP 
    ON UPDATE CURRENT_TIMESTAMP 
,

(2)Navicat for MqlSQL設置如下:

(3)使用TIMESTAMP 要認識到,他會停止在2038年的一個時刻,但MySQL官方應該後期會提供相應的支持。

(4)DATETIME、TIMESTAMP都可以精確到秒,但是TIMESTAMP只佔4個字節,因此可以有效考慮使用;

3、字符串類型

1、常見的char和varchar區別:

(1)char(N)用於存放固定長度的字符串,長度最大爲255,比制定長度大的值將被截斷,而比指定長度小的值將會用空格進行填補;

(2)varchar(N)用於保存可變長度的字符串,長度最大爲65535,只存儲字符串實際需要的長度,它會增加一個額外字節來保存字符串本身的長度,varchar使用額外的1~2字節來存儲值得長度,如果列的最大長度小於或等於255,則使用1字節,否則就是使用2字節;

(3)char和varchar跟字符編碼也有密切聯繫,lantin1佔用1個字節,gbk佔用2個字節,utf8佔用3個字節。示例如下:

  • lantin1、1個字符1個字節:

  • gbk、1個字符2個字節:

  • utf8、1個字符3個字節:

2、如何選擇char和varchar

六、MySQL數據類型的選擇和優化案例

1、手機號存儲

使用BIGINT代替CHAR或者VARCHAR存放手機號碼。

這是因爲CHAR或者VARCHAR,佔用空間大,影響查詢性能。 
例如:11位手機號CHAR存儲,utf8編碼,則佔用33個字節; 
使用如果使用INT的話,INT最大隻能保存10爲數據,而手機號爲11位,會出現溢出,所以使用BIGINT佔用8個字節,支持11爲數據存儲。

2、IP地址可以使用INT存儲

MySQL裏提供了一個很好的函數:INET_ATON(),他負責把IP地址轉化爲數字,而另一個函數INET_NTOA()負責將數字轉化爲IP地址,示例如下:

注意:INT使用無符號,這是因爲INT有符號最大爲2147483647而無符號 最大爲4294967295,如果使用有符號的話,會出現溢出,使用無符號則不會溢出。

  • 插入操作:

mysql> insert into test values(1,INET_ATON('192.168.1.213'));
  • 選擇操作:

mysql> select id,INET_NTOA(ip) from test;

可以看出INT無符號最大值爲4294967295,而存放IP最大爲255.255.255.255剛好等於4294967295。

3、建議使用TINYINT來代替ENUM類型。

4、使用VARBINARY存儲大小寫敏感的變長字符串或二進制內容。

七、MySQL中的常用運算符

1、算術運算符

2、比較運算符

八、MySQL中的常用函數

1、字符串函數

2、數值函數

3、日期和時間函數

九、常見查看MySQL狀態命令

1、查看狀態

mysql> show status;

2、刷選狀態顯示

mysql> show global status like 'Max_used_connections';

3、查看可設置的變量

mysql> show variables\G;

4、查看最大的連接

mysql> show variables like '%max_con%';

5、查看進程的連接

mysql> show full processlist;

此命令在數據庫連接出現Too many connections解決的時候,很有幫助。

6、sql執行性能分析命令explain

在索引創建及分析很有幫助。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章