MySQL数据库--加强篇

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 数据约束什么是数据的约束对用户操作表的数据进行约束(约束用户对数据表的操作)默认值(default)作用:当用户对使用默认值的字段 不插入值的时候,就使用默认值。

数据约束

  • 什么是数据的约束

对用户操作表的数据进行约束(约束用户对数据表的操作)

  • 默认值(default)

作用:当用户对使用默认值的字段 不插入值的时候,就使用默认值。
注意:插入null时,依旧插入null,

  • 非空(not null)

作用:限制字段必须插入数据
注意:1.非空字段,不能不赋值
2.不能赋值null

  • 唯一(unique)

作用:对字段的值不能重复
注意:1. 唯一的字段可以插入null值
2.唯一的字段可以插入多个null值

  • 主键(非空+唯一 primary key)

作用:非空与唯一相结合
注意:1. 通常情况下,每张表都会设置一个主键的字段,用于标记表中的每条记录的唯一性
2.设计主键的时候,不要选取表中,包含业务含义的字段,给每张表设置一个没有业务含义的字段,通常为id字段

  • 自增长(auto_increment)

作用:自动的递增(zerofill)int(4) zerofill----0001
注意:从0开始,所以插入的第一个数为1

  • 外键(constraint 名称(当前表名_参照表名_fk) foreign key(参照表+ID)) references 参考表(参考字段)


    img_ed3bc1e507d7d2fbe72e763b5f97c6ff.png
    image.png
img_2dbb759d4b164adb1fb31958ce078426.png
image.png

作用:作用于两张表,解决数据冗余高的问题:独立出一张表
注意:1.在插入数据的时候两张表没有必要的联系,所以使用外键使独立表约束原
2.参考独立表的id
3.被约束的表称为副表,约束别人的表成为主表,外键设置在主表上,通常作用与id

  • 级联操作(前提有外键)


    img_922c37a6ebe918281fb1211124535d68.png
    image.png

on update cascade 修改
on delete cascade 删除

数据库的设计

  • 需求分析

需求分析师--原始需求--抽取业务模型

  • 需求设计

概要设计:抽取实体<业务模型-->实体模型>,数据库设计<业务模型/实体模型-->数据模型>
详细设计:属性,方法之类的详细设计

  • 三大范式
    • 设计原则:

      建议设计的表尽量遵守三大范式
      * 第一范式:要求表的每个字段必须是不可分割的独立单元
      * 第二范式:在第一范式的基础上,要求每张表只表达一个意思。表的每个字段都和表的主键有依赖
      * 第三范式:在第二范式的基础上,要求在每张表的除主键以外的其他字段,都和主键有直接的依赖关系(降低数据冗余)---加入外键

关联查询(多表查询)

多表查询规则
三步:
1.确定查询哪些表
2.确定查询哪些字段
3.表与表之间的连接关系(规律:连接条件数量=表数量-1)

  • 交叉连接查询

不推荐: 差生笛卡尔乘积现象,有些是重复记录

  • 内连接查询


    img_8b461faea1fe49f19f787b148337643e.png
    image.png
  • 左【外】连接

概念:
使用左边的表的数据去匹配右边表的数据,如果符合连接条件的结果,则显示,如果不符合连接条件的结果,则显示null
注意:左外连接;左边的数据一定会全部显示


img_d34e20f4847e3136a0cf06a632f7c0e1.png
image.png
  • 右【外】连接

概念:
使用右边的表的数据去匹配左边表的数据,如果符合连接条件的结果,则显示,如果不符合连接条件的结果,则显示null
注意:右外连接;右边的数据一定会全部显示


img_850c9181fc8b91fd1982df9f2b67924f.png
image.png

总结:

左外与右外连接其实是一样的只是个人喜好;


img_72b5178a3623abdef5efd3a97ffdb565.png
image.png
  • 自连接查询(用在分类别)

虚拟一张表

存储过程

  • 什么是存储过程

存储过程,带有逻辑的sql语句。(即sql的编程)

  • 存储过程的特点

执行效率非常快(存储过程是在数据库的服务器端执行的)
移植性很差(不同数据库的存储过程是不能移植的)

  • 存储过程的语法

声明存储过程的结束符
存储过程的名称(参数列表)
开始
sql语句+流程控制
结束 结束符
call 存储过程名称(参数列表)


img_7f92bff96a5bddeb2cb7abfee8116ea0.png
image.png
  • 带有输入参数的存储过程
img_43bfbab95663132dcd5d780ee2b36072.png
image.png
  • 删除存储过程
    DROP PROCEDURE 存储名称;

MySQL的变量

  • 全局变量(内置变量)

MySQL数据库内置的变量(所有连接都起作用)

  • 查看所有全局变量 show variables
  • 查看某个全局变量 select @@变量名
  • 修改某个全局变量 set 变量名=新值
  • character_set_client : MySQL 服务器的接受数据的编码
  • character_set_results : MySQL服务器输出数据的编码
  • 会话变量

只存在于当前客户端与数据库服务器端的一次连接当中。如果连接断开,那么会话变量会全部丢失!

  • 定义会话变量:set @变量=值
  • 查看会话变量: set @变量
  • 局部变量

在存储过程中使用的变量叫局部变量,只要存储过程执行完毕,局部变量就丢失

触发器

  • 作用

当操作了某张表时,希望同时触发一些动作/行为,可以使用触发器完成
添加:
create trigger 触发器名称 after insert on 数据表名 for each row;
insert into 修改器字段名 values("需要添加的信息(例如:员工添加了一条信息)")
修改:
create trigger 触发器名称 after update on 数据表名 for each row;
insert into 修改器字段名 values("需要添加的信息(例如:员工修改了一条信息)")
删除:
create trigger 触发器名称 after delete on 数据表名 for each row;
insert into 修改器字段名 values("需要添加的信息(例如:员工删除了一条信息)")

MySQL的权限

  • 权限账户

只拥有部分权限
例如:只能操作某个数据库的某张数据表的数据

  • 如何修改MySQL的密码

password md5加密函数(单向加密)
select password("root");

  • 修改密码

update user set password=password('123456') where user='root';
然后重启MySQL

  • 分配权限账户

crant 权限 on 数据库.表 to '帐户名'@'账户类型' identified by '密码';
crant inseret on 数据库.表 to '自定义'@'%' identified by '密码';

  • 权限:select insert delete update drop create all
  • 账户类型:
    %:远程或本地均可
    localhost:本地
    192.168.1.1:固定的IP地址

MySQL的备份和还原

  • 备份:

mysqldump -u root -p 数据库名 > C:/**.sql

  • 还原

mysql -u root -p 数据库名<地址

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
SQL 关系型数据库 MySQL
MySQL 事务详解
在数据库管理中,事务是一组SQL语句的执行单元,它们被视为一个整体。事务的主要目标是保持数据库的一致性和完整性,即要么所有SQL语句都成功执行,要么所有SQL语句都不执行。在MySQL中,事务起到了非常重要的作用,特别是在需要确保数据的完整性和一致性的应用程序中。 本文将详细介绍MySQL事务的概念、特性、隔离级别、事务的控制和示例代码等内容,以帮助您更好地理解和应用MySQL事务。
492 2
|
存储 大数据 关系型数据库
【数据库三大范式】让我们来聊一聊数据库的三大范式和反范式设计
数据库三大范式是指数据库设计中的规范化原则,它们分别是第一范式(1NF)第二范式(2NF)和第三范式(3NF)。第一范式(1NF)第二范式(2NF)第三范式(3NF)
|
开发工具 git
解决pre-commit hook failed (add --no-verify to bypass)的问题
该文介绍了两种免去Git预提交钩子(pre-commit)的方法。一是直接进入项目.git/hooks目录,使用`rm -rf ./git/hooks/pre-commit`命令删除pre-commit文件。二是提交时添加`--no-verify`参数,如`git commit --no-verify -m&quot;XXX&quot;`,以跳过预提交检查。
695 0
|
SQL 关系型数据库 MySQL
(七)MySQL事务篇:ACID原则、事务隔离级别及事务机制原理剖析
众所周知,MySQL数据库的核心功能就是存储数据,通常是整个业务系统中最重要的一层,可谓是整个系统的“大本营”,因此只要MySQL存在些许隐患问题,对于整个系统而言都是致命的。
422 2
|
SQL 数据采集 关系型数据库
|
存储 SQL 关系型数据库
MySQL存储过程和存储函数的使用
MySQL的存储过程和存储函数在功能和用法上有明显的区别。存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,通过指定名称和参数(如果有)来调用执行,可以返回多个值或结果集,但不直接返回值。而存储函数则是一个有返回值的特殊存储过程,它返回一个值或表对象,可以直接嵌入SQL语句中使用,如SELECT语句中。两者都是为了提高SQL代码的重用性和性能,但使用场景和方式有所不同。
4440 4
|
SQL 关系型数据库 MySQL
【MySQL】事务?隔离级别?锁?详解MySQL并发控制机制
【MySQL】事务?隔离级别?锁?详解MySQL并发控制机制
289 0
|
存储 SQL 机器学习/深度学习
MySQL高级篇——索引、视图、存储过程和函数、触发器的相关概念及操作(上)
MySQL高级篇——索引、视图、存储过程和函数、触发器的相关概念及操作(上)
MySQL高级篇——索引、视图、存储过程和函数、触发器的相关概念及操作(上)
|
关系型数据库 MySQL 数据库
【MySQL】:超详细MySQL完整安装和配置教程
【MySQL】:超详细MySQL完整安装和配置教程
41694 5
|
SQL 关系型数据库 MySQL
MySQL 数据库备份与还原
MySQL 是一款常用的关系型数据库管理系统,用于存储和管理数据。在数据库应用中,数据备份和还原是非常重要的操作,用于保护数据免受意外删除、损坏或数据丢失的影响。本文将详细介绍如何在 MySQL 中进行数据库备份和还原操作,包括常用的备份和还原方法以及相关注意事项。
1870 3