当前位置: 首页 > 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;是对各类型的数据进行收集、整理、存储、…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...