MySQL的基本命令(1)

2021-06-12 01:14:24 字數 4309 閱讀 2709

啟動mysql:開始程式-mysql 5.5 command line client
如果有密碼則輸入密碼後回車
列出資料庫:show databases;
選擇資料庫:use databasename;
列出**:show tables;
顯示**列的屬性:show columns from tablename;
建立資料庫:source filename.txt;
增加乙個字段:alter table tabelname add column fieldname datetyp;
增加多個字段:alter table tabelname add column fieldname1 datetype,add columns fieldname2 datetype;
匹配字元:可以用萬用字元_代表任何乙個字元,%代表任何字串;
增加乙個管理員帳戶:grant all on *.* to user@localhost identified by "password";

刪除student_course資料庫中的students資料表: rm -f student_course/students.*

刪除student_course資料庫:drop database student_course;

備份資料庫:(將資料庫test備份)

mysqldump -u root -p test>c:\test.txt

備份**:(備份test資料庫下的mytable**)

mysqldump -u root -p test mytable>c:\test.txt

將備份資料匯入到資料庫:(導回test資料庫)

mysql -u root -p test

建立臨時表:(建立臨時表zengchao)

create temporary table zengchao(name varchar(10));

建立表是先判斷表是否存在

create table if not exists students(……);

從已經有的表中複製表的結構

create table table2 select * from table1 where 1<>1;

複製表

create table table2 select * from table1;

對錶重新命名

alter table table1 rename as table2;

修改列的型別

alter table table1 modify id int unsigned;//修改列id的型別為int unsigned

alter table table1 change id sid int unsigned;//修改列id的名字為sid,而且把屬性修改為int unsigned

建立索引

alter table table1 add index ind_id (id);

create index ind_id on table1 (id);

create unique index ind_id on table1 (id);//建立唯一性索引

刪除索引

drop index idx_id on table1;

alter table table1 drop index ind_id;

聯合字元或者多個列(將列id與":"和列name和"="連線)

select concat(id,':',name,'=') from students;

limit(選出10到20條)《第乙個記錄集的編號是0>

select * from students order by id limit 9,10;

mysql不支援的功能

事務,檢視,外來鍵和引用完整性,儲存過程和觸發器

mysql會使用索引的操作符號

<,<=,>=,>,=,between,in,不帶%或者_開頭的like

多行命令輸入:注意不能將單詞斷開;當插入或更改資料時,不能將字段的字串展開到多行裡,否則硬回車將被儲存到資料中;
使用索引的缺點

1)減慢增刪改資料的速度;

2)占用磁碟空間;

3)增加查詢優化器的負擔;

當查詢優化器生成執行計畫時,會考慮索引,太多的索引會給查詢優化器增加工作量,導致無法選擇最優的查詢方案;

分析索引效率

方法:在一般的sql語句前加上explain;

分析結果的含義:

1)table:表名;

2)type:連線的型別,(all/range/ref)。其中ref是最理想的;

3)possible_keys:查詢可以利用的索引名;

4)key:實際使用的索引;

5)key_len:索引中被使用部分的長度(位元組);

6)ref:顯示列名字或者"const"(不明白什麼意思);

7)rows:顯示mysql認為在找到正確結果之前必須掃瞄的行數;

8)extra:mysql的建議;

使用較短的定長列

1)盡可能使用較短的資料型別;

2)盡可能使用定長資料型別;

a)用char代替varchar,固定長度的資料處理比變長的快些;

b)對於頻繁修改的表,磁碟容易形成碎片,從而影響資料庫的整體效能;

c)萬一出現資料表崩潰,使用固定長度資料行的表更容易重新構造。使用固定長度的資料行,每個記錄的開始位置都是固定記錄長度的倍數,可以很容易被檢測到,但是使用可變長度的資料行就不一定了;

d)對於myisam型別的資料表,雖然轉換成固定長度的資料列可以提高效能,但是佔據的空間也大;

使用not null和enum

盡量將列定義為not null,這樣可使資料的出來更快,所需的空間更少,而且在查詢時,mysql不需要檢查是否存在特例,即null值,從而優化查詢;

如果一列只含有有限數目的特定值,如性別,是否有效或者入學年份等,在這種情況下應該考慮將其轉換為enum列的值,mysql處理的更快,因為所有的enum值在系統內都是以標識數值來表示的;

使用optimize table

對於經常修改的表,容易產生碎片,使在查詢資料庫時必須讀取更多的磁碟塊,降低查詢效能。具有可變長的表都存在磁碟碎片問題,這個問題對blob資料型別更為突出,因為其尺寸變化非常大。可以通過使用optimize table來整理碎片,保證資料庫效能不下降,優化那些受碎片影響的資料表。 optimize table可以用於myisam和bdb型別的資料表。實際上任何碎片整理方法都是用mysqldump來轉存資料表,然後使用轉存後的檔案並重新建資料表;

使用procedure analyse()

可以使用procedure analyse()顯示最佳型別的建議,使用很簡單,在select語句後面加上procedure analyse()就可以了;例如:

select * from students procedure analyse();

select * from students procedure analyse(16,256);

第二條語句要求procedure analyse()不要建議含有多於16個值,或者含有多於256位元組的enum型別,如果沒有限制,輸出可能會很長;

使用查詢快取

1)查詢快取的工作方式:

第一次執行某條select語句時,伺服器記住該查詢的文字內容和查詢結果,儲存在快取中,下次碰到這個語句時,直接從快取中返回結果;當更新資料表後,該資料表的任何快取查詢都變成無效的,並且會被丟棄。

2)配置快取引數:

變數:query_cache _type,查詢快取的操作模式。有3中模式,0:不快取;1:快取查詢,除非與 select sql_no_cache開頭;2:根據需要只快取那些以select sql_cache開頭的查詢; query_cache_size:設定查詢快取的最大結果集的大小,比這個值大的不會被快取。

調整硬體

1)在機器上裝更多的記憶體;

2)增加更快的硬碟以減少i/o等待時間;

尋道時間是決定效能的主要因素,逐字地移動磁頭是最慢的,一旦磁頭定位,從磁軌讀則很快;

3)在不同的物理硬碟裝置上重新分配磁碟活動;

如果可能,應將最繁忙的資料庫存放在不同的物理裝置上,這跟使用同一物理裝置的不同分割槽是不同的,因為它們將爭用相同的物理資源(磁頭)。

筆記 MySQL基本命令(1)

說明 表示語句中必須指定的資料物件。表明可選可不選。表示多個選項只能選乙個。表示是必選項。mysql中不區分大小寫。1.建立資料庫 create database if not exits 資料庫名 說明 if not exits 選項用來在建立資料庫之前判斷,可用來避免資料庫已經存在而重複建立的錯...

mysql基本命令總結 mysql基本命令總結

1.在ubuntu上安裝mysql sudo apt get install mysql server sudo apt get install mysql client 2.安裝結束後,用命令驗證是否安裝並啟動成功 sudo netstat tap grep mysql 通過上述命令檢查之後,如果...

1 基本命令

1.git diff 比較不同git diff 工作區與暫存區比較git diff head 檔名 比較工作區與版本庫的區別git diff staged 暫存區與版本庫的比較 2.git log 日誌 git log git log pretty oneline 顯示一行 full,short,f...