MySQL

作者: CoderHong | 来源:发表于2017-11-12 18:54 被阅读8次
    mysql.png

    这篇文章主要介绍MySQL的一些操作性的知识。

    数据库的操作


    创建数据库

    CREATE DATABASE mydatabase CHARACTER SET utf8;
    

    删除数据库

    DROP DATABASE 数据库名;
    

    表的操作


    创建表

    CREATE TABLE 表名(
        列名1 数据类型 约束,
        列名2 数据类型 约束,
        列名3 数据类型 约束
    );
    

    修改表

    • 添加字段
      ALTER TABLE 表名 add 字段名 字段类型;
    • 修改字段
      alter table 表名 CHANGE 旧列名 新列名 数据类型;
    • 删除列
      alter table 表名 drop 删除的列名;
    • 修改表名(一般不建议)
      rename table 表名 to 新表名;
    • 修改表的字符集
      alter table 表名 character set 字符集;
    • 删除表
      Drop table 表名;

    表的数据操作

    • 插入数据
      INSERT into 表名(列名1, 列名2, 列名3) VALUES(值1, 值2, 值3
    • 更新数据
      UPDATE表名 SET 字段1 = 值1, 字段2 = 值2, WHERE 条件;

    上面都是一些简单的操作,那么实际开发中最重要的还是数据的查询。接下来核心说数据库的查询。

    数据的查询

    单表查询
    select 字段1,字段2 from 表名 where 条件;
    .....这些简单以后再梳理补上。

    多表查询
    要做多表的查询,首先要清楚表之间的常见的关系。

    • 一对多关系

      • 一对多的关系 会在多表的一方添加一个字段 字段名称自定义(建议主表的名称_id)
      • 字段类型一般和主表的主键的类型保持一致 我们称之为这个字段为外键

    在开发中为了保证数据的有效性跟完整性,添加约束(外检约束)
    在多表的一方添加外检约束

    Alter table 多表名称 add foreign key(外键名称) references 一表名称 (主键); 
    

    添加了外检约束特点:
    1.主表中不能删除从表已经引用的数据
    2.从表中不能添加主表中不存在的数据

    提示:一般上线了才添加外检约束 否则测试不方便。

    举例:
    开发中常见的用户订单就是一对多的关系。
    我们先创建两个表 userorders

    create TABLE user(
        id int PRIMARY key auto_increment,
        username varchar(20)
    );
    
    create TABLE orders(
        id int PRIMARY key auto_increment,
        totalPrice DOUBLE,
        user_id int -- 外键
    );
    

    接下来为了保证数据的完整性 我们需要对订单表中外键添加约束。

    Alter table orders add foreign key(user_id) references user (id); 
    

    查询 每个用户的订单价格。

    SELECT user.id, user.username, orders.totalPrice from user, orders where user.id = orders.user_id;
    
    Snip20171112_11.png
    • 多对多关系

      • 一般引入一个中间表 在中间表存放两张表的主键,一般还会将这两个主键设置成中间表的联合主键。将多对多拆成了两个一对多。
        为了保证数据的有效性 在中间表添加两个外检约束
    • 内连接

      • 满足条件就显示 不满足条件不显示。
        格式一 显示的内连接

        • select a.表*. b表.* from a [inner] join b on ab的连接条件;

        格式二 隐式的内连接

        • select a.*. b.* from a,b where ab的连接条件;
    • 外连接

      • 左外连接

        • 先展示join左边的a表的所有数据 然后根据条件关联查询 join右边的表 符合条件则展示出来。不符合就以null显示。

        • 格式:
          select a.*. b.* from a left [outer] join b on 连接条件;

      • 右外连接

        • 先展示join右边的表(a)表, 根据条件进行关联查询join左边的表(b)表,符合条件则展示出来。不符合就以null显示。

        • 格式:
          select a.*. b.* from b right join a on user.id=orders.user_id;

    • 子查询
      • 一个依赖依赖另一个条件的结果。将一张表的查询结果作为一个临时表。

    相关文章

      网友评论

          本文标题:MySQL

          本文链接:https://www.haomeiwen.com/subject/naromxtx.html