[MySQL]基础笔记

(依据黑🐎讲解视频进行知识点汇总)

数据库介绍及概念

数据库服务器

安装了数据库软件的计算机,就是数据库服务器.

数据库管理系统(DBMS)

DBMS,Database
management System数据库库管理系统,是一款操作数据库的管理软件。

数据库

数据库(Database)是用来组织、存储和管理数据的仓库。简单来说是可视为电子化的文件柜——存储电子文件的处所,相当于文件夹。

数据表

数据表是存放数据的地方。

记录、字段(列)、数据(值)

记录:一行数据就是一条记录;
字段(列):每个表由多个列构成,每个列就是一个字段。
数据:行列交叉处的值,就是数据。

数据库访问流程图

很多牌子的数据库(Oracle、DB2、SQL Server、MySQL等)->选择安装MySQL->数据库Database->数据表TABLE->数据DATA

关系型数据库

所谓关系数据库,是建立在关系模型基础上的数据库,现实世界中的各种实体以及实体之间的各种联系均可用关系模型来表示。例如:教师实体、学生实体等;

目前主流的关系数据库有Oracle、MySQL、DB2、SQLServer、sybase等;

简单说,关系型数据库是由多张能互相联接的二维行列表格组成的数据库;
通俗说,一个关系模型其实就是一张规范的二维表格。

结构化查询语言SQL

结构化查询语言(Structured Query Language)简称SQL,是关系数据库的标准语言,用于对数据的存取和管理;同时也是数据库脚本文件的扩展名(.sql),备份文件的扩展名。
SQL语言简洁,易学易用。下面会详细讲到.

数据库存储引擎和数据类型

什么是存储引擎

  • 数据使用各种不同的技术 存储在数据库中
  • 这些文件引用不同的存储机制,索引技巧,锁定水平,形成不同的最终的广泛功能
  • 也称作表类型.
  • MySQL内置了不同的很多存储引擎,目前流行的是InnoDB

查看存储引擎

  • SHOW ENGINES 查看所支持的引擎

InnoDB存储引擎

  • 其优点是 事务处理 回滚 崩溃修复能力 处理多并发
  • 第一个提供外键约束的存储引擎
  • 缺点是读写效率差,占用数据空间较大

MyISAM存储引擎

  • 基于ISAM引擎
    • 存储格式为静态 动态 压缩.
    • 静态数据 空间会占用较大空间,但处理数据会降至最低开销.
    • 动态数据 空间占用较小,但数据变动会导致内存移动,产生碎片(需要调用 碎片整理语句 OPTIMIZE TABLE)
    • 只读数据 采取压缩空间存储
    • 整体优势占用空间较小,处理速度快不支持 事务和并发性处理

MEMORY存储引擎

  • 索引类型
    • 哈希索引
  • 存储周期
    • 大小受限
    • 生命周期短

数据类型

  • 数据类型
    • 数字类型
      • TINYINT 最小整数 (127~255)
      • BIT 最小整数 (127~255)
      • BOOL 最小整数 (127~255)
      • SMALLINT 小型整数 32767
      • MEDIUMINT 中型整数 8388607
      • INT 标准整数 2147683647
      • BIGINT 大整数 9223372036854775807
      • FLOAT 单精度浮点数
      • DOUBLE 双精度浮点数
      • DECIMAL 一般整数 自定义长度
    • 字符串类型
      • 普通字符串类型
        • CHAR 0-255
        • VARCHAR 0-255
      • TEXT 和 BLOB类型
        • TINYBLOB 225字节 小BLOB字段
        • TINYTEXT 225字节 小TEXT字段
        • BLOB 65535字节 常规BLOB字段
        • TEXT 65535字节 常规TEXT字段
        • MEDIUMBLOB 16777215字节 中型BLOB字段
        • MEDIUMTEXT 16777215字节 中型TEXT字段
        • LONGBLOB 4294967295字节 长BLOB字段
        • LONGTEXT 4294967295 长TEXT字段
      • 特殊类型SET 和ENUM
        • ENUM 65535
        • SET 64
    • 日期类型
      • DATE
      • TIME
      • DATETIME
      • TIMESTAMP
      • YEAR
    • 数据类型抉择
      • 选择最小的可用类型,如果值永远不超过127,则使用TINYINT比INT强
      • 对于完全是数字的,可用整数类型
      • 浮点类型用于可能具有小数部分的数.
      • 从速度方面考虑,要选择固定的列,可以使用CHAR 类型
      • 要节省空间,使用动态的列,可以使用VARCHER类型
      • 要将列中的内容限制在一种选择,可以使用ENUM类型.
      • 允许在一个列中有多于一个的条目,可以使用SET类型
      • 如果要搜索的内容不区分大小写,可使用TEXT类型
      • 如果要搜索的内容区分大小写,可以使用BLOB类型

结构化查询语言SQL

SQL语句自有规范,其大致语法可以概括为:增、删、改、查.

数据库基本操作

数据库服务器启动、停止

Mac环境下:
确认已经使用brew 安装MySQL
运行指令> mysql.server start 启动数据库服务器
运行指令> mysql.server stop 停止数据库服务器

数据库登录、退出

终端运行指令> mysql -u root -p回车

数据库的增删改查

  • 创建数据库 CREATE DATABASE name
  • 查看数据库 SHOW
    • 查看所有数据库 SHOW DATABASES
  • 使用数据库 USE DATABASE name
  • 删除数据库 DROP DATABASE name

数据表基本操作

  • 添加数据表 CREATE
  • 查看表结构 SHOW COLUMNS/DESCRIBE
  • 查看表详细结构语句 SHOW CREATE TABLE
  • 修改表结构 ALTER TABLE
  • 重命名 RENAME TABLE
  • 删除表 DROP TABLE

数据基本操作

  • 插入数据 INSERT
  • 查询数据 SELECT
  • 修改数据 UPDATE
  • 删除数据 DELETE

数据库聚合函数

  • COUNT(字段名) 计算非空记录数
    • SELECT COUNT(DISTINCT results) FROM student;
    • COUNT(*)全部统计
    • SELECT sex,count(sex) AS 人数 FROM student GROUP BY sex DESC.
  • AVG(字段名) 平均数
    • SELECT AVG(row) FROM table_name;
  • MIN (字段名) 最小值
    • SELECT MIN(row) FROM table_name;
  • MAX (字段名) 最大值
    • SELECT MAX(row) FROM table_name;
  • STD(字段名)指定字段标准背离值
  • STDTEV(字段名)指定字段标准背离值
  • SUM(字段名)指定字段所有记录的总合
    • SELECT sum(row) FROM table_name;

数据库逻辑运算符&比较运算符

  • 算数运算符
    • 加法运算+
    • 减法运算-
    • 乘法运算 *
    • 除法运算 /
    • 求余运算 %
    • 除法运算 返回商 DIV 同’/’
    • 求余运算 返回余数 MOD 同’%’
  • 比较运算符
    • 等于 =
    • 大于 >
    • 小于 <
    • 大于等于 =>
    • 小于等于 <=
    • 不等于 != 或 <>
    • 是否为空 IS NULL
    • 不为空 IS NOT NULL
    • 范围 ..介于 BETWEEN AND
    • 范围 ..不在 NOT BETWEEN AND
    • 在范围之内 IN
    • 不在什么范围之内 NOT IN
    • 模糊查询 包含 LIKE
    • 模糊查询 不包含 NOT LIKE
    • 正则表达式 REGEXP
  • 逻辑运算符
    • 多条件查询 AND
      • 条件必须全部满足,才能被查询出来
      • SELECT * FROM table_name WHERE condition_1 AND condition_2 …可以无限AND叠加
      • SELECT * FROM table_name WHERE user=‘mr’ AND section=‘php’.
    • 多条件查询 OR
      • 满足其中一个条件就会被查出来
      • SELECT * FROM table_name WHERE condition_1 OR condition_2…OR无限叠加
      • SELECT * FROM table_name WHERE section=‘php’ OR section=‘程序开发’;
    • 非运算 NOT
    • 异或运算 XOR
  • 位运算
    • 按位与&
    • 按位或|
    • 按位取反~
    • 按位异或^
    • 按位左移<<
    • 按位右移>>

数据库联结查询

  • 内连接查询
    • SELECT name,books FROM table_name_1,table_name_2 WHERE table_name1.user =table_name2.user
    • 内连接,结果集只包含参加连接的表中与指定字段相符的行.
    • 如果没有WHERE限定,则为交叉连接或者全连接
    • 相等联结
      SELECT col_name FROM table_name INNER JOIN table_name WHERE conditions = conditions
    • 不等联结
      SELECT col_name FROM table_name INNER JOIN table_name WHERE conditions <> conditions
    • 自然联结
      SELECT col_name FROM table_name NATURAL JOIN table_name ;
  • 左外连接
    • SELECT col_name FROM table_name1 LEFT JOIN table_name2 ON table_name1.col_name =table_name2.col_name;
    • 左外链接,是指将左表中的所有数据分别与右表的每条数据进行结合,返回的结果除内连接的数据外,还包括左表中不符合条件的数据,并在右表的相应列中添加NULL值.
  • 右外连接
    • SELECT col_name FROM table_name1 RIGHT JOIN table_name2 ON table_name1.col_name =table_name2.col_name;
    • 右外连接,是指将右表中的所有数据分别与左表中的每条数据进行连接组合,返回的结果除内连接数据外,还包括表中不符合条件的数据,并在左表的相应列中添加NULL.

数据库联结查询思想

  • a 表有的数据 b 表也必须要有
  • b 依赖 a
  • 所以 b 表的数据不给删除 必须要 a 的删除了 b 才能删除
  • 反正 外键就是维护两张或者多张表的数据一致性
    关联 是两张或多张表的逻辑关系
    关联不需要外键
  • 关联只是描述逻辑
  • 它说是外键 你想成关联字段就行了 不是说关联就一定不能是外键 关联字段也可以是外键 但是尽量不要是
  • 文章 -> 帐户
  • 评论 -> 帐户

这个时候有外键约束的话 帐户就不给删除

  • 因为要保持数据的一致性 你帐户删除了 那文章 评论就找不到帐户了
  • 要删除帐户就得把 这个帐户的 文章 以及 评论全部删除了 才能那个删除帐户
  • 而关联 则是 查询文章的时候 看是谁发的 那 拿文章关联帐户 去查询
  • 关联 不须要外键 这是两种东西
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值