mysql常用命令小結,mysql常用命令
一、資料庫級操作
1、登陸mysql
常用的格式是 mysql -u user_name -p 按下斷行符號後輸入密碼再次斷行符號即可進入。
2、查看當前已經存在的所有資料庫
show databases; (注意,分號不可省略。少數命令可以忽略分號,但大部分的mysql命令都必須以分號結尾)
3、選擇資料庫
知道所有資料庫名稱後,需要選擇某個具體的資料庫進行操作,其命令為:
use database_name; (注意,這個命令是少數可以忽略分號的命令之一)
e.g. use students;
4、建立資料庫
create database database_name; (這裡可能需要root許可權)
e.g. create database one; 這將建立名為one的資料庫。
5、刪除資料庫
drop database database_name;
二、表級操作
1、查看當前資料庫的所有表名
show tables;
2、查看某個表中的所有列名(屬性資訊)
describe table_name;(也可以簡寫為:desc table_name;)
show columns from table_name;
show create table table_name;
3、查看錶中的某一列
select column_1 from table_name;
若想查看某幾列則需要用逗號隔開列名,如:select column_1, column_2 from table_name;
也可以使用萬用字元* 查看所有列,如:select * from table_name;
4、建立表
create table table_name (column_name1 type constraint, column_name2 type constraint, ..., column_nameX type constraint, primary key (column_name));
這裡的constraint包括not null(非空)、unique(不能重複)等,是選填的,即可以沒有;
type包括char(n) varchar(n) int numeric float real double precision;(注意,mysql的字串要用單引號括起來)
最後面的主鍵約束是必須要有的,primary key()括弧裡面的屬性可以是一個,也可以是逗號隔開的幾個。
5、刪除表
drop table table_name; (這將徹底刪除此表,即show tables;命令不會再顯示它)
(注意與之相近的一個命令:delete from table_name; 這個命令只是清空該表,但是表模式仍然存在,即show tables;命令仍然顯示它)
6、向表中添加/刪除列名(屬性名稱)
alter table table_name add column_name type;
alter table table_name drop column_name;
7、修改表中的某個列
alter table table_name change old_col new_col type;
三、行級操作
1、向表中添加行(記錄,record)
insert into table_name values(....); (注意,括弧裡面的值必須要對應建立表時列的前後順序,且用逗號隔開)
如果忘了列名的順序且嫌查看順序麻煩,可以用這種形式:
insert into table table_name(col_1, col_2, ... col_n) values (val_1, val_2, ... val_n);
這時只要val_n對應col_n就行了,而不用去管列名的真正順序。
2、刪除表中特定的行
delete from table_name where P;
P是一個條件,一般格式是:col_name = value,即屬性等於某個值的一行。
3、修改/更新行
update table_nameset col_name = new_val where P;
四、使用者權限操作(一般需要root許可權)
1、查看所有存在使用者
select user from mysql.user;
2、查看目前使用者
select user();
3、建立一個使用者
create user user_name identified by 'passwd';
這就建立了一個名為user_name的使用者,其可以使用密碼passwd登陸mysql,但是其許可權僅限於登陸而已,登陸之後什麼也做不了。這就需要在賦予其相關許可權之後才能進行某些操作。
如果沒有後面的 identified by 'passwd',將會建立一個無密碼的使用者,登陸是只需輸入 mysql -u user_name斷行符號即可,不必再輸入密碼。
上面這條命令的效果和下面這條是一樣的(前提是用root登陸):
insert into mysql.user(Host,User,Password) values('localhost','user_name',password('passwd'));
他們本質上都是修改了mysql的中繼資料庫mysql中的表user,這個表記錄著mysql的所有使用者資訊。注意到,第二條命令多了一個參數Host,這在第一條命令中是被預設的,但是在第二條中是必不可少的,否則將無法登陸原生mysql。
當然Host的值是可以改動的,對於第二條命令,其改動是顯然的;對於第一條命令,如果不想選擇預設值'localhost',可以這樣:
create user_name@other_host identified by 'passwd';
4、賦予使用者相關許可權
許可權的範圍包括經典的“增刪改除”,以及代表所有的all等。整體格式如下:
grant privilege_list on database_name.table_name to user_name@'host_name';
privilege_list可以是select/update/delete/insert中的一個或幾個(逗號隔開),或者直接用all代替,代表所有許可權;
on則將許可權限定在某個資料庫的某個表上,這裡可以使用萬用字元*代表所有,如database_one.* 就意味著在database_one的所有表上都有許可權,當然database_name也可以用*替代 ;
to後面跟的是user_name, 後面的@'host_name'可以省略,預設值為localhost,也可以使用萬用字元%來代表所有主機。需要注意的是,如果user_name本來不存在的話,這個命令將建立一個新的使用者,其名稱就是user_name, 這就是另一種建立使用者的方法,而且同時賦予了相關許可權,我本人一般使用這種方法。要求輸入密碼的話,可以在後面添上 identified by 'passwd',否則就是無密碼使用者。