数据库管理的艺术(MySQL):DDL、DML、DQL、DCL及TPL的实战应用(下:数据操作与查询)

文章目录

  • DML数据操作语言
    • 1、新增记录
    • 2、删除记录
    • 3、修改记录
  • DQL数据查询语言
    • 1、查询记录
    • 2、条件筛选
    • 3、排序
    • 4、函数
    • 5、分组条件
    • 6、嵌套
    • 7、模糊查询
    • 8、limit分页查询
  • 集合操作`union`
  • 关键字和运算符
    • in关键字
    • any关键字
    • some关键字
    • all关键字
  • 联合查询
    • 1、广义笛卡尔积
    • 2、等值连接
    • 3、外连接
    • 4、内连接(自连接)
  • 常用SQL
  • 总结
    • SQL分类
    • DDL - 数据定义语言
    • DML - 数据操作语言
    • DQL - 数据查询语言
    • TPL - 事务处理语言
    • 列的约束
    • 常用SQL语句
    • DCL - 数据控制语言

MySQL基础知识:DDL、DML、DQL、DCL及TPL的使用

  • DDL用于创建、修改和删除数据库及表;
  • DML执行数据的增删改操作;
  • DQL主要用于数据检索,包括基本查询、条件筛选、排序、分组、嵌套查询等功能;
  • DCL负责权限管理,如授权和撤销访问权限;
  • TPL处理事务,确保数据操作一致性。
  • SQL关键词如INSERT, DELETE, UPDATE, SELECT, WHERE, ORDER BY, GROUP BY, UNION, IN, LIKE, LIMIT以及事务控制语句BEGIN, COMMIT, ROLLBACK等,构成核心操作集。
  • 表约束如主键、唯一、非空和外键,保障数据完整性。常用SQL如SHOW DATABASES, USE, SHOW TABLES等,方便数据库和表的管理。

SQL分类
在这里插入图片描述

DML数据操作语言

操作的是表中的数据信息

1、新增记录

insert into 表名 (列名, ......, 列名) values (, ......,);

注意:

  1. 如果新增全部列,可以省略表名后的括号及内容,此时values后的值的个数、类型、顺序要与表中列保持一致。
  2. 若想要一条insert语句新增多个记录,每个 (值, …, 值) 之间用逗号隔开。

2、删除记录

delete from 表名 [where ....] ;

没有where条件会删除表中所有数据

3、修改记录

update 表名 set=, ... ,=[where ...] ;

没有where条件会将对应的列的数据全部都修改

DQL数据查询语言

1、查询记录

select 列名, ... , 列名 from 表名 [where ...] ;

需要起别名使用as关键字 列名as 别名

去重使用关键字distinct

根据列去重复,如果有一样的列信息,将一样的信息合并,行数可能会减少。

distinct 列1,列2 两个列以上的,会当作一个整体,整体一样的才去重,否则全部显示。

2、条件筛选

用来筛选符合条件的记录行,并不是控制显示的列。

按照某个列或某些条件进行筛选

使用where关键字,其后可以跟:

  1. 比较运算符:>>=<<=!==
  2. 算术运算符:+-*/
  3. 逻辑运算符:andornot(如果andor同时出现,and优先级更高)
  4. [not] between ... and ...
  5. [not] in (... , ...)
  6. [not] like %xxx_(% 匹配0~n个字符,_ 仅匹配一个字符)

3、排序

order by 列名 asc/desc(连接在查询语句后,先筛选再排序)

asc 升序 (默认)

desc 降序

联合排序:

order by 列名1, 列名2

按书写顺序依次排序,不同的列可以有不同的排序规则

4、函数

  1. MySQL的函数都有返回值,但不一定都有参数列表。

  2. 函数直接放置在SQL语句中相当于调用,可以放置在:

    • 查询中用来显示的部分select 函数(列) from 表名;
    • 条件筛选where的后面
      在这里插入图片描述

5、分组条件

group by 列

一旦搭配了分组条件,select能展示的信息就只有两种:

  1. 分组条件(按什么分组就可显示什么)
  2. 聚合函数(结果就剩一个值)

查询时分组了,查询的行数会减少。

比如按班级分组统计每个班的人数,那么原来可能有多个班级数据,一个班级可能又有多条学生数据,但现在查询出来就一个班级一条数据,统计着每个班级的人数。

先分组?还是先筛选条件?

  1. 先筛选后分组:where + group by
  2. 先分组再筛选:group by + having
  3. 先筛选一部分后分组,分完组再筛选符合条件的:where + group by + having

优先级:where > group by > having > order by

6、嵌套

一个完整的SQL语句中嵌套了另一个完整的SQL语句(用括号括起来优先级更高)

  1. 嵌套可以将一个查询的结果当作另一个查询的条件来使用(同一张表格)
  2. 可以将查询的结果当作一张表格,在这个表格的基础上再次查询
    注意:在将结果当作表格时,需要给这个表格起别名才能用(表别名不需要as关键字,空格即可)
  3. 嵌套将一个查询结果当作条件时,使用的表格可以不是同一张,将另外一张表格查询的信息,当作当前表格的查询条件。(即:与第1点不同在于是可以不同表格)

7、模糊查询

使用like关键字

% :表示任意 0 个或多个字符。

_: 表示任意单个字符。

8、limit分页查询

语法:select * from xxx limit a,b;

a:想要显示的起始行索引,偏移量从0开始(包括此行)。
b:想要显示的行数(多少条记录)。

集合操作union

union连接两条查询语句,将两个查询结果进行合并(是那种上下拼合的效果)

  1. 要求前后两个查询子集的列数一致
  2. 对应的类型没有要求
  3. 拼接后显示的列名是前一个查询子集默认的列名

unionunion all的区别:

  1. union 合并后做去重复的处理,性能比较慢,如果有重复元素,记录的是第一次出现的那一行。
  2. union all 将两个查询到的子集直接合并,不做任何处理,性能比较快。

关键字和运算符

in关键字

in() 括号内是待查询的子集,满足下面一个即可:

  1. 常量固定值
  2. 另一条SQL语句查询出来的结果

默认以=进行比较

以下三个关键字使用与in相似,查询是否满足子集中的条件,区别在于不允许写固定值,只允许写SQL语句,通过嵌套来获取子集。

any关键字

满足查询子集中的某一个即可

some关键字

any一样

all关键字

满足查询子集中的全部才可以

联合查询

1、广义笛卡尔积

将两张表格或多张表格,进行无条件的拼接。(即使两张表格没有关系也可以进行拼接)

语法:select * from A , B

列的个数 :A和B表之和,A数据在左边显示,B数据在右边显示(按上述语法)

行的个数 :A和B表乘积

2、等值连接

语法:select * from A , B where 条件

在拼接后的一张大表格的基础上进行了where的筛选 -> 等值连接

在笛卡尔积的基础上进行了where条件筛选,只不过筛选条件都是按照值相等来进行的。

拼接后相当于在一张大的表格中挑选有用的记录,性能比较慢。

3、外连接

外连接分为左外连接和右外连接。

语法:select * from A left/right [outer] join B on 条件

可省略outer关键字

  1. 两张表格A和B ,谁的数据在左边显示?

    A和B表格出现的顺序决定了 谁在左边 谁在右边

    A表格先出现,A左边显示

    B表格后出现,B右边显示

  2. leftright来决定以哪一个表格的数据作为基准

    作为基准的表格数据必须全部显示出来

    非基准的表格按照on条件与之拼接,若找到则正常显示,若找不到满足条件的则显示 null。

因此,外连接查询结果有可能比等值连接的最终结果多一部分数据。

4、内连接(自连接)

语法:select * from A inner join B on 条件

特点:

  1. 查询出的结果与等值连接的结果一致。
  2. 内连接不分左右,不能省略inner关键字。
  3. A和B是可以不同的两张表格。
  4. A和B也可以是相同的一张表格,但必须给表格起别名,可能还需要当前的表格有一定的设计。

常用SQL

# 显示有哪些database
show databases; #使用哪个数据库
use database名字;# 显示当前数据库有哪些table
show tables;# 查询数据库的字符集
select schema_name, default_character_set_name from information_schema.schemata where schema_name = `查询的数据库名`;# 查询表格信息
show table status from 数据库名 like `表名`;#查看表有什么约束
desc 表名;
show keys from 表名;
show create table 表名;

总结

SQL分类

  • DDL (Data Definition Language):用于定义数据库对象,如创建、修改、删除数据库或表。
  • DML (Data Manipulation Language):用于操作表中的数据,包括插入、更新和删除。
  • DQL (Data Query Language):主要用于查询数据,即SELECT语句。
  • DCL (Data Control Language):用于控制用户权限,如GRANT和REVOKE命令。
  • TPL (Transaction Processing Language):用于处理事务,确保数据操作的完整性和一致性。

DDL - 数据定义语言

  • 创建数据库:CREATE DATABASE
  • 创建表:CREATE TABLE
  • 修改表结构:ALTER TABLE
  • 删除表或数据库:DROP TABLE, DROP DATABASE
  • 数据类型:如INT, VARCHAR, DATE等。

DML - 数据操作语言

  • 插入记录:INSERT INTO
  • 删除记录:DELETE FROM
  • 更新记录:UPDATE

DQL - 数据查询语言

  • 查询记录:SELECT
  • 条件筛选:WHERE
  • 排序:ORDER BY
  • 函数:如COUNT(), SUM()等。
  • 分组:GROUP BY
  • 嵌套查询:IN, ANY, ALL
  • 模糊查询:LIKE
  • 分页查询:LIMIT
  • 集合操作:UNION

TPL - 事务处理语言

  • 事务特性:原子性(Atomicity), 一致性(Consistency), 隔离性(Isolation), 持久性(Durability)
  • 事务操作:BEGIN, COMMIT, ROLLBACK
  • 隔离级别:SERIALIZABLE, REPEATABLE READ, READ COMMITTED, READ UNCOMMITTED

列的约束

  • 主键约束:PRIMARY KEY
  • 唯一约束:UNIQUE KEY
  • 非空约束:NOT NULL
  • 检查约束:CHECK (MySQL中不常用)
  • 外键约束:FOREIGN KEY

常用SQL语句

  • 查看数据库:SHOW DATABASES
  • 使用数据库:USE
  • 查看表:SHOW TABLES
  • 查看表信息:SHOW TABLE STATUS, DESCRIBE, SHOW KEYS, SHOW CREATE TABLE

DCL - 数据控制语言

  • 用户管理:创建、修改、删除用户
  • 权限管理:GRANT, REVOKE
  • 查看权限:SHOW GRANTS
  • 修改密码:UPDATE mysql.user
  • 删除用户:DROP USER

这些语言和命令构成了MySQL的核心功能,涵盖了从数据建模到数据操作、数据查询和数据安全性管理的各个方面。掌握这些知识能够帮助你有效地管理和操作数据库。

相关文章:
《数据库管理的艺术(MySQL):DDL、DML、DQL、DCL及TPL的实战应用(上:数据定义与控制)》

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

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

相关文章

【事件排查】网络问题排查H3C无线优化方案

目录 背景 问题一 排查思路 解决方法 问题二 排查思路 解决方法 背景 公司进行搬迁&#xff0c;网络进行了调整 基于上篇文章《H3C Intelligent Management Center无线认证新增设备如何配置》 来做了一些网络配置&#xff0c;公司后续出现以下2个问题&#xff1a; …

在Linux系统安装MySQL有多简单

MySQL 是一种流行的开源关系数据库管理系统&#xff0c;广泛应用于各种类型的应用程序和服务。本文将介绍在 Linux 上安装 MySQL 的多种方式&#xff0c;包括离线安装、使用 Docker 容器、通过 Helm Chart 安装在 Kubernetes 集群中等。 前言 无论你是在开发环境中测试&#…

设计模式-概述*

1.代码的质量的评判 可维护性&#xff1a;不破坏原有代码设计以及不引入新的bug的前提下&#xff0c;能够快速修改或新增代码&#xff1b;可读性&#xff1a;人类能理解的代码&#xff08;编程规范-命名、函数是否冗长、类是否过大等&#xff09;&#xff1b;可扩展性&#xff…

奥运火炬的三次传递 品牌精神的传承赓续丨陈忠伟董事长巴黎传递奥运圣火

7月14号&#xff0c;2024年巴黎奥运火炬在巴黎传递&#xff0c;中国企业家、恒源祥集团董事长兼总经理陈忠伟作为火炬手参与了传递&#xff0c;这也是他第三次参加奥运火炬的传递。 &#xff08;陈忠伟董事长点燃火炬&#xff09; 恒源祥从上世纪80年代起就开始赞助体育赛事&a…

持续集成04--Jenkins结合Gitee创建项目

前言 在持续集成/持续部署&#xff08;CI/CD&#xff09;的旅途中&#xff0c;Jenkins与版本控制系统的紧密集成是不可或缺的一环。本篇“持续集成03--Jenkins结合Gitee创建项目”将引导如何将Jenkins与Gitee&#xff08;一个流行的Git代码托管平台&#xff09;相结合&#xff…

C#实现自定义标签的设计和打印

背景:最近在进行资产盘点的时候,需要对固定资产设计标签并进行打印。 设计标签:选用的是Fastreport自带的,可拆包忌用的标签设计器;进行标签的模型设计。 软件解压后可直接进行使用。模板的设计基本都是无脑操作,拖拽控件按,放置到固定未知即可;我设计的模板如下: 说…

图示 JVM 可达性分析算法

可达性分析算法&#xff1a; 以 GC Roots 为起始点进行搜索&#xff0c;可达的对象都是存活的&#xff0c;不可达的对象可被回收。 Java 虚拟机使用该算法来判断对象是否可被回收&#xff0c;GC Roots 一般包含以下内容&#xff1a; 虚拟机栈中局部变量表中引用的对象本地方法栈…

MySQL字符串魔法:拼接、截取、替换与定位的艺术

在数据的世界里&#xff0c;MySQL作为一把强大的数据处理利剑&#xff0c;其字符串处理功能犹如魔术师手中的魔法棒&#xff0c;让数据变换自如。今天&#xff0c;我们就来一场关于MySQL字符串拼接、截取、替换以及查找位置的奇幻之旅&#xff0c;揭开这些操作的神秘面纱。 介绍…

【Java面向对象】面向对象思考

文章目录 1.类的抽象和封装2.面向对象的思想3.类的关系3.1 关联3.2 聚集和组合 4.包装类4.1 Integer和Double4.2 自动装箱和自动拆箱4.3 Biginteger 和 BigDecimal类4.4 String 类4.4.1 创建4.4.2 不可变字符串与驻留字符串4.4.3 替换和拆分字符串4.4.4 使用模式匹配、替换和拆…

美式键盘 QWERTY 布局的起源

注&#xff1a;机翻&#xff0c;未校对。 The QWERTY Keyboard Is Tech’s Biggest Unsolved Mystery QWERTY 键盘是科技界最大的未解之谜 It’s on your computer keyboard and your smartphone screen: QWERTY, the first six letters of the top row of the standard keybo…

基于计算机视觉的工地钢筋计数

手动钢筋计数是一项耗时的任务&#xff0c;而且容易出错和不一致。但是&#xff0c;你可以使用计算机视觉自动进行钢筋计数。你可以使用经过微调的计算机视觉模型来计算单个钢筋&#xff0c;这对于构建库存管理和质量验证系统非常有用 在这篇博文中&#xff0c;我们将学习如何…

生成树(STP)协议

一、生成树的技术背景 1、交换机单线路上链,存在单点故障,上行线路及设备都不具备冗余性,一旦链路或上行设备发生故障,网络将面临断网。 总结:以下网络不够健壮,不具备冗余性。 2、因此引入如下网络拓扑结构: 上述冗余拓扑能够解决单点故障问题,但同时冗拓扑也带来了…

【Godot4.2】MLTag类:HTML、XML通用标签类

概述 HTML和XML采用类似的标签形式。 之前在Godot中以函数库形式实现了网页标签和内容生成。能用&#xff0c;但是缺点也很明显。函数之间没有从属关系&#xff0c;但是多有依赖&#xff0c;而且没有划分出各种对象和类型。 如果以完全的面向对象形式来设计标签类或者元素类…

opencv学习:图像视频的读取截取部分图像数据颜色通道提取合并颜色通道边界填充数值计算图像融合

一、计算机眼中的图像 1.图像操作 构成像素点的数字在0~255之间 RGB叫做图像的颜色通道 h500&#xff0c;w500 2.灰度图像 3. 彩色图像 4.图像的读取 5.视频的读取 cv2.VideoCapture()--在OpenCV中&#xff0c;可以使用VideoCapture来读取视频文件&#xff0c;或是摄像头数…

华为USG6000V防火墙安全策略用户认证

目录 一、实验拓扑图 二、要求 三、IP地址规划 四、实验配置 1&#x1f923;防火墙FW1web服务配置 2.网络配置 要求1&#xff1a;DMZ区内的服务器&#xff0c;办公区仅能在办公时间内(9:00-18:00)可以访问&#xff0c;生产区的设备全天可以访问 要求2&#xff1a;生产区不…

集群架构-web服务器(接入负载均衡+数据库+会话保持redis)--15454核心配置详解

紧接着前面的集群架构深化—中小型公司&#xff08;拓展到大型公司业务&#xff09;–下面图简单回顾一下之前做的及故障核心知识总结&#xff08;等后期完全整理后&#xff0c;上传资源希望能帮大家&#xff09; web集群架构-接入负载均衡部署web02服务器等 web集群-搭建web0…

拒绝废话:computed、watch和methods的区分和使用场景

computed、watch和methods是用于处理数据和响应数据变化的不同方式&#xff0c;三者之间有什么不同呢&#xff0c;贝格前端工场作为10年前端老司机&#xff0c;用浅显的语言给大家分享一下。 computed&#xff1a; computed属性是用来定义一个基于依赖的响应式属性。它会根据…

OrangePi 学习摘录

文章目录 1. 参考2. 开发板 Orange-Pi-CM4 预览3. 烧录 Linux 镜像到 TF 卡中4. 制作桌面版镜像qemu/chroot 5. Armbian6. 编译 1. 参考 淘宝 香橙派官网 Orange-Pi-3B Orange-Pi-CM4 基于docker构建香橙派zero系统构建环境 2. 开发板 Orange-Pi-CM4 预览 3. 烧录 Linux 镜像…

微信小程序基本语法

官网 https://developers.weixin.qq.com/miniprogram/dev/framework/ 视频教程&#xff1a;尚硅谷微信小程序开发教程&#xff0c;2024最新微信小程序项目实战&#xff01; 仿慕尚花坊项目源码&#xff1a;https://gitee.com/abcdfdewrw/flower-workshop 目录 一&#xff0c;初…

【深度学习】BeautyGAN: 美妆,化妆,人脸美妆

https://www.sysu-hcp.net/userfiles/files/2021/03/01/3327b564380f20c9.pdf 【深度学习】BeautyGAN: Instance-level Facial Makeup Transfer with Deep Generative Adversarial Network BeautyGAN: Instance-level Facial Makeup Transfer with Deep Generative Adversaria…