MySQL-表

  • 存储在表中的数据是一种类型的数据,不同类型的数据应放到不同的表中,否则会使以后的检索和访问很困难。
  • 数据库中的每个表都有一个名字,用来标识自己。此名字是唯一的, 这表示数据库中没有其他表具有相同的名字。
  • 表由一个或多个列组成。每一列存储一列特定的信息,列称为字段,每个列都有相应的数据类型。数据类型定义列可以存储的数据种类。例如,某一列中需要存储数字,该列的数据类型应该定义为数值类型。

数据类型

整型:无符号-unsigned

浮点型、定点型

日期时间类型

字符型

 char 和 varchar 的区别:

     char:固定长度

                最大 255 字符

                数据长度不足会再尾部填充空格,查询时会自动去掉空格

                效率高,占空间

varchar:长度可变

                最大可设置 65535 字节

insert into vc(v,c) values('ab  ','ab  ');select * from vc where v='ab  ';  # 能查到
select * from vc where c='ab  ';  # 能查到select * from vc where v like 'ab  ';  # 能查到
select * from vc where c like 'ab  ';  # 不能查到

 注:'=' 不是完全对等,'like' 可以表示完全对等

DDL(数据定义语言) 

Data Definition Language, 用于定义和管理数据库中的对象和结构,如表、列、索引等。

创建表

create table [if not exists] 表名(字段1 字段类型 [列级约束条件],字段2 字段类型 [列级约束条件],...[表级约束条件]
)

注:最后一个字段后面不加“,” 

查看表

显示数据库中的表

show tables;

查看表的基本结构

desc 表名;

查看数据库/表的创建语句

show create table 表名:

修改表

  • 添加字段
alter table 表名
add column 新列名 数据类型 [约束条件] first / after 列名;

注:

first:添加到最前面(即第一列)

after 列名:添加到该列之后 

  • 修改字段的类型
alter table 表名
modify column 列名 数据类型 [约束条件];
  • 修改字段的位置
alter table 表名
modify column 列名 数据类型 first / after 列名;
  • 修改字段名
alter table 表名
change column 旧列名 新列名 数据类型;
  • 删除字段
alter table 表名
drop column 列名;

重命名表

alter table 旧表名
rename to 新表名;

删除表

drop table 表名;

练习

DML(数据操作语言)

Data Manipulation Language,用于操作数据库中的实际数据,如插入、更新、删除和查询数据。

插入数据

        插入完整的行,所有字段,每一个字段都必须提供一个值,如果某个字段没有值,应该使用NULL,每个字段必须以他们在表中定义的顺序给出。这种语法简单,但是不安全,应该避免使用。

insert into 表名
values (字段1的值,字段2的值,...);

        更安全的方法是,在表名后的括号中给出字段名,values 中的值的顺序与前面给出的字段的顺序相同,一一对应。不需要与表中定义的顺序相同,没有值的字段可以不提供。

insert into 表名 (字段1,字段2,...)
values (字段1的值,字段2的值,...);
  • values 后面可以跟多个括号,括号间用逗号分隔,每个括号代表要插入的一条数据
  • 单条 insert 语句插入多条数据比多条 insert 语句快

更新数据

update 表名
set 字段1 = 字段1的值,字段2 = 字段2的值,...
where 限制条件;
  •  注:记得加 where 限制条件,否则更新整个表中的每一条数据

删除数据

delete from 表名
where 限制条件;
  • 同样,不加限制条件会删除整个表中每一条数据
  • 物理删除,无法恢复
  • 注:在对 update 或 delete 使用 where 前,应该先用 select 语句进行测试保,证它的过滤结果是正确的

练习

约束

constraint

约束类型非空约束默认约束唯一约束主键约束外键约束
关键字not nulldefaultuniqueprimary keyforegin key

非空约束

创建表时设置非空约束

create table 表名(字段名 字段类型 not null,...
);

已有字段添加非空约束

alter table 表名
modify column 字段名 字段类型 not null;

删除非空约束(修改为允许为空)

alter table 表名
modify column 字段名 字段类型;

注意:不要混淆 NULL 值和空串,NULL值是没有值,空串是“(两个单引号,中间没有字符)

默认约束

create table 表名(字段名 字段类型 default 默认值,...
);

唯一约束

列级

create table 表名(字段名 字段类型 unique,...
);

表级,可以给约束起名,可以创建多列的唯一约束(联合唯一约束)

create table 表名(字段1 字段类型,字段2 字段类型,...[constraint 约束名] unique(字段1,字段2)
);

已有字段添加唯一约束

alter table 表名
modify 字段名 字段类型 unique;alter table 表名
add [constraint 约束名] unique(字段名);

删除唯一约束

alter table 表名
drop index 约束名;alter table 表名
drop key 约束名;

主键约束

        唯一标识表中每行的这个列(或这组列)称为主键。主键用来表示一个特定的行。没有主键,更新或删除表中特定行很困难,因为没有安全的方法保证只涉及相关的行。

因此:

  • 每一个表都应该定义主键
  • 主键的值不应该修改
  • 不使用可能会修改值的列作为主键(与业务无关,通常使用id 作为主键)

特点:

  • 唯一性:主键要求每一行数据的主键值都必须是唯一的,不允许有重复值。
  • 非空性:主键要求主键列的值不能为空,即不能为 NULL
  • 单一性:每个表只能有一个主键。主键可以由一个列或多个列组成,形成复合主键

列级

create table 表名(字段名 字段类型 primary key,...
);

表级,可以给约束起名,可以创建多列的联合主键

create table 表名(字段1 字段类型,字段2 字段类型,...[constraint 约束名] primary key(字段1,字段2)
);

删除主键

alter table 表名
drop primary key;

自动递增

        auto_increment:设置 auto_increment 的列,当每增加一行时自动增量。每个表只允许一个 auto_increment 列。

create table 表名(字段1 字段类型 auto_increment
);

外键约束

        外键为表中的某一字段,该字段是另一表的主键值,外键用来在两个表的数据之间建立联结,一个表中可以有一个或多个外键。外键的作用是保持数据的一致性、完整性。

注意:

外键字段可以为null,外键为空的数据也叫孤儿数据

有了外键引用之后,表分为父表和子表

  • 创建表时先创建父表,再创建子表
  • 插入数据时,先插入附表数据,再插入子表数据
  • 删除时,先删除子表,再删除父表

子表外键类型要与父表外键类型一致

[constraint 外键名] foreign key (列名) references 主表名 (主键);

练习

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

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

相关文章

【UCB CS 61B SP24】Lecture 21: Data Structures 5: Priority Queues and Heaps 学习笔记

本文介绍了优先队列与堆,分析了最小堆的插入与删除过程,并用 Java 实现了一个通用类型的最小堆。 1. 优先队列 1.1 介绍 优先队列是一种抽象数据类型,其元素按照优先级顺序被处理。不同于普通队列的先进先出(FIFO)&…

DeepSeek-R2:AI大模型新纪元的破晓之光

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】 文章目录 DeepSeek大模型技术系列十五DeepSeek大模型技术系列十五》DeepS…

UniApp+Vue3实现高性能无限滚动卡片组件:垂直滑动、触摸拖拽与动态导航的完美结合

引言 在移动应用开发中,流畅且吸引人的用户界面对于提升用户体验至关重要。本文将详细介绍如何使用UniApp和Vue3框架构建一个具有垂直方向无限滚动卡片、触摸拖拽支持、同步导航栏和平滑动画效果的高级UI组件。我们将通过代码分析每个功能的实现细节,帮助…

LeetCode 热题 100----1.两数之和

LeetCode 热题 100----1.两数之和 题目描述 我的解法 语言:js 思路就是:用双重循环去找哪两个数字相加等于target,目前的时间复杂度为O(n2),之后右优化思路再更新。

华为云 | 快速搭建DeepSeek推理系统

DeepSeek(深度求索)作为一款国产AI大模型,凭借其高性能、低成本和多模态融合能力,在人工智能领域崛起,并在多个行业中展现出广泛的应用潜力。 如上所示,在华为云解决方案实践中,华为云提供的快速…

本地部署阿里万象2.1文生视频模型(Wan2.1-T2V)完全指南

在生成式AI技术爆发式发展的今天,阿里云开源的万象2.1(Wan2.1)视频生成模型,为创作者提供了从文字/图像到高清视频的一站式解决方案。本文针对消费级显卡用户,以RTX 4060 Ti 16G为例,详解本地部署全流程与性能调优方案,涵盖环境配置、多模型选择策略、显存优化技巧及实战…

FPGA标准库-Open Logic

在现代技术发展的浪潮中,开源项目已经成为了推动技术创新和发展的核心力量。无论是人工智能、区块链、云计算,还是传统的嵌入式开发、操作系统,开源项目都在其中扮演着至关重要的角色。它们不仅促进了技术的快速迭代,也为全球开发…

React antd的datePicker自定义,封装成组件

一、antd的datePicker自定义 需求:用户需要为日期选择器的每个日期单元格添加一个Tooltip,当鼠标悬停时显示日期、可兑换流量余额和本公会可兑流量。这些数据需要从接口获取。我需要结合之前的代码,确保Tooltip正确显示,并且数据…

【算法题解答·一】二分法

【算法题解答一】二分法 接上文 【算法方法总结一】二分法的一些技巧和注意事项 二分法相关题目如下: 34.在排序数组中查找元素第一和最后一个位置 使用 左闭右闭,[left,right]关键在于 nums[mid] target 的部分找 第一个 target 的过程中&#xff0…

Non-Homophilic Graph Pre-Training and Prompt Learning

Non-Homophilic Graph Pre-Training and Prompt Learning KDD25 ​#paper/⭐#​ 目的:对异配图进行prompt ‍ ​​ 方法 邻居节点的综合嵌入 s v 1 ∣ V ( S v ) ∣ ∑ u ∈ V ( S v ) h u ⋅ s i m ( h u , h v ) , \mathbf{s}_{v}\frac{1}{|V(S_{v})|}\su…

BUU44 [BJDCTF2020]ZJCTF,不过如此1 [php://filter][正则表达式get输入数据][捕获组反向引用][php中单双引号]

题目: 我仿佛见到了一位故人。。。也难怪,题目就是ZJCTF 按要求提交/?textdata://,I have a dream&filenext.php后: ......不太行,好像得用filephp://filter/convert.base64-encode/resourcenext.php 耶?那 f…

掌握 findIndex、push 和 splice:打造微信小程序的灵活图片上传功能✨

文章目录 ✨ 掌握 findIndex、push 和 splice:打造微信小程序的灵活图片上传功能 🌟示例场景:小程序图片上传🌼 认识 findIndex定义语法在代码中的应用示例当前行为 🚀 认识 push定义语法在代码中的应用示例特点 ✂️ …

山西青年杂志山西青年杂志社山西青年编辑部2025年第3期目录

青年争鸣 教师发展中心行动转向的价值意蕴分析框架研究与启示 于宝证;李军红;郑钰莹;何易雯; 产教融合视角下职业本科工商管理专业人才培养模式探析 杜芯铭; 青年教育研究 教育数字化背景下高职院校的课堂教学研究 张晨; 统筹职业教育、高等教育、继续教育协同…

神经网络:AI的网络神经

神经网络(Neural Networks)是深度学习的基础,是一种模仿生物神经系统结构和功能的计算模型。它由大量相互连接的节点(称为神经元)组成,能够通过学习数据中的模式来完成各种任务,如图像分类、语音…

计算机视觉|ViT详解:打破视觉与语言界限

一、ViT 的诞生背景 在计算机视觉领域的发展中,卷积神经网络(CNN)一直占据重要地位。自 2012 年 AlexNet 在 ImageNet 大赛中取得优异成绩后,CNN 在图像分类任务中显示出强大能力。随后,VGG、ResNet 等深度网络架构不…

储油自动化革命,网关PROFINET与MODBUS网桥的无缝融合,锦上添花

储油行业作为能源供应链的关键环节,其自动化和监控系统的可靠性和效率至关重要。随着工业4.0的推进,储油设施越来越多地采用先进的自动化技术以提高安全性、降低成本并优化运营。本案例探讨了如何通过使用稳联技术PROFINET转MODBUS模块网关网桥&#xff…

解锁Egg.js:从Node.js小白到Web开发高手的进阶之路

一、Egg.js 是什么 在当今的 Web 开发领域,Node.js 凭借其事件驱动、非阻塞 I/O 的模型,在构建高性能、可扩展的网络应用方面展现出独特的优势 ,受到了广大开发者的青睐。它让 JavaScript 不仅局限于前端,还能在服务器端大展身手&…

python:pymunk + pygame 模拟六边形中小球弹跳运动

向 chat.deepseek.com 提问:编写 python 程序,用 pymunk, 有一个正六边形,围绕中心点缓慢旋转,六边形内有一个小球,六边形的6条边作为墙壁,小球受重力和摩擦力、弹力影响,模拟小球弹跳运动&…

学习 Wireshark 分析 Android Netlog

Android 设备抓取的日志中,netlog 文件夹包含.cap文件可以使用Wireshark工具查看网络日志。 Wireshark 分析 DNS 步骤 在使用Wireshark分析网路日志时,要检查DNS解析是否正常,可以按照以下步骤操作: 识别DNS查询和回应 使用过滤器 udp.port == 53 来查看所有DNS相关的流量…

OpenHarmony启动系统-U-Boot简介和源码下载与编译

OpenHarmony系统启动流程简述 设备上电后,OpenHarmony系统大致经历以下3个阶段: 1.BootRom代码引导加载UBoot; 2.UBoot启动初始化硬件资源,引导并加载系统内核(Linux内核); 3.Kernel(LiteOs,Linux内核)启动、加载驱动…