MySQL 保姆级教程(一):了解 SQL

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL 保姆级教程(一):了解 SQL

第 1 章 了解 SQL

1.1 数据库基础

在深入学习 MySQL 及其 SQL 语言 实现之前,应该对数据库及数据库技术的某些基本概念有所了解

1.1.1 什么是数据库

数据库是一个以某种有组织的方式存储的数据集合

1.1.2 表

某种特定类型数据的结构化清单

表名

数据库中的每个表都有一个名字,用来标识自己,此名字是唯一的

模式

描述表的信息

1.1.3 列和数据类型

列:表中的一个字段,所有表都是由一个字段或多个字段组成的


数据类型:每个表列都有相对应的数据类型,它限制该列中存储的数据


整数类型(Integer Types):
    TINYINT: 很小的整数,范围在 -128 到 127 或 0 到 255 之间(取决于是否有符号)。
    SMALLINT: 小整数,范围在 -32768 到 32767 或 0 到 65535 之间。
    MEDIUMINT: 中等大小整数,范围在 -8388608 到 8388607 或 0 到 16777215 之间。
    INT 或 INTEGER: 普通整数,范围在 -2147483648 到 2147483647 或 0 到 4294967295 之间。
    BIGINT: 大整数,范围在 -9223372036854775808 到 9223372036854775807 或 0 到 18446744073709551615 之间。
浮点数类型(Floating-Point Types):
    FLOAT: 单精度浮点数。
    DOUBLE: 双精度浮点数。
    定点数类型(Fixed-Point Types):
    DECIMAL 或 NUMERIC: 用于存储固定精度的小数,例如货币。
字符串类型(String Types):
    CHAR: 固定长度字符串,最多 255 个字符。
    VARCHAR: 可变长度字符串,最多 65535 个字符。
    BINARY: 固定长度二进制字符串。
    VARBINARY: 可变长度二进制字符串。
    TINYBLOB: 非常小的二进制对象。
    TINYTEXT: 非常小的文本对象。
    BLOB: 二进制对象,最大大小为 65535 字节。
    TEXT: 文本对象,最大大小为 65535 字节。
    MEDIUMBLOB: 中等大小的二进制对象。
    MEDIUMTEXT: 中等大小的文本对象。
    LONGBLOB: 非常大的二进制对象。
    LONGTEXT: 非常大的文本对象。
    ENUM: 一个字符串对象,可以从预定义的值列表中选择一个。
    SET: 一个字符串对象,可以从预定义的值列表中选择零个或多个。
日期与时间类型(Date and Time Types):
    DATE: 日期,格式为 'YYYY-MM-DD'。
    TIME: 时间,格式为 'HH:MM:SS'。
    DATETIME: 日期和时间,格式为 'YYYY-MM-DD HH:MM:SS'。
    TIMESTAMP: 类似于 DATETIME, 但是自动更新为当前时间戳。
    YEAR: 年份,存储 2 位或 4 位格式的年份。
其他类型(Other Types):
    BOOL 或 BOOLEAN: 用于存储布尔值(真或假)。
    SERIAL: 自增长整数,通常用于创建主键。

1.1.4 行

表格的数据是按行存储的,行是表格中的一个记录

1.1.5 主键

一列(或一组列),其值能够唯一区分表中每个行


主键值规则:

   1. 任意两行都不具有相同的主键值

   2. 每个行都必须具有一个主键值

   3. 主键列不允许为空值

1.2 什么是 SQL

结构化查询语言


优点:

   1. 几乎所有重要的数据库都支持 SQL

   2. SQL 简单易学

第 2 章 MySQL 简介

2.1 什么是 MySQL

MySQL 是一种 DBMS(数据库管理系统)


成本:开源

性能:执行快

可信赖:某些非非常重要的公司都用 MySQL

简单:MySQL 很容易安装和使用

2.1.1 客户机——服务器软件

DBMS 分为两类:

   1. 基于共享文件系统的 DBMS

   2. 基于客户机——服务器的 DBMS

2.1.2 MySQL版本

5.6     5.7     8.0

2.2 MySQL 工具

Mysql 是一个客户机-服务器 DBMS,因此,为了使用 MySQL,需要有一个客户机,即你需要用来与 MySQL 打交道的一个应用

2.2.1 mysql 命令行实用程序

每个 MySQL 都用安装一个名为 mysql 的简单命令行实用程序,在终端输入 mysql -u root -p 即可登录使用

2.2.2 MySQL Administrator

MySQL Administrator 是一个图形交互客户机,用来简化 MySQL 服务器的管理

2.2.3 MySQL Query Browser

MySQL Query Browser 是一个图形交互客户机,用来编写和执行 MySQL 命令

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5天前
|
SQL 关系型数据库 MySQL
SQL语句编写的练习(MySQL)
这篇文章提供了MySQL数据库中关于学生表、课程表、成绩表和教师表的建表语句、数据插入示例以及一系列SQL查询练习,包括查询、排序、聚合和连接查询等操作。
|
11天前
|
SQL 关系型数据库 MySQL
INSERT INTO t_a.tableName SELECT * FROM t_b.tableName 如何通过定义一个list对象,包含多个tableName,循环执行前面的sql,用MySQL的语法写
【8月更文挑战第7天】INSERT INTO t_a.tableName SELECT * FROM t_b.tableName 如何通过定义一个list对象,包含多个tableName,循环执行前面的sql,用MySQL的语法写
16 5
|
9天前
|
SQL 关系型数据库 MySQL
MySQL中一定要遵守的12个SQL规范
本文档提供了12条SQL编写和数据库管理的最佳实践建议,旨在帮助开发者提高SQL查询效率、增强数据库安全性及可维护性。
|
6天前
|
SQL 关系型数据库 MySQL
Go语言中进行MySQL预处理和SQL注入防护
在现代Web应用开发中,安全性至关重要。SQL注入是一种常见的攻击方式,攻击者可通过构造特殊SQL查询来非法访问或修改数据库数据。本文介绍如何利用Go语言中的预处理SQL语句来防范此类攻击。预处理不仅能提升安全性,还能提高性能并简化代码。通过使用`?`作为占位符,Go自动处理参数转义,有效避免SQL注入。此外,文章还提供了连接MySQL数据库、执行预处理查询以及最佳实践的示例代码。务必遵循这些指导原则,确保应用程序的安全性。
14 0
|
7天前
|
SQL 存储 Oracle
MySQL 项目中 SQL 脚本更新、升级方式,防止多次重复执行
MySQL 项目中 SQL 脚本更新、升级方式,防止多次重复执行
16 0
|
4天前
|
存储 关系型数据库 MySQL
MySQL——数据库备份上传到阿里云OSS存储
MySQL——数据库备份上传到阿里云OSS存储
18 0
|
8天前
|
SQL 存储 关系型数据库
"MySQL增列必锁表?揭秘InnoDB在线DDL,让你的数据库操作飞一般,性能无忧!"
【8月更文挑战第11天】在数据库领域,MySQL凭借其稳定高效的表现深受开发者喜爱。对于是否会在给数据表添加列时锁表的问题,MySQL的行为受版本、存储引擎等因素影响。从5.6版起,InnoDB支持在线DDL,可在改动表结构时保持表的可访问性,避免长时间锁表。而MyISAM等则需锁表完成操作。例如,在使用InnoDB的表上运行`ALTER TABLE users ADD COLUMN email VARCHAR(255);`时,通常不会完全锁表。虽然在线DDL提高了灵活性,但复杂操作或大表变更仍可能暂时影响性能。因此,进行结构变更前应评估其影响并择机执行。
27 6
|
4天前
|
缓存 NoSQL Redis
一天五道Java面试题----第九天(简述MySQL中索引类型对数据库的性能的影响--------->缓存雪崩、缓存穿透、缓存击穿)
这篇文章是关于Java面试中可能会遇到的五个问题,包括MySQL索引类型及其对数据库性能的影响、Redis的RDB和AOF持久化机制、Redis的过期键删除策略、Redis的单线程模型为何高效,以及缓存雪崩、缓存穿透和缓存击穿的概念及其解决方案。
|
7天前
|
Oracle 关系型数据库 MySQL
Mysql和Oracle数据库死锁查看以及解决
【8月更文挑战第11天】本文介绍了解决MySQL与Oracle数据库死锁的方法。MySQL可通过`SHOW ENGINE INNODB STATUS`查看死锁详情,并自动回滚一个事务解除死锁;也可手动KILL事务。Oracle则通过查询V$LOCK与V$SESSION视图定位死锁,并用`ALTER SYSTEM KILL SESSION`命令终止相关会话。预防措施包括遵循ACID原则、优化索引及拆分大型事务。
|
8天前
|
固态存储 关系型数据库 MySQL
"惊!20亿数据秒速入MySQL,揭秘数据库极速插入的黑科技,你不可不知的绝密技巧!"
【8月更文挑战第11天】面对20亿级数据量,高效插入MySQL成为挑战。本文探讨优化策略:合理设计数据库减少不必要的字段和索引;使用批量插入减少网络往返;优化硬件如SSD和内存及调整MySQL配置;并行处理加速插入;附Python示例代码实现分批导入。这些方法将有效提升大规模数据处理能力。
20 2