1.行列互换select 配合着group by 使用到了分组函数if()函数
    2.分页查询limit a,b
    select *from xxx where xxx group by xxx order by xxx limit a,b;
    a起始行索引 0 开始 包含着当前行
    b一共查询多少记录
    3.DCL数据控制语言
    控制用户的权限
    1.创建一个新用户 管理员身份
    create user ‘用户名’@’IP’ idfentified by ‘密码’;
    update mysql.user set authentication_string = password(‘新密码) where user = ‘用户名’;
    2.创建的用户默认只有一个权限usage 只能登陆
    给用户赋予权限
    grant 权限 on 数据库名.表名 to ‘用户’@’IP’; show grants for ‘用户名’@’IP’;
    强烈建议 flush privileges;
    3.可以利用新的账号密码去登陆数据库 window提供的cmd命令窗口 提前配置环境变量
    mysql -u root -p password:xxxxx
    4.回收用户所拥有的的权限
    revoke 权限 on 数据库名.表名 from ‘用户名’@’IP;
    5.删除用户
    drop user ‘用户名’@’IP’;
    delete from mysql.user where user = ‘wyh’ and host = ‘localhost’;

    数据库设计的范式(Java设计模式)
    设计数据库时, 遵循的不同规范,这些规范统称为范式
    范式的目的是为了减少数据库中的冗余
    管理表格的时候变的容易(修改 删除)
    查询的时候可能就设计到表格联合的问题(性能)

    Normal Form(标准化形式—普通范式)

    创建一张表格
    用来记录学校里面不同楼宇项目的一些信息
    工程表格Project
    项目编号 项目名称
    A 教学楼
    B 餐饮楼
    C 宿舍楼
    [我们发现项目是由工程师来做的, 所以他俩是多对多关系]
    项目_工程师中间表
    项目编号 工程师编号
    A 1
    A 2
    A 3
    A 4
    B 5
    B 6
    C 7
    工程师表格Engineer
    工程师编号 工程师名字 职称编号
    1 赵一一 1
    2 钱二二 1
    3 孙三三 2
    4 李思思 3
    5 周武武 1
    6 吴六六 2
    7 郑七七 3
    职称表格Rank
    职称编号 职称名称 小时工资
    1 高工 300
    2 普工 200
    3 助工 50
    [这个表已经不遵循1NF 原子性可以保证 表格内没有主键]
    设定联合主键(项目编号—工程师编号)
    [产生了非主键列受到主键或主键的部分影响]
    —-将数据拆开存储在两张表格里
    [产生了非主键列受到非主键列的影响]
    1.数据有大量的冗余
    2.修改起来比较麻烦

    1NF
    数据的原子性
    (每一个表格的每一个列都是不可分割—行列交叉点的单元格内只存储一个数据)
    数据库中的每一张表格 设计每一个列都是不可分割的
    每一个表格必须有主键约束(快速查询某一行记录)
    2NF
    在满足第一范式的前提下
    不允许出现部分依赖性
    不允许出现部分依赖性(非主键列不能收到主键列或主键的一部分影响)
    3NF
    在满足前两个范式的前提下
    不允许出现传递依赖性
    (非主键列不能受到非主键列或非主键的一部分影响)