【mysql基础知识】

mysql数据类型

MySQL数据类型定义了数据的大小范围,因此使用时选择合适的类型,不仅会降低表占用的磁盘空间,

间接减少了磁盘I/O的次数,提高了表的访问效率,而且索引的效率也和数据的类型息息相关。

数值类型

image-20240325115914543

比如说定义年龄,咱们就不用INT类型了 因为没有人的年龄那么大 就设置TINYINT;

age INT(9) 整形占用内存党的大小是固定的,和具体的类型是强相关的。(M)只是代表整数显示的宽度

字符串类型

image-20240325120143491

BLOB就是二进制;一般文本就用TEXT

char(M) 就是说是它这个字符的宽度,如果是hello那宽度也是12,但是超过12的字符串就会截取

日期和时间类型

image-20240325120801836

日期类型也是做项目过程中,经常使用的类型信息,尤其是TIMESTAMP和DATETIME两个类型,但是注意TIMESTAMP会自动更新时间,非常适合那些需要记录最新更新时间的场景,而DATETIME需要手动更新。

注:一般不会使用数据库的这种时间,因为我们项目最先遇到性能瓶颈的就是mysql因为它设计磁盘的IO

enum和set

这两个类型,都是限制该字段只能取固定的值,但是枚举字段只能取一个唯一的值,而集合字段可以取任意个值。

比如就是我设置一个性别的时候只能选男女不可以选别的,来限制该字段。

MySQL运算符

MySQL运算符

image-20240325122025376

就是正常的运算

逻辑运算符

image-20240325122103030

 select * from user where sex = 'M'and score>=90.0;//找出是男的而且成绩大于90的

比较运算符

image-20240325122242415

mySQL常用函数

字符串函数

 select * from user where age between 20 and 22;
 select * from user where score in(99.0,100);//找出99到100的学生
 select * from user where name like 'zhang%';//这个就是找到后面所有字符的 比如说zhang san  zhang yao
 select * from user where name like 'zhang_';//找到一个的  zhang x

mysql的完整性约束

主键约束

primary key//主键就是这个字段不能取空值,不能重复

主键和唯一键 非空约束是不用写到一起的

 ​

自增键约束

auto_increment

//就比如说我加入id这个东西我不需要考虑去加到哪一列 会自动按顺序生成

唯一键约束

unique

一个表只能有一个主键,但是可以有很多个唯一键

非空约束

not null

默认值约束

default

外键约束

foregin key

例子:

 学生信息表       父表
 张三 xxx xxx
 学生考试表
 张三id xxx xxx    子表

比如说我这个学生退学了 那就是删除张三 但是其它表都有它的信息 那就应该提示或者有关联的 比如说id就都删除

但一般来说我们用不上这些 我们使用代码逻辑来控制


实例:

 CREATE TABLE user(
 id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT'用户的主键id',
 nickname VARCHAR(50) UNIQUE NOT NULL COMMENT'用户的昵称',
 age TINYINT UNSIGNED NOT NULL DEFAULT 18,
 sex ENUM('m','f')
 );

image-20240325124845233

关系型数据库表设计

一对一(碰到的少)

 用户user
 uid     name    age     sex
 1100    zhang   20      M
 1110    liu     21      W
 1111    wang    22      M
 ​
 身份信息info
 uid     cardid      addrinfo
 1100    112233      shanghai
 1110    112244      beijing

其实这就是一个外键uid

一对多

比如我现在做一个电商系统

用户User

商品Product

订单Order

用户和商品:没关系

用户和订单:一对多有关系

商品和订单:多对多关系

用户User表

uid name age sex

1000 zhang 20 M

1100 wang 21 W

2010 li 22 M

订单Oredr

ordeird uid pid number money totalprice addrinfo

O1111 1000 1 1 600 海淀区

O1111 1000 2 2 4000 海淀区

O1111 1000 3 4 40 海淀区

O2000 2010 2 1 2000 朝阳

商品Product pid pname price amount

1 手机 600 100

2 笔记本 2000 50

3 电池 10 200

多对多

增加一个中间表 因为太冗余了 可以看上面的 如果修改的话就涉及很多的修改

image-20240325134213761

关系型数据库范式(面试问)

应用数据库范式可以带来许多好处,但是最重要的好处归结为三点:

1)减少数据冗余(这是最主要的好处,其他好处都是由此而附带的)

2)消除异常(插入异常,更新异常,删除异常)

3)让数据组织的更加和谐

但是数据库范式绝对不是越高越好,范式越高,意味着表越多,多表联合查询的机率就越大,SQL的效

率就变低。

第一范式

每一列都保持原子特性

列都是基本数据项,不能够在进行分割,否则设计成一对多的实体关系。例如表中的地址字段,可以再细分为省,市,区,等不可·1再分割(既原子特性)的字段,如下:

image-20240325154940680

上图的表就是把地址字段分成更详细的city,country,street三个字段,注意,不符合第一范式不能称作关系型数据库。

雇员ID,部门名称,名字,地址(addressID),工作,职位描述,技能,部门描述

第二范式

属于完全依赖于主键-主要针对联合主键

非主属性完全依赖于主关键字,如果不是完全依赖主键,应该拆分成新的实体,设计成一对多的实体关系。

例如:选课关系表为SelectCourse(学号, 姓名, 年龄, 课程名称, 成绩, 学分),(学号,课程名称)是联合主键,但是学分字段只和课程名称有关,和学号无关,相当于只依赖联合主键的其中一个字段,不符合第二范式。

image-20240325155251796

第三范式

属性不依赖于其它非主属性

要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。

示例:学生关系表为Student(学号, 姓名, 年龄, 所在学院, 学院地点, 学院电话),学号是主键,但是学院电话只依赖于所在学院,并不依赖于主键学号,因此该设计不符合第三范式,应该把学院专门设计成一张表,学生表和学院表,两个是一对多的关系。

image-20240325160151290

注意:一般关系型数据库满足第三范式就可以了。

BC范式

每个表中只有一个候选键

简单的说,BC范式是在第三范式的基础上的一种特殊情况,即每个表中只有一个候选键(在一个数据库**中每行的值都不相同,则可称为候选键)**,在上面第三范式的noNF表(上面图3)中可以看出,每一个员工的email都是唯一的(不可能两个人用同一个email),则此表不符合BC范式,对其进行BC范式化后的关系图为:

image-20240325160314104

第四范式

消除表中的多值依赖

简单来说,第四范式就是要消除表中的多值依赖,也就是说可以减少维护数据一致性的工作。比如图4中的noNF表中的skill技能这个字段,有的人是“java,mysql”,有的人描述的是“Java,MySQL”,这样数据就不一致了,解决办法就是将多值属性放入一个新表,所以满足第四范式的关系图如下:

image-20240325160338503

从上面对于数据库范式进行分解的过程中不难看出,应用的范式越高,表越多。表多会带来很多问题:

1查询时需要连接多个表,增加了**SQL查询的复杂度**

2查询时需要连接多个表,降低了数据库查询性能

因此,并不是应用的范式越高越好,视实际情况而定。第三范式已经很大程度上减少了数据冗余,并且基本预防了数据插入异常,更新异常,和删除异常了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/486942.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

某蓝队面试经验

背景 据小道消息说今年的国护疑似提前到了五月份,所以最近也是HW面试的一个高峰期啊,这里分享一下上次长亭的蓝队面试问题(附本人的回答,仅供参考) 面试问答 1、谈谈作为蓝队护网过程使用过厂商的设备 这里我回答的…

1424:喷水装置——1425:加工生产调度【贪心之区间问题和流水调度问题】

1424:【例题3】喷水装置 时间限制: 1000 ms 内存限制: 65536 KB 【题目描述】 长 L 米,宽 W 米的草坪里装有 n 个浇灌喷头。每个喷头都装在草坪中心线上(离两边各 W2 米)。我们知道每个喷头的位置(离草坪中心线左端的距离),以及它能覆盖到的浇灌范围。 请问:如…

车道线检测中的IPM变换

车道线检测中的IPM变换 车道线检测(Lane Detection)是 ADAS 系统中重要的功能模块,而对于 L4 自动驾驶系统来说,在不完全依赖高精度地图的情况下,车道线检测结果也是车辆运动规划的重要输入信息。由于俯视图(BEV, Bird’s Eye View)下做车道…

【Tanshtech】生物膜/细胞膜包裹纳米颗粒CMNs递送药物定制

细胞膜包裹的纳米颗粒(Cell membrane-coated nanoparticles,CNPs)是一类新兴的纳米载体,其通过天然细胞膜将纳米颗粒包裹在核心位置,使得它们能够在复杂的生物体环境中逃逸免疫清除,并在靶定肿瘤部位积累。…

城市内涝水文水动力模型:慧天【HTWATER】

查看详情>>> 城市内涝水文水动力模型:慧天【HTWATER】 【城市内涝水文水动力模型介绍】 慧天排水数字化分析平台针对城市排水系统基础设施数据管理的需求,以及水文、水力及水质模拟对数据的需求,实现了以数据库方式对相应数据的存…

python笔记(2)基础语法

python 保留字 import keyword print(keyword.kwlist)运行 "Import-Module PSReadLine"。PS F:\学习\python\测试> & C:/Users/Python/Python311/python.exe f:/学习/python/测试/test.py [False, None, True, and, as, assert, async, await, break, class,…

九泰智库 | 医械周刊- Vol.17

⚖️ 法规动态 器审中心公示新一期医疗器械优先审批申请审核结果 3月22日,依据原国家食品药品监督管理总局《医疗器械优先审批程序》(总局公告2016年168号),器审中心对申请优先审批的医疗器械注册申请进行了审核,对相关…

优化登录页面

作业: 完善对话框,点击登录对话框, 如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个0k按钮,用户点击Ok后,关闭登录界面,跳转到其他界面如果账号和密…

java常用应用程序编程接口(API)——IO流概述及字节流的使用

前言: IO流和File是用于把数据存放在硬盘里的工具。File可以把文件存至硬盘,但不能更改里面的数据。通过IO流可以改写硬盘里的数据。整理下学习笔记,打好基础,daydayup!!! IO流 I指Input,称为输入流:负责把…

1_88. 合并两个有序数组

1_88. 合并两个有序数组 难度: 简单 提示: 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意…

Qt登录页面

#include "mywidget.h" #include "ui_mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent), ui(new Ui::MyWidget) {ui->setupUi(this);//接收动图QMovie *mv new QMovie(":/pictrue/luori.gif");ui->loglab->setMovie(…

MD5加密

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

蓝桥杯小白月赛第八场第三题

题目描述: 思路: 根据上面的次方数,我们可以看出来从1次方到4次方 和 5 - 8次方,中间有什么规律? 是不是可以看出来1次方和5次方的尾数相同 2次方和6次方的尾数相同 3次方和7次方的尾数相同 4次方和8次方的尾数相同 …

浏览器缓存知识梳理

在前端性能优化的方式中,最重要的当然是缓存了,使用好了缓存,对项目有很大的帮助。比如我们访问网页时,使用网页后退功能,会发现加载的非常快,体验感很好,这就是缓存的力量。 什么是缓存呢&…

RSTP环路避免实验(华为)

思科设备参考:RSTP环路避免实验(思科) 一,技术简介 RSTP (Rapid Spanning Tree Protocol) 是从STP发展而来 • RSTP标准版本为IEEE802.1w • RSTP具备STP的所有功能,可以兼容STP运行 • RSTP和STP有所不同 减少了…

英特尔生态的深度学习科研环境配置-A770为例

之前发过在Intel A770 GPU安装oneAPI的教程,但那个方法是用于WSL上。总所周知,在WSL使用显卡会有性能损失的。而当初买这台机器的时候我不在场,所以我这几天刚好有空把机器给重装成Ubuntu了。本篇不限于安装oneAPI,因为在英特尔的…

2024大一同学进入ACM实验室选拔(东北林业大学)

前言&#xff1a; 15号比赛的6道题&#xff0c;有一道题估计是为了防止有人ak设的&#xff0c;我看题解都没完全看懂&#xff0c;是现在的我的知识盲区了&#xff0c;之后再补吧。 正文&#xff1a; Problem:A股神&#xff1a; #include <bits/stdc.h> using namespace…

AVA企业服务呼叫中心管理后台源码

项目中实现用户管理&#xff0c;包括用户的录入、编辑、查看、修改、用户角色的分配 &#xff0c;支持一个用户拥有多个权限&#xff0c;角色管理&#xff0c;可以自由定义角色、并可以给角色分配不同的权限。

利用Jmeter做接口测试(功能测试)全流程分析

利用Jmeter做接口测试怎么做呢&#xff1f;过程真的是超级简单。 明白了原理以后&#xff0c;把零碎的知识点填充进去就可以了。所以在学习的过程中&#xff0c;不管学什么&#xff0c;我一直都强调的是要循序渐进&#xff0c;和明白原理和逻辑。这篇文章就来介绍一下如何利用…

基于ssh学生信息管理系统

系统是一个学生信息管理&#xff0c;有三种角色&#xff0c;分别是超级管理员和教师还有学生&#xff0c;不同角色看到的功能会不一样。 管理员&#xff1a;学院管理&#xff0c;专业管理&#xff0c;班级管理&#xff0c;学科管理&#xff0c;学生管理&#xff0c;教师管理&am…
最新文章