GO框架基础 (一)、MySQL数据库

什么是数据库

数据库是一个组织化的数据集合,它被设计为方便存储、管理和检索数据。数据库通常以表格的形式组织数据,其中每一行代表一个数据记录,每一列代表一个数据字段。数据库系统提供了一种结构化的方法来存储和管理数据,以便用户可以有效地访问和操作数据。

MySQL数据库

MySQL是一个开源的关系型数据库管理系统(RDBMS),它具有以下优势:

  1. 开源性: MySQL是开源软件,意味着用户可以免费获取、使用和修改它的源代码。这使得MySQL成为许多开发人员和组织的首选数据库,因为它不需要付费许可证费用。

  2. 跨平台支持: MySQL支持多种操作系统,包括Windows、Linux、macOS等,使得它能够在各种环境中运行和部署。

  3. 易于使用: MySQL的安装、配置和使用相对简单,具有友好的用户界面和广泛的文档资料。它提供了丰富的功能和工具,使得用户能够轻松地管理和操作数据库。

  4. 高性能: MySQL具有优化的查询执行引擎,能够处理大量数据和复杂的查询。它支持索引、缓存、分区等功能,提高了数据检索和处理的效率。

  5. 可扩展性: MySQL支持水平和垂直两种扩展方式,可以根据应用需求灵活扩展数据库的性能和容量。它还支持主从复制、集群等高可用性和负载均衡解决方案。

  6. 丰富的功能: MySQL提供了许多强大的功能,包括事务支持、存储过程、触发器、视图、复制、安全性等,使得它能够满足各种复杂的业务需求。

  7. 活跃的社区支持: MySQL拥有一个庞大的开发者社区,提供了丰富的资源和支持。用户可以通过社区论坛、邮件列表、文档、教程等获取帮助和交流经验。

  8. 广泛应用: MySQL被广泛应用于各种领域,包括Web开发、企业应用、电子商务、云计算等。许多知名的网站和应用程序都使用MySQL作为其后端数据库。

MySQL安装及图形化界面安装

MySql官网安装,选择msi的安装方式,msi是图形化界面,直接安装即可。

Navicat官网安装

Navicat是一款流行的数据库管理工具,它提供了用于连接、管理和维护多种类型数据库的图形化界面。Navicat最初由PremiumSoft CyberTech Ltd.开发,目前已经成为了许多开发人员和数据库管理员的首选工具之一。

MySql数据类型

MySQL支持多种数据类型,包括以下主要类型:

  1. 整数类型:

    • INT: 常用的整数类型,存储范围为-2147483648到2147483647。
    • TINYINT: 一个字节的整数类型,存储范围为-128到127。
    • SMALLINT: 两个字节的整数类型,存储范围为-32768到32767。
    • BIGINT: 长整数类型,存储范围更大。
  2. 浮点数类型:

    • FLOAT: 单精度浮点数。
    • DOUBLE: 双精度浮点数。
    • DECIMAL: 用于存储固定精度的小数。
  3. 字符串类型:

    • CHAR: 定长字符串。
    • VARCHAR: 变长字符串。
    • TEXT: 较大的文本数据。
    • ENUM: 枚举类型,存储一个预定义的值列表。
    • SET: 集合类型,存储零个或多个预定义的值。
  4. 日期和时间类型:

    • DATE: 日期,格式为'YYYY-MM-DD'。
    • TIME: 时间,格式为'HH:MM:SS'。
    • DATETIME: 日期和时间,格式为'YYYY-MM-DD HH:MM:SS'。
    • TIMESTAMP: 时间戳,用于存储从UNIX纪元开始的秒数。
  5. 二进制类型:

    • BLOB: 用于存储二进制大对象数据。
    • BIT: 位数据类型。

这些是MySQL中常用的数据类型,每种数据类型都具有特定的用途和存储特性,可以根据实际需求选择合适的数据类型来存储数据。

MySql基础语法

通过图形化界面创建一个表,字段如下:

bash 复制代码
-- 数据简单查询
-- SELECT FIELD(str,str1,str2,str3,...)
-- FROM TABLE
-- [WHERE CONDITION]
-- [GROUP BY FIELD(str,str1,str2,str3,...)]
-- [ORDER BY FIELD(str,str1,str2,str3,...)]
-- LIMIT

SELECT * FROM t_student

SELECT stuid,name,gender FROM t_student
-- WHERE查询
SELECT stuid,name,gender,age FROM t_student WHERE gender = 1

-- 避免重复数据查询
SELECT DISTINCT name FROM t_student

-- 拼接
SELECT CONCAT(stuid,name) FROM t_student

-- in 查询
SELECT * FROM t_student WHERE classno =1 OR classno =2
SELECT * FROM t_student WHERE classno IN (1,2,3)
SELECT * FROM t_student WHERE classno NOT IN (1,2,3)

-- BETWEEN AND 范围查询
SELECT * FROM t_student WHERE age  BETWEEN 16 AND 20

-- 聚合和统计
SELECT count(1) as peoplenum,gender,MAX(age),MIn(age),AVG(age),SUM(age),GROUP_CONCAT(name) FROM t_student GROUP BY gender
SELECT count(1) as peoplenum,name FROM t_student GROUP BY name HAVING peoplenum > 1

-- 分页
SELECT count(1) FROM t_student

-- 模糊查询 LIKE
SELECT * FROM t_student WHERE name LIKE  '%i'

-- 匹配单个字符. _是占位符,
SELECT * FROM t_student WHERE name LIKE  '__i'
SELECT * FROM t_student WHERE name LIKE  'h%'


-- 排序
SELECT stuid,name,gender,age FROM t_student WHERE gender = 1 ORDER BY age DESC

-- 联合查询  
-- INNER JOIN 交集 两边都有
SELECT t1.*,t2.* FROM t_student t1 INNER JOIN t_classroom t2 ON t1.classno = t2.classno

-- LEFT JOIN 先查询左表所有数据 再匹配右表数据 无数据填充null
SELECT * FROM t_student t1 LEFT JOIN t_classroom t2 ON t1.classno = t2.classno
UNION
-- RIGHT JOIN 先查询左表所有数据 再匹配右表数据 无数据填充null
SELECT * FROM t_student t1 RIGHT JOIN t_classroom t2 ON t1.classno = t2.classno
WHERE t1.classno IS NOT NULL

-- 子查询 先执行括号内的
SELECT * FROM t_student WHERE classno IN (SELECT classno FROM t_classroom)

-- EXISTS
SELECT * FROM t_student t1 WHERE EXISTS (SELECT * FROM t_classroom t2 WHERE t1.classno = t2.classno)

-- 分页处理
SELECT * FROM t_student LIMIT 2,2
相关推荐
AC赳赳老秦5 分钟前
招投标公开数据自动化采集实战:基于 OpenClaw 的定时抓取与业务关键词精准推送
运维·服务器·数据库·自动化·测试用例·deepseek·openclaw
FellAveal26 分钟前
【Go语言入门学习笔记】Part13.结构体与接口
笔记·学习·golang
microrain41 分钟前
从设备孤岛到智能协同:SagooIoT场景联动实战解析
物联网·golang·sagooiot
后端优选官1 小时前
上海Agent开发公司:企业级智能体软件的技术架构与落地评估
数据库·人工智能·架构·软件开发·开发经验·上海
JustNow_Man1 小时前
`openspec/config.yaml` 解析与生效机制
数据库
Databend1 小时前
用 QUALIFY 写出更清晰的窗口函数 SQL
数据库·sql·数据分析
数智化管理手记1 小时前
应收应付资金占用过高怎么办?应收应付搭配账龄分析怎么做
大数据·网络·数据库·人工智能·数据挖掘
用户71333585156241 小时前
MySQL - EXPLAIN 执行计划
数据库
这就是佬们吗1 小时前
Python入门③-运算符、条件与循环
开发语言·数据库·vscode·python·pycharm·编辑器
wending-Y1 小时前
Flink 滑动窗口作业 TaskManager RocksDB 状态膨胀 Bug 分析
java·前端·数据库