捕捉mysql中不可忽視的知識點(一)

一、mysql命令的分類

mysql命令可分爲客戶端命令和服務器端命令兩類:

1)客戶端命令

\c:提前終止結束語句

\g:無論語句結束符是什麼,直接將此語句送至服務器端執行;

\G:無論語句結束符是什麼,直接將此句送到服務器端執行,而且結果以豎排方式顯示;

\! COMMAND:執行shell命令

\W:語句執行結束後顯示警告信息;

\#:對新建的對象,支持補全功能;

\r:重新連接到服務器上來

補充:mysql客戶端命令裏提到的還有 mysqldump(備份工具), mysqlimport(導入工具),mysqlcheck

2)服務器端命令:

mysqld

mysql_multi: 支持多實例的

mysql_safe: 支持安全線程的

mysqlbinlog: 查看mysql的二進制工具

mysqlhotcopy:mysql的備份工具

服務器語句有語句結束符,默認爲分號

\d: 定義語句結束符(delimiter定義語句結束符)

//:語句結束符

eg:show database // 若想換回來使用\d

所有服務器語句只有執行客戶端才能進行,而客戶端不需要語句結束符;

服務器端命令如何獲取幫助?

help COMMAND :獲取幫助信息

help command index:獲取索引幫助信息 (要想獲得進一步的幫助信息,可以把執行help command index後顯示的URL後的鏈接複製下來貼到瀏覽器內還能獲取到官方文檔)

二、mysqladmin命令的使用:

1)簡介:mysqladmin用來執行管理命令的專用命令,也是一個客戶端命令,通過客戶端連接到服務器端去管理命令,mysqladmin很獨特,它是一個具有許多子命令的命令

2)用法: mysqladmin [option] command [arg] [command [arg]]...

mysqladmin -uroot -p password 'NEW_PASS' 爲用戶設定密碼的

3)常用命令:

processlist 進程列表,可以列出服務器上正在執行所有進程列表

status 查看mysql的狀態

--sleep N: 顯示頻率

--count N:顯示多個狀態

eg:mysqladmin status --sleep 2 mysql兩秒鐘顯示一次

eg:mysqladmin status --sleep 2 --count 2 mysql兩秒鐘顯示1次顯示2次

extended-status :顯示狀態變量

varitables: 顯示服務器變量

flush-privileges: 讓mysqld重讀授權表,等同於reload;

flush-status:重置大多數的服務器的狀態變量

flush-tables;關閉打開的所有的表

flush-threads: 重置線程池的,或線程緩存

flush-logs: 二進制和中繼日誌滾動

flush-hosts: 刷新主機,清除主機的內部信息

kill :殺死一個線程的

refresh: 相當於同時執行flush-hosts和flush-logs同時執行

shutdown: 關閉mysql服務器進程,可停止mysql服務器

version: 服務器版本及當前狀態信息

start-slave:啓動複製,啓動從服務器複製線程(複製的線程包括兩個SQL thread和IO thread)

stop-slave:關閉複製,停止複製線程;

三、存儲引擎

1)存儲引擎的概念:存儲引擎從某種意義上講叫表類型,每一個表都可以自由的獨立的選擇一種存儲引擎,存儲引擎不是數據庫之間的概念而是表之間的的概念,同一個數據庫中的多張表完全可以使用不同的存儲引擎,也就意味着底層的存儲機制是各不相同的。

2)存儲引擎主要包括MyISAM和InnoDB

MyISAM:(存儲引擎,也被稱爲表類型)無事務,表鎖;每個表三個文件分別如下:

.form:表結構定義文件

.MYD:表數據定義文件

.MYI:表索引定義文件

InnoDB:事務,行鎖;所有表共享一個表空間文件(建議:每表一個獨立的表空間文件;)

.form: 表結構

.ibd: 表空間(裏面存儲了表數據和表索引)

3)show engines:可以顯示當前服務器所支持的所有引擎,

show table status [like ...] 顯示一張表的狀態信息

eg:show table status like 'use'; 顯示use表的狀態信息

eg:show table status like 'use'\G 查看use表的屬性信息,並豎排顯示

四、mysql的數據類型(MySqL data types )相關的知識點

1、mysql的數據類型:

1)數值型

精確數值

int

decimal 十進制

近似數值

float

double

real 實數

2)字符型

定長:char(#)、binary

變長:varchar(#)、varbinary

text,blob(大字符,text不區分大小寫,blob區分大小寫)

enum,set (內置類型)

3)日期時間型

data,time,datatime,timestamp

2、數據類型的意義:

1)存入的值類型

2)佔據的存儲空間

3)定長和變長

4)如何比較及排序

5)是否能夠創建索引

2、數值類型:

int 整型

tinyint (微整型) 有符號時是0-255,無符號時是-128-127

smallint (小整型)

mediumint(中整型)

int (整型)

bigint (大整型)

decimal:定點數值

float:單精度浮點值 4bytes

double:雙精度浮點值 8bytes

bit:按位存儲

3、字符串數據類型:

char 字符型最多隻能存儲255個字符 定長

varchar 最大隻能存儲65535個字符 變長(不區分字符大小寫)

binary 定長

varbinary 變長 (區分字符大小寫)

tinyblob 微型blob 255字節(二進制的大對象,它們是字節字符串區分字符大小寫)

blob 標準blob 64kb

mediumblob 中級blob 16Mb

longblob 長blob 4Gb

tinytext 微型text(不區分字符大小寫)最多隻能存儲255個字符

text 標準text 最多隻能存儲65535個字符

mediumtext 中級text 最多隻能存儲16777215個字符

longtext 長text 最多隻能存儲4294967235個字符

enum 枚舉型 最多隻能存儲65535

set 集合 1-64

4、日期時間型:

data     3 bytes

time     3 bytes

datatime     8 bytes

timestamp    4 bytes

year       1 bytes

5、字符串類型的修飾手段:

not null 不允許爲空

null 可以爲空

default 指定默認值

binary 不區分字符大小

show characher sets; 顯示當前字符型數據庫字符集

show collation; 顯示當前字符型數據庫所支持的排序規則

show global variables like '%char%';

select database(); 表示執行一個函數(一個內置的函數)

select last_insert_id();

auto_increment 自動增長(整型 非空 無符號)

eg: create table test(id int unsigned auto_increment not null primary key,Name char(20))

unsigned 無符號

cerate table test(id int unsigned

補充:

1、mysql還有一個特點就是支持名稱補全

名稱補全:打開數據庫時必須將每一個數據庫的名稱和每一個表的名稱每一個字段的名稱都要載入內存當中來,這可能會導致我們在連接到mysql上時有大量的延遲,因爲它必需要遍歷每一個數據庫的每一個表的定義,這是非常慢的。

--html :可以讓數據庫顯示爲html格式

2、鍵和索引

1)鍵也被稱爲是約束,可用作索引,屬於特殊索引(有特殊限定,比如數值不相同):它們存儲下來都是B+Tree的結構。

2)索引是關係數據庫的內部實現技術,屬於內模式的範疇 ,create index語句定義索引時,可以定義索引是唯一索引、非唯一索引或聚簇索引

3)索引有兩種類型:

b+tree:具有動態平衡的優點

hash:具有查找速度快的特點

幾乎所有的字段都支持b+tree索引,但並非所有的字段都支持hash索引。

4)創建索引的原則:

(1)對較大的表才建立索引(約5000條記錄以上),並檢索的數據少於總行數的2%到4%

(2)一個表可建立任意多個索引,但不能太多,會增加系統維護的開銷,索引建立後由系統維護。

(3)經常出現在where子句或聯接條件中的列上作爲索引關鍵字

(4)索引關鍵字可以是一個列,也可以是多個列組合成的複合索引。如果是複合索引,則查詢條件中含有主關鍵字時,系統使用索引,加快查詢速度。如果查詢條件中只含有次關鍵字,則系統不使用索引。

(5)索引信息會存儲到數據字典中。

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