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

MySQL数据管理二

1.数据库的完整性
数据库中的数据是从外界输入的,而数据的输入由于种种原因,会发生输入无效或错误信息。保证输入的数据符合规定,成为了数据库系统,尤其是多用户的关系数据库系统首要关注的问题。
它是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。
分为三类:域完整性、引用完整性、实体完整性

2、实体完整性
表中所有的行唯一

3.域完整性
列必须满足特定的数据类型或约束
约束包括取值范围精度等

4.引用完整性
保证主关键字和外部关键字之间的参照关系。涉及两个或两个以上表的数据的一致性维护

5、使用约束实现数据完整性
数据库采用多种方法来保证数据完整性,包括约束、规则和触发器。

 约束类型

关键字

说明

非空约束

NOT NULL

如果字段不允许为空,则需要设置NOT NULL约束。

默认约束

DEFAULT

赋予某字段默认值,如果该字段没有赋值,则其值为默认值。

唯一约束

UNIQUE KEY

设置该字段的值唯一的,允许为空。

主键约束

PRIMARY KEY

设置该字段为表的主键,可以作为该表记录的唯一标识。

外键约束

FOREIGN KEY

用于在两表之间建立关系,需要引用主表的哪一字段。

 6.添加约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 约束关键字说明
约束名的取名推荐采用:约束类型_约束字段
主键(Primary Key)约束:如 PK_stuNo
唯一(Unique )约束:如 UQ_stuID
外键(Foreign Key)约束:如 FK_stuNo 

7.设置唯一约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(列名)ALTER TABLE student
ALTER TABLE STUDENT ADD CONSTRAINT uq_stuid  UNIQUE(identitycard) 

8.主键
唯一标识表中的行,强制表的实体完整性
1)保证实体的完整性;
2)加快数据库的操作速度;
3)添加新记录时,DBMS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复;
4) DBMS自动按主键值的顺序显示记录。如果没有定义主键,则按输入记录的顺序显示记录。
1:一个表只能有一个主键,并且主键列不允许出现空值。
2:尽管有的表中允许没有主键,但是通常情况下,建议为表设置主键。

9.主键选择的原则
1)最少性是指列数最少的键。如果可以从单个主键和复合主键中选择,应该选择单个主键,这是因为操作一列比操作多列要快。当然该规则也有例外,例如,两个整数类型的列的组合比一个很大的字符类型的列操作要快。
2)稳定性是指列中数据的特征。由于主键通常用来在两个表之间建立联系,所以主键的数据不能经常更新。理想情况下,应该永远不变。
如果两列或多列组合起来唯一标识一行,为组合主键

10.主键约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 PRIMARY KEY(列名1,列名2,...)

11.外键
一般不使用外键
在数据库设计中,学生的信息和学生的考试成绩是存放在不同的数据表中。在成绩表中,可以存储学生的学号来表示是哪个学生的考试成绩,这又引发一个问题:“如果成绩表中输入的学号根本不存在或者把学号写错了” ,该怎么办 ?
这个时候,就应当建立一种“引用”的关系,确保“从表”中的某个数据项在“主表”中必须存在,以避免上述错误发生。
“外键”就是用来达到这个目的的,它是相对于主键而言的,就是“从表”中对应于“主表”中的列,在从表中称为外键或引用键,它的值要求与主表的主键相对应。
“外键”用来强制引用完整性。一个表可以有多个外键。

12.外键约束
ALTER TABLE 从表名
ADD CONSTRAINT 约束名  FOREIGN KEY(从表的列名)
REFERENCES 主表名(主表的列名)
主表中的字段必须为主键。
从表中的外键列和主表中的主键列的数据类型要保持一致,和字段名无关。
主表和从表的表类型为InnoDB。

13.删除约束
ALTER TABLE 表名  DROP PRIMARY KEY;   #删除主键约束
ALTER TABLE 表名  DROP KEY 唯一约束名;  #删除唯一约束
ALTER TABLE 表名  DROP FOREIGN KEY 外键约束名;  #删除外键约束

14.DML语言
数据操作语言
包括INSERT,UPDATE,DELETE(增删改)

15.插入数据
INSERT INTO  表名  [ ( 字段1, 字段2, 字段3, … ) ]  VALUES  ( 值1, 值2, 值3, …);
INSERT INTO  表名  [ ( 字段1, 字段2, 字段3, … ) ]  VALUES  ( 值1, 值2, 值3, …);
表的字段是可选的,如果省略,则依次插入所有的字段。
如果插入的是表中部分列的数据,字段名列表必须填写。
多个字段和多个值之间使用逗号分隔。
值列表必须和字段名列表数量相同且数据类型相符(字符串和日期类型的值要加单引号)。
值列表中的数据必须符合数据完整性的要求。

16.将查询结果添加到查询中
CREATE TABLE  新表名  ( SELECT 字段1, 字段2, 字段3, … FROM 原表)
CREATE TABLE  stuhistory  ( SELECT *  FROM student)

17.修改数据
 UPDATE   表名   
 SET   column_name = value  [ ,  column_name2 = value2, …. ]  [ WHERE   condition ];
column_name 为要更改的字段名。
value 为修改后的数据,可以为变量、具体值、表达式或者嵌套的SELECT结果。
多个字段之间用逗号隔开。
提供的修改数据必须符合数据完整性的要求。
condition为筛选条件,如不指定则修改该表的所有列数据。

18.sql语句的运算符
算数运算符
+、-、*、/、%(取模求余)、=(赋值)
比较运算符
=、<>或!=(不等于)、>、<、>=、<=、BETWEEN...AND...(之间)
逻辑运算符
AND,OR,NOT(取反)

19.删除数据
 DELETE FROM   表名   [ WHERE   condition ];
DELETE语句删除的是整条记录,不会只删除单个列。
condition为筛选条件,如不指定则修改该表的所有列数据。
TRUNCATE TABLE 命令
TRUNCATE TABLE   表名;
TRUNCATE TABLE不能用于有外键约束引用的表。
 

相关文章:

MySQL数据管理二

1.数据库的完整性 数据库中的数据是从外界输入的&#xff0c;而数据的输入由于种种原因&#xff0c;会发生输入无效或错误信息。保证输入的数据符合规定&#xff0c;成为了数据库系统&#xff0c;尤其是多用户的关系数据库系统首要关注的问题。 它是应防止数据库中存在不符合语…...

sqoop-import 详解

文章目录 前言一、介绍1. sqoop简介2. sqoop import的作用3. 语法3.1 sqoop import 语法3.2 导入配置属性 二、导入参数1. 常见参数2. 验证参数3. 导入控制参数4. 用于覆盖映射的参数5. 增量导入参数6. 输出行格式参数7. 输入解析参数8. Hive 参数9. HBase 参数10. Accumulo 参…...

第二周opencv

一、边缘检测算子 边缘检测算子是用于检测图像中物体边界的工具。边缘通常表示图像中灰度值或颜色发生显著变化的地方。边缘检测有助于识别图像中的物体形状、轮廓和结构。这些算子通过分析图像的灰度或颜色梯度来确定图像中的边缘。 梯度算子 要得到一幅图像的梯度&#xff0c…...

python_读取txt文件绘制多条曲线II

从给定的列表中来匹配txt文件对应列的数据&#xff1b; import matplotlib.pyplot as plt import re from datetime import datetime from pylab import mplmpl.rcParams["font.sans-serif"] ["SimHei"] # 设置显示中文字体 mpl.rcParams["axes.un…...

java排序简单总结和推荐使用套路(数据排序,结构体排序)

了解int和Integer的区别 int是Java的基本数据类型&#xff0c;用于表示整数值。Integer是int的包装类&#xff0c;它是一个对象&#xff0c;可以包含一个int值并提供一些额外的功能。 Java集合框架中的集合类&#xff08;如List、Set、Map&#xff09;只能存储对象&#xff0c;…...

掘根宝典之C语言联合和枚举

联合 C语言中的联合&#xff08;Union&#xff09;是一种特殊的数据类型&#xff0c;它允许在同一块内存空间中存储不同类型的数据。 联合与结构体类似&#xff0c;但不同的是&#xff0c;在给联合变量赋值时&#xff0c;它只能存储最后一次赋值的值。 创建联合 在C语言中&…...

【debug】element-ui时间控件回显后不可编辑且显示为空

问题&#xff1a;使用element-ui的时间控件回显数据&#xff0c;编辑数据没有反应&#xff1a;点时间和“确认”按钮都没反应。 输入框中会显示数据&#xff0c;但提交时的校验显示为空。 <el-form-item label"开始时间" prop"limitStartTime"><…...

【Linux从青铜到王者】进程信号

——————————————————————————————————————————— 信号入门 在了解信号之前有许多要理解的相关概念 我们可以先通过一个生活例子来初步认识一下信号 1.生活角度的信号 你在网上买了很多件商品&#xff0c;再等待不同商品快递的到来…...

MyBatis-Plus 快速入门

介绍 j​​​​​MyBatis-Plus (opens new window)&#xff08;简称 MP&#xff09;是一个 MyBatis (opens new window)的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 官网&#xff1a;MyBatis-Plus (baomidou.com) 1.…...

iOS调起高德/百度/腾讯/谷歌/苹果地图并使用GCJ02坐标进行导航

使用演示: 2.地图API相关网站 : 高德:...

HarmonyOS Full SDK的安装

OpenHarmony的应用开发工具HUAWEI DevEco Studio现在随着OpenHarmony版本发布而发布,只能在版本发布说明中下载,例如最新版本的OpenHarmony 4.0 Release。对应的需要下载DevEco Studio 4.0 Release,如下图。 图片 下载Full SDK主要有两种方式,一种是通过DevEco Studio下载…...

小程序嵌套H5-真机突然无法使用

今天测试反馈了一个问题&#xff0c;测试环境的小程序突然就登录不了了。我自己拿手机扫码登录是正常的&#xff0c;用其他同事的手机扫描登录也是正常。 下面是排查的路线&#xff1a; 1、其他环境使用测试手机扫码登录是否正常&#xff1f;(正常) 2、H5地址改为本地IP&#…...

自然语言处理 | 语言模型(LM) 浅析

自然语言处理&#xff08;NLP&#xff09;中的语言模型&#xff08;Language Model, LM&#xff09;是一种统计模型&#xff0c;它的目标是计算一个给定文本序列的概率分布&#xff0c;即对于任意给定的一段文本序列&#xff08;单词序列&#xff09;&#xff0c;语言模型能够估…...

全量知识系统问题及SmartChat给出的答复 之13 解析器+DDD+文法型

Q32. DDD的领域概念和知识系统中设计的解析器之间的关系。 那下面&#xff0c;我们回到前面的问题上来。 前面说到了三种语法解析器&#xff0c;分别是 形式语言的&#xff08;机器或计算机语言&#xff09;、人工语言的和自然语言的。再前面&#xff0c;我们聊到了DDD设计思…...

华中某科技大学校园网疑似dns劫持的解决方法

问题 在校园网ping xxx.ddns.net&#xff0c;域名解析失败 使用热点ping xxx.ddns.net&#xff0c;可以ping通 尝试设置windows dns首选dns为114.114.114.114&#xff0c;重新ping&#xff0c;仍然域名解析失败 猜测【校园网可能劫持dns请求】 解决方法 使用加密的dns请求…...

模型部署 - onnx 的导出和分析 -(1) - PyTorch 导出 ONNX - 学习记录

onnx 的导出和分析 一、PyTorch 导出 ONNX 的方法1.1、一个简单的例子 -- 将线性模型转成 onnx1.2、导出多个输出头的模型1.3、导出含有动态维度的模型 二、pytorch 导出 onnx 不成功的时候如何解决2.1、修改 opset 的版本2.2、替换 pytorch 中的算子组合2.3、在 pytorch 登记&…...

【鸿蒙 HarmonyOS 4.0】多设备响应式布局

一、背景 在渲染页面时&#xff0c;需要根据不同屏幕大小渲染出不同的效果&#xff0c;动态的判断设备屏幕大小&#xff0c;便需要采用多设备响应式布局。这种设计方法能够动态适配各种屏幕大小&#xff0c;确保网站在不同设备上都能呈现出最佳的效果。 二、媒体查询&#xf…...

Android ANR 日志分析定位

ANR 是 Android 应用程序中的 "Application Not Responding" 的缩写&#xff0c;中文意思是 "应用程序无响应"。这是当应用程序在 Android 系统上运行时&#xff0c;由于某种原因不能及时响应用户输入事件或执行一个操作&#xff0c;导致界面无法更新&…...

Optional 详解

Optional 详解 1、Optional 介绍2、创建 Optional 对象3、Optional 常用方法1. 判断值是否存在 — isPresent()2. 非空表达式 — ifPresent()3. 设置(获取)默认值 — orElse()、orElseGet()4. 获取值 — get()5. 过滤值 — filter()6. 转换值 — map() 作为一名 Java 程序员&am…...

(科目三)数据库基础知识

1、基本概念 1.1 数据库 1、数据、信息和数据处理 数据是指表达信息的某种物理符号&#xff1b; 信息是对客观事物的反映&#xff0c;是为某一特定目的二提供的决策数据&#xff1b; 数据处理是指将数据转换成信息的过程&#xff0c;是对各类型的数据进行收集、整理、存储、…...

如何编制ERP系统的物料编码?一文读懂底层逻辑

在数字化管理时代&#xff0c;企业上ERP系统已成为标配。但很多人会遇到一个共同的难题&#xff1a;物料编码到底该怎么编&#xff1f;编不好&#xff0c;ERP系统就成了“数据垃圾场”&#xff1b;编得好&#xff0c;则能让库存周转率提升30%以上。今天&#xff0c;我们就来深度…...

告别杂音!在RK3588上搞定HDMI音频采集与实时播放的保姆级教程

告别杂音&#xff01;RK3588 HDMI音频采集与实时播放的终极调优指南 当你在RK3588开发板上调试HDMI音频采集时&#xff0c;是否曾被突如其来的"哒哒"声搞得焦头烂额&#xff1f;这种高频杂音不仅影响用户体验&#xff0c;更可能掩盖音频流的真实质量。本文将带你深入…...

Perplexity历史资料搜索失效真相大起底(时间戳偏移、缓存策略与知识图谱断层深度解析)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Perplexity历史资料搜索失效真相大起底&#xff08;时间戳偏移、缓存策略与知识图谱断层深度解析&#xff09; Perplexity 的历史资料检索能力在近期高频出现“查无结果”或“返回过期摘要”现象&#…...

蓝桥杯省赛真题解析:用动态规划搞定‘积木画’问题(附Python/Java/C++三种代码)

蓝桥杯竞赛实战&#xff1a;动态规划解积木画问题的多语言实现 第一次参加蓝桥杯的选手往往会被"积木画"这类动态规划题目难住——看似简单的图形拼接背后隐藏着精妙的状态转移逻辑。这道题考察的不仅是编码能力&#xff0c;更是对问题抽象和数学建模的深刻理解。本文…...

从“收音机”到“手机芯片”:聊聊CMOS单级放大器在真实产品里的那些事儿

从“收音机”到“手机芯片”&#xff1a;CMOS单级放大器的工业进化史 上世纪60年代&#xff0c;当第一台全晶体管收音机问世时&#xff0c;工程师们或许不会想到&#xff0c;那些分立元件组成的放大器电路&#xff0c;有朝一日会以纳米级尺寸被集成在指甲盖大小的芯片里。CMOS单…...

上机器人真能省人吗,先看这几个车间实情

就以我自己的视角&#xff0c;给同样想推动自动化改造的工厂管理者们&#xff0c;聊聊这里面的门道和实在账。很多人问我&#xff0c;你们做自动化集成的是不是就爱忽悠老板砸钱上机器人&#xff1f;听着光鲜&#xff0c;最后落灰的“铁疙瘩”我见得多了。我是自动化老厂的二代…...

思源宋体TTF完全指南:免费商用的高品质中文字体解决方案

思源宋体TTF完全指南&#xff1a;免费商用的高品质中文字体解决方案 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 思源宋体TTF版本是Google与Adobe联手打造的开源中文字体&#xff0…...

运维视角:用非Root用户安全部署KingbaseES数据库,附服务注册与状态检查命令

运维实战&#xff1a;以非Root用户安全部署KingbaseES数据库的完整指南 在企业的生产环境中&#xff0c;数据库作为核心数据存储组件&#xff0c;其部署安全性往往被许多运维团队忽视。传统教程中常见的"root用户直接安装"方式&#xff0c;实际上为企业埋下了严重的安…...

别再只会用delay()了!用Celery的Canvas原语(Group/Chain/Chord)构建复杂异步工作流

别再只会用delay()了&#xff01;用Celery的Canvas原语构建复杂异步工作流 在异步任务处理领域&#xff0c;Celery早已成为Python生态中的标配工具。但令人惊讶的是&#xff0c;大多数开发者仅仅停留在task.delay()的基础用法上&#xff0c;就像只学会了加减法却从未接触过微积…...

从USB2.0到USB3.0:硬件工程师必须知道的电源管理与布线升级要点(含电平转换案例)

从USB2.0到USB3.0&#xff1a;硬件工程师必须掌握的电源管理与布线升级实战指南 在硬件设计领域&#xff0c;接口技术的迭代往往带来性能的飞跃&#xff0c;但同时也伴随着设计复杂度的显著提升。USB3.0作为当前主流的高速接口标准&#xff0c;其传输速率相比USB2.0提升了近10倍…...