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

news2024/10/5 10:30:50

什么是数据库

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

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是一款流行的数据库管理工具,它提供了用于连接、管理和维护多种类型数据库的图形化界面。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基础语法

通过图形化界面创建一个表,字段如下:
在这里插入图片描述

-- 数据简单查询
-- 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

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

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

相关文章

Android 基础技术——Binder 机制

笔者希望做一个系列,整理 Android 基础技术,本章是关于Binder 机制 什么是Binder 机制:Binder 是一种进程间通信机制 驱动:Binder 是一个虚拟物理设备驱动 应用层:Binder 是一个能发起通信的 Java 类 为什么要使用Bind…

Springboot返回给前端的日期变成时间戳问题处理

问题: 解决方案 在对应的Entity类中,给对应属性添加JsonFormat​注解 ​JsonFormat​注解用于将Date日期格式化为指定格式的字符串。由于在序列化时间时是按照国际标准时间GMT进行格式化的,最后接受到的数据会早8个小时,所以应该…

力扣 188. 买卖股票的最佳时机 IV

题目来源:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iv/description/ C题解:动态规划 思路同力扣 123. 买卖股票的最佳时机 III-CSDN博客,只是把最高2次换成k次。如果思路不清晰,可以将k从0写到4等找找规律…

FPGA转行ISP的探索之一:行业概览

ISP的行业位置 最近看到一个分析,说FPGA的从业者将来转向ISP(Image Signal Process图像信号处理)是个不错的选择,可以适应智能汽车、AI等领域。故而我查了一下ISP,对它大致有个概念。 传统的ISP对应的是相机公司&…

phaseDNN文章解读

文章DOI: https://doi.org/10.48550/arXiv.1905.01389 作者是 Southern Methodist University 的Wei Cai 教授 A Parallel Phase Shift Deep Neural Network for Adaptive Wideband Learning 一种并行移相深度神经网络来自适应学习宽带频率信号 20190514 核心思想:…

一起来攻克回调函数(学习笔记)

1&#xff1a;回调函数的简单说明 回调函数概念&#xff0c;和应用场景。其实是比较复杂的&#xff0c;但是我们尝试从易到难。 1&#xff1a;我们先了解回调函数&#xff0c;先看代码 #include<stdio.h> int test1(int x,int y) { printf("xy%d\…

微博数据可视化分析:利用Python构建信息图表展示话题热度

1. 引言 随着社交媒体的迅速发展&#xff0c;微博已成为人们交流观点、表达情感的重要平台之一。微博评论数据蕴含着丰富的信息&#xff0c;通过对这些数据进行分析和可视化&#xff0c;我们可以深入了解用户对特定话题的关注程度和情感倾向。本文将介绍如何利用Python进行微博…

mysql数据库表数据创建时间、更新时间自动生成配置

create_time&#xff1a;CURRENT_TIMESTAMP DEFAULT_GENERATED update_time&#xff1a;on update CURRENT_TIMESTAMP

HarmonyOS4.0系统性深入开发34栅格布局(GridRow/GridCol)

栅格布局&#xff08;GridRow/GridCol&#xff09; 概述 栅格布局是一种通用的辅助定位工具&#xff0c;对移动设备的界面设计有较好的借鉴作用。主要优势包括&#xff1a; 提供可循的规律&#xff1a;栅格布局可以为布局提供规律性的结构&#xff0c;解决多尺寸多设备的动态…

【漏洞复现-通达OA】通达OA share存在前台SQL注入漏洞

一、漏洞简介 通达OA&#xff08;Office Anywhere网络智能办公系统&#xff09;是由北京通达信科科技有限公司自主研发的协同办公自动化软件&#xff0c;是与中国企业管理实践相结合形成的综合管理办公平台。通达OA为各行业不同规模的众多用户提供信息化管理能力&#xff0c;包…

基于 SEBAL 模型的河套灌区永济灌域蒸散发估算及其变化特征_李彦彬_2023

基于 SEBAL 模型的河套灌区永济灌域蒸散发估算及其变化特征_李彦彬_2023 摘要关键词 1 数据1.1 研究区概况1.2 数据来源 2 研究方法2.1 SEBAL 模型原理2.2 FAO P-M 公式2.3 模型精度评价 3 结果分析3.2 日蒸散反演结果及变化3.3 不同土地利用类型蒸散特征分析 4 结论与讨论 摘要…

electron Tab加载动画开启和关闭

记个开发中的bug&#xff0c;以此为鉴。眼懒得时候手勤快点儿&#xff0c;不要想当然&#xff01;&#xff01;&#xff01; 没有转载的价值&#xff0c;请勿转载搬运呦。 WebContents API&#xff1a; Event: did-finish-load​ 导航完成时触发&#xff0c;即选项卡的旋转…

Redis 数据类型及其常用命令二(bitmap、geo、hyperloglog、bitfield、stream)

上文中我们介绍了Redis常使用的5中数据类型&#xff0c;对于一些特殊的场景&#xff0c;我们需要使用特殊的数据类型&#xff0c;本文将详细介绍5种特殊的数据类型。 1、bitmap 类型 用String类型作为底层数据结构实现的一种统计二值状态的数据类型。位图本质是数组&#xff0…

Netty是如何解决JDK中的Selector的bug的?

Selector BUG: JDK NIO的BUG, 例如臭名昭著的epoll bug&#xff0c;它会导致Selector空轮询&#xff0c;最终导致CPU 100%, 官方声称在JDK 1.6版本的update18修复了该问题&#xff0c;但是直到JDK1.7版本该问题仍旧存在&#xff0c;只不过该BUG发生 概率降低了一些而已&#x…

阿里云备案服务器多少钱一年?

ICP备案服务器太贵了&#xff0c;有便宜的吗&#xff1f;有啊&#xff0c;支持备案的服务器只要61元一年。备案服务器入口 https://t.aliyun.com/U/bLynLC 链接打开后&#xff0c;如下图&#xff1a; 阿里云轻量2核2G3M服务器61元一年 如上图所示&#xff0c;这台61元服务器可以…

【动态规划】【组合数学】1866. 恰有 K 根木棍可以看到的排列数目

作者推荐 【深度优先搜索】【树】【有向图】【推荐】685. 冗余连接 II 本文涉及知识点 动态规划汇总 LeetCode1866. 恰有 K 根木棍可以看到的排列数目 有 n 根长度互不相同的木棍&#xff0c;长度为从 1 到 n 的整数。请你将这些木棍排成一排&#xff0c;并满足从左侧 可以…

Leetcoder Day16| 二叉树 part05

语言&#xff1a;Java/C 513.找树左下角的值 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1示例 2: 输入: [1,2,3,4,null,5,6,null,null,7] 输出: 7 本题需要满足两…

多线程系列(一) -线程技术入门知识讲解

一、简介 在很多场景下&#xff0c;我们经常听到采用多线程编程&#xff0c;能显著的提升程序的执行效率。例如执行大批量数据的插入操作&#xff0c;采用单线程编程进行插入可能需要 30 分钟&#xff0c;采用多线程编程进行插入可能只需要 5 分钟就够了。 既然多线程编程技术…

2024年2月前端技术新动态:迈向现代化的全速前进

随着技术的不断进步&#xff0c;前端领域每月都有新的变化和挑战。2024年2月&#xff0c;我们见证了几项重大的技术更新&#xff0c;从Deno的性能提升到Turborepo的重大改进&#xff0c;再到jQuery 4.0.0 Beta的发布&#xff0c;这些变化不仅标志着前端开发向着更现代化、更高效…

Eclipse 设置 tab width 为 4 个空格 (spaces)

Eclipse 设置 tab width 为 4 个空格 [spaces] References Window -> Preferences -> General -> Editors -> Text Editors&#xff0c;选中右侧的 Insert space for tabs. Apply and Close. Window -> Preference -> C -> Code Style -> Formatter&a…