当前位置: 首页 > news >正文

MySQL数据分析进阶(十二)设计数据库——PART4

;※食用指南:文章内容为‘CodeWithMosh’SQL进阶教程系列学习笔记,笔记整理比较粗糙,主要目的自存为主,记录完整的学习过程。(图片超级多,慎看!)

【中字】SQL进阶教程 | 史上最易懂SQL教程!10小时零基础成长SQL大师!!icon-default.png?t=N7T8https://www.bilibili.com/video/BV1UE41147KC/?spm_id_from=333.1007.0.0&vd_source=b287f1f4a1fa54cc438e31a0f87ef4e2

目录:

第十二章:设计数据库——PART4

25、CREATING AND DROPPING DATABASES——创建和删除数据库

26、CREATING TABLES——创建表

27、ALTERING TABLES——更改表

28、CREATING RELATIONSHIPS——创建关系

29、ALTERING PRIMARY AND FOREIGN KEYS——更改主键和外键约束

30、CHARACTER SETS AND COLLATIONS——字符集和排序规则

31、STORAGE ENGINES——存储引擎


第十二章:设计数据库——PART4

25、CREATING AND DROPPING DATABASES——创建和删除数据库

如果想成为数据库管理员需要了解这些工具生成的脚本

每次它们生成一个脚本,需要检查,确保它不会对你的数据库产生任何不良影响

学习更多SQL语句,徒手创建或修改数据库,不用依赖于这些视像工具

①创建数据库

CREATE DATABASE:一个没有任何表的空数据库

②再次执行可能会报错,最好加上IF NOT EXISTS

③删除数据库

26、CREATING TABLES——创建表

在sql_store2重建sql_store数据库中的customers表

①逐一添加列比较费时,只添加关键列

②确保每位顾客都有唯一的电子邮件

🔺无法重新只能执行此表,因为数据库中已经有这张表

重建此表方法一

DROP TABLE IF EXISTS customers;

重建此表方法二

CREATE TABLE IF NOT EXISTS customers;

27、ALTERING TABLES——更改表

修改一张已经存在的表

假设忘记添加last_name,或者给定列设定了错误的数据类型

使用ALTER TABLE语句

如果直接执行,这列将被放在末尾

想要把该列放在first_name后:AFTER first_name

一开始就要避免列中有空格,如果出现空格必须使用反引号来表示列名

但列名就不该有空格,这是不雅陋习

在写ALTER TABLE语句时,可以一次进行多项更改(添加、删除更改一列或多列数据类型和属性)

COLUMN关键字可写可不写

不要在生产环境下更改表,会造成非常严重的后果,只在测试数据库上尝试更改

确保执行正常,不会产生任何不良影响以后,再在生产数据库中执行他们

28、CREATING RELATIONSHIPS——创建关系

创建订单表,并在顾客和订单之间添加一组关系

order_id没有NOT NULL

当我们对某列应用主键属性时,MySQL会默认该列不允许出现空值,主键列中存在空值不合理

定义两个表的关系用FOREIGN KEY,对customer_id列应用外键约束

fk_orders_customers(customer_id):orders是子表名,customers是母表名,(customer_id)外键的列

REFERENCES customers(customer_id):告诉MySQL这一列引用customers表的customer_id列

 指定更新和删除行为,级联还是拒绝

想让订单表中对应的顾客记录自动更新CASCADE

不想意外删除订单NO ACTION

有人认为不应该级联更新操作,因为主键不能变,理论上同意,实操中就不一定,有时候主键会变(人为失误、应用BUG)

29、ALTERING PRIMARY AND FOREIGN KEYS——更改主键和外键约束

如何在建表之后再添加外键

使用ALTER TABLE语句,添加或删除给定表的外键

也可以在添加或删除主键

DROP PRIMARY KEY不用打列名

30、CHARACTER SETS AND COLLATIONS——字符集和排序规则

①字符集、排序规则

字符集:将每个字符映射到数字的表

存储一个字符串,MySQL会把使用字符集将每个字符转为为它的数值表示

不同的字符集:仅支持拉丁语/仅支持亚洲语言;支持所有国际语言

此表可以看到当前版本MySQL支持的所有字符集

big5:繁体中文

utf8:存储几乎所有国际语言(MySQL版本5或以上使用的默认字符集)

Default collation(排序规则):决定了某类语言的字符如何排序

utf8排序规则:utf8_general_ci

ci(case-insensitive,不区分大小写):MySQL在排序时大小写同等优先级,多数是我们想要的

多为用户以大写或小写字符输入他们的名字,想要用字母顺序排序时,就不用考虑它们的大小写字母

所以99%的情况,不需要更改排序规则,

Maxlen(最大长度列)

utf8最大长度为3,即MySQL存储每个自负的时候最多保留3个字节

English(1):英文字母占用1个字节

European、Middle-eastern(2):欧洲和中东语言占用2个字节

Asian(3):亚洲语言,中文、日文占用3个字节

多数情况不用考虑用不用更改字符集,保持默认设置就好了

某些情况下,可能要更改字符集来减少数据库大小

🔺假设表中一列的类型是CHAR(10)

CHAR表示固定长度的字符串,所以不管字符1还是字符10,MySQL都会保留10个字符串的空间

使用utf8字符集,MySQL预留的最大字节数时3

如果列的类型是CHAR(10),MySQL会为这一列的每个单元格预留10*3的空间,30字节

要是这张表有一百万条记录,就会配置三千万字节的空间

要是不需要支持国际语言,比如只需支持拉丁语

'latin1:被用于大多数拉丁语语言,预留1个字节

在此情况下,更改这一列、这张表或这个数据库的字符集,可以减少MySQL占用磁盘的字节数

②更改字符集

默认字符集:utf8

可以通过鼠标更改表或列级别的字符集

多数情况为了保持一致性,想要在数据库级别设置字符集,要么可以支持国际语言,要么不支持

❗如何使用SQL在数据库级别更改字符集

方法一

创建数据库时或之后设置字符集和排序规则

方法二

更改现有数据库的字符集

方法三

在表级别更改字符集

如果有一个现有的表

为特定列设置字符集

假设想要为名字列设置字符集——latin1

31、STORAGE ENGINES——存储引擎

MySQL有几个存储引擎:决定了数据图如何被存储,哪些功能可供我们使用

最常用的两个存储引擎MyISAM和InnoDB

MyISAM:旧版存储引擎(版本5.5之前)

InnoDB:更高级的存储引擎,支持事务等功能

目前为止谈论的所有内容都是InnoDB的一部分,MyISAM不支持这些功能(别用MyISAM了)

但有时使用的数据库使用更老版本的MySQL版本搭建的,这种情况可能想升级数据库,改用InnoDB,这样允许添加外键

外键对保持引用完整性非常重要

当在两张表之间添加关系时,不能给外键列添加无效值(外键的好处)

❗如何更换存储引擎

在表级别设置存储引擎,这样在同一个数据库中,就可以使用多个存储引擎

如果此表是基于更来版本的MySQL构建的话,可能就会是MyISAM

使用SQL语句更改一张表的存储引擎

更改一张表的存储引擎可能会花很大功夫,因为MySQL必须重建这张表,在此期间无法访问表,不要在产出阶段更改存储引擎,除非要定期维护

————TBC

相关文章:

MySQL数据分析进阶(十二)设计数据库——PART4

;※食用指南:文章内容为‘CodeWithMosh’SQL进阶教程系列学习笔记,笔记整理比较粗糙,主要目的自存为主,记录完整的学习过程。(图片超级多,慎看!) 【中字】SQL进阶教程 |…...

在 Spring Boot 中使用桥接模式实现灵活的报表生成服务

在软件开发中,桥接模式是一种结构型设计模式,用于将抽象部分与它的实现部分分离,使得这两部分可以独立变化。这种模式非常适合处理需要灵活配置和扩展的场景,比如报表生成服务。本文将详细介绍如何使用桥接模式来实现一个灵活的报…...

算法:外卖调度

题目 有N个餐厅和M个外卖员,每个餐厅在某个时间点会产生一个外卖订单,这些订单都有产生时间、所需送达时间和优先级。外卖员在空闲时会选择最优先的订单来配送,直到所有订单都被送达。具体规则如下: 对于每个餐厅的订单,优先级高…...

leetcode50. Pow(x, n),快速幂算法

leetcode50. Pow(x, n),快速幂算法 实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。 示例 1: 输入:x 2.00000, n 10 输出:1024.00000 示例 2: 输入&#xff…...

Xinstall神器来袭,轻松搞定CPA推广渠道统计!

在数字化营销日益盛行的今天,CPA(按行动付费)推广已成为众多企业营销的重要手段。然而,随着渠道流量和获客途径的不断变化,CPA推广渠道统计的痛点也日益凸显。别担心,Xinstall来帮你解决问题! …...

011 | efinance分析豆一主连期货

👉👉👉 《玩转Python金融量化专栏》👈👈👈 订阅本专栏的可以下载对应的代码和数据集 🚀 上一篇🌟 下一篇⬅️ 010 东方财富帖子标题情绪分析012 akshare分析NYBOT棉花历史数据 ➡️豆一主连期货(通常简称“豆一”)是指中国期货市场上以大豆为标的的期货合约…...

【Python】函数入门(下)

3))* ** ​​​​​​注意:也遵循位置传参在前面,按关键字传参在后面。 代码示例: def func(*args,**kwargs):print(args,kwargs) 该函数中的参数会自动根据传参的方式不同(即:按位置…...

git的基本概念和使用原理

Git是一个分布式版本控制系统,用于跟踪文件的更改并协调多个开发人员之间的工作。以下是Git的基本概念和使用原理及方式: 目录 基本概念 使用原理 基本操作示例 基本概念 版本库(Repository): 版本库是Git用来保存…...

手写简化版的vue-router

vue-router作为vue全家桶之一的重要插件,有必要去深究一下,今天我们就从0到1手写一个简化版本。 开始之前,我们使用路由插件时是先进行下载路由 npm i vue-router ,然后在main.js中使用app.use导入router插件。想要手写vue-rou…...

分享一个基于uni-app的蛋糕商城订购小程序的设计与实现(源码、调试、LW、开题、PPT)

💕💕作者:计算机源码社 💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流&…...

Python绘图入门:使用Matplotlib绘制柱状图

Python绘图入门:使用Matplotlib绘制柱状图 柱状图是一种常见的数据可视化方式,能够直观地展示不同类别之间的数据差异。在Python中,Matplotlib是一个非常强大且灵活的绘图库,它不仅能绘制简单的图表,还能创建复杂的多…...

Qt5编译qmqtt库使用MQTT协议连接华为云IOT完成数据上传与交互

一、前言 随着物联网技术的发展,越来越多的设备通过网络互相连接,形成了庞大的智能系统。这些系统能够收集、分析并响应各种数据,从而实现自动化控制和智能化管理。在这个背景下,MQTT 成为了一个广泛使用的轻量级消息传输协议,特别适用于资源受限的环境,如移动应用或远程…...

mysql速起架子

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz 下载mysql tar xvJf mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz 解压 mv mysql-8.0.21-linux-glibc2.12-x86_64 mysql-8.0 改名 去到bin目录 cd bin mkdir data gr…...

云动态摘要 2024-08-14

给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。 最新优惠与活动 注册阿里云免费领云服务器_云服务器ECS_阿里云 阿里云 2024-08-14 云上试用新玩法,个人享300元免费额度,企业享660元免费额度,多种规格随心试 [免费体验…...

Elasticsearch 桶(Bucket)聚合详解及示例

在 Elasticsearch 中,桶(Bucket)聚合是一种强大的工具,它允许我们对数据进行分组并统计每组的数量。这种聚合类型对于理解数据的分布和进行分组统计非常有用。本文将详细介绍 Elasticsearch 的桶聚合,并提供完整的示例…...

Django基础知识

文章目录 新建Django项目helloworld关联数据库admin 新建Django项目 创建django-admin startproject project_name 运行 python manage.py runserver 创建app: python manage.py startapp app_name 目录: 配置文件 settings.py 路由配置 urls.py 项目管理 manage.p…...

使用 nginx 搭建代理服务器(正向代理 https 网站)指南

简介 正向代理 简介 在企业开发环境中,局域网内的设备通常需要通过正向代理服务器访问互联网。正向代理服务器充当中介,帮助客户端请求外部资源并返回结果。局域网内也就是俗称的内网,局域网外的互联网就是外网,在一些特殊场景内…...

深入解析亚马逊数据采集工具选择:Data API/Scrape API/Pangolin采集器

引言 在当今电商领域,亚马逊已成为全球最大的在线零售平台之一。随着竞争的加剧和市场的多样化,商家和企业不仅需要优秀的产品和服务,还需要通过深入的数据分析来制定更加精准的市场策略。因此,采集亚马逊站点数据已成为企业实现…...

探索Linux多样性:主流发行版及其应用场景

目录 引言 Debian:稳定性的标杆 Ubuntu:易用性的代表 Red Hat Enterprise Linux (RHEL):企业的首选 Fedora:创新的前沿 CentOS:开源的稳定之选 Arch Linux:高级用户的定制天堂 Gentoo:性…...

CentOS7.6 HAproxy-7层负载均衡集群——实施方案

目录 1、前期环境准备 1.准备4台主机 1. 设置主机名 2. 设置IP地址然后重启网卡 3. 关闭防火墙和selinux 4. 全部的服务器完成时间统一 二、配置haproxy(192.168.200.11)服务器 1. 安装haproxy 2. haproxy 配置中分成五部分内容 3. 配置HAproxy(192.168.2…...

智能网联时代的分心驾驶:技术悖论、工程困境与系统化安全框架

1. 项目概述:一个被忽视的致命悖论 作为一名在汽车电子和智能网联领域摸爬滚打了十几年的工程师,我见过太多关于“未来出行”的炫酷概念和激动人心的技术路线图。从早期的车载信息娱乐系统,到后来的高级驾驶辅助系统,再到如今如火…...

3个简单步骤彻底解决Dell G15笔记本散热问题:开源温度控制中心完全指南

3个简单步骤彻底解决Dell G15笔记本散热问题:开源温度控制中心完全指南 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15 你是否正在为Dell G15笔记本…...

基础设施即代码最佳实践:自动化云原生基础设施管理

基础设施即代码最佳实践:自动化云原生基础设施管理 一、基础设施即代码概述 1.1 基础设施即代码的定义 基础设施即代码(Infrastructure as Code, IaC)是一种将基础设施配置和管理通过代码来实现的方法。它允许开发者使用版本控制、自动化测试…...

别再用示波器死磕了!用Python+RC积分电路,5分钟搞定充放电曲线模拟与可视化

别再用示波器死磕了!用PythonRC积分电路,5分钟搞定充放电曲线模拟与可视化 在电子工程实践中,RC积分电路的充放电特性分析是基础中的基础。传统方法往往依赖示波器观测,不仅耗时耗力,还受限于硬件条件。今天&#xff…...

深入Acid引擎架构:模块化设计与现代C++17的最佳实践指南

深入Acid引擎架构:模块化设计与现代C17的最佳实践指南 【免费下载链接】Acid A high speed C17 Vulkan game engine 项目地址: https://gitcode.com/gh_mirrors/ac/Acid Acid引擎是一个基于Vulkan API的高性能C17游戏引擎,采用先进的模块化架构设…...

IPBan快速入门:一键安装配置,立即阻止僵尸网络入侵

IPBan快速入门:一键安装配置,立即阻止僵尸网络入侵 【免费下载链接】IPBan Since 2011, IPBan is the worlds most trusted, free security software to block hackers and botnets. With both Windows and Linux support, IPBan has your dedicated or …...

Java源码学习:深入剖析Java的concurrent包源码之`ReentrantLock` 的精妙设计与云原生演进

引言:从 synchronized 到可编程的锁 在 Java 并发编程的演进史上,synchronized 关键字曾是开发者控制线程同步的唯一选择。它简单、易用,并由 JVM 保证其正确性。然而,随着应用复杂度的提升,其固有的局限性——如无法中…...

精读双模态检测论文二十六|DefDeN(兰州大学)创新点拉满!门控融合+可变形去噪+对比学习,LiDAR-Camera 3D检测暴力涨点!!!

🔥 本文定位:CSDN 原创干货 | 兰州大学/卧龙岗大学 LiDAR-Camera 3D目标检测 SOTA 方案 🎯 核心收益:一次性解决注意力融合三大痛点——收敛慢、计算量大、误检率高!基于门控多模态融合单元(GMFU&#xff0…...

虚拟原型技术:软硬件协同开发与多核处理器调试新范式

1. 虚拟原型平台:从芯片设计到软件集成的范式转变在嵌入式系统开发领域,尤其是涉及复杂多核处理器的项目里,一个长期存在的“鸡生蛋还是蛋生鸡”的困境一直困扰着工程师们:硬件原型板(EVB)尚未就绪&#xf…...

一键完整网页截图终极指南:告别滚动拼接的烦恼

一键完整网页截图终极指南:告别滚动拼接的烦恼 【免费下载链接】full-page-screen-capture-chrome-extension One-click full page screen captures in Google Chrome 项目地址: https://gitcode.com/gh_mirrors/fu/full-page-screen-capture-chrome-extension …...