1. 程式人生 > >【轉載】MySQL必知必會知識點總結一二

【轉載】MySQL必知必會知識點總結一二

一、MySQL官方文件地址

二、MySQL常用命令

1、如何登陸mysql資料庫

mysql -u username -p
  • 1

1.1、指定IP、埠

mysql -uroot -h 192.168.1.213 -P3306 -p123456
  • 1

-P(大寫):指定埠; 
-p(小寫):指定密碼;

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

service mysql start/stop
  • 1

3、檢視mysql的狀態

service mysql status
  • 1

4、如何顯示數所有資料庫

show databases
  • 1

5、如何獲取表內所有欄位物件的名稱和型別

describe table_name;
  • 1

三、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

這裡寫圖片描述

示例:

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 NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '建立時間',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
  • 1
  • 2

(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位元組;(1個位元組佔8位,2的8次方是256(-128~127);2個位元組佔16位,2的16次方為65536)

(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'));
  • 1
  • 選擇操作:

    這裡寫圖片描述

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

可以看出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;
  • 1

這裡寫圖片描述

2、刷選狀態顯示

mysql> show global status like 'Max_used_connections';
  • 1

這裡寫圖片描述

3、檢視可設定的變數

mysql> show variables\G;
  • 1

這裡寫圖片描述

4、檢視最大的連線

mysql> show variables like '%max_con%';
  • 1

5、檢視程序的連線

mysql> show full processlist;
  • 1

這裡寫圖片描述

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

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

這裡寫圖片描述

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

轉載自https://blog.csdn.net/xlgen157387/article/details/73691848