MySQL基本操作汇总

MySQL数据库基本操作介绍汇总

!!! 参考学习哔哩哔哩MySQL教程,一天学会MySQL

  • 查询数据库服务器中的所有数据库

    • show databases
  • 选中一个数据库进行操作

    • use {database name}
  • 创建数据库

    • creat database {database name}
  • 数据库中的表

    • show tables
  • 如何创建数据表

    • creat table {table name}(
      name VARCHAR(20),
      owner VARCHAR(20),
      species VARCHAR(20),
      sex char(1),
      brith DATE,
      death DATE);
      创建表需要声明表头和对应的数据类型
      日期数据可以直接声明 用日期格式的文本形式写入
    • show tabels;
      • 查看数据表是否创建成功
    • describe {tables name}
      • 查看创建好的数据表的结构
  • 如何往数据表中添加数据记录

    • INSERT INTO table_name ( field1, field2,…fieldN )
      VALUES
      ( value1, value2,…valueN );
mysql> INSERT INTO runoob_tbl
    -> (runoob_title, runoob_author, submission_date)
    -> VALUES
    -> ("学习 MySQL", "菜鸟教程", NOW());
  • 数据类型

    • MySQL中有数值、日期/时间和字符串(字符)类型三种数据类型
    • 数据类型
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yx1k7jfB-1604411144553)(en-resource://database/2389:1)]
    • 日期类型
      • 日期和时间类型表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rn55qTec-1604411144562)(en-resource://database/2391:1)]
    • 字符串类型
      • 字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lqr3Z7jR-1604411144564)(en-resource://database/2393:1)]
  • 删除表

    • DROP TABLE table_name
  • 数据记录常见操作

    • 增加
      INSERT
    • 删除
      DELETE
    • 修改
      UPDATE
    • 查询
      SELECT
创建数据表约束
* 主键约束
    * 自增约束 
* 外键约束
* 唯一约束
* 非空约束
* 莫认约束
  • 主键约束
    • 能够确定一张表中的一条记录,通过某个字段添加约束,使得该字段不重复不为空
    • 使用主键应注意以下几点:每个表只能定义一个主键。
    • 主键值必须唯一标识表中的每一行,且不能为 NULL,即表中不可能存在有相同主键值的两行数据。这是唯一性原则。
    • 一个字段名只能在联合主键字段表中出现一次。联合主键不能包含不必要的多余字段。
    • 当把联合主键的某一字段删除后,如果剩下的字段构成的主键仍然满足唯一性原则,那么这个联合主键是不正确的。这是最小化原则。
CREATE TABLE tb_emp3
    (
    id INT(11) PRIMARY KEY,
    name VARCHAR(25),
    deptId INT(11),
    salary FLOAT
    );
    
 
CREATE TABLE tb_emp4
   (
   id INT(11),
   name VARCHAR(25),
   deptId INT(11),
   salary FLOAT,
   PRIMARY KEY(id)
  • 联合主键所谓的联合主键,就是这个主键是由一张表中多个字段组成的
  • PRIMARY KEY [字段1,字段2,…,字段n]

CREATE TABLE tb_emp5
     (
     name VARCHAR(25),
     deptId INT(11),
     salary FLOAT,
     PRIMARY KEY(id,deptId)
     );
  • 自增约束(与主键约束搭配)
    • 自动生成 主键
->creat table user3(
        id int primary key auto_increment
        name varchar(20)
        );
->insert into user3 values('zhangsan')
  • 如果创建表的时候忘记创建主键约束

    • 可以添加主键约束
      • ALTER 修改表结构
      • ALTER TABEL user4 ADD primary key(id)
    • 删除主键约束
      • ALTER TABLE user4 DROP primary key;
    • 修改字段,添加主键
      • ALTER TABLE uesr4 MODIFY id int primary key;
  • 唯一约束

    • 约束修复字段的值 不重复
    CREAT TABLE user5(
            id int,
            name varchar(20)
            );
    
    • 添加唯一约束:
      alter talble user5 add unique(name)
    • 创建表时直接添加:
    CREAT TABLE user5(
            id int,
            name varchar(20)
           unique(name) 
           );
           
    --------------------------------------------------
    CREAT TABLE user5(
        id int,
        name varchar(20) unique
       );
     *********************************  
    CREAT TABLE user5(
           id int,
           name varchar(20)
          unique(name) 
          );
    
  • 通过modify 的形式添加

    • alter table user7 modify name varchar(20) unique;
  • 删除唯一约束

    • alter table user7 drop index name(添加在name上)
  • 总结

      1. 建表的时候添加约束
      1. 使用 alter … add …
      1. alter … add …
      1. 删除alter … drop …
  • 非空约束
    not null

    • 修饰字段不能为空
    CREATE TABLE user9(
    id          INT,
    name     VARCHAR(20) not null
    );
    ## 显示表的基本信息
    des user9;  
    
    INSTER INTO user9 values(
        1, 'zhangsan');
    
  • 默认约束

    • 当我们插入字段值的时候,如果没有传值,就会使用默认值,,与python函数默认值比较类似
    CREATE TABLE user10(
    id          int
    name     varchar(20)
    age         int default 10);
    
  • 外键约束

    • 涉及到两个表:父表与子表(主表、附表)
    •  CREATE TABLE students(
                 id          int     primary key,
                classID   int,
        );
      
       CREATE TABLE students(
                id          int     primary key,
                name     varchar(20), 
                classID   int,
                foreign key(classID) reference classesTabele(id)
                );
        ### classID来自于classesTabel表的字段
      
    • 插入数据
    insert into classese  values(1, '1 class');
    insert into classese values(2, '2 class');
    insert into classes values(3, '3 class')
    
    insert into students vlaues(1001, 'zhan', 1)
    insert into students vlaues(1002, 'do', 2)
    insert into students vlaues(1003, 'zhn', 4)
    # 最后一句报错,不符合主表中classID的要求
    
    delect from classes where id=2;
    # 删除主表中的id4,但是报错,由于id2 被子表 students中引用
    
      1. 主表中 classes 中没有的数据值,再副表中不可以使用
      1. 主表中的记录被附表引用,不可以删除

数据库的设计范式

  • 三大设计范式

    1. 第一范式
    • 表中的所有字段都是不可分割的原子值

    • CREAT TABLE student(
            id int primary key,
            name varchar(20),
            addtess varchar(20));
            
      **********************************
      insert into student values('1', 'zhang', '100 wuhou chengdu  zhongguo ')
      
      ************************************
      
      select * from student2 ;
      
    • 字段值还可以继续拆分 就不满足第一范式

    •  '''
      CREAT TABLE student(
        id int primary key,
        name varchar(20),
        country varchar(20),
        city      varchar(20),
        details  varchar(20)
        );
      ```
      
    1. 第二范式
    • 在满足第一范式的前提下,第二范式要求,出逐渐外每一列都必须完全依赖主键
    • 如果要出现不完全依赖,只可能发生在联合主键下
    creat table myoder(
          product_id int,
          customer_id int,
          product_name, varchat(20),
          costomer_name varchar(20),
          primary key(product_id, customer_id);
          
    
    • – 问题
      • 除主键外的其他列,只依赖于主键的部分字段
      • 拆表
    ```
    creat table myorder(
             order_id    int    primary key,
             product_id   varchar(20)),
             customer_id   int);
             
     creat table myoder(
         product_id int    primary key,
       
         product_name, varchat(20));
         
    creat table myoder(
        
         customer_id int,
         costomer_name varchar(20),
         primary key(customer_id);
    ```
    
      1. 第三范式
      • 必须满足第三范式,除开主键列的其他列之间不能用传递依赖关系
      
      creat table myorder(
              order_id    int    primary key,
              product_id   varchar(20)),
              customer_id   int
              costomer_phone varchar(20),);
      #############
      phone 与上述两个均存在依赖关系,关系复杂了
      #############
      
      
      creat table myoder(
         
          customer_id int,
          costomer_name varchar(20),
          costomer_phone varchar(20),
          primary key(customer_id);
      
      ### 
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一. 概述 5 二. 卸载MySQL数据库 6 2.1 备份数据库 6 2.2 卸载MySQL数据库 6 2.2.1 检查MySQL服务并关闭服务进程 6 2.2.2 查找MySQL的安装目录并彻底删除 6 2.2.3 删除MySQL配置文件 7 2.2.4 删除MySQL用户以及用户组 7 三. 安装MySQL数据库 9 3.1 安装MySQL数据库 9 3.1.1 下载MySQL安装包 9 3.1.2 上传并解压MySQL安装包 9 3.1.3 添加系统MySQL组和MySQL用户 10 3.1.4 安装MySQL数据库 10 3.1.5 启动MySQL服务和添加开机启动MySQL服务 11 3.1.6 修改MySQL的root用户密码 13 3.1.7 把MySQL客户端放到默认路径。 13 3.2 配置MySQL数据库远程访问权限 13 3.2.1 进入 mysql 14 3.2.2 使用mysql数据库 14 3.2.3 查看用户表 14 3.2.4 创建远程登录用户并授权 15 3.2.5 强制刷新权限 15 3.3 恢复备份的数据库 15 四. MySQL数据库数据迁移 16 4.1 迁移前准备 16 4.1.1 停止MySQL数据库服务 16 4.1.2 创建数据库迁移目录 16 4.2 数据迁移 17 4.2.1 复制数据库数据到迁移目录 17 4.2.2 修改配置并启动服务 17 五. Mysql 数据目录存放位置更改 19 六. MySQL主从配置 20 6.1 基本条件 20 6.2 安装MySQL数据库 20 6.3 主机配置 20 6.3.1 修改my.cnf配置文件 20 6.3.2 初始化bin-log日志 21 6.4 从机配置 21 6.4.1 修改my.cnf配置文件 21 6.4.2 添加同步主机配置 22 七. MySQL互为主从配置 24 7.1 基本条件 24 7.2 安装MySQL数据库 24 7.3 主机A配置 24 7.3.1 修改my.cnf配置文件 24 7.3.2 给主机B赋予mysql权限 25 7.3.3 初始化bin-log日志 26 7.4 主机B配置 27 7.4.1 修改my.cnf配置文件 27 7.4.2 给主机A赋予mysql权限 28 7.4.3 初始化bin-log日志 29 7.5 同步配置 30 7.5.1 主机A设置同步 30 7.5.2 主机B设置同步 31 八. my.cnf配置样例 34 8.1 my.cnf推荐配置 34 8.2 my.cnf主从推荐配置 35 8.2.1 主机my.cnf推荐配置 35 8.2.2 从机my.cnf推荐配置 35 8.3 my.cnf互为主从推荐配置 36 8.3.1 主机A my.cnf推荐配置 36 8.3.2 主机B my.cnf推荐配置 37 8.3.3 鄙人的my.cnf简单配置 38 九. Mysql根据ibd文件恢复数据 40 9.1 创建新数据表,和源数据表一致 40 9.2 删除新数据表的表空间 40 9.3 将待恢复的<table_name>.ibd文件copy到目标数据库文件夹下,并修改文件权限 40 9.4 导入表空间 41 十. 根据frm文件恢复表结构 42 10.1 新建同名的表 42 10.1.1 建立新的表结构 42 10.1.2 修改新建的数据表结构为17个字段 43
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值