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的備份文件。