当前位置: 首页 > news >正文

MySQL—— 基础语法大全

MySQL—— 基础

    • 一、MySQL概述
      • 1.1 、数据库相关概念
      • 1.2 、MySQL 客户端连接
      • 1.3 、数据模型
    • 二、SQL
      • 2.1、SQL通用语法
      • 2.2、SQL分类
      • 2.3、DDL
      • 2.4、DML
      • 2.5、DQL
      • 2.6、DCL
    • 三、函数
    • 四、约束
    • 五、多表查询
    • 六、事务

一、MySQL概述

1.1 、数据库相关概念

数据库、数据库管理系统、SQL:
在这里插入图片描述
目前主流的关系型数据库管理系统的市场占有率排名如下:

在这里插入图片描述

  • Oracle:大型的收费数据库,Oracle公司产品,价格昂贵。
  • MySQL:开源免费的中小型数据库,后来Sun公司收购了MySQL,而Oracle又收购了Sun公司。
    目前Oracle推出了收费版本的 MySQL,也提供了免费的社区版本。
  • SQL Server:Microsoft 公司推出的收费的中型数据库,C#、.net等语言常用。
  • PostgreSQL:开源免费的中小型数据库。
  • DB2:IBM公司的大型收费数据库产品。
  • SQLLite:嵌入式的微型数据库。Android内置的数据库采用的就是该数据库。
  • MariaDB:开源免费的中小型数据库。是MySQL数据库的另外一个分支、另外一个衍生产品,与MySQL数据库有很好的兼容性。

而不论我们使用的是上面的哪一个关系型数据库,最终在操作时,都是使用 SQL 语言来进行统一操作,因为 SQL 语言,是操作关系型数据库的 统一标准。所以即使我们现在学习的是MySQL,假如我们以后到了公司,使用的是别的关系型数据库,如:OracleDB2SQLServer,也完全不用担心,因为操作的方式都是一致的。

MySQL下载,请参考其他教程!

⭐️ MySQL启动和停止

net start mysql80
net stop mysql80

在这里插入图片描述

1.2 、MySQL 客户端连接

  • 方式一:使用 MySQL 提供的客户端命令行工具

在这里插入图片描述

  • 方式二:使用系统自带的命令行工具执行指令
mysql [-h 127.0.0.1] [-P 3306] -u root -p

参数:

  • -h : MySQL服务所在的主机 IP
  • -P : MySQL服务端口号,默认3306
  • -u : MySQL数据库用户名
  • -p : MySQL数据厍用户名对应的密码

[] 内为可选参数,如果需要连接 远程的 MySQL,需要加上这两个参数来指定远程主机IP、端口,如果连接本地的MySQL,则无需指定这两个参数。

在这里插入图片描述

注意: 使用这种方式进行连接时,需要安装完毕后配置PATH环境变量

1.3 、数据模型

⭐️ 1)、关系型数据库(RDBMS

  • 概念:建立在关系模型基础上,由多张相互连接的 二维表 组成的数据库。
  • 而所谓 二维表,指的是由行和列组成的表,如下图(就类似于Excel表格数据,有表头、有列、有行,还可以通过一列关联另外一个表格中的某一列数据)。
  • 我们之前提到的 MySQLOracleDB2SQLServer 这些都是属于关系型数据库,里面都是基于二维表存储数据的。
  • 简单说,基于二维表存储数据的数据库就成为 关系型数据库,不是基于二维表存储数据的数据库,就是 非关系型数据库

在这里插入图片描述
特点:

  • A. 使用表存储数据,格式统一,便于维护。
  • B. 使用 SQL语言操作,标准统一,使用方便。

⭐️ 2)、数据模型

  • MySQL是关系型数据库,是基于 二维表 进行数据存储的,具体的结构图下:

在这里插入图片描述

  • 我们可以通过MySQL客户端连接 数据库管理系统 DBMS,然后通过DBMS操作数据库。
  • 可以使用SQL语句,通过 数据库管理系统 操作数据库,以及操作数据库中的表结构及数据。
  • 一个数据库服务器中可以创建多个数据库,一个数据库中也可以包含多张表,而一张表中又可以包
    含多行记录。

二、SQL

全称 Structured Query Language结构化查询语言。操作关系型数据库的编程语言,定义了
一套操作关系型数据库统一标准 。

2.1、SQL通用语法

在学习具体的SQL语句之前,先来了解一下SQL语言的同于语法。

  • SQL语句可以 单行多行 书写,以 分号 结尾。
  • SQL语句可以使用 空格/缩进 来增强语句的可读性。
  • MySQL数据库的SQL语句 不区分大小写关键字建议使用大写
  • 注释:
    • 单行注释-- 注释内容# 注释内容
    • 多行注释/* 注释内容 */

2.2、SQL分类

SQL语句,根据其功能,主要分为四类:DDLDMLDQLDCL

在这里插入图片描述

2.3、DDL

⭐️ DDL — 数据库操作

1)、查询所有数据库

show databases ;

在这里插入图片描述
2)、查询当前数据库

select database() ;

3)、创建数据库

create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序规则 ] ;
  • [] 内的是可选项。
  • 字符集例如:utf8mb4;不建议使用 utf8, 其长度为3个字节,而 utf8mb4 长度是4个字节。
  • 在同一个数据库服务器中,不能创建两个名称相同的数据库,否则将会报错。(可以通过 if not exists 参数来解决这个问题,数据库不存在, 则创建该数据库,如果存在,则不创建。)

举个栗子:

create database if not exists rmzh default charset utf8mb4 ;

在这里插入图片描述
4)、删除数据库

drop database [ if exists ] 数据库名 ;

在这里插入图片描述

  • 如果删除一个不存在的数据库,将会报错。此时,可以加上参数 if exists ,如果数据库存在,再执行删除,否则不执行删除。

5)、切换数据库

use 数据库名 ;
  • 我们要操作某一个数据库下的表时,就需要通过该指令,切换到对应的数据库下,否则是不能操作的。
    比如,切换到 rmzh 数据,执行如下SQL:
use rmzh ;

数据库操作 快速食用:

# 1)、查询所有数据库
show databases ;
# 2)、查询当前数据库
select database() ;
# 3)、创建数据库
create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序规则 ] ;
# 4)、删除数据库
drop database [ if exists ] 数据库名 ;
# 5)、切换数据库
use 数据库名 ;

⭐️ DDL — 表操作

1)、表操作-查询创建

  1. 查询当前数据库所有表
show tables;
  1. 查看指定表结构
desc 表名 ;

通过这条指令,我们可以查看到指定表的字段,字段的类型、是否可以为 NULL,是否存在默认值等信息。

  1. 查询指定表的建表语句
show create table 表名 ;

通过这条指令,主要是用来查看建表语句的,而有部分参数我们在创建表的时候,并未指定也会查询到,因为这部分是数据库的默认值,如:存储引擎、字符集等。

  1. 创建表结构
CREATE TABLE 表名(字段1 字段1类型 [COMMENT 字段1注释 ],字段2 字段2类型 [COMMENT 字段2注释 ],字段3 字段3类型 [COMMENT 字段3注释 ],......字段n 字段n类型 [COMMENT 字段n注释 ]
) [ COMMENT 表注释 ] ;

注意: [...]内为可选参数,最后一个字段后面没有逗号。

2)、表操作-数据类型

  • 在上述的建表语句中,我们在指定字段的数据类型时,用到了 intvarchar,那么在MySQL中除了以上的数据类型,还有哪些常见的数据类型呢? 接下来,我们就来详细介绍一下MySQL的数据类型。
  • MySQL中的数据类型有很多,主要分为三类:数值类型字符串类型日期时间类型
  1. 数值类型
    在这里插入图片描述
    在这里插入图片描述

  2. 字符串类型
    在这里插入图片描述

charvarchar 都可以描述字符串:

  • char 是定长字符串,指定长度多长,就占用多少个字符,和字段值的长度无关 。
  • varchar变长字符串,指定的长度为最大占用长度 。

相对来说,char的性能会更高些。

  1. 日期时间类型

    3)、表操作-修改
  2. 添加字段
ALTER TABLE 表名 ADD 字段名 类型 (长度) [ COMMENT 1 注释 ] [ 约束 ];
  1. 修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型 (长度);
  1. 修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型 (长度) [ COMMENT 1 注释 ]
  1. 删除字段
ALTER TABLE 表名 DROP 字段名;
  1. 修改表名
ALTER TABLE 表名 RENAME TO 新表名;

4)、表操作-删除

  1. 删除表
DROP TABLE [ IF EXISTS ] 表名;

可选项 IF EXISTS 代表,只有表名存在时才会删除该表,表名不存在,则不执行删除操作(如果不
加该参数项,删除一张不存在的表,执行将会报错)。

  1. 删除指定表, 并重新创建表
TRUNCATE TABLE 表名;

注意: 在删除表的时候,表中的全部数据也都会被删除。

2.4、DML

2.5、DQL

2.6、DCL

三、函数

四、约束

五、多表查询

六、事务

相关文章:

MySQL—— 基础语法大全

MySQL—— 基础 一、MySQL概述1.1 、数据库相关概念1.2 、MySQL 客户端连接1.3 、数据模型 二、SQL2.1、SQL通用语法2.2、SQL分类2.3、DDL2.4、DML2.5、DQL2.6、DCL 三、函数四、约束五、多表查询六、事务 一、MySQL概述 1.1 、数据库相关概念 数据库、数据库管理系统、SQL&a…...

css小练习:案例6.炫彩加载

一.效果浏览图 二.实现思路 html部分 HTML 写了一个加载动画效果&#xff0c;使用了一个包含多个 <span> 元素的 <div> 元素&#xff0c;并为每个 <span> 元素设置了一个自定义属性 --i。 这段代码创建了一个简单的动态加载动画&#xff0c;由20个垂直排列的…...

使用正则表达式替换文本中的html标签

文章目录 使用正则表达式替换文本中的html标签原文本&#xff1a;使用正则表达式进行替换替换后&#xff1a;展示 html 文本 使用正则表达式替换文本中的html标签 我们存储 markdown 文章时&#xff0c;如果存储转换后的 html 页面&#xff0c;那么在查出来的时候&#xff0c;…...

当向数据库导入大量数据时,mysql主键唯一键重复插入,如何丝滑操作并不导入重复数据呢

解决办法&#xff1a; 答案来源&#xff1a;...

【go-zero】docker镜像直接部署go-zero的API与RPC服务 如何实现注册发现?docker network 实现 go-zero 注册发现

一、场景&问题 使用docker直接部署go-zero微服务会发现API无法找到RPC服务 1、API无法发现RPC服务 用docker直接部署 我们会发现API无法注册发现RPC服务 原因是我们缺少了docker的network网桥 2、系统内查看 RPC服务运行正常API服务启动,通过docker logs 查看日志还是未…...

微信小程序读取本地json

首先在项目录下新建【server】文件夹&#xff0c;新建data.js文件&#xff0c;并定义好json数据格式。如下&#xff1a; pages/index/index.ts导入data.js并请求json pages/index/index.wxml页面展示数据...

Stephen Wolfram:ChatGPT 的训练

The Training of ChatGPT ChatGPT 的训练 OK, so we’ve now given an outline of how ChatGPT works once it’s set up. But how did it get set up? How were all those 175 billion weights in its neural net determined? Basically they’re the result of very large…...

SpringCloud实用篇2——Nacos配置管理 Feign远程调用 Gateway服务网关

目录 1 Nacos配置管理1.1 统一配置管理1.1.1 在nacos中添加配置文件1.1.2 从微服务拉取配置 1.2 配置热更新1.2.1 方式一1.2.2 方式二&#xff08;推荐&#xff09; 1.3.配置共享 2 搭建Nacos集群2.1 集群结构图2.2 搭建集群2.2.1 初始化数据库2.2.2 下载nacos2.2.3 配置Nacos2…...

tomcat配置文件和web站点部署(zrlog)简介

一.tomcat/apache-tomcat-8.5.70/conf/server.xml组件类别介绍 1.类别 2.Connector参数 3.host参数 4.Context参数 二.web站点部署(以zrlog为例) 1.将zrlog的war包传到webapps下面 2.在mysql数据库中创建zrlog用户并赋予权限 3.完成安装向导&#xff0c;登录管理界面即可…...

elementui实现当前页全选+所有全选+翻页保持选中状

原文来自&#xff1a;https://blog.csdn.net/sumimg/article/details/121693305?spm1001.2101.3001.6650.1&utm_mediumdistribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-121693305-blog-127570059.235%5Ev38%5Epc_relevant_anti_t3&depth_1-utm…...

Opencv项目实战:24 石头剪刀布

目录 0、项目介绍 1、效果展示 2、项目搭建 3、项目代码展示与部分讲解 pyzjr库...

Qt--QPlugin插件

写在前面 Qt–动态链接库一文中提到&#xff0c;动态方式加载dll只能加载 extern "C“ 的导出函数&#xff0c;而无法加载类&#xff0c;因此可以使用Qt提供的插件来实现导出类的动态加载。 QPlugin是Qt插件框架的一部分&#xff0c;是一种轻量级的插件系统&#xff0c;…...

公会发展计划 (GAP) 第 4 季:塑造 YGG 的成就版图

基于前三个赛季所取得的成果&#xff0c;Yield Guild Games&#xff08;YGG&#xff09;自豪地宣布推出 公会发展计划&#xff08;GAP&#xff09;第 4 季。公会最近的一些精英成员将在本季加入公会&#xff0c;公会成员将在全新的任务中磨练自己的技能&#xff0c;建立自己在 …...

ExpressJS教程_编程入门自学教程_菜鸟教程-免费教程分享

教程简介 Express是基于Node.js平台,快速、开放、极简的Web开发框架&#xff1b;通俗的理解:Express的作用和Node.js内置的http模块类似,是专门用来创建Web服务器的&#xff1b;Express的本质:就是一个npm上的第三方包,提供了快速创建Web服务器的便捷方法。ExpressJS是一个Web…...

时序预测 | MATLAB实现BO-BiLSTM贝叶斯优化双向长短期记忆神经网络时间序列预测

时序预测 | MATLAB实现BO-BiLSTM贝叶斯优化双向长短期记忆神经网络时间序列预测 目录 时序预测 | MATLAB实现BO-BiLSTM贝叶斯优化双向长短期记忆神经网络时间序列预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 MATLAB实现BO-BiLSTM贝叶斯优化双向长短期记忆…...

HIVE优化之不需要参数优化

#1.数据倾斜 什么是数据倾斜&#xff1f; 一部分数据多 一部分数据少 造成的结果&#xff1a; MR运行过慢 主要是shuffle和reduce过程慢 分组聚合导致数据倾斜 Hive未优化的分组聚合 方法1&#xff1a;在MAP端直接聚合&#xff08;分组聚合优化&#xff09;&#xff0c;减少…...

前端 select 标签如何创建下拉菜单?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 代码示例⭐ 代码讲解⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏…...

基于 eclipse-temurin 构建国内时区,地区,语言的docker镜像

基于 eclipse-temurin 构建国内时区&#xff0c;地区&#xff0c;语言的镜像 使用场景自定Dockerfile构建自己的基础镜像构建本地镜像推送远程仓库 使用场景 在给应用构建自定义镜像时&#xff0c;往往需要在每次构建时去调整时区&#xff0c;地区这些东西&#xff1b;每次构建…...

RunnerGo配置场景时接口模式该怎么选

在进行性能测试时&#xff0c;测试场景的正确配置非常关键。首先&#xff0c;需要根据业务场景和需求&#xff0c;设计出合理的测试场景&#xff0c;再利用相应的工具进行配置&#xff0c;实现自动化的性能测试。 在JMeter中&#xff0c;用户需要自己组织测试场景&#xff0c;…...

系统分享UIActivity

iOS自带的分享控件可以完成绝大部分的分享需求。 它可以不需要集成微信、QQ等第三方SDK就可以实现分享&#xff08;需要在弹出视图里面点击更多打开开关&#xff09;到微信好友、朋友圈等,功能很强大&#xff0c;也很方便。 一、系统分享两个步骤 UIActivity配置分享的内容和…...

常用抓包工具

Fiddler Fiddler 是一个很好用的抓包工具&#xff0c;可以用于抓取http/https的数据包&#xff0c;常用于Windows系统的抓包&#xff0c;它有个优势就是免费 Charles Charles是由JAVA开发的&#xff0c;可以运行在window Linux MacOS&#xff0c;但它是收费的&#xff0c;和…...

自然语言处理学习笔记(五)————切分算法

目录 1.切分算法 2.完全切分 3.正向最长匹配 4.逆向最长匹配 5.双向最长匹配 6.速度评测 1.切分算法 词典确定后&#xff0c;句子可能含有很多词典中的词语&#xff0c;他们有可能互相重叠&#xff0c;如何切分需要一些规则。常用规则为&#xff1a;正向匹配算法、逆向匹…...

SQL-方法论

写SQL时可以考虑的手段&#xff1a; 行转列 先分为多个临时表&#xff0c;然后JOIN到一起 select uid,t1.name YuWen,t2.name ShuXue from (select uid,namefrom tableAwhere naem 语文) t1join (select uid,namefrom tableAwhere naem 数学) t2on t1.uid t2.uid; 用sum(if…...

[Python从零到壹] 六十八.图像识别及经典案例篇之图像特效(毛玻璃、浮雕、油漆和模糊特效变换)

八月太忙,还是写一篇吧! 欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希望对您有所帮助,文章中不足…...

undefined与null的区别

null 表示一个对象被定义了&#xff0c;值为“空值” undefined 表示不存在这个值 1.undefined typeof undefined //"undefined" undefined 是一个表示"无"的原始值或者说表示"缺少值"&#xff0c;就是此处应该有一个值&#xff0c;但还没有…...

Unity之获取用户地理位置

1.直接利用三方API获取: 1.1 利用bilibili的api 【未知稳定性】 public void Awake() {StartCoroutine(GetLocationInfoNew());}/// <summary>/// 利用bilibili的接口通过ip直接获取城市信息/// </summary>IEnumerator GetLocationInfoNew() {//UnityWebRequest …...

TC3XX - MCAL知识点(二十):CAN MCAL配置及代码实战(CAN/CANFD/extenen CAN)

目录 1、概述 2、MCAL配置 2.1、实验目标 2.2、CAN配置(包含CAN与CANFD) 2.2.1、CanGeneral...

QT生成Debug和Release发布版后,运行exe缺少dll问题

在QT Creator生成debug和release的exe执行文件后&#xff0c;运行时&#xff0c;报错缺少*.dll.解决办法1&#xff1a; 在系统环境变量中添加D:\Qt\Qt5.13.2\Tools\mingw730_64\bin后&#xff0c;即可运行。 当使用此方法时&#xff0c;将exe拷贝到其他电脑中运行时&#xff0c…...

企业进销存管理流程有哪些? 附进销存管理系统

阅读本文&#xff0c;您可以了解&#xff1a;1、进销存的定义&#xff1b;2、进销存的流程 首先&#xff0c;在了解进销存流程之前&#xff0c;我们必须厘清一个问题&#xff1f; 什么是进销存&#xff1f; 进销存是一个企业管理中常用的术语&#xff0c;是指企业在经营过程中…...

RPC原理与Go RPC详解

文章目录 RPC原理与Go RPC什么是RPC本地调用RPC调用HTTP调用RESTful API net/rpc基础RPC示例基于TCP协议的RPC使用JSON协议的RPCPython调用RPC RPC原理 RPC原理与Go RPC 什么是RPC RPC&#xff08;Remote Procedure Call&#xff09;&#xff0c;即远程过程调用。它允许像调用…...