目录
[1.3.1使用ORDER BY子句对查询结果进行排序。](#1.3.1使用ORDER BY子句对查询结果进行排序。)
1.3.2可以按一个或多个列进行排序,并指定排序方向(升序ASC或降序DESC)
[2.1 增加数据(INSERT)](#2.1 增加数据(INSERT))
[2.2. 修改数据(UPDATE):](#2.2. 修改数据(UPDATE):)
[2.3. 删除数据(DELETE)](#2.3. 删除数据(DELETE))
[3. DCL(数据控制语言,Data Control Language):](#3. DCL(数据控制语言,Data Control Language):)
[4.1NOT NULL:](#4.1NOT NULL:)
[4.3PRIMARY KEY:](#4.3PRIMARY KEY:)
[4.4FOREIGN KEY:](#4.4FOREIGN KEY:)
前言:
我们已经学习了关于MySQL数据库的的DDL,今天我们将要继续去学习关于DQL的知识点了,关于这个知识我先解释一下关于这两者的区别:DQL专注于查询和检索数据库中的数据,而DDL则负责定义和更改数据库的结构和对象。其实以上都是个人关于学习的意点个人的见解,难免会有些遗漏欢迎大家的指正也欢迎大家在评论区和谐讨论。
1.DQL(数据查询语言):
在DQL(数据查询语言)中,主要关注的是如何从数据库中检索和操作数据。DQL是SQL(结构化查询语言)的一个子集,专注于数据查询方面。
1..1基本查询:
1.1.1使用SELECT
语句从数据库表中检索数据。
python
select * from 表名;
或者查询表中部分字段数据:
1.1.2可以指定要检索的列(字段)和要从中检索数据的表。
python
select (选择)字段1, 字段2 from 表名;
1.1.2可以使用*
通配符来选择所有列。
1.2条件查询:
1.1.1使用WHERE
子句来指定筛选条件,只返回满足条件的行。
1.1.2可以使用比较运算符(如=
, <>
, >
, <
, >=
, <=
)和逻辑运算符(如AND
, OR
, NOT
)来构建复杂的条件。
|-------------------------|---------------------------------|
| >,<,>=,<=,=,<>,!= | 大于,小于,大于等于,小于等于,不等于,不等于 |
| between...and... | 显示在某一个区间的值(头尾都包含) |
| in(set) | 显示在集合内的值, 例如:in(10,20, 30) |
| like '字符' | %代表零个或任意多个字符 _代表一个字符 like '_好%' |
| is null/is not null | 判断为空/不为空 |
| and,or,not | 逻辑运算符 |
1.3排序查询:
1.3.1使用ORDER BY
子句对查询结果进行排序。
通过order by,将查询出来的结果进行排序,放在select语句的最后
1.3.2可以按一个或多个列进行排序,并指定排序方向(升序ASC
或降序DESC
)
select * from 表名 order by 排序字段 asc/desc
默认是升序(asc)
。
1.4聚合查询:
1.4.1使用聚合函数(如SUM()
, AVG()
, COUNT()
, MAX()
, MIN()
等)对一组值进行计算并返回单个值。
1.4.2通常与GROUP BY
子句一起使用,将数据分组后进行聚合计算。
这是几个常见的聚合查询:
1.count:统计指定列不为null的记录行数,
2.sum:计算指定列的和,如果指定列的类型不是数字类型,那么结果是0
3.max:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算
4.min:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算
5.avg:计算指定列的平均值,如果指定列的类型不是数字类型,那么结果是0
1.5分组查询:
1.5.1 使用GROUP BY
子句将表中的行分组,基于一个或多个列的值。
通过group by对查询的信息进行分组,分组之后(而where是在分组之前的查询信息)只能查询分组的字段和聚合查询
select 字段 from 表名 group by 分组字段 having 条件;
having和where的区别:having是在分组后对数据进行过滤,where是在分组前对数据进行过滤;
having后面可以使用聚合函数(在Python中,聚合函数是指可以对一组值执行计算,并返回单个值的函数。Python中的聚合函数主要包括sum()、max()、min()、mean()(平均值)、count()等。这些函数通常用于对数据列表、元组或集合进行操作,以获得关于这些数据的统计信息。)过滤数据,where不可以,
分组就是将一样的数据放到一样的表格里面进行查询
1.5.2分组后,可以使用聚合函数对每个组进行计算。
1.5.3 可以使用HAVING
子句对分组后的结果进行过滤,类似于WHERE
子句但用于分组后的数据。
1.6分页查询:
1.6.1用于限制查询结果返回的行数,通常用于分页显示数据。
1.6.2不同的数据库系统有不同的分页查询语法。例如,在MySQL中使用LIMIT
和OFFSET
关键字,而在SQL Server中使用OFFSET
和FETCH
子句。
python
select 字段 from 表名 limit m, n
m:表示第几条索引开始
n:表示查询多少条数据
1.7连接查询:
使用JOIN
语句将多个表中的数据组合在一起,基于它们之间的相关列进行匹配。
存在多种类型的连接,如内连接(INNER JOIN)、左外连接(LEFT JOIN)、右外连接(RIGHT JOIN)和全外连接(FULL JOIN)等。
1.8子查询:
子查询可以在SELECT
, FROM
, 或 WHERE
子句中使用。
一个查询可以嵌套在另一个查询中,作为外部查询的条件、数据源或用于计算的值等。
1.9别名使用:
使用AS
关键字为列或表指定别名,使查询结果更易读或简化查询语句的编写。在某些情况下,AS
关键字可以省略。
1.10去除重复数据:
使用DISTINCT
关键字去除查询结果中的重复行。
去掉重复的数据:distinct
2..DML(数据操纵语言DML):
DML(数据操纵语言,Data Manipulation Language)是SQL(结构化查询语言,Structured Query Language)的一个子集,主要用于对数据库中的数据进行增删改查等操作。DML的主要语句包括INSERT、UPDATE、DELETE和SELECT。不过,SELECT通常也被归类为DQL(数据查询语言,Data Query Language),因为它主要用于查询数据,而不直接修改数据。
2.1 增加数据(INSERT)
向表中所有字段插入数据:
python
INSERT INTO 表名 VALUES (值1, 值2, 值3, ...);
向表中指定字段插入数据:
python
INSERT INTO 表名 (字段1, 字段2, 字段3, ...) VALUES (值1, 值2, 值3, ...);
2.2. 修改数据(UPDATE):
更新表中的数据:
python
UPDATE 表名 SET 字段1 = 值1, 字段2 = 值2, ... WHERE 条件;
2.3. 删除数据(DELETE)
从表中删除数据:
python
DELETE FROM 表名 WHERE 条件;
3. DCL(数据控制语言,Data Control Language):
3.1用户管理:
3.1.1查询用户:
例如,在MySQL中,可以使用SELECT * FROM user;
命令来查询所有用户信息(通常需要在mysql
数据库下执行此命令)。
3.1.2创建用户:
使用CREATE USER
命令来创建新的数据库用户。例如,CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
可以创建一个新的用户,并指定其从哪个主机访问以及使用什么密码。
3.1.3修改用户密码:
使用ALTER USER
命令来修改用户的密码。例如,ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';
。
3.1.4删除用户:
使用DROP USER
命令来删除一个数据库用户。例如,DROP USER '用户名'@'主机名';
3.2权限管理:
3.2.1赋予权限:
通过GRANT
命令赋予用户特定的数据库权限。这些权限可以针对整个数据库、特定的表或特定的列,并可以包括如SELECT、INSERT、UPDATE、DELETE等操作。
3.2.2撤销权限:
使用REVOKE
命令来撤销之前赋予用户的数据库权限。
4.sql约束
4.1NOT NULL:
此约束确保某列不能有NULL值。
4.2UNIQUE:
此约束确保某列中的每行都有唯一的值。
4.3PRIMARY KEY:
此约束是NOT NULL和UNIQUE的结合。它确保某列(或两个列或多个列的组合)有唯一标识,有助于更容易、更快速地找到表中的一个特定的记录。
4.4FOREIGN KEY:
此约束用于保证一个表中的数据匹配另一个表中的值。这是为了保持数据的参照完整性。外键字段里的所有数据都必须是另一张表的主键字段里的值。
4.5CHECK:
此约束确保列中的所有值都满足某一条件。例如,可以确保某列的值都大于0。
4.5DEFAULT:
此约束为没有给列赋值的行提供默认值。
结语:
今天我们就先分享到这里了,今天已经介绍完了MySQL数据库的几个语言.关于后面我们就会分享一点关于web前端的内容,如果我的文章存在任何问题欢迎大家指正。