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不能用于有外键约束引用的表。
 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

双证知音中国社科院与英国斯特灵大学创新与领导力博士

对于博士阶段来说&#xff0c;由于科研任务繁重&#xff0c;需要自主学习的内容以及接受的挑战也相对较多&#xff0c;所以对于晋升读博这件事并不那么容易。无论是考博还是读中外合作办学博士&#xff0c;上课语言、博导、论文这些关都是要一一闯过的。能遇见优秀的导师是我们…

CYQ.Data 支持 DaMeng 达梦数据库

DaMeng 达梦数据库介绍: 达梦数据库(DMDB)是中国自主研发的关系型数据库管理系统,由达梦科技股份有限公司开发。 达梦数据库提供了企业级的数据库解决方案,广泛应用于金融、电信、政府、制造等行业领域。 达梦数据库具有以下特点和优势: 高性能:具备高性能的并发处理…

滑窗问题【Leetcode3最长子串/438找出所有异位词】

3. 无重复字符的最长子串 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 请注意&#xff0c;你的答案必须是 子串 的长度&#xff0c;子序列不是子串。 思路&#xff1a;滑窗范围[pl, pr)&#xff0c;用cnt数组维护滑窗内的每个字符的出现次数…

React 的入门介绍

React 是什么 React是一个用于构建用户界面的JavaScript库。它由Facebook开发&#xff0c;并于2013年首次发布。React将用户界面拆分为小的可重用组件&#xff0c;每个组件都有自己的状态&#xff0c;并根据状态的变化来更新界面。 React使用了虚拟DOM&#xff08;Virtual DO…

RabbitMQ如何实现消费端限流

什么是消费端限流&#xff0c;这个一种保护消费者的手段&#xff0c;假如说&#xff0c;现在是业务高峰期了&#xff0c;消息有大量堆积&#xff0c;导致MQ消费需要不断的进行消息消费&#xff0c;很容易被打挂&#xff0c;甚至重启之后还是会被大量消息涌入&#xff0c;继续被…

Xilinx 7系列FPGA配置(ug470)

Xilinx 7系列FPGA配置&#xff08;ug470&#xff09; 配置模式串行配置模式接口从-连接方式主-连接方式串行菊花链&#xff08;非同时配置&#xff09;串行配置&#xff08;同时配置&#xff09;时序 主SPI配置模式SPIx1/x2 连接图SPIx1模式时序SPIx4 连接图SPI操作指令操作fla…

FC-AE-1553 协议

FC-AE-1553 协议 MIL-STD-1553B总线协议总线结构字格式消息传输方式 FC协议FC协议栈拓扑结构服务类型帧/序列/交换FC帧格式 FC-AE-1553网络构成帧类型命令帧状态帧数据帧 Information UnitsNC1NC2NC3-4NC5-7NT1-7 传输模式1. NC-NT2. NT-NC3. NT-NT4. 无数据字的模式命令5. 带数…

python并发编程之多进程、多线程、异步和协程详解

在Python中&#xff0c;有多种并发编程的方式可供选择&#xff0c;包括多进程、多线程、异步和协程。下面将对这些方式进行详细解释。 多进程&#xff1a;多进程是通过创建多个进程来实现并发的方式。每个进程都有自己独立的内存空间&#xff0c;可以并行执行任务。Python中的m…

detectron2 DiffusionDet 训练自己的数据集

配环境 git clone https://github.com/ShoufaChen/DiffusionDet# 创建环境 conda create -n diffusion python3.9 conda activate diffusion conda install pytorch1.11.0 torchvision0.12.0 torchaudio0.11.0 cudatoolkit11.3 -c pytorch pip install opencv-python# 安装det…

STM32CubeMX学习笔记12 ---低功耗模式

在实际使用中很多产品都需要考虑低功耗的问题&#xff0c;STM32F10X提供了三种低功耗模式&#xff1a;睡眠模式&#xff08;Sleep mode&#xff09;、停机模式&#xff08;Stop mode&#xff09;和待机模式&#xff08;Standby mode&#xff09;。这些低功耗模式可以有效减少系…

jnitrace的用法(查看jni的执行流程,方便unidbg补环境)

一、简单执行 jnitrace -l <要trace的so库> <包名> jnitrace -l libxxx.so com.xxx.app二、插入js脚本执行 jnitrace -p E:\kill_sll.js -l libxxx.so com.xxx.app三、attach模式执行 默认使用spawn执行&#xff0c;attach模式可能有有时bug没反应 jnitrace -l li…

Casper Network(CSPR)即将迎来两项重大升级,以实现功能上的进一步完善

Casper Network&#xff08;CSPR&#xff09;即将实现更加完备的功能升级&#xff0c;现已进入倒计时阶段。 Casper Network&#xff08;CSPR&#xff09;将升级到其最先进以及更全的版本&#xff0c;即“功能完备”的版本&#xff0c;让Casper Network&#xff08;CSPR&#…

腾讯云十大优惠活动曝光,TOP10值得买云服务器配置报价

腾讯云服务器多少钱一年&#xff1f;61元一年起&#xff0c;2核2G3M配置&#xff0c;腾讯云2核4G5M轻量应用服务器165元一年、756元3年&#xff0c;4核16G12M服务器32元1个月、312元一年&#xff0c;8核32G22M服务器115元1个月、345元3个月&#xff0c;腾讯云服务器网txyfwq.co…

Java实现读取转码写入ES构建检索PDF等文档全栈流程

背景 之前已简单使用ES及Kibana和在线转Base64工具实现了检索文档的demo&#xff0c;并已实现WebHook的搭建和触发流程接口。 传送门&#xff1a; 基于GitBucket的Hook构建ES检索PDF等文档全栈方案 使用ES检索PDF、word等文档快速开始 实现读取本地文件入库ES 总体思路&…

索引类型介绍

4、说说你知道的MySQL的索引类型&#xff0c;并分别简述一下各自的场景。 普通索引&#xff1a;没有任何限制条件的索引&#xff0c;该索引可以在任何数据类型中创建。 唯一索引&#xff1a;使用UNIQUE参数可以设置唯一索引。创建该索引时&#xff0c;索引列的值必须唯一&…

44、网络编程/数据库相关操作练习20240306

一、代码实现数据库的创建&#xff08;员工信息表&#xff09;&#xff0c;并存储员工信息&#xff08;工号、姓名、薪资&#xff09;&#xff0c;能实现增加人员信息、删除人员信息、修改人员薪资操作。 代码&#xff1a; #include<myhead.h>int do_update(sqlite3 *p…

基于canvas纯前端实现验证码的绘制

验证码功能是实现登录功能中比较常见的一个问题 验证码的整体思路是&#xff1a; 1.前端登录页面发起获取验证码图片请求. 2.服务端收到请求后,生成一个唯一id,对应的验证码图片 以及验证码图片对应的值(这个值使用缓存保存,id-值一一对应,缓存可使用redis或本地缓存,本地缓存…

Python中的模块包第三方库详解

模块&包 模块 一个.py文件就是一个模块&#xff0c;里面是一些函数和变量&#xff0c;需要的时候可以导入。 模块命名规范: 1.以英文开头&#xff0c;不出现中文 2.模块名不应与系统内置函数重名 包 包本身就是一个文件夹&#xff0c;如果文件夹内有__init__.py文件&…

Java电梯模拟升级版

Java电梯模拟升级版 文章目录 Java电梯模拟升级版前言一、UML类图二、代码三、测试 前言 在上一版的基础上进行升级&#xff0c;楼层采用享元模式进行升级&#xff0c;并对楼层对象进一步抽象 一、UML类图 二、代码 电梯调度器抽象类 package cn.xx.evevator;import java.ut…

K倍区间 刷题笔记

法一 前缀和暴力搜索 &#xff08;数据大会超时&#xff09; #include<iostream> #include<cstring> #include<algorithm> #include<cstdio> using namespace std; const int N100010; int a[N],s[N]; int n,k; int main(){ cin>>n>>…