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
相关推荐
_.Switch31 分钟前
Django SQL 查询优化方案:性能与可读性分析
开发语言·数据库·python·sql·django·sqlite·自动化
Amo Xiang34 分钟前
Django 2024全栈开发指南(三):数据库模型与ORM操作(上篇)
数据库·django·django-orm
ketil272 小时前
Redis 典型应用 - 缓存(cache)
数据库·redis·缓存
灼华十一4 小时前
数据结构-布隆过滤器和可逆布隆过滤器
数据结构·算法·golang
pen-ai4 小时前
【SQL】一文速通SQL
数据库·sql
DC_BLOG6 小时前
Mysql-DDL语句
服务器·数据库·mysql
努力遇见美好的生活6 小时前
Mysql每日一题(行程与用户,困难※)
android·数据库·mysql
卫生纸不够用7 小时前
远程链接mysql步骤
数据库·mysql
夏小花花7 小时前
postgresql 创建序列
数据库·postgresql
Allen Bright7 小时前
Redis介绍
数据库·redis·缓存