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

MySQL技巧

SQL语句分类(理解)

☆ DDL 定义

数据定义语言:简称DDL(Data Definition Language) 用来定义数据库对象:数据库,表,列等。 关键字:create,alter,drop等

搭建数据存储的框架,如管理数据库、管理数据表、管理字段

☆ DML 操作

数据操作语言:简称DML(Data Manipulation Language) 用来对数据库中表的记录进行更新(增加、修改、删除)。 关键字:insert,delete,update等

☆ DQL 查询

数据查询语言:简称DQL(Data Query Language) 用来查询数据库中表的记录(查询)。 关键字:select,from,where等

☆ DCL 控制

数据控制语言:简称DCL(Data Control Language) 用来定义数据库的访问权限和安全级别及创建用户(账号管理、权限管理)。

SQL基本语法(重点)

① SQL语句可以单行或多行书写,但是最终需要以分号结尾。

② 可使用空格和缩进来增强语句的可读性

③ MySQL数据库的SQL语句默认不区分大小写

④ 可以使用单行与多行注释

数据库的基本操作

查看数据库

show databases;  -- 显示所有的数据库

show create database 库名;    -- 查看指定数据库

创建数据库

create database 库名 [编码格式];

-- 方式一:创建库    
mysql> create database 库名;

-- 方式二:创建库并指定默认字符集                            
mysql> create database 库名 default charset gbk;

-- 方式三:如果存在不报错(if not exists)
mysql> create database if not exists 库名 default character set utf8;    

删除数据库

drop database 库名;

选择数据库

use 库名;

编码格式

编码格式,常见的gbk(中国的编码格式)与utf8(国际通用编码格式)

DDL表操作

DDL要学4个关键字:create(创建)、drop(删除)、alter(修改)、show(查询)

查询表

show tables;

创建表

create table 表名(
    字段 字段类型 [字段约束]
)

删除表

drop table 表名;

修改表名

rename table 旧名 to 新名;

修改表字段

alter table 表名 add 新字段名 字段类型 first;
alter table 数据表名称 add 新字段名称 字段类型 after 其他字段名称;

first:把新添加字段放在第一位
after 字段名称:把新添加字段放在指定字段的后面

删除字段

alter table 表名 drop 字段名;

修改字段名称、类型

alter table 表名 change 字段名 name varchar(20);

只修改字段类型

alter table 表名modify name varchar(20);

auto_increment

作用:自动增长,往往用于设置主键,可以让其值自动增长,默认从1开始,依次递增。

DML数据操作语言

DML包括哪些SQL语句

insert插入、update更新、delete删除

数据的增删改

增加

insert into 表名 values (
    字段
);

查询命令

select * from 表名; -- 查看表内容

修改

update 表名 set 字段=更新后的值;

删除

delete from 表名 [where 删除条件];

清空数据表

delete from 数据表;

truncate 数据表;

  • delete:删除数据记录

    • 数据操作语言(DML)

    • 删除大量记录速度慢,只删除数据,主键自增序列不清零,1-100 => 新插入 => 101

    • 可以带条件删除

  • truncate:删除所有数据记录

    • 数据定义语言(DDL)

    • 清理大量数据速度快,主键自增序列清零, 1-100 => 新插入 => 1

    • 不能带条件删除

字段约束

五种约束:①非空约束 ②默认值约束 ③唯一约束 ④主键约束 ⑤外键约束

主键约束(重点)

强调:非空、唯一、一个表中最多有且仅有1个主键,在MySQL中,往往id字段都是主键(primary key)

主键约束 与 唯一约束区别?

和主键约束相同点:都是唯一的

和主键约束不同点:主键非空、有且仅有1个;唯一可以为null,在一个表中也可以同时拥有多个

DQL数据查询语言

select查询

# 根据某些条件从某个表中查询指定字段的内容
格式:select [distinct]*| 列名,列名 from 表 [where 条件]

select 查询哪些列多个列用逗号隔开 from 数据表 where 查询条件(满足条件的就显示,不满足的就忽略)

简单查询

select * from 表名      -- 查询所有
select 列名,列名 from 表名    -- 查询某一列

五子句

SQL除了简单查询以外,还支持五子句查询(SQL查询五子句)

select */字段 from 数据表 ① where子句 ② group by子句 ③ having子句 ④ order by子句 ⑤ limit子句

① where:条件查询
② group by:分组查询
③ having:条件查询,只不过发生在分组之后,可以对分组后结果进行筛选
④ order by:排序子句,用于排序操作
⑤ limit:限制查询,用于限制查询数量
五子句可以单独出现,也可以多个关键词一起出现。但是不管多少个关键字都必须严格按照五子句顺序进行书写,否则报错!!!

条件查询(where字句)

五子句的一部分

简单查询的常见用法

case when

-- 比如,把gender的'0', '1'转换成男女
create table tb_employee (
   id int,
   name varchar(32),
   gender tinyint    -- 男0,女1
);

insert into tb_employee
   values (1, '张三', 0)
        , (2, '晓红', 1)
        , (3, '李四', 0)
;

select
   name,
   case gender when 0 then '男' else '女' end as '性别'
   from tb_employee;

left() 和 right()

LEFT(string, length):从字符串左侧开始,截取指定长度的字符

RIGHT(string, length):从字符串右侧开始,截取指定长度的字符

count()

CONCAT() 是用于字符串拼接的核心函数,支持将多个字符串连接为一个。

聚合函数

-- 字段定义别名
select name, (chinese+english+math) [as] 别名 from 数据表;

聚合函数作用
count()统计指定列不为NULL的记录行数;
sum()计算指定列的数值和,如果指定列类型不是数值类型,则计算结果为0
max()计算指定列的最大值,如果指定列是字符串类型,使用字符串排序运算;
min()计算指定列的最小值,如果指定列是字符串类型,使用字符串排序运算;
avg()计算指定列的平均值,如果指定列类型不是数值类型,则计算结果为0

分组查询(group by 子句)

作用:分组就是为了更好的进行数据的统计,分组 + 聚合。

分组查询基本的语法格式如下:GROUP BY 列名 [HAVING 条件表达式]

group by

① group by可以实现去重操作

② group by的作用是为了实现分组统计(group by + 聚合函数)

group by使用注意事项:

select 分组字段, 聚合函数, 聚合函数 from students group by 分组字段;

SQL官方文档:在有group by出现的情况下,select后面的字段要么只能出现在分组中,要么只能出现在聚合函数中

过滤(having 子句)

having作用和where类似都是过滤数据的,但是两者之间的执行顺序不同

① where子句(发生在分组之前)

② group by子句 (分组)

③ having子句(发生在分组之后)

☆ 第一种情况:如果只是简单的查询操作(没有group by的情况),大部分时间having是可以直接替代where子句

排序查询(order by 子句)

-- 通过order by语句,可以将查询出的结果进行排序。暂时放置在select语句的最后。
-- 格式:SELECT * FROM 表名 ORDER BY 排序字段 ASC|DESC;
ASC(Ascend /əˈsend/)      升序 (默认),默认情况下,ASC关键词可以省略不写
DESC (Descend /dɪˈsend/)    降序

-- 1.使用价格排序(降序)
select * from tb_product order by price desc;

-- 2.在价格排序(降序)的基础上,以品类排序(降序)
select * from tb_product order by price desc, category_id desc;
-- 首先按照第一个字段排序,如果第一个字段能比较出大小,则不需要进行字段2排序;
-- 如果第一个字段值相同,则系统会继续按照第二个字段进行排序

分页(limit子句)

应用场景:① 限制查询 ② 分页查询

限制查询:主要限制数据查询的数量(获取数据表中的前3条数据)

select * from 数据表 limit ``查询数量``;
select * from 数据表 limit ``偏移量(默认为0,``类似索引下标``)``,``查询数量``;

偏移量:索引下标,默认从0开始

0 第一条记录

1 第二条记录

2 第三条记录

http://www.lryc.cn/news/576803.html

相关文章:

  • 性能分析专栏 -- top命令
  • 【修电脑的小记录】连不上网
  • 打造地基: App拉起基础小程序容器
  • 疏通经脉: Bridge 联通逻辑层和渲染层
  • 深入理解 Dubbo 负载均衡:原理、源码与实践
  • RK3588集群服务器性能优化案例:电网巡检集群、云手机集群、工业质检集群
  • [Python 基础课程]PyCharm 的安装
  • 大数据Hadoop之——Flume安装与使用(详细)
  • Dify私有化知识库搭建并通过ChatFlow智能机器人使用知识库的详细操作步骤
  • AlpineLinux安装部署MariaDB
  • 怎样优化HDFS的网络传输
  • WireShark网络取证分析第一集到第五集和dvwa靶场环境分析漏洞
  • TCP/IP模型、OSI模型与C# Socket编程详解
  • xcode-XCTest
  • 领域驱动设计(DDD)【28】之实践或推广DDD的学习
  • leetcode437-路径总和III
  • 什么是RAG检索生成增强?
  • #Redis分布式缓存# ——1.Redis持久化
  • 零基础学习RabbitMQ(5)--工作模式(1)
  • 非常有科技感的wpf GroupBox 控件
  • C/C++数据结构之动态数组
  • 介绍Windows下的由Sysinternals开发的一些小工具
  • 鸿蒙 Swiper 组件解析:轮播交互与动画效果全指南
  • [Android]ANR的线程
  • promise深入理解和使用
  • Bugku——WEB篇(持续更新ing)
  • 【windows如何使用rsync支持断点续传】
  • OSPF(开放最短路径优先)
  • 【记录】服务器多用户共享Conda环境——Ubuntu24.04
  • Windows环境下C语言汇编语言编辑器及环境安装