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

2024-03-04 06:20

本文主要是介绍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.总结

这篇关于Mysql深入学习 基础篇 Ss.02 详解四类SQL语句的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/772264

相关文章

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

Debezium 与 Apache Kafka 的集成方式步骤详解

《Debezium与ApacheKafka的集成方式步骤详解》本文详细介绍了如何将Debezium与ApacheKafka集成,包括集成概述、步骤、注意事项等,通过KafkaConnect,D... 目录一、集成概述二、集成步骤1. 准备 Kafka 环境2. 配置 Kafka Connect3. 安装 D

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

Spring Cloud LoadBalancer 负载均衡详解

《SpringCloudLoadBalancer负载均衡详解》本文介绍了如何在SpringCloud中使用SpringCloudLoadBalancer实现客户端负载均衡,并详细讲解了轮询策略和... 目录1. 在 idea 上运行多个服务2. 问题引入3. 负载均衡4. Spring Cloud Load

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

在 Spring Boot 中使用 @Autowired和 @Bean注解的示例详解

《在SpringBoot中使用@Autowired和@Bean注解的示例详解》本文通过一个示例演示了如何在SpringBoot中使用@Autowired和@Bean注解进行依赖注入和Bean... 目录在 Spring Boot 中使用 @Autowired 和 @Bean 注解示例背景1. 定义 Stud

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

oracle DBMS_SQL.PARSE的使用方法和示例

《oracleDBMS_SQL.PARSE的使用方法和示例》DBMS_SQL是Oracle数据库中的一个强大包,用于动态构建和执行SQL语句,DBMS_SQL.PARSE过程解析SQL语句或PL/S... 目录语法示例注意事项DBMS_SQL 是 oracle 数据库中的一个强大包,它允许动态地构建和执行

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应