MYSQL學習筆記 01 簡單使用

2021-09-06 16:28:12 字數 3336 閱讀 5269

以下很多內容來自於網路

建立使用者

// host 使用者位址,%表示可以遠端,localhost表示本地,也可以指定具體ip

create user 『username』@『host』 identified by 『password』;

然後使用grant語句賦予該使用者許可權

grant all privileges on db.table to 『username』@『host』;

還可以直接使用grant建立語句加賦予許可權

// with grant option 是將『賦予使用者許可權』的許可權給該使用者,一般不加,加了的話只可以將自己有許可權的表grant。

// 只有root有建立使用者的許可權

grant all privileges on db.table to 『username』@『host』 identified by 『password』 [with grant option];

檢視使用者許可權

show grants for 『username』@『host』;

備份主要是使用mysql提供的mysqldump工具,在工作中,我們一般建立乙個定時任務,每天備份我們的資料庫。

自動備份指令碼

#! /bin/bash

db_user=「user」

db_pwd=「pwd」

db_name=「dbname」

bk_dir="/home/mysql/backup"

bin_dir="/usr/local/mysql/bin"

b in

dir/

mysq

ldum

p−−o

pt−u

bin_dir/mysqldump --opt -u

bind​i

r/my

sqld

ump−

−opt

−udb_user -p$db_pwd $db_name t_user > bkd

ir

/bk_dir/

bkd​ir

/_$(date +%y%m%d).sql

之後新增定時任務

crontab -e

執行後開啟類似vim的東西,新增需要執行的任務

45 11 * * * /home/mysql/shell/file_name.sh

分鐘(0-59) 小時(0-23) 幾號(1-31) 月份(1-12) 星期(0-7,0和7都是週日);

*表示任何值;使用「,」隔開多個值;使用"-"表示區間 1-5 表示1,2,3,4,5;

所以上面寫的任務表示:每天的11點45分執行後面的sh檔案。

使用explain + sql,字段解釋如下:

id,標識,表示語句執行的優先順序,數字越大則越早執行,相同數字,則靠上的早執行;

select_type,

******:簡單select(不使用union或子查詢)

primary:最外面的select

union:union中的第二個或後面的select語句

dependent union:union中的第二個或後面的select語句,取決於外面的查詢

union result:union 的結果

subquery:子查詢中的第乙個select

dependent subquery:子查詢中的第乙個select,取決於外面的查詢

derived:匯出表的select(from子句的子查詢)

table,輸出行所用的表,為了便於追蹤,表的別名最好可以看出來是哪個表。

type,連線型別,按照最佳到最差排序如下,通常要求最少是range。

ystem:表僅有一行(=系統表)。這是const聯接型別的乙個特例。

const:表最多有乙個匹配行,它將在查詢開始時被讀取。因為僅有一行,在這行的列值可被優化器剩餘部分認 為是常數。const表很快,因為它們只讀取一次!

eq_ref:對於每個來自於前面的表的行組合,從該表中讀取一行。這可能是最好的聯接型別,除了const型別。

ref:對於每個來自於前面的表的行組合,所有有匹配索引值的行將從這張表中讀取。

ref_or_null:該聯接型別如同ref,但是新增了mysql可以專門搜尋包含null值的行。

index_merge:該聯接型別表示使用了索引合併優化方法。

unique_subquery:該型別替換了下面形式的in子查詢的ref: value in (select primary_key from single_table where some_expr) unique_subquery是乙個索引查詢函式,可以完全替換子查詢,效率更高。

index_subquery:該聯接型別類似於unique_subquery。可以替換in子查詢,但只適合下列形式的子查詢中的 非唯一索引: value in (select key_column from single_table where some_expr)

range:只檢索給定範圍的行,使用乙個索引來選擇行。

index:該聯接型別與all相同,除了只有索引樹被掃瞄。這通常比all快,因為索引檔案通常比資料檔案小。

all:對於每個來自於先前的表的行組合,進行完整的表掃瞄。

possible_keys,這個的意思是可能會使用那些索引,只是可能,不是真實使用。

key,這個才表示執行中真正使用的索引。

key_len,索引長度

ref,索引所在列

rows,顯示mysql認為要遍歷的行數。

filtered,顯示了通過條件過濾出的行數的百分比估計值。

1、比較運算子盡量用"=",不要用"<>","=「有使用索引的機率

2、明知只有一條查詢結果,就使用"limit 1」

3、字段選擇合適的資料型別,能用smallint就不用int。

4、使用union all 代替 union,如果結果集允許重複的話

5、同樣的查詢結果,盡量保持查詢語句一致,這樣可以使用查詢快取

6、盡量避免使用select *

7、where、join、order by語句字段盡量被索引

8、將大的delete,update or insert 查詢變成多個小查詢

資料庫一直是我的弱項,這段時間找工作體現的就更明顯了。所以~~努力,加油。

這兩篇其實是更像收集的一些筆記,後面會對mysql有比較深入的學習記錄。

~ . ~

mysql 學習筆記01

引子 alter table 表名 add change modify drop alter table 表名 add 列名 型別 例 alter table students add birthday datetime alter table 表名 change 原名 新名 型別及約束 例 alt...

MySQL學習筆記 01 入門

1.資料庫的英文單詞 database 簡稱 db 2.什麼資料庫?用於儲存和管理資料的倉庫。3.資料庫的特點 1.持久化儲存資料的。其實資料庫就是乙個檔案系統 2.方便儲存和管理資料 3.使用了統一的方式運算元據庫 sql 4 配置 mysql服務啟動 1.手動。2.cmd services.ms...

學習筆記 01

在網上搜尋了一些資料,由於不知道哪些入門容易,所以先看看找到的資料,也對.net有個初步了解。將資料作了個整理 net framework 執行環境 visual studio net 開發工具 microsoft windows server 2003 企業伺服器 microsoft office...