MySQL教程-SQL

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

语法

  1. SQL语句可以单行多行书写,以;为结束标记
  2. SQL可以使用空格缩进来增强语句的可读性
  3. SQL单行注释(-- 注释内容 或 # 注释内容)和多行注释(/* 注释内容 */)
  4. MySQLSQL中的语句不区分大小写(建议关键字大写)

分类

SQL语句,按其功能可划分为4类:DDLDMLDQL、*DCL

分类全称说明
DDLData Definition Language数据定义语言,用来定义数据库对象(数据库、表、字段)
DMLData Manipulation Language数据操作语言,用来对数据表中的数据进行增、删、改
DQLData Query Language数据查询语言,用来查询数据库中表的记录
DCLData Control Langage数据控制语言,用来创建数据库用户,控制数据库的访问权限

DDL

DDL(Data Definition language),数据定义语言,用来定义数据库对象(数据库、表、字段)。
数据库操作常见命令:

# 查询所有数据库
show databases;

# 查询当前数据库
select database();

# 创建数据库
create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则];

# 删除数据库
drop database [if exists] 数据库名;

# 切换数据库
use 数据库名;

数据表操作常见命令

# 查询当前数据库中所有表
show tables;

# 查看表结构 (可查看到指定表的字段、字段类型、是否为null,是否存在默认值等信息)
desc 表名;

# 查看建表语句 (查看指定表的建表语句,而部分默认值参数在建表时未指定也会查询到,如存储引擎、字符集等)
show create table 表名;

# 创建表
create table 表名(
	字段1 字段1类型 [comment 注释],
	字段2 字段2类型 [comment 注释],
	...
) [comment 表注释];

# 修改表名
alter talbe 旧表名 rename to 新表名;

# 删除表
drop table [if exists] 表名;

# 清空表 (先删除表,然后重新创建表)
truncate table 表名;

# 添加字段
alter table 表名 add 字段名 字段类型 [comment 注释] [约束];

# 修改数据类型
alter table 表名 modify 字段名 字段类型;

# 修改字符名和字段类型
alter table 表名 change 旧字段名 新字段名 字段类型 [comment 注释] [约束];

# 删除字段
alter table 表名 drop 字段名;

DML

DML(Data Manipulation language),数据操作语言,用来对数据表的数据记录进行增、删、改操作。

  • 添加数据 (INSERT)
  • 修改数据(UPDATE)
  • 删除数据(DELETE)
    添加数据常用命令:
# 给全部字段添加数据 
insert into 表名 values(1,2, ...);

# 给指定字段添加数据
insert into 表名 (字段1, 字段2, ...) values (1,2, ...);

# 批量插入数据
insert into 表名 values(1,2, ...)(1,2, ...), ...;
insert into 表名 (字段1, 字段2, ...) values(1,2, ...)(1,2, ...), ...;

注意:

  1. 插入数据时,指定的字段顺序需与值的顺序一一对应
  2. 字符串和日期类型的数据应该包含在引号中
  3. 插入的数据大小,应在字段的规定范围内

修改数据常用命令:

update 表名 set 字段1 =1, 字段2 =2, ... [where 条件];

注意: 修改数据时,where条件可以没有,没有表示修改整张表的数据

删除数据常用命令:

delete from 表名 [where 条件];

注意:

  1. 删除数据时,where条件可以没有,没有表示删除整张表的数据
  2. 不能删除某一个字段的值

DQL

DQL(Data Query language),数据查询语言,用来查询数据库中表的记录。其结构语法如下:

select 
	字段列表
from 
	表名列表
where 
	条件列表
group by
	分组字段列表
having
	分组后条件列表
order by
	排序字段列表
limit
	分页参数

可将上述语法进行拆分,分为:

  • 基础查询(不带任何掉件)
  • 条件查询(where)
  • 聚合函数(count、max、min、avg、sum)
  • 分组查询(group by)
  • 排序查询(order by)
  • 分页查询(limit)
    执行顺序
    在这里插入图片描述
基础查询
# 查询全部字段
select * from 表名;

# 查询指定字段
select 字段1, 字段2, ... from 表名;

# 查询并给字段设置别名
select 字段1 [as] 别名1, 字段2 [as] 别名2, ... from 表名;

# 去重
select distinct 字段列表 from 表名;
条件查询

语法

select 字段列表 from 表名 where 条件列表;

条件

运算符功能
>大于
>=大于等于
<小于
<=小于等于
=等于
<> 或 !=不等于
between … and …在某个范围内(含最小、最大值)
in(…)在其列表中,多选一
like 占位符模糊匹配(_匹配单个字符,*匹配人一个字符)
is null是 null
is not null不是 null
and 或 &&且(多个条件同时成立)
or 或 ||或(多个条件任意一个成立)
not 或 !
聚合函数

聚合函数即将一列数据作为一个整体,进行纵向计算。
语法

select 聚合函数(字段列表) from 表名;

常见聚合函数

函数功能
count统计数量
max计算最大值
min计算最小值
avg计算平均值
sum求和

注意: null值不参与任何的聚合函数计算

分组查询

语法

select 字段列表 from 表名 [where 条件] group by 分组字段列表 [having 分组后过滤条件];

wherehaving区别

  • 执行时机不同。where是分组前进行过滤,不满足即不参与分组;having是分组后对结果进行过滤
  • 判断条件不同。where不能对聚合函数进行判断,而having可以

注意:

  1. 分组后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
  2. 执行顺序:where > 聚合函数 > having
  3. 支持多字段分组
排序查询

排序分为升序(ASC)和降序(DESC),默认为升序
语法

select 字段列表 from 表名 order by 字段1 排序方式, 字符2 排序方式, ...

注意:

  1. 若是升序,可以不指定排序方式ASC
  2. 若是多字段排序,当前面字段值相同后,才会根据后面的字段进行排序
分页查询

语法

select 字段列表 from 表名 limit 起始索引,查询记录数;

注意:

  1. 起始索引从0开始,起始索引 = (查询页码 - 1) * 每页显示记录数
  2. 分页查询是数据库的方言,不同的数据库有不同的实现。MySQL中是 limit
  3. 若查询第一页数据,起始索引可以省略

DCL

DCL(Data Control language),数据控制语言,用来管理数据库用户、控制数据表的访问权限。

管理用户
# 创建用户
create user '用户名'@'主机名' identified by '密码';

# 修改密码
alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';

# 删除用户
drop user '用户名'@'主机名'

注意:

  1. 在MySQL中通过用户名@主机名的方式来标识唯一用户
  2. 主机名可通过%匹配
权限控制

MySQL中定义多种权限,常用以下几种:

权限说明
all, all privileges所有权限
select查询数据权限
insert插入数据权限
update修改数据权限
alter修改表权限
drop删除数据库/表/视图权限
create创建数据库/表权限

以上只罗列了常见的几种权限,其它权限可参考官方文档。

# 查询用户拥有的权限
show grants for '用户名'@'主机名';

# 授予权限
grant 权限列表 on 数据库.数据表 to '用户名'@'主机名';

# 撤销权限
remove 权限列表 数据库.数据表 to '用户名'@'主机名';

注意:

  1. 多个权限之间,可用;进行分割
  2. 授权时,数据库和数据表名可使用*进行匹配,表示所有

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

跨境电商应该用什么样的服务器?多大带宽?

跨境电商在选择服务器 和带宽时&#xff0c;需要考虑多个因素&#xff0c;包括业务规模、用户数量、网站流量、地理位置等。下面是一些关键考虑因素&#xff1a; 1、服务器类型 跨境电商通常会选择使用云服务器&#xff0c;因为云服务器具有灵活性、可扩展性和高可用性。云服务…

做户用光伏代理赚钱吗

随着全球能源危机的加剧和环境问题的日益严重&#xff0c;清洁能源的开发和利用成为了一个重要的议题。光伏发电作为一种绿色、可再生的能源&#xff0c;在全球范围内得到了广泛的关注和应用。 一、代理农村光伏项目挣钱吗 随着国家对光伏发电的政策支持和补贴&#xff0c;以及…

关 于 重 燃 学 习 的 热 情

3月1日是我回学校的第一天。经历了长达8个月在家的昏暗时刻&#xff0c;我这10天的感觉和在家的感觉发生了翻天覆地的变化&#xff0c;最明显的莫过于学习状态的改变。 倒不是说在家学的不好&#xff0c;而是说在学校&#xff0c;我对学习的整体感觉&#xff0c;以及专注程度&…

鸿蒙开发学习:【驱动子系统】

OpenHarmony驱动子系统采用C面向对象编程模型构建&#xff0c;通过平台解耦、内核解耦&#xff0c;兼容不同内核&#xff0c;提供了归一化的驱动平台底座&#xff0c;旨在为开发者提供更精准、更高效的开发环境&#xff0c;力求做到一次开发&#xff0c;多系统部署。 为了缩减…

避雷!又新增一本SCI被标记On Hold,共16本!

毕业推荐 IEEE&#xff08;CCF-C类&#xff09; • 计算机医学类&#xff0c;7.5-8.0&#xff0c;JCR1区&#xff0c;中科院2/1区&#xff08;TOP&#xff09; • 3-4个月左右录用 SCIE&#xff1a; • 计算机类&#xff0c;6.5-7.0&#xff0c;JCR1区&#xff0c;中科院2…

关于udp能跨局域网传输的问题

UDP&#xff08;用户数据报协议&#xff09;以其独特的传输特性在多种应用场景中都有着极其重要的作用。然而&#xff0c;关于UDP是否能跨局域网&#xff08;LAN&#xff09;进行传输&#xff0c;以及这一传输过程中的优缺点&#xff0c;一直是网络技术领域讨论的热点。本文将详…

气液分离器的概念和原理

气液分离器也叫低压储液器&#xff0c;在热泵或制冷系统中使用&#xff0c;主要是将出蒸发器、进压缩机气流中的液滴分离出来&#xff0c;防止压缩机发生液击&#xff0c;用于工质充注量较大、压缩机进气可能带液且压缩机对湿压缩较敏感的情况 。 液击主要出现在活塞式压缩机中…

JSON 的了解和使用

目录 1. JSON 2. JSONcpp 的安装 3. JSONcpp 相关API的使用 3.1. 将 Json::Value 对象转化为 std::string 3.1.1. Json::Value 类 3.1.2. Json::Value::toStyledString 接口 3.1.3. Json::StyledWriter 类 3.1.4. Json::StyledWriter::write 接口 3.1.5. Json::Fas…

git remote Support for password authentication was removed on August 13, 2021

一 问题描述 git push 上报时提示 remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. 原因是&#xff1a;github 从2021年8月13日开始就不能用了&#xff0c;必须使用个人访问令牌&#xff08;pers…

Midjourney绘图欣赏系列(十三)

Midjourney介绍 Midjourney 是生成式人工智能的一个很好的例子&#xff0c;它根据文本提示创建图像。它与 Dall-E 和 Stable Diffusion 一起成为最流行的 AI 艺术创作工具之一。与竞争对手不同&#xff0c;Midjourney 是自筹资金且闭源的&#xff0c;因此确切了解其幕后内容尚不…

Clickhouse 单机部署安装

前言 在大数据的时代背景下&#xff0c;数据的处理和分析能力成为企业竞争力的关键。ClickHouse&#xff0c;作为一款由俄国Yandex公司开发的分布式数据分析型数据库&#xff0c;凭借其卓越的性能和稳定性&#xff0c;赢得了业界的广泛关注。本文将介绍ClickHouse的基本概念、…

java IO 04 对象处理流,序列化

01.序列化和反序列化的作用 重点&#xff1a; 图&#xff1a; 02.对象流ObjectOutputStream和ObjectInputStream ObjectInputStream&#xff1a; ObjectOutputStream&#xff1a; 例子&#xff1a; 例子&#xff1a; 修改要序列化类的话&#xff0c;会出现不同的uid…

为什么要为 App 应用加固 ?如何为 App 应用加固 ?

一&#xff1a;为什么要为 App 应用加固 来看下 腾讯开放平台 官方的解释说明 若应用不做任何安全防护&#xff0c;极易被病毒植入、广告替换、支付渠道篡改、钓鱼、信息劫持等&#xff0c;严重侵害开发者的利益。 App 加固后&#xff0c;可以对应用进行安全防护&#xff0c;防…

酷开科技以酷开系统的力量让电视机“活”起来

让用户回归电视的绝不会是因为电视机本身&#xff0c;而是电视系统的内容和交互的形式。酷开科技以系统的力量让电视机“活”起来。对于许多人来说&#xff0c;观看电影是一种享受、一种放松、一种逃避现实的方式。而现在&#xff0c;酷开科技作为行业内领军企业&#xff0c;为…

Echarts横向柱形图

项目原型图如下: 实际上就是设置两个y轴&#xff0c;第一个显示底色柱子&#xff0c;另一个只显示真实数据的柱子,在这里只显示y轴,x轴不显示.. this.middleLeftOption {tooltip: {trigger: axis,axisPointer: {}},legend: {data: [回退次数],y: bottom},grid: {left: 3%,righ…

你清楚微信加好友的规则吗?

微信加人的规则是&#xff1a; 1、通过附近人功能加人上限15人/天&#xff0c;频率3次/天&#xff0c;间隔时间1-2小时&#xff1b; 2、通过摇一摇功能加人上限15人/天&#xff0c;频率3次/天&#xff0c;间隔时间1-2小时&#xff1b; 3、通过通讯录搜索功能加人上限6人/单次…

【大模型】直接在VS Code(Visual Studio Code)上安装CodeGeeX插件的过程

文章目录 一、什么是CodeGeeX&#xff08;一&#xff09;我理解的CodeGeeX&#xff08;二&#xff09;优缺点 二、CodeGeex下载、安装、注册&#xff08;一&#xff09;安装VS Code(Visual Studio Code)&#xff08;二&#xff09;下载安装CodeGeeX&#xff08;三&#xff09;注…

泰迪智能科技携手华北电力大学理学院共建“校外实践基地”

3月15日&#xff0c;华北电力大学数理学院教学副主任史会峰、科研副主任王涛、概率教研室副主任解西阳莅临泰迪智能科技产教融合实训基地开展“华北电力大学校外实践教学基地”签约揭牌仪式。泰迪智能科技董事长张良均、支持中心负责人王宏刚、外联部吴桂锋进行接待。 活动伊始…

动手学深度学习9 多层感知机+代码实现

多层感知机代码实现 1. 感知机2. 多层感知机单隐藏层三个激活函数多隐藏层 3. 代码实现从零开始实现简洁实现注意 4. QA 1. 感知机 视频&#xff1a;https://www.bilibili.com/video/BV1hh411U7gn/?spm_id_fromautoNext&vd_sourceeb04c9a33e87ceba9c9a2e5f09752ef8 书&am…

如何修改Notes Domino中的默认通讯端口

大家好&#xff0c;才是真的好。 不知道有多少人知道&#xff0c;Notes客户机和Domino服务器之间默认的通讯协议叫做NRPC&#xff0c;很多人就直接称之为Notes协议&#xff0c;Notes和Domino服务器之间的数据通信&#xff0c;都是采用安全的NRPC协议&#xff0c;采用的端口默认…