本文目錄一覽:
- 1、mysql中的命令show tables, desc table有什麼區別?
- 2、什麼是mysqlshow
- 3、如何利用MySQL資料庫自帶的show命令查看信息
- 4、mysql資料庫用怎麼操作
- 5、Mysql資料庫CPU佔用過高原因排查 show processlist
mysql中的命令show tables, desc table有什麼區別?
show tables和desc table作用不用,show tables作用顯示資料庫中有哪些數據表,而desc table需要加表名等參數,作用是是顯示數據表的表都定義了哪些欄位,及各個欄位的類型大小,及哪些是主鍵,哪些有約束條件,以及各個欄位是否定義了默認值。
擴展資料:
mysql常用命令
使用SHOW語句找出在伺服器上當前存在什麼資料庫:SHOW DATABASES。
創建一個資料庫MYSQLDATA:CREATE DATABASE MYSQLDATA。
選擇你所創建的資料庫:USE MYSQLDATA; (按回車鍵出現Database changed 時說明操作成功!)
查看現在的資料庫中存在什麼表:SHOW TABLES。
創建一個資料庫表: CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1))。
顯示錶的結構: DESCRIBE MYTABLE。
往表中加入記錄:mysql insert into MYTABLE values (」hyq」,」M」)。
用文本方式將數據裝入資料庫表中(例如D:/mysql.txt):LOAD DATA LOCAL INFILE 「D:/mysql.txt」 INTO TABLE MYTABLE。
導入sql文件命令(例如D:/mysql.sql):use database;source d:/mysql.sql。
刪除表:drop TABLE MYTABLE。
清空表:delete from MYTABLE。
更新表中數據:update MYTABLE set sex=」f」 where name=』hyq』。
參考資料來源:百度百科-MySQL資料庫
什麼是mysqlshow
它擔當SHOW SQL 語句的命令行介面的作用。mysqlshow用法如下:mysqlshow [option] [db_name [tbl_name [col_name]]]如果沒有指定資料庫名, mysqlshow 將列出伺服器主機中所有資料庫。如果指定資料庫名但未指定表名,則列出該資料庫中所有的表。如果資料庫和表名都被指定,但未指定列名,則列出該表的所有列。如果所有的名字都被指定, mysqlshow 將顯示有關指定列的信息。如果最後的參數中包含外殼程序通配符(『*』或『?』),輸出結果將被限制為與該通配符相配的值。『*』和『?』被視為LINK 操作符的『%』和『_』SQL 通配符。mysqlshow專有選項如下:一、-k, –keys 顯示除表列信息外的表索引信息。該選項只在指定表名時才有意義。二、-i, –status 顯示由SHOW TABLE STATUS 語句顯示的相同類型的表的信息。–status 選項是在MySQL3.23 中引入的。
如何利用MySQL資料庫自帶的show命令查看信息
方法/步驟
查看MySQL資料庫存儲引擎和默認引擎,可以用命令:
show engines;
有時編寫SQL語句時,出現了錯誤,想要查看上一條SQL錯誤,可以利用命令:
show errors;
查看最後一個執行語句的錯誤、提醒和警告,可以用命令:
show warnings;
查看系統的一些資源狀態,可以利用命令:
show status;
顯示系統里的一些變數名稱和變數值,可以利用命令:
show variables;
有時需要查看MySQL伺服器支持的不同許可權,可以利用命令:
show privileges;
mysql資料庫用怎麼操作
1、使用show語句找出在伺服器上當前存在什麼資料庫:
mysql
show
databases;
+———-+
|
database
|
+———-+
|
mysql
|
|
test
|
+———-+
3
rows
in
set
(0.00
sec)
2、創建一個資料庫abccs
mysql
create
database
abccs;
注意不同操作系統對大小寫的敏感。
3、選擇你所創建的資料庫
mysql
use
abccs
database
changed
此時你已經進入你剛才所建立的資料庫abccs.
4、
創建一個資料庫表
首先看現在你的資料庫中存在什麼表:
mysql
show
tables;
empty
set
(0.00
sec)
說明剛才建立的資料庫中還沒有資料庫表。下面來創建一個資料庫表mytable:
我們要建立一個你公司員工的生日表,表的內容包含員工姓名、性別、出生日期、出生城市。
mysql
create
table
mytable
(name
varchar(20),
sex
char(1),
–
birth
date,
birthaddr
varchar(20));
query
ok,
rows
affected
(0.00
sec)
由於name、birthadd的列值是變化的,因此選擇varchar,其長度不一定是20。可以選擇從1到255的任何長度,如果以後需要改變它的字長,可以使用alter
table語句。);性別只需一個字元就可以表示:”m”或”f”,因此選用char(1);birth列則使用date數據類型。
創建了一個表後,我們可以看看剛才做的結果,用show
tables顯示資料庫中有哪些表:
mysql
show
tables;
+———————+
|
tables
in
menagerie
|
+———————+
|
mytables
|
+———————+
5、顯示錶的結構:
mysql
describe
mytable;
+————-+————-+——+—–+———+——-+
|
field
|
type
|
null
|
key
|
default
|
extra
|
+————-+————-+——+—–+———+——-+
|
name
|
varchar(20)
|
yes
|
|
null
|
|
|
sex
|
char(1)
|
yes
|
|
null
|
|
|
birth
|
date
|
yes
|
|
null
|
|
|
deathaddr
|
varchar(20)
|
yes
|
|
null
|
|
+————-+————-+——+—–+———+——-+
4
rows
in
set
(0.00
sec)
6、
往表中加入記錄
我們先用select命令來查看錶中的數據:
mysql
select
*
from
mytable;
empty
set
(0.00
sec)
這說明剛才創建的表還沒有記錄。
加入一條新記錄:
mysql
insert
into
mytable
–
values
(′abccs′,′f′,′1977-07-07′,′china′);
query
ok,
1
row
affected
(0.05
sec)
再用上面的select命令看看發生了什麼變化。我們可以按此方法一條一條地將所有員工的記錄加入到表中。
Mysql資料庫CPU佔用過高原因排查 show processlist
mysql伺服器最近偶爾出現cpu百分百居高不下的情況,所以需要進行分析
兄弟命令 show processlist;只列出前100條,如果想全列出請使用show full processlist;
先 簡單說一下各列的含義和用途:
正在將表中修改的數據刷新到磁碟中,同時正在關閉已經用完的表。這是一個很快的操作,如果不是這樣的話,就應該確認磁碟空間是否已經滿了或者磁碟是否正處於重負中。
Connect Out
複製從伺服器正在連接主伺服器。
Copying to tmp table on disk
由於臨時結果集大於 tmp_table_size,正在將臨時表從內存存儲轉為磁碟存儲以此節省內存。
Creating tmp table
正在創建臨時表以存放部分查詢結果。
deleting from main table
伺服器正在執行多表刪除中的第一部分,剛刪除第一個表。
deleting from reference tables
伺服器正在執行多表刪除中的第二部分,正在刪除其他表的記錄。
Flushing tables
正在執行 FLUSH TABLES,等待其他線程關閉數據表。
Killed
發送了一個kill請求給某線程,那麼這個線程將會檢查kill標誌位,同時會放棄下一個kill請求。MySQL會在每次的主循環中檢查kill標誌 位,不過有些情況下該線程可能會過一小段才能死掉。如果該線程程被其他線程鎖住了,那麼kill請求會在鎖釋放時馬上生效。
Locked
被其他查詢鎖住了。
Sending data
正在處理 SELECT 查詢的記錄,同時正在把結果發送給客戶端。
Sorting for group
正在為 GROUP BY 做排序。
Sorting for order
正在為 ORDER BY 做排序。
Opening tables
這個過程應該會很快,除非受到其他因素的干擾。例如,在執 ALTER TABLE 或 LOCK TABLE 語句行完以前,數據表無法被其他線程打開。 正嘗試打開一個表。
Removing duplicates
正在執行一個 SELECT DISTINCT 方式的查詢,但是MySQL無法在前一個階段優化掉那些重複的記錄。因此,MySQL需要再次去掉重複的記錄,然後再把結果發送給客戶端。
Reopen table
獲得了對一個表的鎖,但是必須在表結構修改之後才能獲得這個鎖。已經釋放鎖,關閉數據表,正嘗試重新打開數據表。
Repair by sorting
修復指令正在排序以創建索引。
Repair with keycache
修復指令正在利用索引緩存一個一個地創建新索引。它會比 Repair by sorting 慢些。
Searching rows for update
正在講符合條件的記錄找出來以備更新。它必須在 UPDATE 要修改相關的記錄之前就完成了。
Sleeping
正在等待客戶端發送新請求.
System lock
正在等待取得一個外部的系統鎖。如果當前沒有運行多個 mysqld 伺服器同時請求同一個表,那麼可以通過增加 –skip-external-locking參數來禁止外部系統鎖。
U pgrading lock
INSERT DELAYED 正在嘗試取得一個鎖表以插入新記錄。
Updating
正在搜索匹配的記錄,並且修改它們。
User Lock
正在等待 GET_LOCK()。
Waiting for tables
該線程得到通知,數據表結構已經被修改了,需要重新打開數據表以取得新的結構。然後,為了能的重新打開數據表,必須等到所有其他線程關閉這個表。以下幾種 情況下會產生這個通知:FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE, 或 OPTIMIZE TABLE。
waiting for handler insert
INSERT DELAYED 已經處理完了所有待處理的插入操作,正在等待新的請求。
大部分狀態對應很快的操作,只要有一個線程保持同一個狀態好幾秒鐘,那麼可能是有問題發生了,需要檢查一下。
還有其他的狀態沒在上面中列出來,不過它們大部分只是在查看伺服器是否有存在錯誤是才用得著。
文章轉自:
原創文章,作者:HT2BT,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/130818.html