Mysql高级操作和六大约束

news2024/11/26 13:55:19

一.数据库高级操作

1.1.克隆表

(1)克隆表,将数据表的数据记录生成到新的表中

方法一:
create table test01 like KY08;	#通过LIKE方法,复制KY08表结构生成test01 表
insert into test01 select * from KY08;
#此方法能保证新表的表结构、表数据跟旧表都是一致的

方法二:
CREATE TABLE test02 (SELECT * from KY08);
#此方法创建的新表的表数据和旧表是一样的,但可能会出现新表的表结构和旧表的不一致

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

1.2.清空表

(2)清空表,删除表内的所有数据

方法一:
delete from test01;
#DELETE清空表后,返回的结果内有删除的记录条目;DELETE工作时是一行一行的删除记录数据的;如果表中有自增长字段,使用DELETE FROM删除所有记录后,再次新添加的记录会从原来最大的记录ID后面继续自增写入记录。

方法二:
truncate table test01;
#TRUNCATE 清空表后,没有返回被删除的条目;TRUNCATE 工作时是将表结构按原样重新建立,因此在速度上 TRUNCATE 会比 DELETE 清空表快;使用 TRUNCATE TABLE 清空表内数据后,ID 会从 1 开始重新记录。

1.3.创建临时表

(3)temporary关键字,创建临时表

#临时表创建成功之后,使用SHOW TABLES命令是看不到创建的临时表的,临时表会在连接退出后被销毁。 如果在退出连接之前,也可以可执行增删改查等操作,比如使用 DROP TABLE 语句手动直接删除临时表。
CREATE TEMPORARY TABLE 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]);

例:
create temporary table test03 (
id int(4) zerofill primary key auto_increment,
name varchar(10) not null,
cardid int(18) not null unique key,
hobby varchar(50));

insert into test03 values(1,'zhangsan',123456,'running');

select * from test03;
show tables;

quit
select * from test03;

二.MySQL的六大约束

参数含义
primary key表示此字段的主键约束,此字段数据不能重复,不能为null。一个表中只能由要给主键
unique key表示此字段唯一键约束,此字段数据不可以重复。一张表中只能有一个主键,但是一张表中可以有多个唯一键
not nul表示此字段为非空约束,此字段的值不允许为NULL
default默认值约束 字段的值如果没有设置则使用默认值自动填充
auto_increment表示此字段为自增长字段(自增约束),即每条记录自动递增1,默认从1开始递增;自增长字段数据不可以重复;自增长字段必须是主键;如添加的记录数据没有指定此字段的值且添加失败也会自动递增一次
foregin key表示此字段为外键约束,保证相关的表的数据的完整性和一致性
use mybl;
create table if not exists info (				  #表示检测要创建的表是否已存在,如果不存在就继续创建。
id int(4) zerofill primary key auto_increment,    #指定主键的第二种方式。其中int(4) zerofill表示若数值不满4位数,则前面用"0"填充,例如0001。
name varchar(10) not null default '匿名',
cardid int(18) not null unique key,
hobby varchar(50));

注意: int(N) 需要和zerofill primary配合使用,否则N的值没有意义。

三.外键约束

3.1.外键概述

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

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

主键表和外键表的理解:
(1)以公共关键字作主键的表为主键表(父表、主表)
(2)以公共关键字作外键的表为外键表(从表、外表)

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

3.2.创建主从表

#创建主表 profession
create table profession (pid int,pname char(6));

#创建从表 student
create table student (sid int,sname varchar(10),age int,proid int);

#为主表profession添加一个主键约束,主键名建议以“PK_”开头,constraint PK_pid指定主键名称,可以省略不写,系统会自动分配一个名称
alter table profession add constraint PK_pid primary key (pid);

#为从表student表添加外键,并将student表的proid字段和 profession表的pid字段建立外键关联。外键名建议以“FK_”开头,constraint FK_pro指定外键约束,可以省略不写,系统会自动分配一个名称
alter table student add constraint FK_pro foreign key (proid) references profession (pid);

desc profession;   #查看主键表的表结构
desc student;      #查看外键表的表结构
show create table student;   #可以查看表结构的详细信息

3.3.主从表中插入数据

#插入新的数据记录时,要先主表再从表
insert into student values (1,'王二',12,3);

#向主键表profession中添加数据内容
insert into profession values (1,'云计算');
insert into profession values (2,'大数据');
insert into profession values (3,'JAVA');
insert into profession values (4,'UI设计');

#向外键表student中添加数据内容
desc profession;
insert into student values (1,'王二',12,3);
insert into student values (2,'毛五',16,2);
insert into student values (3,'肖三',40,4);
insert into student values (3,'李六',30,1);

3.4.主从表中删除数据

#删数数据记录时,要先从表再主表,也就是说删除主键表的记录时必须先删除其他与之关联的表中的记录
select * from student;
select * from student;
delete from profession where pid=4;
update student set proid=2 where sname='肖三';
delete from profession where pid=4;
select * from profession;

3.5.删除外键约束

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

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

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

相关文章

分布式事务(再深入)——分布式事务理论基础 Java分布式事务解决方案

前言 事务(TRANSACTION)是一个不可分割的逻辑单元,包含了一组数据库操作命令,并且把所有的命令作为一个整体向系统提交,要么都执行、要么都不执行。 事务作为系统中必须考虑的问题,无论是在单体项目还是在分布式项目中都需要进行…

HAL服务整编错误处理

HAL服务整编错误处理 1、HIDL HAL服务2、HIDL HAL服务集成1》manifest.xml 配置报错2》hidl服务未启动报错3》有rc启动文件,没有so库报错4》SELinux权限问题5》整编译还是没有集成 或 报错 1、HIDL HAL服务 请参考下面几篇: 简单HIDL HAL的实现 Android系…

Ubuntu18.04LTS上安装ROS melodic

目录 前言创建source.list安装curl通过curl获取PGP公钥更新系统软件包索引安装ROS激活ROS系统空间 前言 本文参考ROS官方wiki,描述在Ubuntu18.04LTS上安装ROS的过程。 创建source.list sudo sh -c echo "deb http://packages.ros.org/ros/ubuntu $(lsb_rele…

「更新」Macos屏幕录像工具:ScreenFlow

mac电脑屏幕截图工具哪个好?ScreenFlow是Mac上的一款优秀的屏幕录像软件,它不仅具有屏幕录制功能,还具有视频编辑功能。以下是对ScreenFlow的一些详细介绍: 首先,ScreenFlow可以捕获摄像机、麦克风和计算机音频&#…

一段奇葩的1024代码

入门教程、案例源码、学习资料、读者群 请访问: python666.cn 大家好,欢迎来到 Crossin的编程教室 ! 10月24号那天,也就是传说中的1024程序员节,我翻开日历的时候,看到一段代码: 说实话&#xf…

CPU就绪情况及其对虚拟机性能的影响

CPU就绪是虚拟化中的一种性能度量,用于指示物理CPU中的潜在问题,作为对系统效率的度量,它用于跟踪性能和资源利用率,并避免严重错误。为了理解它在管理虚拟机中的重要性,我们将探讨CPU就绪作为一种性能指标的作用。 让…

HarmonyOS(二)—— 初识ArkTS开发语言(中)之ArkTS的由来和演进

前言 在上一篇文章HarmonyOS(二)—— 初识ArkTS开发语言(上)之TypeScript入门,我初识了TypeScript相关知识点,也知道ArkTS是华为基于TypeScript发展演化而来。 从最初的基础的逻辑交互能力,到…

Python文件上传 【出错】

文件上传时选择相应文件,选择不到 需求:实现百度上传文件 Code # 无法选择文件 import os import time # import autoit from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChainsdriver webdriver.Chrome…

什么是文件安全

文件安全就是通过实施严格的访问控制措施和完美的权限卫生来保护您的业务关键信息不被窥探,除了启用和监控安全访问控制外,整理数据存储在保护文件方面也起着重要作用。通过清除旧的、过时的和其他垃圾文件来定期优化文件存储,以专注于关键业…

【51单片机】数码管与LCD1602(学习笔记)

一、静态数码管 1、数码管介绍 LED数码管:有多个发光二极管封装在一起的"8"字型的显示器 2、数码管引脚定义 分为:共阴极连接(多)、共阳极连接 图片仅供参考,以图纸为准 公共端:接地 > 供…

【数据结构与算法】排序二叉树的创建节点的添加和删除(附代码实现与代码讲解)

首先来了解下排序二叉树的基本概念 排序二叉树:任意一个根节点,比他的左子树中的任意节点都大,比他的右子树中的任意节点都小 比如下面的这个树就是排序二叉树 OK,在了解了这个基本概念之后,就可以去看下面的代码了 …

车载网络测试 - UDS诊断篇 - CAN与OSI七层模型

目录 为什么会介绍OSI七层模型? CAN规范与OSI模型 1、Physical Layer 1 2、Data Link Layer 2 3、Network Layer 3 & Transport Protocol Layer 4 4、Transport Protocol Layer 4 5、Session Layer 5 & Presentation Layer 6 & Application Laye…

【c++Leetcode】287. Find the Duplicate Number

问题入口 思想:Floyds Tortoise and Hare 这个算法除了可以检测是否有环(问题入口),还可以用来检测重复数。当然这还需要一个慢指针才能实现。具体请点击标题跳转到原视频,这里是把内容再梳理一遍。如果有不对的地方…

多路转接之epoll

本篇博客介绍: 多路转接之epoll 多路转接之epoll 初识epollepoll相关系统调用epoll的工作原理epoll服务器编写成员变量构造函数 循环函数HandlerEvent函数epoll的优缺点 我们学习epoll分为四部分 快速理解部分概念 快速的看一下部分接口讲解epoll的工作原理手写epo…

Springboot 集成 Seata

Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。Seata官网 1.找到适合的Seata版本 参考:SpringCloudAlibaba S…

译文:我们如何使 Elasticsearch 7.11 中的 date_histogram 聚合比以往更快

这篇文章是ES7.11版本的文章,主要学习的是思路,记录在这里留作以后参考用。 原文地址:https://www.elastic.co/cn/blog/how-we-made-date-histogram-aggregations-faster-than-ever-in-elasticsearch-7-11 正文开始: Elasticsea…

美国Embarcadero产品经理Marco Cantù谈Delphi/C++ Builder目前开发应用领域

美国Embarcadero产品经理Marco Cant 日前在欧洲的一次信息技术会议上谈到了Delphi/C Builder目前开发应用领域:RAD Studio Delphi/C Builder目前应用于哪些开发领域?使用 Delphi 和 CBuilder 进行开发为当今众多企业提供了动力。 航空航天 大型数据采集 …

4.2 final关键字

思维导图: 4.2.1 final关键字修饰类 定义和基本概念: 在 Java 中,final关键字有“最终”或“不可改”的含义。使用final关键字修饰的元素(类、方法或变量)都有其特定的特性。 主要应用和注意事项: 修饰类&…

Spring - 手写模拟Spring底层原理

手写Spring 定义配置类AppConfig ComponentScan("com.spring.zsj") public class AppConfig {Beanpublic ApplicationListener applicationListener() {return new ApplicationListener() {Overridepublic void onApplicationEvent(ApplicationEvent event) {System…

yolov7模型轻量化改进之MobileOne骨干替换

本文在之前文章yolov7分割训练的基础上进行改进: https://blog.csdn.net/qq_41920323/article/details/129464115?spm=1001.2014.3001.5502 具体GitHub工程下载,环境安装配置,数据准备等,请借鉴之前的文章,此处只介绍如何进行改进。 MobileOne地址:https://github.com…