mysql-doc-语句

基本操作

查看当前的数据库

1
select database();

显示当前时间

1
2
3
4
select now();
select dayofmonth(current_date);
select month(current_date);
select year(current_date);

计算器

1
select 1+1;

状态查看

1
2
3
4
5
show status;
show status like '查询样式';

# 查看线程相关的状态
show status like 'Thread%';

变量查看

变量在/etc/my.cnf里面可以查看和设置

1
2
3
4
5
show variables;
show variables like '查询样式';

# 查询线程相关的变量
show variables like 'Thread%';

变量设置

1
2
3
4
set global 变量名=值;

# 设置max_connections的值为200
set global max_connections=200;

数据库操作

创建数据库

1
2
3
4
create database 数据库名;

# 创建test数据库
create database test;

删除数据库

1
2
3
4
drop database 数据库名;

# 删除test数据库
drop database test;

显示数据库

1
show databases;

选择数据库

1
2
3
4
use 数据库名称;

# 选择test数据库
use test;

显示数据库的表

1
2
3
4
5
show tables;
show tables from 数据库名;

# 显示test数据库的所有表
show tables from test;

显示数据库创建语句

1
2
3
4
show create database 数据库名;

# 显示test数据库的创建语句
show create database test;

设置编码格式

1
2
3
4
alter database 数据库名 character set 编码;

# 设置egame数据库编码为utf8
alter database egame character set utf8;

查看数据库编码格式

1
show variables like 'character%';

表操作

创建表

1
2
3
4
5
6
7
8
create table 表名 (字段 字段类型,...)

# 创建test表
create table test(
id int(4) not null primary key auto_increment,
name char(20) not null,
sex int(4) not null default '0',
degree double(16,2));

表删除

1
2
3
4
drop table 表名;

# 删除test表
drop table test;

显示表结构

1
2
3
4
desc 表名;

# 显示test表的结构
desc test;

显示表创建语句

1
2
3
4
show create table 表名

# 显示test表的创建语句
show create table test;

修改表名

1
2
3
rename table 旧表名 to 新表名
# 修改test表名为test2
rename table test to test2;

表插入数据

1
2
3
4
5
6
7
insert into 表名 [(字段名,...)] values (值,...)

# 向test表插入全部数据
insert into test_table values(3, 'Tom', 1, 96.45);

# 向test_table表插入名字
insert into test_table(name) values('Tom');

删除表数据

1
2
3
4
delete from 表名 where 表达式

# 删除test表id为3的数据
delete from test_table where id=3;

更新表数据

1
2
3
4
update 表名 set 字段=新值, ... where 条件

# 更新test表id为1的名字为aa
update test set name="aa" where id=1;

查询表数据

1
2
3
4
select 字段,.. from 表名 where 表达式

# 查看test表所有数据
select * from test;

表加字段

1
2
3
4
alter table 表名 add 字段 类型 其他

# 给test表加一列age,类型int(4),默认值为0
alter table test add age int(4) default '0';

删除字段

1
2
3
4
alter table 表名 drop 字段名

# 删除test表的age字段
alter table test drop age;

修改字段名称和类型

1
2
3
4
alter table 表名 change 旧字段名称 新字段名 新字段类型

# 修改test的name字段为cname
alter table test change name cname char(22);

表加主键

1
2
3
4
alter table 表 add primary key (字段名);

# 给test表的id加主键
alter table test add primary key(id);

表移除主键

1
2
3
4
5
6
7
8
9
# 移除自增主键
alter table 表名 modify 字段名 字段类型 drop primary key;
# 移除非自增主键
alter table 表名 drop primary key;

# 将test表的自增主键移除
alter table test modify id int drop primary key;
# 将test表的主键移除
alter table test drop primary key;

表加索引

1
2
3
4
5
6
7
8
9
# 普通索引
alter table 表名 add index 索引名(字段名,...);
# 加唯一限制条件索引
alter table 表名 add unique 索引名(字段名)

# 给test表的age列加aindex索引
alter table test add index aindex(age);
# 给test表的age列加唯一索引
alter table test add unique aindex(age);

删除索引

1
2
3
4
alter table 表名 drop index 索引名;

# 删除test表aindex索引
alter table test drop index aindex;

用户

显示当前用户

1
select user();

查看当前用户详情

1
status;

查看mysql所有用户

1
2
3
4
5
# user表在mysql数据库里面,使用mysql表
use mysql;

# 查询和显示
select host, user from user;

添加用户

1
2
3
4
5
6
7
8
9
10
create user '用户名'@'地址' identified by '密码'

# 创建只可以在本地登录的test,密码为123456
create user 'test'@'localhost' identified by '123456';

# 创建只可以在192.168.1.101登录的test,密码为123456
create user 'test'@'192.168.1.101' identified by '123456';

# 创建可以在任何地方登录且没密码的test
create user 'test'@'%' identified by '123456';

删除用户

1
2
3
drop user '用户名'@'地址'
# 删除test用户
drop user 'test'@'localhost';

修改密码

1
2
3
4
5
6
7
set password for '用户名'@'地址' = password('新密码')

# 修改test的密码为654321
set password for 'test'@'localhost' = password('654321');

# 修改当前登录用户test密码为123456
set password = password('123456');

查看用户权限

1
2
3
4
5
6
7
8
show grants;
show grants for 用户@地址;

# 查看当前用户权限
show grants;

# 查看test权限
show grants for test@localhost;

用户授权

修改完权限之后需要刷新权限表。flush privileges

1
2
3
4
5
6
7
8
9
10
grant 权限,... on 数据库.表 to '用户名'@'地址';

# 给test授予所有表的select和insert权限
grant select,insert on *.* to 'test'@'localhost';

# 给test授予所有表除了授予权限外的所有权限。
grant all on *.* to 'test'@'localhost';

# 给test授予所有表所有权限。
grant all on *.* to 'test'@'localhost' with grant option;

撤销用户权限

修改完权限之后需要刷新权限表。flush privileges

1
2
3
4
5
6
7
revoke 权限,... on 数据库.表 from '用户'@'地址';

# 撤销test的对所有表的select权限
revoke select on *.* from 'test'@'localhost';

# 撤销test对所有表的授权权限
revoke grant option on *.* from 'test'@'localhost';