MySQL数据库(超详细万字长文,建议收藏)

MySQL数据库基本操作详解(数据库概述、基本操作、增删改查等) 初学数据库必备!超全!MySQL数据库基本操作详解(数据库概述、基本操作、增删改查等) 阅读详情
AI摘要

本文详细介绍了MySQL数据库,包括其开源免费、高性能等特点,还阐述了SQL的分类与特点。讲解了数据库三大范式、数据类型,以及数据库和数据表的基本操作,如创建、修改、删除等。此外,还介绍了数据表的约束、插入、更新、删除和查询等操作,以及高级查询和字句执行顺序。

一、MySQL简介

MySQL是一个开源免费的关系型数据库管理系统,由瑞典MySQL  AB公司开发,属于Oracle旗下产品。MySQL是流行的关系型数据库之一。

二、MySQL的特点

1. 开源性:MySQL是一个开源的关系型数据库。

2. 高性能:MySQL采用了多种优化技术,比如索引,查询缓存和高效的存储引擎,可以快速的检索数据和处理。适用于处理大量数据和高并发请求,具有高新能、高并发、高可用的特点。

3. 简单易用:MySQL易于安装和配置,并且有很好的兼容性,支持多种操作系统,比如Windows、Linux、macOS等。

4. 安全性:MySQL提供了多层次的安全措施,包括密码保护,基于角色的访问控制,SSL连接加密等,以保护数据免受未授权访问和安全威胁。

5. 可扩展性:MySQL具有良好的可扩展性,可以通过主次复制,分片和分区等技术来实现数据的扩展,从而提高系统的高可用性和高性能。

6. 跨平台性:MySQL可以在不同平台上运行,比如Windows、Linux、macOS等。

7. 支持多种存储引擎:MySQL支持多种存储引擎,包括InnoDB、MyISAM等。每种引擎都有特定的优势和用途。

三、SQL简介

1. SQL的介绍

SQL全称Structured Query Language,也就是结构化查询语言,是一种用于处理关系型数据库中数据的高级非编程化语言。用户可以通过编写SQL语句来查询、更新和管理数据库中的数据。SQL的核心部分包括数据定义、数据操作和数据控制等功能,通过这些功能用户可以定义数据库结构,操作数据,以及控制对数据的权限。

2. SQL的分类

数据定义语言(DDL):用于创建数据和修改数据库对象(如表和索引)的结构。

数据操纵语言(DML):包括INSERT、UPDATE、DELETE等语句,用于对数据库中的数据进行新增、修改、删除等操作。

数据控制语言(DCL):用于控制用户对数据的访问权限,例如通过GRANT和REVOKE语句

数据查询语言(DQL):用于对数据进行查询操作,例如通过SELECT语句

3. SQL的特点

1.高度非过程化:用户只需要描述想完成的操作,而无需具体说明操作的细节,比如数据的存储路径等。

2.语言简洁:易学易用:SQL的语法结构相对来说比较简单,易于学习和使用。

3.广泛的应用范围:几乎所有的关系型数据库管理系统都支持SQL,比如Server、MySQL、PostgreSql等。

四、 数据库的三大范式

1. 第一范式(1NF)

每一列属性(字段)不可分割,字段必须保证原子性。两列的属性值相近或者一样时,尽量合并到一列或者分表,以确保数据不冗余。

2. 第二范式(2NF)

每一行的数据只能与其中一行有关即主键一行数据只能做一件事情或者表达一个意思,只要数据出现重复,就要进行表的拆分。

3. 第三范式(3NF)

数据不能存在传递关系,每个属性都跟主键有直接关联而不是间接关联。

五、数据库的数据类型

MySQL数据库支持多种数据类型,主要分为:数值类型、日期和时间类型、字符串类型、二进制类型。

1. 数值类型

整数类型:TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT。这些类型方别占用不用的存储空间,提供不同的取值范围。

数据类型 字节数 无符号数的取值范围 有符号数的取值范围
TINYINT 1 0~255 -128~127
SMALLINT 2 0~65535 -32768~32768
MEDIUMINT 3 0~16777215 -8388608~8388608
INT 4 0~4294967295 -2147483648~8388608
BIGINT 8 0~18446744073709551615 -9223372036854775808~9223372036854775808

 浮点数类型和定点数类型:在MySQL数据库中使用浮点数和定点数来存储小数。浮点数的类型有两种:单精度浮点数类型(FLOAT)和双精度浮点数类型(DOUBLE)。而定点数类型只有一种即DECIMAL类型。

数据类型 字节数 有符号的取值范围 无符号的取值范围
FLOAT 4 -3.402823466E+38~-1.175494351E-38 0和1.175494351E-38~3.402823466E+38
DOUBLIE 8 -1.7976931348623157E+308~2.2250738585072014E-308 0和2.2250738585072014E-308~1.7976931348623157E+308
DECIMAL M+2 -1.7976931348623157E+308~2.2250738585072014E-308 0和2.2250738585072014E-308~1.7976931348623157E+308

DECIMAL类型的取值范围与DOUBLE类型相同。但是,请注意:DECIMAL类型的有效取值范围是由M和D决定的。其中,M表示的是数据的长度,D表示的是小数点后的长度。比如,将数据类型为DECIMAL(6,2)的数据6.5243 插入数据库后显示的结果为6.52

2. 日期和时间类型

MySQL提供的表示时间和日期的数据类型有:YEAR、DATE、TIME、DATETIME和TIMESTAMP。

数据类型 字节数 取值范围 日期格式 零值
YEAR 1 1901~2155 YYYY 0000
DATE 4 1000-01-01~9999-12-31 YYYY-MM-DD 000-00-00
TIME 3 -835:59:59~835:59:59 HH:MM:SS 00:00:00
DATETIME 8 10001-01-01 00:00:00~9999-12-31 00:00:00 YYYY-MM-DD HH:MM:SS 0000-00-00 00:00:00
TIMESTAMP 4 1970-01-01 00:00:01~2038-01-19 03:14:07 YYYY-MM-DD HH:MM:SS 0000-00-00 00:00:00
2.1 YEAR类型

YEAR类型用于表示年份,在MySQL中,可以使用三种格式指定YEAR类型的值。

1.使用4为字符串或数字表示,范围是"1901"~"2155"或1901~2155。输入"2024"或2024插入到数据库中的值都是2024

2.使用两位字符表示,范围是"00"~"69"。其中,"00"~"69"范围的值会转换为2000~2069范围的YEAR值,"70"~"99"范围的值会被转换为1970~1999范围的YEAR值。例如:当取值为"01"到"69"时,表示2001到2069。

3.使用两位数字表示,范围是1~99。其中,1~99范围的值会被转换为2001~2099范围的YEAR值,66~99范围的值会被转换为1966~1999范围的YEAR值。例如:输入19插入到数据库中的值为2019。

注意:当使用YEAR类型时,一定要区别"0"和0.因为字符串格式的"0"表示的YEAR值是2000年而数字格式的0表示的YEAR的值是0000年。从MySQL5.5.27开始,2位格式的YEAR已经不推荐使用。YEAR默认格式就是"YYYY",没有必要写成YEAR(4),从MySQL8.0.19开始,不推荐使用指定显示宽度的YEAR(4)数据类型。

2.2 TIME类型

TIME类型用于表示时间值,不包含日期部分,它是显示形式一般为HH:MM:SS格式,其中,HH表示小时,MM表示分钟,SS表示秒数。在MySQL中可以使用三种格式类指定TIME类型的值。

1. 以"D HH:MM:SS"、"HH:MM:SS"、"HH:MM"、"D HH:MM"、"D HH"或者"SS"格式表示。其中,D表示天,可取0—34之间的值。在插入数据时如果使用带有D格式的字符串插入TIME类型的字段时,D会被转化为小时,小时的值计算格式为(DX24+HH)。如果使用带有冒号不带D格式的字符串插入TIME时,表示当天时间,例如,输入"2 11:30:50"插入数据库中的日期为59:30:50。不带冒号输入12:12数据库中表示为12:12:00。

2. 以"HHMMSS"字符串格式或者HHMMSS数字格式表示。例如:输入"121212"或121212插入数据库中的日期为12:12:12

3. 使用CURRENT_TIME或NOW()函数就会插入当前系统时间。

2.3 DATE类型

DATE类型表示日期,没有时间部分,格式为YYYY-MM-DD,其中YYYY表示年份,MM表示月份,DD表示日期。在向DATE类型的字段插入数据时,同样需要满足一定的格式条件。

1.以YYYY-MM-DD格式或者YYYYMMDD格式表示的字符日期时,其取值范围是1000-01-01~9999-12-31.YYYYMMDD格式会被转换成YYYY-MM-DD格式。

2.以YY-MM-DD格式或者YYMMDD格式表示的字符串日期时,此格式周工两位数值或者字符串满足YEAR类型的格式条件为:当年份取值为00~69时,会被转换成2000~2069;当年份取值为70~99时,会被转换成1970~1999。

3.使用CURRENT_DATE()或者NOW()函数,就会插入当前系统时间

2.4 DATETIME类型

DATETIME类型用于表示日期和时间,它的显示形式为"YYYY-MM-DD HH:MM:SS",其中YYYY表示年份,MM表示月份,DD表示日期,HH表示小时,MM表示分钟,SS表示秒数。在MySQL中,可以使用4种格式来指定DATETIME类型的值。

1. 以"YYYY-MM-DD HH:MM:SS"或者"YYYYMMDDHHMMSS"字符串格式表示的日期和时间,取值范围是"1000-01-01 00:00:00"~"9999-12-31 23:59:59"。例如:输入"2024-01-01 11:11:11"或"2024-01-01 11:11:11"插入数据库中的DAETIME值都为2024-01-01 11:11:11。

2. 以"YYYY-MM-DD HH:MM:SS"或者"YYYYMMDDHHMMSS"字符串格式表示的日期和时间,取值范围是"00"~"99",两位数的年份规则符合YEAR类型的规则,00~69表示2000到2069,70~99表示1970到1999。

3.以YYYYMMDDHHMMSS或者YYMMDDHHMMSS的格式表示日期时间。比如插入20180505083055或者180505083055都表示插入数据库中的值都是2018-05-05 08:30:55。

4.使用CURRENT_TIME或NOW()函数就会插入当前系统时间。

3.字符串类型

在MySQL中通常用CHAR和VARCHAR来定义字符串。

CHAR与VARCHAR的区别:

CHAR是存储的是定长字符串,VARCHAR存储的是可变长度的字符串

当数据为CHAR(M)类型时,不管插入值的长度实际是多少它所占用的存储空间都是M字节;而VARCHAR(M)所对应的数据所占用的字节数为实际长度加1

插入值 CHAR(3) 存储空间 VARCHAR(3) 存储空间
"" "" 3个字节 "" 1个字节
"a" "a" 3个字节 "a" 2个字节
"ab" "ab" 3个字节 "ab" 3个字节
"abc" "ab" 3个字节 "abc" 4个字节
"abcd" "ab" 3个字节 "abc" 4个字节

文本类型:主要用于表示大文本数据,比如,文章内容,评论,详情等。

数据类型 存储范围
TINYTEXT 0~255字节
TEXT 0~65535字节
MYSQL详解(持续更新) 去重语句: select distinct 列名 from 表名 字符类型转数值类型语句: select to_number('000123') from dual; 插入语句: insert into 表名 (字段) values (字段值) 新增表字段: alter table 表名 add (字段名 integer default 0 not null); 删除表字段: alter........................................ 阅读详情

相关推荐

MySQL安装教程(详细版)

MySQL免费安装教程、如何验证MySQL是否安装成功?怎么关掉MySQL服务?MySQL 端口问题如何解决?MySQL如何开机自启OR手动自启?安装MySQL时Starting the server 安装失败怎么解决?

m0_71422677的博客 44万+

万字长文讲解如何优化MySQL,建议收藏!

说起MySQL的查询优化,相信大家收藏了一堆奇技淫巧:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段选择合适的数据类型..... 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必。因而理解这些优化建议背后的原理就尤为重要,希望本文能让你重新审视这些优化建议,并在实际业务场景下合理的运用。 MySQL逻辑架构 如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器。下图展示了MySQL的逻辑架..

码农研习社 441

微信聊天记录解密,必须是root的手机

手机上安装x-plore软件,将/data/data目录的相关EnMicroMsg.db auth_info_key_prefs.xml拷贝到/storge/emulated/0目录后才可以拷贝到电脑。路径:/data/data/com.tencent.mm/shared_prefs/auth_info_key_prefs.xml。但是是加密过的 需要解密 解密密码生成规则是手机IMEI+微信UIN md5(32位小写)后的前7位。安卓手机要root测试版本微信要7或者8版本都可以。选择message表。

venus60的专栏 1007

从碰撞电离到雪崩击穿:Sentaurus仿真中的模型选择与验证艺术

本文深入探讨了Sentaurus TCAD中雪崩击穿模型的选取与验证方法,特别关注平行平面结的仿真实践。通过对比Chynoweth、van Overstraeten等主流模型的适用场景与精度差异,结合具体案例展示了从几何建模到边界条件设定的完整验证流程,并针对非理想因素提供了有效的补偿技术,助力工程师提升器件仿真的准确性与可靠性。

weixin_29074295的博客 592

MS建模mmt

一、流程:1.定义好每个原子力场类型:Edit Sets(分组) 2.加H(一般是仅与Al-O八面体中的Al相连的O原子)、给H分组 3.“make P1”、校核化学式(正确与否) 4.扩成超晶胞(Na-mmt:4*1*1,Ca-mmt:4*2*1,illite:2*1*1,由化学式而定) 5.置换阳离子: mmt:模型中每 32 个 Si 4+有 1 个被 Al 3+ 取...

weixin_30721899的博客 2174

AI应用架构师视角:AI技术引发的全球经济格局重构,你看懂了吗?

本文将从AI应用架构师的独特视角,拆解AI技术栈(算力/算法/数据)如何通过"架构渗透"重塑产业价值链,分析中美欧等主要经济体的AI战略差异如何改写全球分工格局,并为企业与个人提供一套可落地的"AI经济适应性框架"。当OpenAI的GPT-4在代码生成、多模态理解上展现出超越人类的能力,当英伟达的H100芯片成为全球科技巨头争抢的"数字石油",当中国的AI大模型在电商、金融等场景实现规模化落地——我们正站在一场由AI技术引发的全球经济重构的临界点上。AI重构全球经济格局的过程,既是挑战,更是机遇。

小白菜的博客 1258

Video Diffusion Models:基于扩散模型的视频生成

Diffusion Models专栏文章汇总:入门与实战 前言:扩散模型已经被广泛运用到图像生成、image-to-image转换、时间序列生成、3D点云生成、文本生成、音频生成等领域,谷歌研究院最新的研究成果成功将diffusion models运用到视频生成领域。 目录 模型结构 分解时空体系联合训练 梯度条件法 恐怖的实验结果 论文和代码 个人启发 个人疑问? 模型结构 在前面的博文中,我详细介绍了为什么绝大部分的diffusion models都使用Unet结构.

沉迷单车的追风少年 6671

做了一个3DTiles编辑器,支持3DTiles的预览和裁剪导出

3DTiles编辑器的功能极其简洁,核心就是3DTiles格式模型的预览和裁剪。为了演示方便,本文所使用的源数据为mipmap3d[1]网站所提供的无人机拍摄影像,并进行3DTiles构建。打开软件,输入的绝对路径之后,点击添加模型,就可以将模型加载进预览区。之后,点击裁剪模式按钮,默认会出现立方体裁剪框,可通过拖动句柄的方式去调整裁剪框的范围。同时,除了默认的盒体裁切模式外,还支持多边形裁切,点击多边形裁切后,可切换到顶视图,选择重绘多边形,可进行打点绘制。

兴趣使然的创作者 602

自注意力机制(SelfAttention Mechanism)原理与代码实战案例讲解

自注意力机制(Self-Attention Mechanism)原理与代码实战案例讲解 作者:禅与计算机程序设计艺术 / Zen and the Art of Computer Programming 1. 背景介绍

AI天才研究院 1292

selenium绕过检测,规避检测

现在不少大网站有对selenium采取了监测机制。比如正常情况下我们用浏览器访问淘宝等网站的 window.navigator.webdriver的值为 undefined或者为false。而使用selenium访问则该值为true。那么如何解决这个问题呢?我们正常浏览器登录查看,window.navigator.webdriver的值为false我们通过selenium打开的网页,测试,可见window.navigator.webdriver的值为true。

景天科技苑 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

上一篇: JQuery中的事件
下一篇: JQuery中绑定和解绑事件
在海底听雨
博客等级 码龄4年 25粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值