命令行對mysql的基本操作
啟動mysql服務:
net start mysql
(使用這個命令啟動mysql,需要把mysql注冊到服務列表中,如果是wamp自帶的mysql注冊到服務列表還有點麻煩,如果有高手希望告知一二)
登陸mysql:
mysql -u root -p 回車,輸入密碼。
查看用戶:use mysql 回車,select * from user; 回車。這樣能列出所有用戶,但是比較亂,如果只需要查看用戶名、允許登陸的主機,那麼使用 select User,Host from user;
創建用戶:
create user 'zhangxiansen'@'localhost' identified by 'zhangxiansen';
如上命令就能創建一個賬號為zhangxiansen,1、密碼為zhangxiansen的用戶,第一個zhangxiansen是賬號,第二個zhangxiansen是密碼;2、@後面的是允許登陸的主機,可以是ip地址、localhost、%,%代表允許任何地方可以登陸,localhost只允許使用localhost登陸,ip地址只能在對應ip的機器上登陸。
用戶授權:
grant all on *.* to 'zhangxiansen'@'localhost';
該命令可以給能用localhost登陸的zhangxiansen賬戶授予對所有數據所有表的所有權限。1、all 代表所有權限,如果只授予增刪權限,則用add,delete代替all;2、第一個*代表所有數據庫,如果指定test_data數據庫,則用test_data代替第一個*,第二個*代表所有表,如果指定stu表,則用stu代替第二個*;3、to後面的就是指定授予權限的用戶,同時還應該指定允許登陸的地址,即@後面的。
(創建用戶以及授權在http://my.oschina.net/u/1179414/blog/202377有很詳細的解釋。)
創建數據:
create database test_data(數據庫名字,自己定義); 回車。
(在創建表之前需要指定在哪個數據庫中建,所以一般需要使用use命令,就像上面use mysql,指定對mysql數據庫進行操作。)
創建表:
create table stu(
stuId int primary key auto_increment, -- primary key設置主鍵,auto_increment設置列自增。
stuName varchar(15) not null,
roomId int
);
create table classRoom(
roomId int primary key auto_increment,
roomName int
);
1、-- 是數據中的注釋;2、在最後一列後面不需要逗號;3、最後的收括號後面需要加上分號。
修改列屬性:
alter table classRoom modify roomName char(10);
上面我創建classRoom表名字字段是int型的,我們就可以用modify命令修改。1、classRoom是需要修改列的表;2、roomName需要修改的列。
添加列:
alter table stu add column age int not null;
該命令可以給stu表添加age列。1、stu需要添加列的表,age需要添加的列,後面跟上列的類型(必須)以及各種約束(自選)。
添加外鍵:
alter table stu constrain stu_room foreign key(roomId) references classRoom(roomId); 該命令可以給stu表的roomId添加外鍵約束。1、stu需要添加外鍵約束的表;2、stu_room外鍵名字,自定義;3、第一個roomId是stu表中的列,第二個則是classRoom中的列。添加外鍵還可以在創建表結構的時候就一並創建,例如:
create table desk(
deskId int primary key auto_increment,
roomId int,
constrain desk_room(外鍵名) foreign key(roomId) references classRoom(roomId)
);
這樣同樣可以創建外鍵約束。
創建主鍵:
如上,在id列後面 primary key 可以創建主鍵。如果主鍵有多列,例如:
create table rectangle(
wide int not null,
len int not null,
primary key(wide,len)
);
這樣rectangle表的主鍵就由wide、len列組成。(這僅僅是個例子,意在說明多列主鍵的創建方法,在表結構設計上有問題。)
增刪查改:
insert into classRoom(roomName) values('402');
該命令就在classRoom表中插入一條數據,roomId是自增長,所以不需要手動插入值。
insert into desk(roomId) values(1);
該命令可以在desk表中插入一條數據,由於roomId是外鍵,那麼在classRoom表中必須要有roomId等於1的數據才能成功插入。
delete from classRoom where roomId=1;
該命令可以在classRoom表中刪除roomId=1的一行數據,由於有外鍵,刪除時可能會影響desk、stu表中的數據,具體可以看一看外鍵的屬性介紹。
update classRoom set roomName='403' where roomId=1;
如果classRoom表中存在roomId等於1的數據,則該行數據的roomName值將會修改為403。
select * from classRoom where roomId=1;
該命令查找roomId=1的數據。如果需要指定查找的列,那麼使用如下命令:
select roomName from classRoom where roomId=1;
該命令只查找roomName列的值。