備注: 用戶登錄MySQL後,對數據庫操作的命令基本都以”;” 或 “\g”結尾。
一. MySQL服務操作:
啟動MySQL服務:
net start mysql
停止MySQL服務:
net stop mysql
進入MySQL數據庫:
mysql -h 主機地址 -u用戶名 -p用戶密碼
退出MySQL操作:
quit;
刷新數據庫:
flush privileges;
創建數據庫用戶:
一次可以創建多個數據庫用戶,如:
CREATE USER 用戶1 identified BY "密碼1" , 用戶2 IDENTIFIED BY "密碼2";
或者:
grant select on 數據庫.* to 用戶名@登錄主機 identified by "密碼";
程序員高效開發利器:編程水杯
程序員高效開發利器:編程水杯
更改MySQL用戶密碼:
mysqladmin -u用戶名 -p舊密碼 password 新密碼
或者:
update user set password=password("新密碼") where user="用戶名";
用戶的權限控制:
庫,表級的權限控制 : 將某個庫中的某個表的控制權賦予某個用戶:
Grant all ON db_name.table_name TO user_name [ indentified by "password" ];
設置用戶登錄IP限制:
grant all privileges on 數據庫.* to 用戶名@主機地址 identified by "密碼" with grant option;
例如:
// 設置root用戶可在本地訪問所有的數據庫:
grant all privileges on *.* to root@localhost identified by "1234567890" with grant option;
// 設置root用戶可在任何IP地址訪問mydatabase數據庫:
grant all privileges on mydatabase.* to root@"%" identified by "1234567890" with grant option;
刪除用戶登錄IP授權:
revoke all privileges on 數據庫.* from 用戶名@"%";
或者:
delete from user where user="root" and host="%";
刪除SQL用戶:
delete from user where User="用戶名" and Host="主機地址";
二. 數據庫操作:
列出數據庫:
show databases;
使用名為database_name的數據庫:
use database_name;
創建名為database_name的數據庫:
create database database_name;
刪除一個名為database_name的數據庫:
drop database database_name;
三. 表操作:
列出所有表:
show tables;
創建一個名為table_name的新表:
create table table_name;
或者:
create table table_name (字段1 數據類型 , 字段2 數據類型);
刪除表table_name:
drop table table_name;
顯示表table_name的數據結構:
describe table_name;
或:
show columns from table_name;
向表table_name中添加數據:
Insert into table_name [(字段1 , 字段2 , ….)] values (值1 , 值2 , …..);
更新某一個字段的數據:
Update table_name set 字段名="新值" [, 字段2 ="新值" , …..][where id=id_num] [order by 字段 順序];
例 : update mytable set username="lisi" where id=1;。
將表table_name中的記錄清空:
delete from table_name; // 刪除整個表中的信息
delete from table_name where 條件語句 ; // 刪除表中指定條件的語句
顯示表table_name的記錄:
select * from table_name;
修改表名:
alter table table_name rename to new_table_name;
四. 修改表結構:
把某個字段設為主鍵:
alter table table_name add primary key (col_name);
刪除主鍵的定義:
alter table table_name drop primary key (col_name);
增加字段,並設置字段類型:
alter table table_name add col_name varchar(20);
刪除字段:
alter table table_name drop col_name;
修改字段屬性:
alter table table_name modify col_name varchar(40) not null;
修改字段名:
alter table table_name change old_col_name new_col_name varchar(40); // 必須為當前字段指定數據類型等屬性,否則不能修改
用已存在的表來建新表,但不包含舊表的數據:
create table new_table_name like old_table_name;
增加主鍵,外鍵,約束,索引等:
1.約束(主鍵: Primary key、唯一性: Unique、非空: Not Null);
2.自動增張: auto_increment;
3.外鍵: Foreign key。 與reference table_name(col_name列名)配合使用,建表時單獨使用。
4.刪除多個表中有關聯的數據:設置foreign key 為set null。
五. 數據的備份與恢復:
在當前的數據庫上執行外部的SQL腳本:
mysql < extend.sql
指定數據庫執行外部SQL腳本:
mysql [表名] < extend.sql
數據傳入:
load data local infile "[文件名]" into table [表名];
備份數據庫:
mysqldump -h 主機地址 -u 用戶名 -p 數據庫名 > dbname_backup.sql
恢復數據庫:
mysqladmin -h 主機地址 -u 用戶名 -p create 新數據庫名
mysqldump -h 主機地址 -u 用戶名 -p 新數據庫名 < dbname_backup.sql
卸出建表指令:
mysqladmin -u 用戶名 -p -d 數據庫名 > a.sql
卸出插入數據的sql命令,不包含建表命令:
mysqladmin -u 用戶名 -p -t 數據庫名 > a.sql
卸出數據,不包含sql命令:
mysqldump -T 卸出數據的目錄 phptest 指定卸出的數據表
其中,只有指定了 -T 參數才可以卸出純文本文件。如果不指定卸出的數據表,則將卸出整個數據庫的數據。每個表會生成兩個文件,一個為.sql文件,包含建表執行;另一個為.txt文件,只包含數據,且沒有sql指令。
六. 查看數據庫信息:
查看數據庫版本號:
select version();
查看當前的user:
select user();
查看當前操作的數據庫名:
mysql> select database();