一、表管理

1.建库

语法:

create database if not exists 数据库名;

命名规则:

仅可使用数字、字母、下划线、不能纯数字;区分字母大小写;具有唯一性;不可使用MySQL命令或特殊字符。

相关命令:

show databases;   #查看库
use 库名;          #使用库
select database();  #查看所在的库
drop database if exists 库名;   #删除库
2.建表

建表语法:

create table 库名.表名(表头名1 数据类型,表头名2 数据类型...);

相关命令:

show tables;        #显示已有的表
desc 库名.表名;      #查看表头
select * from 库名.表名;   #查看表记录
drop table 库名.表名;       #删除表
3.修改表

语法格式:

alter table 库.表 操作命令;

修改表名

alter table 库名.表名 rename 库名.新表名;

删除表头

alter table 库名.表名 drop 表头名;

添加表头

alter table 库名.表名 add 表头名 数据类型;     #默认添加在末尾
alter table 库名.表名 add 表头名 数据类型 first;  #添加在首位
alter table 库名.表名 add 表头名 数据类型 after 表头名;   #添加在指定表头名下方

修改表头数据类型

alter table 库名.表名 modify 表头名 新数据类型;

修改表头名

alter table 库名.表名 change 表头名 新表头名 数据类型;
4.复制表

语法格式:

create table 库名.表名 select 列名 from 库名.表名 [where 条件]; #复制表结构及数据
create table 库名.表名 like 库名.表名; #仅复制表结构

二、数据类型

MySQL提供了丰富的数据类型,主要分为三大类:数值类型、枚举类型、日期类型和字符串类型。

1.数值类型

整数类型:tinyint、smallint、mediumint、int、bigint。

示例:

create table users (id int ,age tinyint,views bigint
);

浮点数类型:float、double、decimal。

示例:

create table products(price decimal(6,2),weight float,ratio double
);
2.枚举类型

enum类型,字段值仅能在范围内选1个值;set类型,字段值能在范围内选取1个或多个值。

示例:

create table 库名.表名(字段名 enum(选项1,选项2,选项3...),字段名 set(选项1,选项2,选项3...)
);
3.日期时间类型

date仅日期、time仅时间、datetime日期时间、timestamp时间戳、year年份。

示例:

create table events (evnet_date date,start_time time,created_at timestamp,full_datetime datetime
);
4.字符串类型

char定长字符串、varchar变长字符串、tinytext短文本、text长文本内容、mediumtext中等长度文本、longtext超长文本。

示例:

create table articles (title varchar(50),content text,image mediumblob,hash char(32)
);

三、数据批量处理

1.数据导入

语法格式:

load data infile "/目录名/文件名" info table 库名.表名 fields terminated by "分隔符" lines terminated by "\n";
2.数据导出
select命令 into outfile "/目录名/文件名" fields terminated by "分隔符" lines terminated by "\n";

四、表头约束

表头约束是数据库管理系统中的关键机制,用于在列级别确保数据完整性和一致性,通过定义数据必须满足的条件和规则来实现。

1.约束分类

not null:非空约束,确保该字段值不能为空。

default:默认值设置,当未指定该字段值时自动填充默认值。

unique:唯一约束,保证该字段值在整个表中具有唯一性,允许为空值。

primary key:主键约束,兼有唯一性和非空性,作为表的唯一标识。

foreign key:外键约束,用于建立表间关联关系,确保从表字段值必须引用主表对应字段值。

2.基本约束

not null:不允许赋空值。

create table test.stu(name char(10) not null,class char(7) null
);

default:不给表头赋值时,使用默认赋值。

create table test.stu(name char(10) not null,class char(10) null default "sql"
);

unique:表头的值不允许重复

create table test.stu(name char(10) not null,class char(10) null default "sql",phone char(11),unique(phone)
); 
3.高级约束
(1)主键(primary key)

主键字段必须满足非空且唯一的要求。每个表只能定义一个主键,但可以由多个字段组成复合主键。复合主键需要同时创建和删除,在系统中会显示为PRI标志。通常建议将主键字段设置为自增属性,并选择能够唯一标识表中记录的字段作为主键。

主键创建语法格式:

#格式一
create table 库.表(
表头名 数据类型 primary key ,
表头名 数据类型 ,
..... );
#格式二
create table 库.表(
表头名 数据类型 ,
.....
primary key(字段名)
);

删除主键语法格式:

alter table 库名.表名 drop primary key;

添加主键语法格式:

alter table 库名.表名 add primary key(表头名);

复合主键语法格式:

create table 库.表(
表头名 数据类型 ,
.....
primary key(字段名列表)
);

与auto_increment连用

create table 库.表(
表头名 数据类型 primary key auto_increment,
表头名 数据类型 ,
..... );
(2)外键(foreign key)

表存储引擎必须使用InnoDB,各列的数据类型需保持一致,被参照的列必须是索引类型之一(如主键primary key)。

创建外键语法格式:

create table   库.表(
表头列表 , 
foreign key(表头名)        #指定外键
references 库.表(表头名)   #指定参考的表头名
on update  cascade         #同步更新
on  delete  cascade        #同步删除
)engine=innodb;

删除外键语法格式:

alter table 库名.表名 drop FOREIGN KEY 外键名;

添加外键语法格式:

alter table db1.gz add foreign key(字段名) references 库名.表名(字段名) on update cascade on delete cascade ;

五、MySQL索引

MySQL 索引是一种用于提升查询效率的关键数据库机制,其作用类似于书籍的目录,能够帮助数据库快速检索数据。在单个数据表中可以创建多个索引。索引可以应用于任何数据类型的字段,允许字段值重复或为NULL值。通常建议在WHERE子句查询条件涉及的字段上创建索引,在MySQL中这些索引会被标记为MUL。

1.索引分类

普通索引:适用于任何数据类型的索引,无附加条件限制,仅用于提升查询效率,允许重复值和NULL值。

唯一索引:通过unique参数创建的索引,要求索引值必须唯一,但允许存在NULL值。

全文索引:专为文本搜索设计的索引类型,支持自然语言搜索和布尔搜索功能。

单列索引:基于单个字段构建的索引结构。

多列索引:在表的多个列上创建的复合索引,查询时可通过这些字段组合来提高检索效率。

2.索引的优点

优化查询性能,降低数据扫描量;提升连接效率,实现高效 JOIN 操作;确保数据完整性,维护唯一性约束。

3.索引缺点
  • 需要额外存储空间,增加了存储开销
  • DML操作成本上升,导致写入性能下降
  • 需定期维护,维护成本随之增加
  • 索引选择难度较大
4.普通索引

建表时创建索引:

create table 库名.表名(
字段列表,
index(表头名),
index(表头名),
);

添加索引:

create index 索引名 on 库名.表名(字段名);

删除索引:

drop index 索引名 on 库名.表名;

验证查询是否使用索引:

explain select 查询语句;

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

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

相关文章

基于大模型构建 Java 混淆的方式方法(从入门到精通 · 含开源实践)

1. 目标与威胁模型:你到底想防什么? 把“混淆”当作成本叠加器:让逆向者付出更多时间与技能,而不影响用户体验与可维护性。可用 Collberg 等提出的四指标来权衡:有效性/韧性/隐蔽性/成本(potency/resilience/stealth/cost)。近年的研究也在重审这些评估方法,建议结合可…

RabbitMQ面试精讲 Day 28:Docker与Kubernetes部署实践

【RabbitMQ面试精讲 Day 28】Docker与Kubernetes部署实践 在微服务架构日益普及的今天,消息中间件RabbitMQ已成为解耦系统、异步通信的核心组件。随着云原生技术的成熟,如何在Docker与Kubernetes(K8s)环境中高效、高可用地部署Ra…

神经网络和深度学习介绍

目录 1.深度学习的介绍 2.神经网络的构造 ①神经元结构 ②神经网络组成 ③权重核心性 3.神经网络的本质 4.感知器 单层感知器的局限性: 5.多层感知器 多层感知器的优势: 6.偏置 7.神经网络的设计 8.损失函数 常用的损失函数: 9…

云原生俱乐部-k8s知识点归纳(8)

这一部分主要讲一讲CRD客户资源定义、Gateway API、Priority Class优先类、HPA自动扩缩这四部分内容。还剩下Argo CD的内容了整个k8s,至于operator的话单独有一本书,都是实战内容。CRD客户资源定义先来讲一讲这节内容的几个核心术语,Custom R…

【机器学习】7.随机森林之数学原理

随机森林(Random Forest)的数学原理核心是“决策树基学习器 Bootstrap抽样 特征随机选择” 的集成框架,通过降低单棵决策树的方差、提升模型泛化能力来工作。以下分步骤解析其数学推导与核心逻辑: 一、 基学习器:决策…

大模型微调面试题全解析:从概念到实战

大模型微调面试题全解析&#xff1a;从概念到实战 微调基础概念 本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型开发 学习视频/籽料/面试题 都在这>>Github<< >>gitee<< &#xff08;一&#xff09;什么是微调 微调&#xf…

Linux: network: arp: arp_accept

文章目录 接收 linux 代码 arp协议的处理 接收 arp_accept - BOOLEAN Define behavior for gratuitous ARP frames who’s IP is not already present in the ARP table: 0 - don’t create new entries in the ARP table 1 - create new entries in the ARP table Both repli…

SpringBoot 整合 Langchain4j RAG 技术深度使用解析

目录 一、前言 二、Langchain4j RAG介绍 2.1 什么是LangChain4j 2.2 LangChain4j RAG技术介绍 2.2.1 RAG技术原理 2.2.2 LangChain4j中的RAG实现 2.2.3 LangChain4j RAG技术优势 2.2.4 LangChain4j RAG技术应用场景 三、LangChain4j RAG 技术深度使用 3.1 文档加载与解…

百度深度学习面试:batch_size的选择问题

题目在深度学习中&#xff0c;为什么batch_size设置为1不好&#xff1f;为什么batch_size设为整个数据集的大小也不好&#xff1f;&#xff08;假设服务器显存足够&#xff09;解答这是一个非常核心的深度学习超参数问题。即使显存足够&#xff0c;选择极端的 batch_size 也通常…

AWS Fargate 完全指南:在无服务器容器中释放应用潜能

容器化技术带来了应用交付的革命,但管理运行容器的底层服务器集群却带来了新的复杂性。如何在不牺牲容器灵活性的前提下,摆脱服务器的运维重负? AWS Fargate 应运而生。它是一款为容器打造的无服务器计算引擎,让您能够专注于构建应用程序,而无需管理服务器。本文将带您深…

WSL Ubuntu数据迁移

将 WSL 中的 Ubuntu 迁移到其他磁盘可有效释放 C 盘空间并优化系统性能。以下是详细步骤及注意事项&#xff1a;&#x1f4cd; ​​迁移步骤​​​​备份 WSL 数据&#xff08;防止意外丢失&#xff09;​​以管理员身份打开 PowerShell 或命令提示符。导出 Ubuntu 实例为压缩包…

基于STM32的病房监测系统/环境监测系统/人体健康监测系统

基于STM32的病房监测系统/环境监测系统/人体健康监测系统 持续更新&#xff0c;欢迎关注!!! 基于STM32的病房监测系统/环境监测系统/人体健康监测系统 随着科技的进步与人们健康意识的提升&#xff0c;环境与人体健康监测的需求日益增长。在医疗、居住和工作环境中&#xff0c…

【适合中小企业应用的Flask网站部署指南】【小白指南系列】如何在Windows Server服务器上部署Flask网站和SSL证书开启HTTPS

【适合中小企业应用的Flask网站部署指南】【小白指南系列】如何在Windows Server服务器上部署Flask网站和SSL证书开启HTTPS 前言&#xff1a; 上一篇文章已经配置好Redis数据库和网站雏形建立了。现在完善了一个比较重大的功能和进度之后&#xff0c;我们尝试初步将Flask项目网…

std::exchange详解

一、基本概念与函数原型 std::exchange 是 C++14 引入的标准库函数,定义于 <utility> 头文件。其核心功能是原子性地替换对象的值并返回旧值,适用于资源管理、状态机更新等场景。 函数原型: template <class T, class U = T> T exchange(T& obj,

kubernetes-dashboard使用http不登录

安装了k8s v1.28&#xff0c;想要安装kubernetes-dashboard以便可视化管理平台&#xff0c;网上很多资料都是版本比较低的&#xff0c;自己摸索了很久&#xff0c;终于搞定了。直接上配置文件&#xff0c;拿去kubectl apply -f k8s-dashb.yml就行了。 # Copyright 2017 The Kub…

道路车道线分割数据集左车道右车道中线labelme格式3494张4类别

数据集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;仅仅包含jpg图片和对应的json文件)图片数量(jpg文件个数)&#xff1a;3494标注数量(json文件个数)&#xff1a;3494标注类别数&#xff1a;4标注类别名称:["center_lane","right_lane","…

12.Shell脚本修炼手册--函数的基础认知与实战演练(fock炸弹!!)

Shell 函数的知识与实践 文章目录Shell 函数的知识与实践Shell 函数介绍Shell 函数的语法Shell 函数的执行1. 不带参数的函数执行2. 带参数的函数执行Shell 函数的基础实践示例 1&#xff1a;简单的 hello 函数&#xff08;验证 “先定义后调用”&#xff09;示例 2&#xff1a…

微信小程序设计的请求封装方案(request.js)

以下是为微信小程序设计的请求封装方案&#xff0c;包含代码示例和最佳实践建议&#xff1a; 基础请求封装&#xff08;request.js&#xff09; // 基础配置 const BASE_URL https://api.yourdomain.com; const TIMEOUT 10000;// 请求封装函数 const request (options) >…

【Linux系统】进程信号:信号的处理

上一篇文章在介绍完信号的产生和保存后&#xff0c;我们现在对信号有了一个基本的认识&#xff0c;信号由键盘、系统调用、硬件异常、软件条件等方式产生&#xff0c;然后被保存在三张表中&#xff0c;再将信号递达&#xff0c;操作系统有三种处理方式&#xff1a;默认处理、忽…

权限管理模块

登录相关权限管理模块(基础版)模块设计与实现优化点&#xff1a;前后端用户验证实现方式常见的攻击手段及防御手段权限管理模块(基础版) RBAC(Role-Base Access Control&#xff0c;基于角色的访问控制)&#xff1a;是权限管理的常用方案。 核心&#xff1a;通过用户 - 角色 -…