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

相关文章

Python中Flask模板的使用与高级技巧详解

《Python中Flask模板的使用与高级技巧详解》在Web开发中,直接将HTML代码写在Python文件中会导致诸多问题,Flask内置了Jinja2模板引擎,完美解决了这些问题,下面我们就来看看F... 目录一、模板渲染基础1.1 为什么需要模板引擎1.2 第一个模板渲染示例1.3 模板渲染原理二、模板

Redis中6种缓存更新策略详解

《Redis中6种缓存更新策略详解》Redis作为一款高性能的内存数据库,已经成为缓存层的首选解决方案,然而,使用缓存时最大的挑战在于保证缓存数据与底层数据源的一致性,本文将介绍Redis中6种缓存更... 目录引言策略一:Cache-Aside(旁路缓存)策略工作原理代码示例优缺点分析适用场景策略二:Re

MySQL主从同步延迟问题的全面解决方案

《MySQL主从同步延迟问题的全面解决方案》MySQL主从同步延迟是分布式数据库系统中的常见问题,会导致从库读取到过期数据,影响业务一致性,下面我将深入分析延迟原因并提供多层次的解决方案,需要的朋友可... 目录一、同步延迟原因深度分析1.1 主从复制原理回顾1.2 延迟产生的关键环节二、实时监控与诊断方案

慢sql提前分析预警和动态sql替换-Mybatis-SQL

《慢sql提前分析预警和动态sql替换-Mybatis-SQL》为防止慢SQL问题而开发的MyBatis组件,该组件能够在开发、测试阶段自动分析SQL语句,并在出现慢SQL问题时通过Ducc配置实现动... 目录背景解决思路开源方案调研设计方案详细设计使用方法1、引入依赖jar包2、配置组件XML3、核心配

Java注解之超越Javadoc的元数据利器详解

《Java注解之超越Javadoc的元数据利器详解》本文将深入探讨Java注解的定义、类型、内置注解、自定义注解、保留策略、实际应用场景及最佳实践,无论是初学者还是资深开发者,都能通过本文了解如何利用... 目录什么是注解?注解的类型内置注编程解自定义注解注解的保留策略实际用例最佳实践总结在 Java 编程

MySQL数据库约束深入详解

《MySQL数据库约束深入详解》:本文主要介绍MySQL数据库约束,在MySQL数据库中,约束是用来限制进入表中的数据类型的一种技术,通过使用约束,可以确保数据的准确性、完整性和可靠性,需要的朋友... 目录一、数据库约束的概念二、约束类型三、NOT NULL 非空约束四、DEFAULT 默认值约束五、UN

Python使用Matplotlib绘制3D曲面图详解

《Python使用Matplotlib绘制3D曲面图详解》:本文主要介绍Python使用Matplotlib绘制3D曲面图,在Python中,使用Matplotlib库绘制3D曲面图可以通过mpl... 目录准备工作绘制简单的 3D 曲面图绘制 3D 曲面图添加线框和透明度控制图形视角Matplotlib

MySQL 多表连接操作方法(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)

《MySQL多表连接操作方法(INNERJOIN、LEFTJOIN、RIGHTJOIN、FULLOUTERJOIN)》多表连接是一种将两个或多个表中的数据组合在一起的SQL操作,通过连接,... 目录一、 什么是多表连接?二、 mysql 支持的连接类型三、 多表连接的语法四、实战示例 数据准备五、连接的性

MySQL中的分组和多表连接详解

《MySQL中的分组和多表连接详解》:本文主要介绍MySQL中的分组和多表连接的相关操作,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录mysql中的分组和多表连接一、MySQL的分组(group javascriptby )二、多表连接(表连接会产生大量的数据垃圾)MySQL中的

Java 实用工具类Spring 的 AnnotationUtils详解

《Java实用工具类Spring的AnnotationUtils详解》Spring框架提供了一个强大的注解工具类org.springframework.core.annotation.Annot... 目录前言一、AnnotationUtils 的常用方法二、常见应用场景三、与 JDK 原生注解 API 的