Mysql深入学习 基础篇 Ss.02 详解四类SQL语句

我亲爱的对手,亦敌亦友,但我同样希望你能成功,与我一起,站在人生的山顶上

                                                                                                              ——24.3.1

一、DDL 数据定义语言

1.DDL —— 数据库操作

查询

        查询所有数据库

show databases;

        查询当前数据库

select database();

创建

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

删除

 drop database [if exists] 数据库名;

使用

use 数据库名;

2.DDL —— 表操作 —— 查询

前提是进入一个数据库

use 数据库名;

查询当前数据库所有表

show tables;

查询表结构

desc 表名;

查询指定表的建表语句

show create table 表名;

3.DDL —— 表操作 —— 创建 

create table 表名(字段1 字段1类型 [comment 字段1的注释],字段2 字段2类型 [comment 字段2的注释],字段3 字段3类型 [comment 字段3的注释],…… ……字段n 字段n类型 [comment 字段n的注释]
)[comment 表的注释];

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

例:

4.DDL —— 表操作 —— 数据类型

MySQL中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型

数值类型

字符串类型

char性能好,varchar性能较差

日期时间类型

5.DDL —— 表操作 —— 修改

添加字段

alter table 表名 add 字段名 类型(长度) [comment 注释][约束];

修改数据类型 

alter table 表名 modify 字段名 新数据类型(长度);

修改字段名和字段类型

alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];

删除字段

alter table 表名 drop 字段名;

修改表名

alter table 表名 rename to 新表名;

6.DDL —— 表操作 —— 删除 

删除表

drop table [if exists] 表名;

删除指定表,并重新创建该表

truncate table 表名;

 7.DDL 数据定义语言 总结

二、DML 数据操纵语言

DML语言是数据操作语言,用来对数据库中表的数据记录进行增删改操作

添加数据(insert)

修改数据(update)

删除数据(delete)

1.DML —— 添加数据

1.给指定字段添加数据

insert into 表名 (字段名1,字段名2,……) values (值1,值2,……);

2.给全部字段添加数据,值与字段相对应起来

insert into 表名 values (值1,值2,……);

3.批量添加数据

insert into 表名 (字段名1,字段名2,……) values (值1,值2,……),(值1,值2,……),(值1,值2,……);insert into 表名 values (值1,值2,……),(值1,值2,……),(值1,值2,……);

注意:

        插入数据时,指定的字段顺序需要与值的顺序一一对应

        字符串和日期型数据应该包含在引号中

        插入的数据大小,应该在字段的规定范围之内

2.DML —— 修改数据

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

注意:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据

3.DML —— 删除数据

delete from 表名 [where 条件]

注意:

        delete语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据

        delete语句不能删除某一字段的值(可以使用update修改字符值为null)

4.DML 数据操纵语言 总结

 三、DQL 数据查询语言

1.DQL —— 语法

 2.DQL —— 基本查询

1.查询多个字段

select 字段1,字段2,字段3… from 表名;
select * from 表名;

2.设置别名

select 字段1 [as 别名1],字段2[as 别名2] … from 表名;

as 可省略

3.去除重复记录

select distinct 字段列表 from 表名;

3.DQL —— 条件查询(where)

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

 4.条件查询中的条件

between后跟最小值,and后跟最大值

可以用in(选项)来替代or关键字

下划线匹配单个字符,%匹配任意数量字符

4.DQL —— 聚合函数(count、max、min、avg、sum)

1.介绍

        将一列数据作为一个整体,进行纵向计算

2.常见聚合函数

        count                统计数量

        max                  最大值

        min                   最小值

        avg                   平均值

        sum                  求和

聚合函数作用于某一列数据

3.语法

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

注意:null值不参与所有聚合函数的运算

4.案例

5.DQL —— 分组查询(group by)

1.语法

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

2.where 与 having的区别

        执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤

        判断条件不同:where不能对聚合函数进行判断,而having可以

3.案例

在分组查询后一般查询展示的字段是分组之后的字段和聚合函数

 6.DQL —— 排序查询(order by)

1.语法

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

2.排序方式

        asc:升序(默认值)

        desc:降序

注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序

3.案例

7.DQL —— 分页查询(limit)

1.语法

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

注意:

        起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示记录数

        分页查询是数据库的方言,不同数据库有不同的实现,mysql中是limit

        如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10

2.案例

8.DQL —— 案例 

1.耷询年龄为20,21,22,23岁的女性员工信息。

select * from emp where age in(20,21,22,23) and gender = '女';

2.查询性别为 男,并且年龄在 20-40 岁(含)以内的姓名为三个字的员工。

select * from emp where age between 20 and 40 and gender = '男' and name like '___';

3.统计员工表中,年龄小于60岁的 ,男性员工和女性员工的人数。

select gender,count(*) from emp where age < 60 group by gender;

4.查询所有年龄小于等于35岁员工的姓名和年龄,并对査询结果按年龄升序排序,如果年龄相同按入职时间降序排序。

select name,age from emp where age <= 35 order by age asc,entrydate desc;

5.查询性别为男,且年龄在20-40 岁(含)以内的前5个员工信息,对査询的结果按年龄升序排序,年龄相同按入职时间升序排序。

select * from emp where gender = '男' and age between 20 and 40 order by age asc,entrydate asc limit 5;

9.DQL —— 执行顺序 

10.DQL —— 总结

四、DCL 数据控制语言

管理数据库用户

控制用户对数据库的访问权限

1.DCL —— 管理用户

1.查询用户

use mysql;select * from user;

2.创建用户

create user '用户名' @ '主机名' identified by ’密码‘;

3.修改用户密码

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

4.删除用户

drop user '用户名' @ '主机名';

 注意:

        主机名可以用%通配

        这类SQL开发人员操作较少,主要是由DBA(数据库管理员)使用

2.DCL —— 权限控制

1.权限列表

2.查询权限

show grants for '用户名'@'主机名';

3.授予权限

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

4.撤销权限

remoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';

5.案例

注意:

        多个权限之间,使用逗号分割

        授权时,数据库名和表名可以使用* 进行通配,代表所有

3.总结

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

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

相关文章

【简说八股】Nginx、GateWay、Ribbon有什么区别?

前言 在现代的微服务架构中&#xff0c;Nginx、Gateway 和 Ribbon 都是处理网络请求和服务的组件&#xff0c;但它们各自扮演的角色和提供的功能有所不同。下面我将详细解释它们之间的区别&#xff1a; Nginx Nginx 是一个高性能的 HTTP 和反向代理服务器&#xff0c;它也可…

Golang Vs Java:为您的下一个项目选择正确的工具

Java 首次出现在 1995 年&#xff0c;由 James Gosling 和 Sun Microsystems 的其他人开发的一种新编程语言。从那时起&#xff0c;Java 已成为世界上最受欢迎和广泛使用的编程语言之一。Java 的主要特点包括其面向对象的设计、健壮性、平台独立性、自动内存管理以及广泛的内置…

MSMFN

CDFI是彩色多普勒血流成像 辅助信息 作者未提供数据

Codeforces Round 930 (Div. 2)

substr时间复杂度O&#xff08;N&#xff09;&#xff0c;不能一遍遍找&#xff0c;会超时 #include<iostream> #include<algorithm> #include<vector> #include<map> using namespace std; const int N5e510; map<string,int>mp; vector<…

[C++]AVL树怎么转

AVL树是啥 一提到AVL树&#xff0c;脑子里不是旋了&#xff0c;就是悬了。 AVL树之所以难&#xff0c;并不是因为结构难以理解&#xff0c;而是因为他的旋转。 AVL树定义 平衡因子&#xff1a;对于一颗二叉树&#xff0c;某节点的左右子树高度之差&#xff0c;就是该节点的…

5、云原生安全之falco的规则解读(部分)(上)

文章目录 1、自定义规则测试1.1、自定义检测定时任务的规则2、自带规则详解部分2.1、意外的出站连接源(类似的还有入站连接)2.2、检测目录穿越攻击2.3、rpm数据库被修改2.4、数据库派生新的进程2.5、特权容器启动2.6、启动容器挂载到敏感路径2.7、匹配所有在pod内启动、并连接…

音视频数字化(数字与模拟-照相机)

目录 1、模拟/数字 2、第一台照相机 3、照相机原理 4、取景方式 5、底片 6、数码相机 7、数码相机指标 8、数码相机分类 (1)单反相机 (2)单电相机 (3)无反相机

2024.03.02蓝桥云课笔记

1.scanf与printf取消分隔符的限制方法 示例代码&#xff1a; int main() { char s[10];scanf("%d[^\n]",s);printf("%s",s);return 0; } 运行&#xff1a; 输入&#xff1a;Hello World 输出&#xff1a;Hello World 注&#xff1a;其中[]中是一个正则…

(UE4升级UE5)Selected Level Actor节点升级到UE5

本问所用工具为&#xff1a;AssetDeveTool虚幻开发常用工具https://gf.bilibili.com/item/detail/1104960041 在UE4中 编辑器蓝图有个节点为 Get Selected Level Actors 但在UE5中&#xff0c;蓝图直接升级后&#xff0c;节点失效&#xff0c;如图&#xff1a; 因为在UE5中&am…

Vue3中Vuex状态管理库学习笔记

1.什么是状态管理 在开发中&#xff0c;我们会的应用程序需要处理各种各样的数据&#xff0c;这些数据需要保存在我们应用程序的某个位置&#xff0c;对于这些数据的管理我们就称之为状态管理。 在之前我们如何管理自己的状态呢&#xff1f; 在Vue开发中&#xff0c;我们使用…

大厂面试经验:如何对加密后的数据进行模糊查询操作

加密后的数据对模糊查询不是很友好&#xff0c;本篇就针对加密数据模糊查询这个问题来展开讲一讲实现的思路。 为了数据安全我们在开发过程中经常会对重要的数据进行加密存储&#xff0c;常见的有&#xff1a;密码、手机号、电话号码、详细地址、银行卡号、信用卡验证码等信息…

YoloV5改进策略:主干网络改进|MogaNet——高效的多阶门控聚合网络

文章目录 摘要论文:《MogaNet——高效的多阶门控聚合网络》1、简介2、相关工作2.1、视觉Transformers2.2、ViT时代的卷积网络3、从多阶博弈论交互的角度看表示瓶颈4、方法论4.1、MogaNet概述4.2、多阶门控聚合4.3、通过通道聚合进行多阶特征重新分配4.4、实现细节5、实验5.1、…

Vue 3 中的 setup 函数是如何工作的?

Vue 3 中的 setup 函数是一个新的组件选项&#xff0c;用于使用组合式 API 定义组件的逻辑。这个函数的引入是为了解决 Vue 2 中随着组件复杂度的增长&#xff0c;选项式的 API 可能导致代码难以维护和理解的问题。通过 setup 函数&#xff0c;开发者可以更加灵活地组织和共享代…

Python光速入门 - Flask轻量级框架

FlASK是一个轻量级的WSGI Web应用程序框架&#xff0c;Flask的核心包括Werkzeug工具箱和Jinja2模板引擎&#xff0c;它没有默认使用的数据库或窗体验证工具&#xff0c;这意味着用户可以根据自己的需求选择不同的数据库和验证工具。Flask的设计理念是保持核心简单&#xff0c…

布隆过滤器实战

一、背景 本篇文章以解决实际需求的问题的角度进行切入&#xff0c;探讨了如果使用布隆过滤器快速丢弃无效请求&#xff0c;降低了系统的负载以及不必要的流量。 我们都知道布隆过滤器是以占用内存小&#xff0c;同时也能够实现快速的过滤从而满足我们的需求&#xff0c;本篇…

Matlab偏微分方程拟合 | 源码分享 | 视频教程

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《复杂函数拟合案例分享》本专栏旨在提供 1.以案例的形式讲解各类复杂函数拟合的程序实现方法&#xff0c;并提供所有案例完整源码&#xff1b;2.…

反编译代码格式处理

反编译代码格式处理 背景解决方案程序跑之后idea格式化 总结 背景 想看看公司里一个工具的代码实现&#xff0c;手里只有一个jar包&#xff0c;只能通过jd-gui反编译代码。但是呢&#xff0c;源码是有了&#xff0c;但是看的很难受。 解决方案 /*** 替换 {code searchDir}中…

LeetCode 100231.超过阈值的最少操作数 I

给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。 一次操作中&#xff0c;你可以删除 nums 中的最小元素。 你需要使数组中的所有元素都大于或等于 k &#xff0c;请你返回需要的 最少 操作次数。 示例 1&#xff1a; 输入&#xff1a;nums [2,11,10,1,3], k 10 输…

Linux课程四课---Linux开发环境的使用(自动化构建工具-make/Makefile的相关)

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

用Java语言创建的Spring Boot项目中,如何传递数组呢??

问题&#xff1a; 用Java语言创建的Spring Boot项目中&#xff0c;如何传递数组呢&#xff1f;&#xff1f; 在这个思路中&#xff0c;其实&#xff0c;Java作为一个后端开发的语言&#xff0c;没必要着重于如何传入&#xff0c;我们主要做的便是对传入的数组数据进行处理即可…