MySQL数据库高级操作

目录

  • MySQL中6种常见的约束
  • 克隆表
  • 清空表的数据记录
  • 临时表
  • 创建外键约束,保证数据的完整性和一致性。

MySQL中6种常见的约束

  • 主键约束(primary key)
  • 外键约束(foreign key)
  • 非空约束(not null)
  • 唯一性约束(unique [key|index])
  • 默认值约束(default)
  • 自增约束(auto_increment)

例:
在这里插入图片描述

注释:

  • if not exists:表示检测要创建的表是否已存在,如果不存在就继续创建
  • int(4) zerofill:表示若数值不满4位数,则前面用“0”填充,例0001
  • auto_increment:表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增;自增长字段数据不可以重复;自增长字段必须是主键;如添加的记录数据没有指定此字段的值且添加失败也会自动递增一次
  • primary key:表示此字段主键约束,此字段数据不可以重复;一张表中只能有一个主键
  • unique key:表示此字段唯一键约束,此字段数据不可以重复;一张表中只能有一个主键, 但是一张表中可以有多个唯一键
  • not null:表示此字段不允许为NULL
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

克隆表

克隆表就是将数据表的数据记录生成到新的表中
方法一

create table test01 like fofo;		#通过 LIKE 方法,复制fofo 表结构生成 test01 表
insert into test01 select * from fofo;

#此方法能保证 新表的表结构、表数据 跟旧表都是一致的

在这里插入图片描述

在这里插入图片描述

方法二

CREATE TABLE test02 (SELECT * from fofo);

#此方法创建的新表的表数据和旧表是一样的,但可能会出现新表的表结构和旧表的不一致

show create table test02\G					#获取数据表的表结构、索引等信息
SELECT * from test02;

在这里插入图片描述
在这里插入图片描述

清空表的数据记录

方法一:
delete from test01;  ##逐行删除表数据记录

方法二:
truncate table test01;   ##重新建立一个一模一样结构的新表

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

临时表

临时表创建成功之后,使用SHOW TABLES命令是看不到创建的临时表的,临时表会在连接退出后被销毁。 如果在退出连接之前,也可以可执行增删改查等操作,比如使用 DROP TABLE 语句手动直接删除临时表。

CREATE TEMPORARY TABLE 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]);

在这里插入图片描述

创建外键约束,保证数据的完整性和一致性。

  • 外键的定义:如果同一个属性字段X在表一中是主键,而在表二中不是主键,则字段X称为表二的外键。

  • 主键表和外键表的理解:

    • 以公共关键字作主键的表为主键表(父表、主表)
    • 以公共关键字作外键的表为外键表(从表、外表)
  • 注意:与外键关联的主表的字段必须设置为主键。要求从表不能是临时表,主从表的字段具备相同的数据类型、字符长度和约束。

#创建主表 profession
create table profession (pid int(4),proname varchar(50));

#创建从表 student
create table student (id int(4) primary key auto_increment,name varchar(10),age int(3),proid int(4));

#为主表 profession 添加一个主键约束。主键名建议以“PK_”开头。
alter table profession add constraint PK_pid primary key (pid);

#为从表 student 表添加外键,并将 student 表的 proid 字段和 profession 表的 pid 字段建立外键关联。外键名建议以“FK_”开头。
alter table student add constraint FK_pro foreign key (proid) references profession (pid);

desc student;

#插入新的数据记录时,要先主表再从表
insert into profession values(1,'通信工程');
insert into profession values(2,'软件工程');
insert into student values(1,'zhangsan',18,1);
insert into student values(2,'lisi',19,1);
insert into student values(3,'wangwu',20,2);

#删数数据记录时,要先从表再主表,也就是说删除主键表的记录时必须先删除其他与之关联的表中的记录。
delete from student where proid=1;
delete from profession where pid=1;

#查看和删除外键约束
show create table student;
desc student;
alter table student drop foreign key FK_pro;
alter table student drop key FK_pro;

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

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

相关文章

安卓端Google隐私沙盒归因报告聚焦

自2022年2月Google首次提出将推出隐私沙盒至今已一年有余。现在,安卓端的隐私沙盒Beta测试已针对特定Android13设备正式开始。作为早期测试者,Adjust很高兴与 Google一同迈出增强用户隐私的第一步,并在接下来的旅程中继续携手同行。为帮助移动…

opencv初学记录

准备工作: 1.找一张图片 2.准备python运行环境,并导入库,pip install opencv-python 读取文件,并打印维度 import cv2 #为什么是cv2不是cv呢,这个2指的是c的api,是为了兼容老板,cv指的就是c&am…

今天面了一个来字节要求月薪23K,明显感觉他背了很多面试题...

最近有朋友去字节面试,面试前后进行了20天左右,包含4轮电话面试、1轮笔试、1轮主管视频面试、1轮hr视频面试。 据他所说,80%的人都会栽在第一轮面试,要不是他面试前做足准备,估计都坚持不完后面几轮面试。 其实&…

ChatGPT/InstructGPT详解

前言 GPT系列是OpenAI的一系列预训练文章,GPT的全称是Generative Pre-Trained Transformer,顾名思义,GPT的目的就是通过Transformer为基础模型,使用预训练技术得到通用的文本模型。目前已经公布论文的有文本预训练GPT-1&#xff…

【操作系统】计算机操作系统知识点总结

文章目录 前言一、操作系统的概念与发展二、操作系统的结构与功能1、操作系统的结构2、操作系统的功能 三、进程管理1、进程2、进程的创建3、进程管理的实现4、进程控制块 四、内存管理1、内存2、内存管理3、内存管理的实现 五、文件系统1、文件系统2、文件系统的主要任务3、文…

Java开发 - 带你了解集群间的相互调用,你还在等什么?

目录 前言 导读 项目准备 集群准备 父工程引入子项目 服务调用方HelloService准备 pom文件 yml文件 Controller文件 服务提供方HelloWorld准备 pom文件 yml文件 Controller文件 运行此两个工程 hello_world组集群 集群调用测试 RestTemplate换成Dubbo行不行…

Word 2021入门指南:详细解读常用功能

软件安装:办公神器office2021安装教程,让你快速上手_正经人_____的博客-CSDN博客 一、 新建文档 打开Word 2021后,可以看到左上角的“文件”选项,点击它,在弹出的菜单中选择“新建”选项。然后可以选择空白文档或者使…

Linux安装和配置VCenter

Linux安装和配置VCenter 以下演示安装 Linux VCenter,也就是使用VMware-VCSA-all-6.7.0-13010631.iso 镜像包。通过一台 Windows服务器远程连接 ESXI 服务器安装 Linux 版本的 VCenter。也就是Windows 服务器只是安装的界面的一个载体。 Linux VCenter环境搭建 下…

网络安全入门学习第十七课——PHP数组

文章目录 一、索引数组二、关联数组三、数组定义1、多维数组2、赋值方式3、短数组定义法([ ] PHP 5.4起增加的) 四、访问数组五、遍历数组1、使用 for 循环2、foreach语句遍历 六、合并两个数组1、“”联合运算符2、array_combine 函数 七、数组排序函数八、数组增删…

低成本开发专属小程序支持自定义开发设计

传统定制开发小程序成本高,还需要不断地沟通和交流才能一步步地去实现你想要的功能和效果,那么除了传统的定制开发小程序外,用户其实还可以选择使用模板开发小程序,不仅能实现小程序的所有基础功能,还不用编程维护和开…

基于html+css的图展示128

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

Rust语言从入门到入坑——(3)小谈Cargo工具以及VScode配置Rust

文章目录 0 引入1、Cargo 是什么2、常用Cargo指令3、VScode配置Rust环境3.1.tasks.json3.2.launch.json 4、总结 0 引入 上一节我们谈了在编译工程的时候用到Cargo(卡狗) 1、Cargo 是什么 Cargo 是 Rust 的构建系统和包管理器。 Rust 开发者常用 Carg…

AI翻唱整合

感谢阅读 不完全原创声明环境部署下载工具包安装人声背景音分离工具分离消除脏数据(比如杂音)准备自己的声音预处理完工效果参考 不完全原创声明 本人使用了多个第三方软件,并修改了一部分代码使得其可以在PC上训练,如有侵权请联…

《项目实战》构建SpringCloud alibaba项目

文章目录 1、概要2、整体架构流程2.1、技术结构组成部分 3、技术名词解释4、技术细节4.1、构建父工程4.1.1、选择构建Maven项目4.1.2、修改父工程文件4.1.3、修改父工程pom.xml配置4.1.3.1、添加springboot支持4.1.3.2、修改JDK版本、编码、springboot版本配置4.1.3.3、添加Spr…

完美解决 RabbitMQ 可视化界面中 Overview 不显示图形的问题

💧 记录一下今天遇到的 b u g \color{#FF1493}{记录一下今天遇到的bug} 记录一下今天遇到的bug💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页——微风撞见云的博客🎐 🐳 数据结构与算法…

拷贝构造函数

拷贝构造函数 以值传递的方式调用函数时,如果实参为对象,会调用拷贝构造函数。函数以值的方式返回对象时,可能会调用拷贝构造函数(VS会调用,Linux不会,g编译器做了优化)浅拷贝存在的问题 类似于…

反射---getattr,hasattr,setattr,delattr加插播enumerate

什么是反射? 用字符串数据类型的变量名来访问这个变量的值 反射的方法:getattr,hasattr,setattr,delattr 类:(通过类名反射类名空间里面的内容的) 类:静态属性,类方法,静…

【python】flask+pymysql 实现Web端操作数据库!

Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。 Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用…

Qt5.15.10+msvc2019_x86+qwebengine(含mp4)源码编译

系统要求: win10 64bit 英文版(或者把“区域”->“管理”->“非Unicode程序中所使用的当前语言”->改为"英语(美国)") 内存16g够用,cpu性能越高越好,硬盘在安装环境、下载源码后,至少还有100g可用空间 下载源码: https://download.qt.io/archiv…

大话设计模式之——单例模式

单例(Singleton) Intent 确保一个类只有一个实例,并提供该实例的全局访问点。 Class Diagram 使用一个私有构造函数、一个私有静态变量以及一个公有静态函数来实现。 私有构造函数保证了不能通过构造函数来创建对象实例,只能…