MySQL常用命令:
show databases; 顯示數據庫
create database name; 創建數據庫
use databasename; 選擇數據庫
drop database name 直接刪除數據庫,不提醒
show tables; 顯示表
describe tablename; 顯示具體的表結構
select 中加上distinct去除重復字段
mysqladmin drop databasename 刪除數據庫前,有提示。
顯示當前mysql版本和當前日期
select version(),current_date;
修改mysql中root的密碼:
shell>mysql -h localhost -u root -p //登錄
mysql> update user set password=password("xueok654123") where user='root';
mysql> flush privileges //刷新數據庫
mysql>use dbname; 打開數據庫:
mysql>show databases; 顯示所有數據庫
mysql>show tables; 顯示數據庫mysql中所有的表:先use mysql;然後
mysql>describe user; 顯示表mysql數據庫中user表的列信息);
grant
創建用戶firstdb(密碼firstdb)和數據庫,並賦予權限於firstdb數據庫
mysql> create database firstdb;
mysql> grant all on firstdb.* to firstdb identified by 'firstdb'
會自動創建用戶firstdb
mysql默認的是本地主機是localhost,對應的IP地址就是127.0.0.1,所以你用你的IP地址登錄會出錯,如果你想用你的IP地址登錄就要先進行授權用grant命令。
mysql>grant all on . to [email protected] identified by "123456";
說明:grant 與on 之間是各種權限,例如:insert,select,update等
on 之後是數據庫名和表名,第一個*表示所有的數據庫,第二個*表示所有的表
root可以改成你的用戶名,@後可以跟域名或IP地址,identified by 後面的是登錄用的密碼,可以省略,即缺省密碼或者叫空密碼。
drop database firstdb;
創建一個可以從任何地方連接服務器的一個完全的超級用戶,但是必須使用一個口令something做這個
mysql> grant all privileges on . to user@localhost identified by 'something' with
增加新用戶
格式:grant select on 數據庫.* to 用戶名@登錄主機 identified by "密碼"
GRANT ALL PRIVILEGES ON . TO monty@localhost IDENTIFIED BY 'something' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON . TO monty@"%" IDENTIFIED BY 'something' WITH GRANT OPTION;
刪除授權:
mysql> revoke all privileges on . from root@"%";
mysql> delete from user where user="root" and host="%";
mysql> flush privileges;
創建一個用戶custom在特定客戶端it363.com登錄,可訪問特定數據庫fangchandb
mysql >grant select, insert, update, delete, create,drop on fangchandb.* to custom@ it363.com identified by ' passwd'
重命名表:
mysql > alter table t1 rename t2;
mysqldump
備份數據庫
shell> mysqldump -h host -u root -p dbname >dbname_backup.sql
恢復數據庫
shell> mysqladmin -h myhost -u root -p create dbname
shell> mysqldump -h host -u root -p dbname < dbname_backup.sql
如果只想卸出建表指令,則命令如下:
shell> mysqladmin -u root -p -d databasename > a.sql
如果只想卸出插入數據的sql命令,而不需要建表命令,則命令如下:
shell> mysqladmin -u root -p -t databasename > a.sql
那麼如果我只想要數據,而不想要什麼sql命令時,應該如何操作呢?
mysqldump -T./ phptest driver
其中,只有指定了-T參數才可以卸出純文本文件,表示卸出數據的目錄,./表示當前目錄,即與mysqldump同一目錄。如果不指定driver表,則將卸出整個數據庫的數據。每個表會生成兩個文件,一個為.sql文件,包含建表執行。另一個為.txt文件,只包含數據,且沒有sql指令。
可將查詢存儲在一個文件中並告訴mysql從文件中讀取查詢而不是等待鍵盤輸入。可利用外殼程序鍵入重定向實用程序來完成這項工作。例如,如果在文件my_file.sql 中存放有查
詢,可如下執行這些查詢:
例如,如果您想將建表語句提前寫在sql.txt中,
mysql > mysql -h myhost -u root -p
Mysql5.0支持的字符集
MySQL中的字符集控制做得比較細,可以分為數據庫級,表級, 字段級(這一點和ORACLE不同)。我上次改的字符集是數據庫級的,對表sysuser沒有影響,所以出現了改了字符集卻一樣無法插入中文的情況。
Drop TABLE IF EXISTS firstdb
.users
;
Create TABLE firstdb
.users
(id
int(11) NOT NULL auto_increment,username
varchar(40) default NULL,birthday
date default NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
編譯 MySQL 時,指定了一個默認的字符集,這個字符集是 latin1;
安裝 MySQL 時,可以在配置文件 (my.ini) 中指定一個默認的的字符集,如果沒指定,這個值繼承自編譯時指定的;
啟動 mysqld 時,可以在命令行參數中指定一個默認的的字符集,如果沒指定,這個值繼承自配置文件中的;
此時 character_set_server 被設定為這個默認的字符集;
當創建一個新的數據庫時,除非明確指定,這個數據庫的字符集被缺省設定為 character_set_server;
當選定了一個數據庫時,character_set_database 被設定為這個數據庫默認的字符集;
在這個數據庫裡創建一張表時,表默認的字符集被設定為 character_set_database,也就是這個數據庫默認的字符集;
當在表內設置一欄時,除非明確指定,否則此欄缺省的字符集就是表默認的字符集;
這個字符集就是數據庫中實際存儲數據采用的字符集,mysqldump 出來的內容就是這個字符集下的;Query Browser1.1 對中文輸入的支持太差勁了,可以用notebook寫好後,再copy過去執行
update firstdb.users set username='以' where id=3;
MYSQL 常用命令
1.導出整個數據庫
mysqldump -u 用戶名 -p --default-character-set=latin1 數據庫名 > 導出的
文件名(數據庫默認編碼是latin1)
mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql
2.導出一個表
mysqldump -u 用戶名 -p 數據庫名 表名> 導出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql
3.導出一個數據庫結構
mysqldump -u wcnc -p -d -add-drop-table smgp_apps_wcnc >d:wcnc_db.sql
-d 沒有數據 -add-drop-table 在每個create語句之前增加一個drop table
4.導入數據庫
A:常用source 命令
進入mysql數據庫控制台,
如mysql -u root -p
mysql>use 數據庫
然後使用source命令,後面參數為腳本文件(如這裡用到的.sql)
mysql>source wcnc_db.sql
B:使用mysqldump命令
mysqldump -u username -p dbname < filename