MySQL数据库中篇

#作者:允砸儿

#日期:乙巳青蛇年  四月初九

笔者继续带朋友们了解mysql数据库中篇的内容。多了不说,少了不唠,咱们直接就开写。

书接上回笔者在上篇中介绍了什么是数据库和数据库的一些基础的概念,以及mysql数据库的内容。接下来笔者以navicat作为工具来编辑数据库和最重要的增删查改的命令语句。

表约束

什么是表约束:是对表中的数据进行限定,保证数据的正确性、有效性和完整性。

1、主键约束:确保主键列的每一个值都唯一,主键列不能为NULL(空)。主键primary  key :用于确保表中的每一行都有可以识别自己的一列或多列。

2、外键约束:是用来维护数据库表之间数据一致性和完整性的一种机制。它指定了一个表中的列(或列的组合)必须在另一个表的主键或唯一键列中有对应的值。

通过外键约束可以确保在一个表(称为子表或从表)中的值在另一个表(称为父表或主表)中已经存在,从而防止孤立数据的产生。外键foreign  key:是一个主表联系另一张表中以做联结,可以一对一,一对多,多对多。

索引

什么是索引?

为了在一个数据表里检索某个特定的记录,或者提取一系列数据记录,MySQL必须把这个数据表里的所有数据记录都搜索一遍。如果数据表的体积比较庞大,在遇到这样一些查询的时候性能就会显著的下降。为解决性能下降的问题可以为查询所涉及的数据列创建并使用一个索引。

#比如:为了解决查询速度慢的问题,我们会使用索引,加快检索速度的操作数据修改变得更快。就像书籍的目录一样。

索引的分类

1、普通索引:不唯一的可以为唯空

2、唯一索引:可以唯空的但是唯一的

3、主索引:又唯一又不能唯空

选项和属性

1、AUTO _INCREMENT(自增):用于为表中的某一列(通常是主键列)自动生成唯一的递增值。

2、NULL(为空)

3、NOT NULL(不为空)非空约束,用于约束该字段的值不能为空。

4、DEFAULT(默认)

SQL介绍

首先用Windows自带的黑窗口连接  mysql -u root -p,或者直接用navicat直接连接

SQL-结构化查询语言

1、数据定义语言(DDL):用于创建和修改数据库对象(如表和索引)的结构,如creat、alter、drop等语句。

2、数据操纵语言(DML):用于数据据库中的数据进行新增、修改、删除等操作,如:insert、update、delete等语句。

3、数据查询语言(DQL):用于对数据进行查询操作。如:select语句。

4、数据控制语言(DCL):用于控制用户对数据的访问权限,如:grant和revoke语句。

一、数据定义语言(DDL)

1、注释:单行注释:   #   

                 单行注释:-- (减减空格)

                 多行注释:/*   内容  */

(笔者在学习的时候我的老师告诉我注释内容很重要,要养成一个好习惯,还有一个sql漏洞就是关于注释的,笔者会在后面讲。)

2、新建数据库:

creat database (数据库名);创建数据库

creat database if not exists (数据库名); if判断,如果不存在则创建库

#笔者在这里犯过很多小错误,1、database没有s。2、utf-8 _ci是可以不区分大小写3、记住必须得有;结尾,但是如果只运行一行可以不加;(分号)4、一定要是英文,字符、语句都必须是英文的。

3、字符集:

字符集(Character Set)在MySQL中是指一套用于存储、处理和检索文本数据的字符和编码规则。它定义了数据库中可以使用的字符集合,以及这些字符如何映射到数字编码上。

笔者将创建数据库和指定字符集结合一下

create database (数据库名)characterset(字符集);

修改数据库的字符集:

alter database  (数据库名) characterset(字符集);

4、查看数据库的字符集:

show create database (数据库名);

     删除数据库(删库跑路):

drop database (数据库名);

    使用数据库:

use (数据库名);

以上内容笔者简单写一下,下面我们就先创建一个数据库,随后在数据库里面创建表。

在数据库里面创建表

笔者在这里讲一下如何用命令创建数据表,也可以直接在navicat直接创建(可视化的还是比较简单的),笔者在写一下建表要用到的概念,数字(int),汉字,英文(字符串varchar),数值,价格(double),日期 (data)......

-- 查询所有的数据表

show databases ;

-- 创造一个名字为xuesheng的表

create database xuesheng;

-- 查询一下所有的表

show databases ;

-- 改变数据表的字符类型

alter database xuesheng characterset set utf8mb4;

-- 创建字段,在xuesheng数据表中.注意需要给varachar后面添加长度

creat table product (

id int,

p_name varachar(20),

price double,

stock int,

insert_time data

);

-- 查看表结构

desc product;

-- 修改表名字

alter table product rename to tet;

-- 修改数据类型

alter table tet modify p_name varachar(20)

-- 如果没有设置主键需要在编辑器里面留一个id位置

insert into tet (name,price,stock,insert time) values('电脑’,99,50,'2025-9-10’),('显示器’,199.99,50,'2025-9-18'),(智能手表’,99.599,58,'2025-9-10')('鼠标',99.899,50,'2025-9-10');

-- 添加所有字段

insert into tet values ('电脑',99,50,'2025-9-10');

-- 如果给一个字段写不同值,让每一个值都是不同行的,用,(逗号)隔开是分行。

insert into tet(name)values('ss''bb')

select * from tet

-- 修改数据,update 表名字 set 修改后的东西 条件 where id=2这是唯一的数据因为他是主键(这里面写唯一的数据)

update tet set name='电冰箱’where id=2

update tet set price=10 where id=4

select * from tet

-- 删除数据

delete from tet where id=6;

-- 查询表

select * from tet;

select id,name,price from tet

简单的建完了一张表,然后把数据存在了数据库表中,这里面有一个小知识,不能有一样的名字,出现一样的名字会报错。

二、数据库操纵语言(DML)

1、insert into 插入数据

insert into(字段) values();#字段是mysql服务器架构第一层,#字段不能用单引号去加,应该用反引号``。

数据库的架构第一层是dbms,第二层是数据库,第三层是数据表,最后是字段。表名、字段名都可以是反引号,值需要单引号双引号去做

2、updata  修改数据

3、delete  删除数据

三、数据查询语言(DQL)

-- 查询数据表

select (列名) from (表名);

-- 查询整个表

select * from `tet`

-- 条件查询

select (列名) from(表名) where (条件);

-- 模糊查询

select (列名) form (表名)where (列名) like ‘’(%:匹配零个或多个字符:_:匹配单个字符。)

-- 聚合查询

1、count():计算行数

比如:查询整个表的行数直接会写在后面
       select count(*) from tet;

2、max():返回数值列中的最大值

比如:查询表中的最高价格

select max(price) from tet;

3、min():返回数值列中的最小值

4、 sum():计算数值列的总和。

5、 avg():计算数值列的平均值。

***group_concat()  

它是mysql当中的聚合函数,它允许我们将多行的字符串组合成一个字符串,非常方便我们输出。

比如:查询名字和价格合体在一起

select group_concat(name,'-',price) from tet;

-- 排序查询

select(列) from(表) order by (列) desc/asc;(asc 为升序,desc为降序)

***group by   用于结合聚合函数,根据一个或多个列对结果集进行分组

-- 分页查询

select * from 表名 limit (页码-1) *每页数量,每页数量;

-- mysql表关系

1、一对一表关系:

一对一(1:1)表关系是一种较为特殊的表关系,表示一个表中的一条记录与另一个表中的一条记录有唯一的对应关系。这种关系通常用于将一个表的某些列分离到一个新的表中以便保持数据的清晰性和模块化。

2、一对多表关系:

这意味着在一个表中,可以有多个记录与另一个表中的单个记录相关联。常用于表示两个表之间的连接,其中一个表中的多行可以与另 一个表中的单行相关联。这种关系通常通过外键(ForeignKey)来实现。

-- 多表查询

1、union查询:

用于合并两个或多个select语句的结果集,同时去处重复的记录。每个select语句必须拥有相同数量的列,列的数据类型也必须兼容。union默认为union all,但union all会包含所有的重复记录,而union会去除重复记录。

比如:select * from person union select name,price,stock,id from tet;

2、子查询:

子查询是一种在sql语言中嵌套查询下层的程序模块。当一个查询是另一个查询的条件时,这个被嵌套的查询就会被称为子查询。子查询也被称为内查询或内部选择,而包含的语句则被称为主查询或外部查询。

比如:select name,age from person where age=(select max(age) from person);

数据库加固

笔者用通俗的语言写一下什么是数据库加固,它是一个非常复杂的工作,他是去保护数据库的安全,去解决它存在的一些安全问题,每一种安全问题做一些方案,保证业务系统稳定的运行。

怎么样加固呢?笔者老师当时交的是6种,数据库加固有非常多的方法,朋友们可以去其他大神那里学习一下,笔者在这里就简单的写一下。

1、强密码---复杂的密码
比如:root的密码就是弱口令(数字大小写密码)

2、修改账号名

比如:修改账号root账号名(但是不建议大家尝试阿,笔者有一款游戏的安全锁密码给忘了手机号也换了导致交易不了东西,悲!!!)

3、禁止远程连接数据库

update user set host=‘localhaost’ where user=‘joker’and  host=‘%’

4、关闭端口

默认端口3306,nmap可以扫描端口,定期修改数据库端口or不开mysql端口

5、安装最新补丁

select version()

6、web应用防火墙

买一些数据库审计设备,这需要强大的财力。

总结笔者把数据库里面最基础的知识已经写完,数据库后篇内容笔者会结合php与数据库连接。在浅淡一下sql注入。遇到了学习瓶颈不要放弃,可以听听红歌,看看以前的红书,颓废的感觉和负能量一扫而空。最后,希望和大家一起努力,一起变得更强。

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

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

相关文章

AI如何重塑DDoS防护行业?六大变革与未来展望

随着AI技术的深度渗透,DDoS防护行业正经历一场从“规则驱动”到“智能驱动”的范式革命。传统依赖静态阈值和人工规则的防御模式已难以应对新型攻击,而AI的引入不仅提升了检测精度,更重构了防护体系的底层逻辑。以下是AI带来的六大核心变革及…

五一作业-day04

文章目录 1. **ps -ef是显示当前系统进程的命令,统计下当前系统一共有多少进程**2. **last命令用于显示所用用户最近1次登录情况,awk可以取出某一列,现在要取出last命令第1列并去重统计次数**3. **secure日志是用户的登录日志,过滤出secure日志中的Failed password的次数(用课堂…

抽奖系统(基于Tkinter)

一、抽奖规则及使用方法 抽奖规则: 从1-138个号码中随机抽奖,共进行n轮抽奖,每个号码仅有一次中奖机会,即已中奖的号码不会再次中奖。 使用方法: 要求开始抽奖后屏幕上随机滚动显示中奖号码,点击“STOP”之…

window 系统 使用ollama + docker + deepseek R1+ Dify 搭建本地个人助手

1. 下载ollama ,官网 下载地址:Download Ollama on macOS,选择 Window 下载完成后,可在终端 使用 ollama --version 2. 下载 本地大模型,这里下载deepseek r1 7b 3.下载Embed模型 Embed模型 是文本工具向量化的核心工…

【学习笔记】 强化学习:实用方法论

作者选择了由 Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 三位大佬撰写的《Deep Learning》(人工智能领域的经典教程,深度学习领域研究生必读教材),开始深度学习领域学习,深入全面的理解深度学习的理论知识。 之前的文章参考下面的链接&#xf…

益鑫通汽车连接器可替代Molex,JST

# 探秘优质车规连接器 在汽车向新能源和智能化发展的进程中,车规连接器对汽车电子系统的稳定运行至关重要。有企业凭借技术与创新,在该领域表现出色。其车规连接器类型多样,能满足汽车不同系统连接需求。 一款2.54Pitch线对板连接器&#xff…

【WPF】将Bitmap图像转换为BitmapImage,并给Image控件显示图像

1.C#将Bitmap图像转换为BitmapImage,并给Image控件显示图像后台实现 public void InitImage(Bitmap bitmap){try{// 将Bitmap转换为WPF的BitmapImageBitmapImage bitmapImage;using (MemoryStream memory new MemoryStream()){bitmap.Save(memory, System.Drawing.…

Python从入门到高手8.2节-元组的常用操作符

目录 ​8.2.1 元组的常用操作符 8.2.2 []操作符: 索引访问元组 8.2.3 [:]操作符:元组的切片 8.2.4 操作符:元组的加法 8.2.5 *操作符:元组的乘法 8.2.6 元组的关系运算 8.2.7 in操作符:查找元素 8.2.8 五一她玩了个狗吃…

Vue3源码学习4-effect中为什么使用WeakMap,Set?

文章目录 前言1. 精细化依赖追踪2. 高效的依赖收集与触发3. 自动内存管理,防止内存泄漏4. 支持复杂场景 前言 在 mini vue - effect 实现中 设计(WeakMap → Map → Set → effect函数)有以下几个重要原因: 1. 精细化依赖追踪 W…

TinyML 边缘智能:在资源受限 MCU 上部署 AI

前言 在物联网(IoT)和智能边缘计算的时代浪潮下,TinyML(微型机器学习)正以前所未有的速度改变着我们与设备交互的方式。它将 AI 推理能力放在资源极度受限的 MCU(微控制器)上,兼顾实时性、低功耗和数据隐私,成为智能家居、可穿戴设备、工业检测等场景的核心技术。尽管…

技术白皮书:Oracle GoldenGate 优势

本文为技术白皮书Oracle GoldenGate 优势的翻译及阅读笔记。以下注释中GoldenGate为OGG。 副标题为:Oracle 数据库的变更数据捕获 (CDC) 技术比较。版本为July, 2021, Version 2.1。 Oracle GoldenGate 被客户和分析师公认为功能最齐全、性能最高、最值得信赖的数…

Android控件VideoView用法

一 控件UI <VideoViewandroid:id="@+id/videoView"android:layout_width="match_parent"android:layout_height="match_parent"android:scaleType="fitCenter" /> 二 配置 <?xml version="1.0" encoding="u…

React 第三十六节 Router 中 useParams 的具体使用及详细介绍

一、useParams 的基本用法 用途&#xff1a;用于在组件中获取当前 URL 的动态路由参数&#xff08;如 /user/:id 中的 id&#xff09;。 import { Routes, Route, useParams } from react-router-dom;// 定义路由 function App() {return (<Routes><Route path"…

C++战胜白蚁 2024年信息素养大赛复赛 C++小学/初中组 算法创意实践挑战赛 真题详细解析

目录 C++战胜白蚁 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、运行结果 五、考点分析 六、 推荐资料 1、C++资料 2、Scratch资料 3、Python资料 C++战胜白蚁 2024年信息素养大赛 C++复赛真题 一、题目要求 1、编程实现 小明因为很长…

Linux网络编程 day4

inet_pton&#xff1a;IP 字符串 → 网络字节序地址 ntohl&#xff1a;网络字节序 → 主机字节序 TCP状态转换图(重点) 可以通过下面这行代码查看目前网络状态 netstat -apn | grep client 1、主动发起请求端 close-->SYN-->SYN_SENT-->接收ACK、SYN-->SYN_SEN…

基于springboot+vue的个人财务管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat12开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;Maven3.3.9 系统展示 用户信息管理 账…

ffmpeg 元数据-avformatcontext字段 AVDictionary *metadata;

ffmpeg 元数据 1. 解释什么是ffmpeg元数据 ffmpeg元数据是指与音视频文件相关的附加信息&#xff0c;这些信息不直接影响音视频内容的播放&#xff0c;但提供了关于文件内容、创作者、版权、播放参数等的有用信息。元数据在音视频文件的处理、管理和共享中起着重要作用。 2.…

55.[前端开发-前端工程化]Day02-包管理工具npm等

包管理工具详解 npm、yarn、cnpm、npx、pnpm 1 npm包管理工具 代码共享方案 包管理工具npm 2 package配置文件 npm的配置文件 方式二 常见的配置文件 常见的属性 常见的属性 常见的属性 依赖的版本管理 常见属性 npm install 命令 项目安装 3 npm install原理 npm instal…

Spring MVC @RequestBody 注解怎么用?接收什么格式的数据?

RequestBody 注解的作用 RequestBody 将方法上的参数绑定到 HTTP 请求的 Body&#xff08;请求体&#xff09;的内容上。 当客户端发送一个包含数据的请求体&#xff08;通常在 POST, PUT, PATCH 请求中&#xff09;时&#xff0c;RequestBody 告诉 Spring MVC 读取这个请求体…

海外平台短剧批量混剪自动剪辑智能去重与多语言适配方案解析

一、引言&#xff1a;全球化内容分发的技术挑战 在短剧出海的浪潮中&#xff0c;如何通过标准化技术流程实现「高效生产 合规分发」成为行业关键课题。本文结合 TikTok、YouTube 等平台的运营经验&#xff0c;解析基于智能去重算法、多语言字幕生成、动态元素叠加的全流程解决…