一、数据库级操作
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_name set 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',否则就是无密码用户。