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

0102 MySQL05

1.约束

1.约束(constraint):在创建表时,可以给表中的字段加上一些约束,保证表中数据的完整性,有效性


常见的约束?

非空约束:not null

唯一性约束:unique

主键约束:primary key(简称PK)

外键约束:foreign key(简称FK)

检查约束:check(MySQL不支持,Oracle支持)

补充:xxx.sql这种文件称为sql脚本文件,执行该脚本文件时,该文件中的所有SQL语句会全部执行,批量的执行SQL语句,可以使用sql脚本文件

怎么执行?mysql>source D:\xxxxx\xxx.sql


1.非空约束

not null约束的字段不能为null

drop table if exists t_vip;

create table t_vip(

        id int,

        name varchar(255) not null

);

insert into t_vip(id,name) values(1,'zhangsan');

insert into t_vip(id,name) values(2,'lisi');

insert into t_vip(id) values(3);//报错,name字段没有默认值


2.唯一性约束

1.unique约束的字段不能重复

drop table if exists t_vip;

create table t_vip(

        id int,

        name varchar(255) unique,

        email varchar(255)

);

insert into t_vip(id,name,email) values(1,'zhangsan','zhangsan@123.com');

insert into t_vip(id,name,email) values(2,'lisi','lisi@123.com');

insert into t_vip(id,name,email) values(3,'zhangsan','zhangsan@456.com');//报错,name值重复

insert into t_vip(id) values(3);//可以为null

2.新需求:name和email两个字段联合起来具有唯一性

drop table if exists t_vip;

create table t_vip(

        id int,

        name varchar(255) unique,

        email varchar(255) unique

);//不符合需求,表示各自唯一

drop table if exists t_vip;

create table t_vip(

        id int,

        name varchar(255) ,

        email varchar(255) ,

        unique (name,email)

);//两个字段联合起来唯一

测试:

insert into t_vip(id,name,email) values(1,'zhangsan','zhangsan@123.com');

insert into t_vip(id,name,email) values(2,'zhangsan','zhangsan@456.com');

//不报错

约束直接添加到列后面:列级约束

约束没有添加到列后面:表级约束(多个字段联合起来唯一时使用)

not null只有列级约束,没有表级约束

3.unique和not null可以联合吗?

drop table if exists t_vip;

create table t_vip(

        id int,

        name varchar(255) not null unique

);//name为主键

//在MySQL中,如果一个字段同时被not null和unique约束时,该字段自动变成主键字段

(Oracle中不适用)


3.主键约束

1.primary key相关术语?

主键约束:一种约束

主键字段:字段添上主键约束,这样的字段

主键值:主键字段中的每一个值

2.什么是主键?有什么用?

主键值是每一行记录的唯一标识,是每一行记录的身份证号

任何一张表都应该有主键,没有主键的表无效

特征:not null + unique(不能是空,也不能重复)

3.给表添加主键约束?

drop table if exists t_vip;

create table t_vip(

        id int primary key,

        name varchar(255)

);

insert into t_vip(id,name) values(1,'zhangsan');

insert into t_vip(id,name) values(1,'lisi');//报错,主键重复

//主键可以使用表级约束

一个字段做主键:单一主键

字段联合做主键:复合主键(在实际开发中不建议使用)

4.主键约束数量?

drop table if exists t_vip;

create table t_vip(

        id int primary key,

        name varchar(255) primary key

);//报错,一张表只能添加一个,即主键只能有一个

5.主键值建议使用类型?

int,bigint,char等类型

不建议使用varchar做主键,一般是数字,且定长

6.自然主键和业务主键?

自然主键:主键值是一个自然数,和业务无关

业务主键:主键值和业务紧密关联,如拿银行卡账号做主键

在实际开发中,使用自然主键较多,因为主键只要做到不重复,不需要有意义,

和业务挂钩,当业务发生变动时,可能影响主键值

7.在MySQL中,有一种机制可以帮助我们自动维护一个主键值?

drop table if exists t_vip;

create table t_vip(

        id int primary key auto_increment,

        name varchar(255) 

);

insert into t_vip(name) values('zhangsan');

insert into t_vip(name) values('zhangsan');

insert into t_vip(name) values('zhangsan');

//auto_increment表示自增,从1开始递增


4.外键约束

1.foreign key相关术语:

外键约束、外键字段、外键值

2.业务背景:

设计数据库表,描述‘班级‘和’学生‘的信息?

第一种方案:班级和学生存储在一张表中t_student

no(pk)nameclassnoclassname
1jack001高三1班
2tom001高三1班
3zhangsan002        高三2班
4wangwu002高三2班

以上方案的缺点:数据冗余,空间浪费

第二种方案:班级一张表,学生一张表t_class,t_student

classno(pk)classname
001高三1班
002高三2班

no(pk)namecno(班级编号)
1jack001
2tom001
3zhangsan002
4wangwu002

当班级编号没有任何约束时,可能导致数据无效

为了保证学生表中班级编号有效,需要添加外键约束

那么classno就是外键字段,字段中的每一个值就是外键值

注:被引用的t_class的是父表,t_student是子表

删除表,删除数据顺序:先删子表,再删父表

创建表,插入数据顺序:先创父表,再创子表

drop table if exists t_student;

drop table if exists t_class;

create table t_class(

        classno int primary key,

        classname varchar(255)

);

create table t_student(

        no int primary key auto_increment,

        name varchar(255),

        cno int,

        foreign key(cno) references t_class(classno)

);

insert into t_class(classno,classname) values(001,高三1班);

insert into t_class(classno,classname) values(002,高三2班);

insert into t_student(name,cno) values(jack,001);

insert into t_student(name,cno) values(tom,001);

insert into t_student(name,cno) values(zhangsan,002);

insert into t_student(name,cno) values(wangwu,002);

3.子表中的外键引用父表中的某个字段,被引用的这个字段必须是主键吗?

不一定是主键,但至少具有unique唯一性

外键可以为null吗?

insert into t_student(name) values(lisi);//可以为null


2.存储引擎(了解)

1.存储引擎:是MySQL中特有的术语,是一个表存储数据的方式,不同的存储引擎,表存储数据的方式不同

2.怎么给表指定’存储引擎‘?

show create table t_student;

可以在建表的时候给表指定存储引擎,可以在最后小括号’)‘的右边使用:

ENGINE来指定存储引擎

CHARSET来指定这张表的字符编码方式

MySQL默认的存储引擎是InnoDB,默认字符编码方式utf8

create table t_product(

        id int primary key,

        name varchar(255)

)engine=InnoDB default charset=gbk;

3.怎么查看MySQL支持哪些存储引擎?

show engines \G

MySQL支持九大存储引擎

4.常用的存储引擎?(了解)

MyISAM存储引擎,它管理表具有以下特征:

使用三个文件表示每个表:

        格式文件:存储表结构的定义(mytable.frm)

        数据文件:存储表行的内容(mytable.MYD) 

        索引文件:存储表上索引(mytable.MYI):索引是一本书的目录,缩小扫描范围

对于一张表来说,只要是主键或有unique约束的字段会自动创建索引

优势:可被转化为压缩、只读表来节省空间

不支持事务,安全性低


InnoDB存储引擎

是MySQL默认的存储引擎,支持事务,支持数据库崩溃后自动恢复机制

它管理表具有以下特征:

        每个InnoDB表在数据库目录中以.fm格式文件表示

        InnoDB表空间tablespace被用于存储表的内容(表空间是逻辑名称,表空间存储数据+索引)

        提供一组用来记录事务性活动的日志文件

        用COMMIT(提交)、SAVEPOINT及ROLLBACK(回滚)支持事务处理

        支持外键及引用的完整性,包括级联删除和更新

特点:非常安全


MEMORY存储引擎(之前被称为HEAP引擎)

其数据存储在内存中,且行的长度固定,这两个特点使MEMORY存储引擎非常快

它管理表具有以下特征:

        在数据库目录内,每个表均以.frm格式的文件表示

        表数据及索引被存储在内存中(查询快)

        表级锁机制

        不能包含TEXT或BLOB字段

优点:查询效率最高

不安全,关机之后数据消失,因为数据和索引都在内存

相关文章:

0102 MySQL05

1.约束 1.约束(constraint):在创建表时,可以给表中的字段加上一些约束,保证表中数据的完整性,有效性 常见的约束? 非空约束:not null 唯一性约束:unique 主键约束&am…...

[深入理解SSD系列 闪存2.1.3] 固态硬盘闪存的物理学原理_NAND Flash 的读、写、擦工作原理

2.1.3.1 Flash 的物理学原理与发明历程 经典物理学认为 物体越过势垒,有一阈值能量;粒子能量小于此能量则不能越过,大于此能 量则可以越过。例如骑自行车过小坡,先用力骑,如果坡很低,不蹬自行车也能 靠惯性过去。如果坡很高,不蹬自行车,车到一半就停住,然后退回去。 …...

洗地机哪家强?洗地机排行榜

随着清洁行业电器的开展,越来越多的新颖工具和电器开端进入消费者的生活之中。众所周知,面对美不胜收的清洁电器产品,选购也是一大头疼事,应该怎样选购洗地机等清洁电器呢,实在的用户体验和清洁效率莫过于消费者最看重…...

【Java基础 下】 029 -- 多线程

目录 一、为什么要有多线程? 1、线程与进程 2、多线程的应用场景 3、小结 二、多线程中的两个概念(并发和并行) 1、并发 2、并行 3、小结 三、多线程的三种实现方式 1、继承Thread类的方式进行实现 2、实现Runnable接口的方式进行实现 3、利用…...

R语言生物群落(生态)数据统计分析与绘图

查看原文>>>R语言生物群落(生态)数据统计分析与绘图 R 语言作的开源、自由、免费等特点使其广泛应用于生物群落数据统计分析。生物群落数据多样而复杂,涉及众多统计分析方法。本课程以生物群落数据分析中的最常用的统计方法回归和混…...

浙江首场千人大会现场爆满!实在智能九哥专题演讲:企业数字化转型,从实在RPA开始!

为帮助众多电商商家探索数字时代下新赛道、新趋势、新方向,制定有目标、有节奏的全年生意规划,“未来电商高峰论坛暨电商生态赋能大会”于3月4日在杭州正式拉开序幕。本次大会旨在向品牌电商企业主、运营操盘手分享数字电商时代的黄金趋势及运营策略&…...

Windows 上 执行docker pull命令 提示:The system cannot find the file specified.

错误提示error during connect: This error may indicate that the docker daemon is not running.: Get "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/version": open //./pipe/docker_engine: The system cannot find the file specified.解决办法在cmd 窗口中执…...

查看 WiFi 密码的两种方法

查看 WiFi 密码的两种方法1. 概述2. 在控制面板中查看 WiFi 密码3. 使用 CMD 查看 WiFi 密码结束语1. 概述 突然忘记 WiFi 密码怎么办? 想连上某个使用过的 WiFi,但有不知道 WiFi 密码怎么办? 使用电脑如何查询 WiFi 密码? 以下是…...

逻辑优化基础-bi-decomposition

简介 bi-decomposition是逻辑综合中用于简化布尔函数的一种技术。其思想是将函数分成两个较小的函数,每个函数仅取决于所选变量的一个值。这些较小的函数可以使用简单的逻辑门(如AND、OR和NOT门)来实现,然后组合以获得原始函数的…...

Modbus转profinet网关连接1200PLC在博图组态与驱动器通讯程序案例

本案例给大家介绍由兴达易控modbus转profinet网关连接1200PLC在博图软件无需编程,实现1200Profinet转modbus与驱动器通讯的程序案例 硬件连接:1200PLC一台;英威腾DA180系列驱动器一台;兴达易控modbus转profinet网关一台 下面就是…...

Android ART虚拟机 启动和初始化

前言 之前整理了一系列Dalvik虚拟机的关于堆内存和GC的文章,轮到对ART内存进行分析优化了,继续整理输出一波,本篇为ART虚拟机系列的第一篇,介绍ART虚拟机的启动和初始化。 #mermaid-svg-8iNdLFTpOHLgRjHA {font-family:"tre…...

宇视科技一二三面

一面 1、自我介绍 2、堆和栈的区别,堆在数据结构中是如何表示的 3、有用过Linux吗?虚拟空间中用户态是3G,假如计算机的内存是4G,为什么计算机可以运行这些进程 4、虚拟地址到物理地址的映射过程 5、进程间的通信方式 6、共享内存…...

优思学院|盘点,精益生产25个工具!【必需收藏】

精益生产方法需要一种全面的方法才能有效实施。精益这个概念是每个接触产品供应链的人都要实践的,无论是在计划方面还是在分析方面。 精益生产工具有助于持续改进生产效率和产品或服务质量。精益工具是要减少 Muda (浪费),从生产过…...

Linux中将多块新硬盘合并成一个,挂载到/mysqldata目录下

需求: 将两块空硬盘合并为“一块”,挂载到指定目录(/data)下,达到在一个目录使用2块硬盘所有空间的效果。 使用 fdisk -l 命令查看当前系统中的硬盘,如下图: 系统中存在两块未分配的硬盘&#…...

Git的SSH密钥配置

Git的SSH密钥配置简记Githttps和ssh的区别基本需求SSH密钥类型ED25519 SSH 密钥RSA SSH 密钥查看您是否有现有的 SSH 密钥对设置流程设置user name和emailssh密钥配置检查是否存在ssh Key创建新的ssh key将ssh密钥添加到您的Git帐户验证您是否可以连接使用Git有一段时间了&…...

C++回顾(九)——多继承

9.1 多继承 9.1.1 概念 一个类有多个直接基类的继承关系称为多继承(多个父类)多继承声明语法 class 派生类名 : 访问控制 基类名1 , 访问控制 基类名2 , … , 访问控制 基类名n {数据成员和成员函数声明 };类 C 可以根据访问控制同时…...

交流约瑟夫森效应

定理 根据约瑟夫森效应的基本方程,当隧道结两端施加恒定电压V0V_0V0​时,结两边超导体波函数的位相差为 Δϕ2eℏV0tΔϕ0\begin{align} \Delta\phi\frac{2e}{\hbar}V_0t\Delta\phi_0 \end{align} Δϕℏ2e​V0​tΔϕ0​​​ 得到超导电流密度为 JsJcs…...

大数据项目实战之数据仓库:用户行为采集平台——第3章 用户行为日志

第3章 用户行为日志 3.1 用户行为日志概述 用户行为日志的内容,主要包括用户的各项行为信息以及行为所处的环境信息。收集这些信息的主要目的是优化产品和为各项分析统计指标提供数据支撑。收集这些信息的手段通常为埋点。 目前主流的埋点方式,有代码…...

centos6下为Rstudio安装多版本R

之前的R版本太旧,不少包装不上,需要安装新版本的R: R --version R version 3.6.0 (2019-04-26) -- "Planting of a Tree"于是下载最新版R: 因为没有证书,需要加上最后面的参数. wget https://mirrors.tuna.tsinghua.edu.cn/CRAN/src/base/R-4/R-4.2.2.tar.gz --no…...

TCL 拥抱云原生,实现 IT 成本治理优化

作者:行疾 TCL 工程师团队基于阿里云企业云原生 IT 成本治理方案沉淀了一套成熟的 IT 企业成本治理流程与系统,通过阿里云容器服务提供的开箱即用的成本洞察、资源智能画像等功能,进行业务成本拆分、闲置资源可视化发现,并制定弹性…...

什么是API接口

API接口是指应用程序接口,是一种让不同的应用程序之间进行数据交互的方式。在现代软件开发中,API接口已经成为了必不可少的一部分。它们让开发者们可以将不同的功能组合在一起,同时也让不同的应用程序之间可以相互连接和通讯。API接口的作用A…...

基于单片机的波形发生器设计

单片机可以用来设计各种类型的波形发生器,下面是一种基于单片机的波形发生器设计方案。所需材料:单片机:可以选择常见的Atmel AVR单片机,如ATmega328P等。调制器:可以使用AD9833或AD9851等常用的调制器。时钟&#xff…...

phpmyadmin SQL注入 (CVE-2020-5504)

文章目录 0x01 漏洞介绍0x02 影响版本0x03 漏洞编号0x04 漏洞查询0x05 漏洞环境0x06 漏洞复现方法一:写入shell方法二:报错注入0x07 修复建议免责声明摘抄0x01 漏洞介绍 phpMyAdmin是phpMyAdmin团队的一套免费的、基于Web的MySQL数据库管理工具。该工具能够创建和删除数据库,…...

华为机试题:HJ107 求解立方根(python)

文章目录(1)题目描述(2)Python3实现(3)知识点详解1、input():获取控制台(任意形式)的输入。输出均为字符串类型。1.1、input() 与 list(input()) 的区别、及其相互转换方…...

论文公式符号规范

参考自1,记录论文公式的符号规范: 1.变量和公式符号表达 物理量 物理量符号用英文斜体字母或希腊斜体字母,表示物理量大小用数字加单位,单位使用正体。 例如: m10.05gx10.12ζ35.36mVm10.05 \mathrm{~g} \quad x10…...

哈工大面向服务的软件系统 期末开卷提纲

引言本课程期末考试为开卷,博主2022年期末卷面94/100,总分92.9排名第2/82,现分享复习提纲以供学弟学妹们参考。本提纲仅供参考,切勿进行其他目的的使用。基于2021秋季考试题的思考一、Spring Boot的优点是:1. 非常快速…...

Adding Conditional Control to Text-to-Image Diffusion Models

安全验证 - 知乎知乎,中文互联网高质量的问答社区和创作者聚集的原创内容平台,于 2011 年 1 月正式上线,以「让人们更好的分享知识、经验和见解,找到自己的解答」为品牌使命。知乎凭借认真、专业、友善的社区氛围、独特的产品机制…...

C++从头再来:知识点速通

1. 关于scanf 1.1 读入数字 scanf 的返回值表示成功输入的变量个数&#xff0c;当输入结束时&#xff0c;scanf将无法再次读取数据&#xff0c;返回0 # include <stdio.h> # include <math.h> # include <time.h># define M 1000000; // compute the max,…...

LearnDash Groups学习群组:您需要了解的一切

大约131k 网站使用 LearnDash。因此&#xff0c;毫无疑问&#xff0c;LearnDash是 WordPress 领域中最受欢迎的 LMS。而且&#xff0c;这是因为它具有强大的功能。但让它更受欢迎的是它与大多数第 3 方扩展很好地集成&#xff0c;并且比现有的任何其他 LMS 都更灵活。群组和群组…...

软件开发过程中遇到一个傻嘚业主能让你抓狂

背景 之前的一个网站交付了之后&#xff0c;业主一直未验收&#xff0c;今天忽然间开始了他的扯淡需求调整。 问题1 有一个问题是pdf文件上传显示问题&#xff0c;目前是pdf有一个封面要上传&#xff0c;排序字段可自动调整控制。但是就这么好用的功能&#xff0c;被他给pas…...

佛山做网站建设公司/职业技能培训学校

昨晚与闺中密友聚餐&#xff0c;话题自然少不了女人世界的种种。不知怎么&#xff0c;话题就扯到了女人的头发上。从头发谈到染发又谈到染发剂&#xff0c;又从染发剂谈到经常染发有致癌的可能。一位朋友刚换了一种染发剂的颜色&#xff0c;浅棕色里掺杂着丝丝灰白&#xff0c;…...

廊坊制作网站模板建站公司/做一个网站

1.jQuery.support//一组用于展示不同浏览器各自特性和bug的属性集合 2.jQuery.browser//浏览器内核标识。依据 navigator.userAgent 判断。 可用值: safari opera msie mozilla 3.jQuery.browser.version//浏览器渲染引擎版本号 4.jQuery.boxModel//浏览器是否使用标准盒模型…...

wordpress优秀中文主题/怎样做一个网页

直播概要 直播演讲主题&#xff1a;远程办公有点上头&#xff1f;解锁云上应用现代化的奥秘 直播时间&#xff1a;5月31日19:00 直播地址&#xff1a;微信视频号、哔哩哔哩、知乎搜索亚马逊云科技&#xff0c;三大平台同步直播。 话题介绍 在新挑战频发的动荡变革时期&…...

建设网站要学什么/seo投放

hive的tar包下载地址&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1m3VKT2-kIgR1QyjmfnWvGw?pwdr45r 提取码&#xff1a;r45rmysql的tar包&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1--s1m3hfNNKEVGkFEqi5iA?pwdb7h4 提取码&#xff1a;b7h4由于hive的元…...

做网站的费用计入哪个科目/深圳搜索引擎优化推广

09年接触Asp.Net编程&#xff0c;在10年开始接触三层&#xff0c;当时不懂架构更不了解三层的内在&#xff0c;只是知道通过三层产生的BLL、DAL、Model能够实现程序的方便管理&#xff0c;同时也因为代码生成器的帮忙&#xff0c;大大加快了开发的效率&#xff0c;我们可以用很…...

低价企业网站搭建/9 1短视频安装

1 修改配置文件 /etc/my.conf (为了命令 mysqldump能省略输入密码执行&#xff0c;mysql5.5 之后已经不建议控制台直接输入密码的方式)增加如下配置[client]hostlocalhostuserrootpassword‘password‘2 创建任务 shell# !/bin/shdd"$(date "%Y%m%d%H%M%S")&qu…...