SQL行列互换和分页和DCL
用到的技术:
1,as 把列名更改
2,用if(A=/>B,1,2) 函数表示 如果A>/ =B则输出1 否则输出2
语句
select
列名 as 仓库名称,
max( if (月份='一月份' ,要显示的列名,0 ) ) as 一月份,
max( if (月份='二月份' ,要显示的列名,0 ) ) as 二月份,
max( if (月份='三月份' ,要显示的列名,0 ) ) as 三月份
from 表名
group by 列名;
==================解释=============
原来的表格:
仓库名称 数量 月份
A 100 一月份
B 1000 一月份
C 10 一月份
A 200 二月份
B 2000 二月份
C 20 二月份
A 300 三月份
B 3000 三月份
C 30 三月份
查询出来的结果是:
仓库名称 一月份 二月份 三月份
A 100 200 30
B 1000 2000 3000
C 10 20 30
===================================分页技术=====================
关键词 limit a,b;
a:想要显示的起始行索引(0起始);
b:表示显示多少条语句;
先查询 select * from student order by desc limit 5,2;
从五号索引向后展示两行数据
==========================DCL========================
数据控制语言 用户权限:
grant 赋予
remove 回收
MySQL配置环境变量
通过root账号查看MySQL数据库中的user表格 里面记录了所有用户的信息
在user表格之中 有用的列如下:
user列 (用户列)
host列(展示用户可以访问数据库的ip地址)
password列(展示密码)
密码列没有可以查询此命令 authentication_string
1,先创建一个新的用户
database table user
create user ' 用户名 ' @ ' IP ' identified by ' 密码 ';
create user ' liudong ' @ ' localhost ' identified by ' 123456 ';
创建成功后的用户只有一个默认的权限Usage只允许登录
show grants for '用户名'@'IP '(查询IP地址下的此用户名的权限)
2,给新用户赋予权限
grant 权限 on 数据库名.表格名 to ' 用户名 '@' IP ';
grant all on * . * to ' liudong ' @ ' localhost ' ;
flush privileges;(刷新表格)
3,注销 用新用户登录
通过cmd窗口(想要使用cmd需要先配置环境变量)
exit
mysql -u 用户名 -t
输入密码
登录成功
4,回收用户权限
revoke 权限 on 数据库名.表格名 from ' 用户名 ' @ ' IP ' ;
revoke all on *.* from ' liudong ' @ ' localhost ' ;
5,修改用户的密码
updata 表名 set authentication_string = password(' 新的密码 ') where 条件;
updata 表名 set authentication_string = password(' 654321 ') where user= ' liudong ' ;
7,删除用户
drop user ' 用户名 ' @ ' IP ' ;
drop user ' liudong ' @ ' localhost ' ;
----------------------权限英语----------------