MySql 使用心得

RDBMS

  • 主键(primary key):
    • 一个表只能有一个主键
    • 不能为null
    • 一列或多列的组合
    • 能唯一标识每一行
    • 复合组件不能包含多余列(删除这个列后,剩下的列不可以依然唯一)
    • Innodb表中如果没有主键,会自动定义一个隐藏主键
  • 外键:
    • A表中的字段B表中的主键关联(在A表插入的时候会检查外键B表中是否存在
    • 关联:
      • restrict(限制):如果A表中有关联B表的记录,删除修改B表主键会失败。
      • cascade(级联):删除修改B表主键时会自动删除修改A表中对应的记录。
      • no action(什么也不做)
      • set null:删除修改B表主键时会自动把A表中对应的记录的外键设置为NULL(前提是外键不能设置为not null)。

使用

  • 登录:
mysql -h localhost(本地可省略) -u root -p
Enter password:********
  • 创建用户:
    • 以root用户登录
    • 在mysql.user表中增加记录
create user username identified by 'password';
  • 修改权限:
    • 在mysql.db表中创建权限记录
grant all privileges on dbname.* to username@'%' identified by 'password';
flush privileges;
  • 查看权限:
show grants for 'username';

语法

  • 创建数据库:
create database 数据库名字;
  • 删除数据库:
drop database 数据库名字;
  • 选择数据库
use 数据库名字;
  • 创建数据表:
create table 表名(名字 类型);
  • 删除数据表:
drop table 表名;
  • 插入数据
insert into 表名(字段)values();
  • 更新数据:
update 表名 set 字段1=1, 字段2=2;
  • 删除数据
delete from 表名 where子句;
  • 自增主键:
    • 可以设置自增步长来方便水平分表(例如:步长为100,最多就能分100张表)。
    • 查看自增步长show variables like ‘%auto_inc%’;
    • 修改自增步长set auto_increment_increment=100 ;
    • 查看全局自增步长show global variables like ‘%auto_inc%’;
    • 修改全局自增步长set global auto_increment_increment=100 ;
    • 持久化修改:set persist auto_increment_increment=100 ;(局部和全局的变量都会被改变,重启MySql也不会丢失修改值)。
    • 注意:MySql8 之前innodb表会在重启丢失自增id的值导致bug,MySql8 之后就没有问题了。
    • 注意2:修改变量后需要重新链接数据库才有效。
  • 垂直分表:可以把一张大表的字段分开成多张表,其中一张的id自动生成,其他表的对应id可以用第一张表的id,这样就可以很好的把多张表联系起来了。
发布了41 篇原创文章 · 获赞 4 · 访问量 3882

猜你喜欢

转载自blog.csdn.net/weixin_42487874/article/details/103640102