数据库级操作

1、登陆mysql

常用的格式是mysql -u user_name -p

按下回车后输入密码再次回车即可进入。

2、查看当前已经存在的所有数据库show databases;

(注意,分号不可省略。少数命令可以忽略分号,但大部分的mysql命令都必须以分号结尾)

3、选择数据库

知道所有数据库名称后,需要选择某个具体的数据库进行操作,其命令为:use database_name;

(注意,这个命令是少数可以忽略分号的命令之一)

4、创建数据库create database database_name;

(这里可能需要root权限)

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',否则就是无密码用户。