数据库基础

1.库管理

  • 查看数据库 show databases;
  • 创建数据库
  • mysql 的utf8是三个字节的阉割版utf8编码
  • utf8mb4 是完整的utf8编码 create database if not exists db1 default charset utf8mb4;
  • 进入db1数据库 use db1;
  • 查看数据库 show databases; show create database db1;
  • 修改数据库参数 alter database db1 charset utf8; show create database db1; alter database db1 charset utf8mb4; show create database db1;
  • 删除数据库 drop database db1;

2.表操作

创建表

    • 数据存储引擎:
    • innodb - 支持外键、事务、行锁,
    • myisam - 不支持外键、事务、表锁,只读表可以选择用myisam,效率高
    • create table tb1( id int primary key auto_increment, name varchar(40) not null ) engine=innodb charset=utf8mb4;
  • 修改表的属性 alter table tb1 charset=utf8;
  • 添加字段,alter修改表 alter table tb1 add username varchar(40) unique after id;
  • 查看表结构 desc tb1;
  • name改成nickname alter table tb1 change name nickname varchar(40);

修改字段数据类型

    • varchar(10)
    • char(10) alter table tb1 add gender varchar(10);
      alter table tb1 modify gender char(1);
  • 删除字段 alter table tb1 add birthdate date;
    alter table tb1 drop birthdate;

  • truncate 截断、重建、重置

  • 先删除表然后自动重建表 insert into tb1(username) values(‘aa’),(‘bb’),(‘cc’);
    select * from tb1;

show create table tb1;

truncate table tb1;

  • 删除表 drop table if exists tb1;

3.用户管理

  • mysql用户有两个字段:用户名、登录的主机地址 root ‘localhost’ ‘root’ root ‘192.168.0.5’ ‘abc123’ root ‘192.168.9.%’ ‘123456’ root ‘%’ ‘111111’
  • 默认只有 root@localhost,只允许本机登录
  • 添加允许远程登录的用户 create user ‘root’@‘%’ identified by ‘root’;
  • 查询系统用户表 select user,host from mysql.user;
  • 用户授权
    grant select,insert,update,delete on test.* to ‘abc’@‘%’

grant create,alter,drop on db1.* to ‘abc’@‘localhost’

grant all privileges on . to ‘abc’@‘%’

grant select,insert on db1.t1 to ‘abc’@‘%’

grant select(id, name) on db1.t1 to ‘abc’@'%

grant all privileges on . to ‘root’@‘%’;

4.五种约束

  • 主键
  • 外键
  • 非空
  • 唯一
  • 检查

5.表之间的关系

  • 一对一
  • 一对多
  • 多对多
  • 用外键关联
  • 很多公司禁用外键约束
    • 数据增删改操作,如果有外键,要到其他表检查数据正确性,有性能损耗
    • 禁用外键可以提高增删改效率
    • 不用外键,也可以对数据进行关联查询
  • 有的项目也会禁用关联查询
    • 关联多张表查询效率低
    • 可以分多次从不同表查询需要的数据
    • 数据可以适当冗余,提高查询效率

6.数据库三范式

  • 第一范式(1NF):属性不可分割,即每个属性都是不可分割的原子项。(实体的属性即表中的列)
  • 第二范式(2NF):满足第一范式;且不存在部分依赖,即非主属性必须完全依赖于主属性。(主属性即主键;完全依赖是针对于联合主键的情况,非主键列不能只依赖于主键的一部分)
  • 第三范式(3NF):满足第二范式;且不存在传递依赖,即非主属性不能与非主属性之间有依赖关系,非主属性必须直接依赖于主属性,不能间接依赖主属性。(A -> B, B ->C, A -> C)
  • 范式越高,数据冗余越少,效率越低
  • 范式越低,数据冗余越多,效率越高

7.B+Tree(mysql数据库用的数据存储)

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值