MySQL用户、库、表的操作语法

关于用户的语法

查看当前系统里的用户:
select user,host from mysql.user;

查看当前登陆的用户
select user();

创建用户
语法:create user '用户'@'主机' identified by '密码';
示例:create user 'anuo'@'localhost' identified by '123'

创建用户并授权
grant 权限 on 库.表  to '用户名'@'主机域' identified by '用户密码'   
示例:grant all on *.* to 'anuo'@'localhost' identified by '123';

查看某用户的权限
show grants for '用户'@'主机'\G
示例:show grants for 'anuo'@'10.0.0.0/24'\G

回收权限
revoke 权限 on 库.表 from 用户名@主机;
示例:revoke insert on *.* from anuo@localhost;

删除用户
drop user '用户名'@'主机'
示例:drop user 'anuo'@'10.0.0.0/24';

库操作语法

查看数据库–查看全部
mysql> show databases;

查看你相关的帮助
mysql> ? show databases;

创建一个数据库
语法:create database 库名;
mysql> create database haha;

创建数据库时定义字符编码
语法:create database 库名 charser 字符编码;
mysql> create database haha charset utf8 ;

查询数据库定义信息
语法:show create database 库名;
mysql> show create database haha; 

存在的数据库修改字符编码
语法:alter database 库名 charser 字符编码
mysql> alter database haha charset gbk;

标准修改系统
ALTER DATABASE [库名] CHARACTER SET  字符集名 COLLATE 校对规则;
ALTER DATABASE haha CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

查看支持的字符集和校对规则.
1、mysql> show character set;
2、mysql> show collation;

查看当前数据库的状态:
mysql> status;
--------------
mysql  Ver 14.14 Distrib 5.6.25, for Linux (x86_64) using  EditLine wrapper

Connection id:      2       --链接的id号
Current database:   test     --当前的库名
Current user:       root@localhost      --登陆的用户
SSL:            Not in use      --是否使用了ssl
Current pager:      stdout
Using outfile:      ''
Using delimiter:    ;       --会话的终结符
Server version:     5.6.25-log Source distribution      --MySQL的版本号
Protocol version:   10      --协议版本
Connection:     Localhost via UNIX socket   --使用的链接类型,是通过socket文件进行链接
Server characterset:    utf8    --服务器使用的字符集
Db     characterset:    utf8    --当前数据库使用的字符集
Client characterset:    utf8    --当前客户端使用的字符集
Conn.  characterset:    utf8    --当前链接使用的字符集
UNIX socket:        /data/3306/mysql.sock       --socket文件路径
Uptime:         12 min 10 sec   --数据库的运行时长

Threads: 1  Questions: 22  Slow queries: 0  Opens: 71  Flush tables: 1  Open tables: 64  Queries per second avg: 0.030

删除数据库
语法:drop database 库名
mysql> drop database haha;

切库
mysql> use  haha;

表操作的语法

查看库里面的表     (注意:选进入库才能看库里的表)
mysql> show tables;

查看库里所有表状态信息
mysql> show table status\G

查看单个表的状态
语法:show table status like '表名'\G
mysql> show table status like 'xixi'\G

创建表
语法:create table 表名(结构);
mysql> create table xixi(id int);

查看表
mysql> show tables;

删除表
语法:drop table 表名;
mysql> drop table xixi;

创建更多的表结构;
语法:create table 表名(字段1,字段2,……) --注意每字段要用逗号隔开
mysql> create table hehe(id int,name char(20),sex char(4));
字段的定义:字段名、数据类型、约束
常用的数据类型
int     --整型数值
char    --定长字符
varchar --变长字符
date    --日期
time    --时间
year(2|4)   --年份
常用的约束:
null        --表示该字段可以为空(不设置默认为此类型)
not null    --表示该字段为非空
aoto_increment  --自增长,适用于数值型

定义主键
primary key(字段1,字段2,……)     --(一个表只能有一个主键,一个主键可以包含多个字段)
alter table xixi add primary.key(id)    --把xixi表下的id字段设置为主键

创建表规格时就定义主键
1、create table xixi(id int(4) primary key,name chat(11));   --定义了单一主键
2、create table xixi(id int(4),name char(11),primary key(id,name)); --定义联合主键

unique key(字段1,字段2,……)  --定义唯一键,一个表中可以有多给唯一键

创建索引
index index_name(字段) 
alter table xixi add index index_name(name) --把xixi表下的name字段创建普通索引

创建表时就定义索引:
create table xixi(id int(4),name char(11),primary key(id),index index_name(name));

查看索引
show index from xixi;   --表示查看xixi表中的索引

查看表中的部分索引
show index from xixi where key_name like 'ind';     --查看xixi表中以ind开头的索引

注意:下面这种语法格式也是可以的,更能看清楚定义时的语句  推存此用法。
mysql> create table anuo                                                               
    -> (
    -> id int(4),
    -> name char(11),
    -> primary key(id),
    -> index index_name(name)
    -> );
Query OK, 0 rows affected (0.27 sec)

创建新表时复制另外一个旧表的结构
语法:create table 新表名 like 旧表名;
示例:create table anuo like xixi;

查看建表语句
1、mysql> show create table hehe;
2、mysql> show create table hehe\G

修改表名字
1、语法:rename table 表名 to 新表名;
mysql> rename table hehe to wahaha;
2、语法:alter table 表名 rename to 新表名;
mysql> alter table wahaha rename to xixi;

查看表结构
mysql> desc xixi;

修改表结构
mysql> alter table xixi add char(40) NOT NULL;
mysql> desc people;

after在指定字段后面添加
语法:alter table 表名 add 新字段 after 指定的字段
示例:alter table xixi add age int(4) after name;

first在指定字段前面添加(默认添加在最前面)
alter table xixi add id1 int first ,add shouji char(11) after name ;

删除表字段:
mysql> alter table xixi drop  sex;

修改表字段的定义
mysql> alter table xixi modify name char(20);

修改列名:
mysql> alter table xixi change name a_name char(30) ; 

创建表时指定多个选项如:存储引擎、自增长、字符集
示例:
mysql> create table xixi
    -> (
    -> id int primary key auto_increment,
    -> name char(11) not null,
    -> index index_name(name)
    -> )
    -> engine=InnoDB auto_increment=2 default charset=utf8;
--指定了InnoDB存储引擎 ,id字段设置了自增长从2开始 ,默认的字符集是utf8