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