mysql 基礎命令

flush privileges

my.cnf

safe-updates 

prompt = mysql \\r:\\m:\\s\\u\\d>

 

6、改變提示符

mysql>prompt \r:\m:\s \u \d>

 

mysql -e "show processlist"

mysql -e "show engines;"

mysql -e "show variables like '%storage_engine%';" 默認引擎

mysql -e "show innodb status\G;"

 

清空某個mysql表中所有內容

delete from 表名;

truncate table 表名;

不帶where參數的delete語句可以刪除mysql表中所有內容,

使用truncate table也可以清空mysql表中所有內容。效率上truncate比delete快,

但truncate刪除後不記錄mysql日誌,不可以恢復數據。

delete的效果有點像將mysql表中所有記錄一條一條刪除到刪完,

而truncate相當於保留mysql表的結構,重新創建了這個表,所有的狀態都相當於新表。

 

將輸出內容轉儲到文件

你可能需要將SQL執行結果輸出到一個文本文件,可以使用SELECT INTO OUTFILE command命令達到目的,

mysql命令行  --tee

1.mysql>tee sales_report.txt 

2.mysql -u -root -p --tee=c:\xxxx.log ,加上參數; 

3.在/etc/my.cnf中的[client]加入 tee =/tmp/client_mysql.log即可.

 

創建表 mysql->create table mytable(name varchar(20),sex(char(1),birth date);

刪除表 drop table mytable;

顯示錶的結構 mysql->describe mytable;

更新:

1、對列的操作:

在一個表中增加一條字段 mysql->alter table yourtable add name varchar(20)not null;

刪除一個字段 mysql->alter table yourtable drop name ;

1、增加一列:

如在前面例子中的mytable表中增加一列表示是否單身single:

mysql> alter table mytable add column single char(1);

2、對行的操作:

插入一條記錄 mysql->insert into mytable values('summer','m','1983-08-24');

刪除一條記錄 mysql->delete from mytable where name='summer';

修改一條記錄 mysql->update mytable set sex='vm' where name='summer';

插入多條記錄 mysql->insert into mytable select *from yourtable;(

這種形式的INSERT 語句中,新行的數據值不是在語句正文中明確地指定的.而是語句中指定的一個數據庫查詢. 該查詢的邏輯限制:

?查詢不能含有ORDER BY子句. ?查詢結果應含有與INSERT語句中列數目相同的列,且數據類型必須逐列兼容. )

MySQL replace into 有三種形式:

1. replace into tbl_name(col_name, ...) values(...)

2. replace into tbl_name(col_name, ...) select ...

3. replace into tbl_name set col_name=value, ...

第一種形式類似於insert into的用法,

第二種replace select的用法也類似於insert select,這種用法並不一定要求列名匹配,事實上,MYSQL甚至不關心select返回的列名,它需要的是列的位置。例如,replace into tb1( name, title, mood) select rname, rtitle, rmood from tb2;?這個例子使用replace into從?tb2中將所有數據導入tb1中。

第三種replace set用法類似於update set用法,使用一個例如“SET col_name = col_name + 1”的賦值,則對位於右側的列名稱的引用會被作爲DEFAULT(col_name)處理。因此,該賦值相當於SET col_name = DEFAULT(col_name) + 1。

前兩種形式用的多些。其中 “into” 關鍵字可以省略,不過最好加上 “into”,這樣意思更加直觀。另外,對於那些沒有給予值的列,MySQL 將自動爲這些列賦上默認值


簡單查詢:


a.用in限定範圍:select * from students where native in ('湖南', '四川')

b.between...and:select * from students where age between 20 and 30

c. 比較測試符:(包括=,<>,<,<=,>,>=)select * from students where name = '李山'

d.like:select * from students where name like '李%' (注意查詢條件中有“%”,則說明是部分匹配,而且還有先後信息在裏面,即查找以“李”開頭的匹配項。所以若查詢有“李”的所有對象,應該命令:'% 李%';若是第二個字爲李,則應爲'_李%'或'_李'或'_李_'。)

e.[]匹配檢查符:select * from courses where cno like '[AC]%' (表示或的關係,與"in(...)"類似,而且"[]"可以表示範圍,如:select * from courses where cno like '[A-C]%')注:關於這個字符我在mysql裏用的時候mysql把它當兩個普通自符處理的。

[^]stockname like '[^F-M]%' --------- (^排除指定範圍)

a.count()求總數,如:select count(*) from students (求學生總人數)


格式: mysql -h主機地址 -u用戶名 -p用戶密碼

二、修改密碼。

格式:mysqladmin -u用戶名 -p舊密碼 password 新密碼

1、例1:給root加個密碼ab12。首先在DOS下進入目錄mysqlbin,然後鍵入以下命令

mysqladmin -uroot -password ab12

注:因爲開始時root沒有密碼,所以-p舊密碼一項就可以省略了。

2、例2:再將root的密碼改爲djg345。

mysqladmin -uroot -pab12 password djg345


三、增加新用戶。(注意:和上面不同,下面的因爲是MYSQL環境中的命令,所以後面都帶一個分號作爲命令結束符)

格式:grant select on 數據庫.* to 用戶名@登錄主機 identified by "密碼" 例1、增加一個用戶test1密碼爲abc,讓他可以在任何主機上登錄,並對所有數據庫有查詢、插入、修改、刪除的權限。首先用以root用戶連入MYSQL,然後鍵入以下命令:

grant select,insert,update,delete on *.* to test1@"%" Identified by "abc";

但例1增加的用戶是十分危險的,你想如某個人知道test1的密碼,那麼他就可以在internet上的任何一臺電腦上登錄你的mysql數據庫並對你的數據可以爲所欲爲了,解決辦法見例2。

例2、增加一個用戶test2密碼爲abc,讓他只可以在localhost上登錄,並可以對數據庫mydb進行查詢、插入、修改、刪除的操作(localhost指本地主機,即MYSQL數據庫所在的那臺主機),這樣用戶即使用知道test2的密碼,他也無法從internet上直接訪問數據庫,只能通過MYSQL主機上的web頁來訪問了。

grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc";

如果你不想test2有密碼,可以再打一個命令將密碼消掉。

grant select,insert,update,delete on mydb.* to test2@localhost identified by "";



mysql> select version(),current_date();


6、一行多命令


mysql> select database();


mysql>select * from db;


11、命令的取消

當命令輸入錯誤而又無法改變(多行語句情形)時,只要在分號出現前就可以用 c來取消該條命令

mysql> select

-> user()

-> c

mysql>

7、用文本方式將數據裝入一個數據庫表

如果一條一條地輸入,很麻煩。我們可以用文本文件的方式將所有記錄加入你的數據庫表中。

創建一個文本文件“mysql.txt”,每行包含一個記錄,用定位符(tab)把值分開,並且以在

Create TABLE語句中列出的列次序給出,例如:


abccs f 1977-07-07 china  

mary f 1978-12-12 usa

tom m 1970-09-02 usa


使用下面命令將文本文件“mytable.txt”裝載到mytable表中:

mysql> LOAD DATA LOCAL INFILE "mytable.txt" INTO TABLE pet;






mysql> Select sex, COUNT(*) FROM mytable GROUP BY sex;

+------+----------+

| sex | COUNT(*) |

+------+----------+

| f|2 |

| m|1 |

+------+----------+

2 row in set (0.00 sec)


注意我們使用了GROUP BY對SEX進行了分組。


多表操作


前面我們熟悉了數據庫和數據庫表的基本操作,現在我們再來看看如何操作多個表。


在一個數據庫中,可能存在多個表,這些表都是相互關聯的。我們繼續使用前面的例子。前面建立的表中包含了員工的一些基本信息,如姓名、性別、出生日期、出生地。我們再創建一個表,該表用於描述員工所發表的文章,內容包括作者姓名、文章標題、發表日期。


1、查看第一個表mytable的內容:

mysql> select * from mytable;

+----------+------+------------+-----------+

| name | sex | birth | birthaddr |

+----------+------+------------+-----------+

| abccs|f | 1977-07-07 | china |

| mary |f | 1978-12-12 | usa |

| tom |m | 1970-09-02 | usa |

+----------+------+------------+-----------+


2、創建第二個表title(包括作者、文章標題、發表日期):

mysql> create table title(writer varchar(20) not null,

-> title varchar(40) not null,

-> senddate date);


向該表中填加記錄,最後表的內容如下:

mysql> select * from title;

+--------+-------+------------+

| writer | title | senddate |

+--------+-------+------------+

| abccs | a1| 2000-01-23 |

| mary | b1| 1998-03-21 |

| abccs | a2| 2000-12-04 |

| tom| c1| 1992-05-16 |

| tom| c2| 1999-12-12 |

+--------+-------+------------+

5 rows in set (0.00sec)


3、多表查詢

現在我們有了兩個表: mytable 和 title。利用這兩個表我們可以進行組合查詢:

例如我們要查詢作者abccs的姓名、性別、文章:

mysql> Select name,sex,title FROM mytable,title

-> Where name=writer AND name='abccs';

+-------+------+-------+

| name | sex | title |

+-------+------+-------+

| abccs | f| a1|

| abccs | f| a2|

+-------+------+-------+


上面例子中,由於作者姓名、性別、文章記錄在兩個不同表內,因此必須使用組合來進行查詢。必須要指定一個表中的記錄如何與其它表中的記錄進行匹配。

注意:如果第二個表title中的writer列也取名爲name(與mytable表中的name列相同)而不是writer時,就必須用mytable.name和title.name表示,以示區別。


再舉一個例子,用於查詢文章a2的作者、出生地和出生日期:

mysql> select title,writer,birthaddr,birth from mytable,title

-> where mytable.name=title.writer and title='a2';

+-------+--------+-----------+------------+

| title | writer | birthaddr | birth |

+-------+--------+-----------+------------+

| a2| abccs | china | 1977-07-07 |

+-------+--------+-----------+------------+


修改和備份、批處理


有時我們要對數據庫表和數據庫進行修改和刪除,可以用如下方法實現:





3、增加記錄

前面已經講過如何增加一條記錄,爲便於查看,重複與此:

mysql> insert into mytable

-> values ('abc','f','1966-08-17','china','n');

Query OK, 1 row affected (0.05 sec)

查看一下:

mysql> select * from mytable;

+----------+------+------------+-----------+--------+

| name | sex | birth | birthaddr | single |

+----------+------+------------+-----------+--------+

| abccs|f | 1977-07-07 | china | y |

| mary |f | 1978-12-12 | usa | NULL |

| tom |m | 1970-09-02 | usa | NULL |

| abc |f | 1966-08-17 | china | n |

+----------+------+------------+-----------+--------+


6、數據庫的備份:

退回到DOS:

mysql> quit

d:mysqlbin

使用如下命令對數據庫abccs進行備份:

mysqldump --opt abccs>abccs.dbb

abccs.dbb就是你的數據庫abccs的備份文件。


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