Heim  >  Artikel  >  Themen  >  MySQL verwendet grundsätzlich (2) DCL-Anweisungen und Aggregatfunktionen

MySQL verwendet grundsätzlich (2) DCL-Anweisungen und Aggregatfunktionen

coldplay.xixi
coldplay.xixinach vorne
2020-09-05 17:14:162398Durchsuche

MySQL verwendet grundsätzlich (2) DCL-Anweisungen und Aggregatfunktionen

【Verwandte Lernempfehlungen: MySQL-Tutorial(Video)】

DCL

DCL ist relativ einfach und wird hauptsächlich zum Gewähren oder Widerrufen von Berechtigungen für den Zugriff auf die Datenbank und das Senden der Datenbank verwendet Transaktionen und Rollback.

Berechtigungen erteilen/entziehen

Nehmen Sie das Erteilen von Berechtigungen als Beispiel: Nachdem wir eine neue Datenbank erstellt haben, möchten wir bestimmten Benutzern Zugriffs- und Betriebsberechtigungen für die Datenbank erteilen (im Allgemeinen aus Sicherheitsgründen die Der Root-Benutzer bedient die Datenbank nicht. Dazu müssen wir zunächst einen bestimmten Benutzer erstellen. SQL-Anweisungen auf Kontrollebene wie DCL werden im Allgemeinen auf der Befehlszeile ausgeführt Geben Sie den MySQL-Docker-Container ein, stellen Sie eine Verbindung zur Datenbank her und übergeben Sie die Anweisung CREATE USER, um einen neuen Benutzer test zu erstellen und das Passwort auf test festzulegen: test,DCL 这种控制级的 SQL 语句一般在命令行执行,我们进入 MySQL Docker 容器,连接到数据库,通过 CREATE USER 语句新建一个 test 用户,同时将密码设置为 test

MySQL verwendet grundsätzlich (2) DCL-Anweisungen und Aggregatfunktionen

创建完成后,就可以在 mysql.user 数据表中看到这个用户了:

MySQL verwendet grundsätzlich (2) DCL-Anweisungen und Aggregatfunktionen

Host 字段为 % 表示 test 用户可以从任何主机连接到 MySQL 服务器。

或者通过命令行查看(这里用到了 SQL 查询语句):

MySQL verwendet grundsätzlich (2) DCL-Anweisungen und Aggregatfunktionen

然后我们就可以运行 GRANT 语句授予 test 用户对 test 数据库的所有操作权限了:

MySQL verwendet grundsätzlich (2) DCL-Anweisungen und Aggregatfunktionen

授权后,需要运行 flush privileges; 刷新权限,这样就可以在 test 数据库的权限列表中看到这个用户了:

MySQL verwendet grundsätzlich (2) DCL-Anweisungen und Aggregatfunktionen权限

如果我们退出当前登录状态,以 test 用户登录,就只能看到 test 数据库,因为它对其他数据库没有操作权限:

MySQL verwendet grundsätzlich (2) DCL-Anweisungen und Aggregatfunktionen

要撤回权限,需要以 root 身份进行,在权限列表删除这个用户,或者在命令行通过 REVOKE 语句完成:

revoke all privideges on test.* from 'test'@'%';
flush privileges;

这里操作的都是所有权限,也可以指定特定的权限:

// 授予权限
grant select on test.* to 'user1'@'localhost';  /*给予查询权限*/
grant insert on test.* to 'user1'@'localhost'; /*添加插入权限*/
grant delete on test.* to 'user1'@'localhost'; /*添加删除权限*/
grant update on test.* to 'user1'@'localhost'; /*添加权限*/

// 收回权限
revoke select on test.* from 'jack'@'localhost';
revoke insert on test.* from 'jack'@'localhost';
revoke delete on test.* from 'jack'@'localhost';
revoke update on test.* from 'jack'@'localhost';

事务提交/回滚

数据库事务(Database Transaction)是指作为单个逻辑工作单元执行的一系列操作(对数据库的相关增删改查的操作,包含一条或多条 SQL 语句),要么完全地执行,要么完全地不执行。

对于单条 SQL 语句,数据库系统自动将其作为一个事务执行,这种事务被称为隐式事务

要手动把多条 SQL 语句作为一个事务执行,可以使用 BEGIN 开启一个事务,使用 COMMIT 提交一个事务,这种事务被称为显式事务,如果事务执行过程中出现错误或异常,可以通过 ROLLBACK 语句回滚事务。

我们在命令行中简单演示下数据库事务的操作:

MySQL verwendet grundsätzlich (2) DCL-Anweisungen und Aggregatfunktionen

我们通过 BEGIN 语句开启事务,但是在执行多条语句后,没有通过 COMMIT 提交事务,测试执行这几条 SQL 语句,进入「浏览」面板查看,发现并没有插入新的记录:

MySQL verwendet grundsätzlich (2) DCL-Anweisungen und Aggregatfunktionen

如果在上述 SQL 序列后加上 ROLLBACK 回滚事务,效果也是一样的:

BEGIN;

INSERT INTO post (`title`, `content, `created_at`) VALUES ('这是一篇测试文章2', '测试内容哈哈哈', '2020-05-26 13:00:00');
INSERT INTO post (`title`, `content, `created_at`) VALUES ('这是一篇测试文章3', '测试内容哈哈哈', '2020-05-26 13:30:00');

ROLLBACK;

而如果在最后加上 COMMIT

Neuen Benutzer erstellen

MySQL verwendet grundsätzlich (2) DCL-Anweisungen und AggregatfunktionenNachdem die Erstellung abgeschlossen ist, Sie können diesen Benutzer in der Datentabelle mysql.user sehen:

Neue Benutzer anzeigenMySQL verwendet grundsätzlich (2) DCL-Anweisungen und Aggregatfunktionen

Host ist <code>%, was bedeutet, dass test Benutzer eine Verbindung zum MySQL-Server herstellen können von jedem Host.

Oder Ansicht über die Befehlszeile (hier wird eine SQL-Abfrageanweisung verwendet): 🎜

Neue Benutzer anzeigen🎜🎜Dann können wir die GRANT-Anweisung ausführen, um dem test-Benutzer test Alle Betriebsberechtigungen der Datenbank sind jetzt verfügbar: 🎜🎜<img src="https://img.php.cn/upload/article/000/000/052/4d9581004f249875671812ca01a3ca7f-3.jpg" alt="Neue Benutzerberechtigungen erteilen ">🎜🎜Nach der Autorisierung müssen Sie <code>flushprivilegien; ausführen, um die Berechtigungen zu aktualisieren, damit Sie diesen Benutzer in der Berechtigungsliste des tests sehen können Datenbank: 🎜🎜Neue Benutzerberechtigungen anzeigen🎜 🎜Wenn wir den aktuellen Anmeldestatus verlassen, test-Benutzer anmeldet, kann er nur die test-Datenbank sehen, da diese keine Betriebsberechtigungen für andere Datenbanken hat: 🎜🎜🎜🎜Um Berechtigungen zu widerrufen, müssen Sie Sie müssen dies als Root tun, diesen Benutzer in der Berechtigungsliste löschen oder den Befehl verwenden. Die Zeile wird durch die Anweisung REVOKE vervollständigt: 🎜rrreee🎜Hier werden alle Berechtigungen ausgeführt, und es können auch bestimmte Berechtigungen ausgeführt werden angegeben: 🎜rrreee🎜Transaktionsübermittlung/-rollback🎜🎜Datenbanktransaktion bezieht sich auf eine Reihe von Vorgängen, die von einer einzelnen logischen Arbeitseinheit ausgeführt werden (Vorgänge im Zusammenhang mit dem Hinzufügen, Löschen, Ändern und Abfragen der Datenbank, einschließlich einer oder mehrerer SQL-Anweisungen). , werden entweder vollständig oder gar nicht ausgeführt. 🎜🎜Eine einzelne SQL-Anweisung wird vom Datenbanksystem automatisch als Transaktion ausgeführt. Diese Transaktion wird als „implizite Transaktion“ bezeichnet. 🎜🎜Um mehrere SQL-Anweisungen manuell als Transaktion auszuführen, können Sie BEGIN zum Öffnen einer Transaktion und COMMIT zum Senden einer Transaktion verwenden. Diese Art von Transaktion wird als 🎜Explizite Transaktion bezeichnet 🎜 Wenn während der Transaktionsausführung ein Fehler oder eine Ausnahme auftritt, kann die Transaktion über die Anweisung ROLLBACK zurückgesetzt werden. 🎜🎜Wir demonstrieren kurz die Funktionsweise von Datenbanktransaktionen in der Befehlszeile: 🎜

Demonstration der Datenbanktransaktion🎜🎜Wir haben die Transaktion über die Anweisung BEGIN gestartet, aber nach der Ausführung mehrerer Anweisungen kam der Befehl COMMIT Senden Sie die Transaktion, testen und führen Sie diese SQL-Anweisungen aus, rufen Sie das Bedienfeld „Durchsuchen“ zum Anzeigen auf und stellen Sie fest, dass keine neuen Datensätze eingefügt wurden: 🎜🎜Demonstration der Datenbanktransaktion🎜🎜Wenn Sie ROLLBACK nach der obigen SQL-Sequenz hinzufügen, um die Transaktion zurückzusetzen, ist der Effekt wie folgt dasselbe: 🎜rrreee🎜Und wenn Sie die COMMIT-Anweisung am Ende hinzufügen, können Sie die Änderung reibungslos übermitteln: 🎜🎜🎜🎜🎜🎜🎜🎜 In Bezug auf gängige SQL-Anweisungen und visuelle Demonstrationen in phpMyAdmin ist dies der Fall Eine kurze Einführung hier, weitere Details, Sie müssen es in Verbindung mit Online-SQL-Tutorials selbst erkunden. Dies ist nicht der Schwerpunkt dieser Tutorialreihe, daher werde ich hier nicht auf Details eingehen. 🎜

Aggregationsfunktionen

Zusätzlich zu gängigen SQL-Abfragen und Operationsanweisungen verfügt SQL auch über einige integrierte Aggregatfunktionen, um eine einfache und bequeme Ergebnisstatistik während der Datenabfrage zu ermöglichen. Hier stellen wir einige gängige Funktionen vor: count, sum, avg, max und min. countsumavgmaxmin

COUNT

count 函数可用于统计查询结果总共有多少条,通常在进行分页查询时需要用到这个函数。为了方便直接看到结果,我们在命令行中进行演示:

MySQL verwendet grundsätzlich (2) DCL-Anweisungen und Aggregatfunktionen

在查询字段时为了提高可读性,可以通过 as 指定字段别名,这里 post 表总共有三条记录,所以查询结果是 3

SUM

sum 可用于统计查询结果中某个字段的求和,因此只能用于数字类型字段,这里我们为 post 表新增一个字段 views,用于存储对应文章记录的浏览次数。在 post 表结构中,选择在 content 字段后新增一个字段并点击「执行」:

MySQL verwendet grundsätzlich (2) DCL-Anweisungen und Aggregatfunktionen

将字段名设置为 views,并将其类型设置为 UNSIGNED INT,表示非负整数,同时设置默认值为 0,对应的 SQL 语句可以通过预览功能查看:

MySQL verwendet grundsätzlich (2) DCL-Anweisungen und Aggregatfunktionen

点击「保存」创建这个字段,就可以在表结构中看到它了:

MySQL verwendet grundsätzlich (2) DCL-Anweisungen und Aggregatfunktionen

由于 views 有默认值,所以目前所有记录的 views 值都是 0:

MySQL verwendet grundsätzlich (2) DCL-Anweisungen und Aggregatfunktionen默认值

可以通过「编辑」功能将其设置为对应的模拟值:

MySQL verwendet grundsätzlich (2) DCL-Anweisungen und Aggregatfunktionen

接下来,我们就可以通过 sum 函数对结果进行求和统计了:

MySQL verwendet grundsätzlich (2) DCL-Anweisungen und Aggregatfunktionen

AVG

avg 可用于统计查询结果中某个字段的平均值,和 sum 一样,也是作用于数字类型字段,比如我们可以通过它来统计所有文章的平均浏览数:

MySQL verwendet grundsätzlich (2) DCL-Anweisungen und Aggregatfunktionen

如果是一个不能被整除的数字,平均数会精确到小数点后四位。

MAX

max 可用于获取查询结果中某个数字类型字段的最大值,比如要获取浏览数最高的文章信息可以这么做:

MySQL verwendet grundsätzlich (2) DCL-Anweisungen und Aggregatfunktionen

MySQL 命令行默认中文乱码,我们可以通过 set names utf8mb4; 将编码类型设置为 utf8mb4,这样就可以正常显示中文和 Emoji 表情符号了。

另外,这里还用到了子查询的概念,就是将一个查询的结果作为另一个查询的条件,这里我们将最大浏览数作为子查询的结果传递给父查询作为查询条件,获取对应的文章信息。

MIN

max 相对,min

COUNT

count-Funktion kann verwendet werden, um die Gesamtzahl der Abfrageergebnisse zu zählen. Diese Funktion wird normalerweise bei der Durchführung von Paging-Abfragen verwendet. Um die Ergebnisse direkt zu sehen, demonstrieren wir in der Kommandozeile:

MySQL verwendet grundsätzlich (2) DCL-Anweisungen und Aggregatfunktionen„count

Um die Lesbarkeit beim Abfragen von Feldern zu verbessern, können Sie Feldaliase über as angeben. Hier enthält die Tabelle post insgesamt drei Datensätze , daher lautet das Abfrageergebnis „3“.

SUM

sum kann verwendet werden, um ein bestimmtes Feld in den statistischen Abfrageergebnissen zu summieren, daher kann es nur für numerische Felder verwendet werden, hier sind wir post Der Tabelle wird ein neues Feld views hinzugefügt, in dem die Anzahl der Ansichten des entsprechenden Artikeldatensatzes gespeichert wird. Fügen Sie in der Tabellenstruktur post nach dem Feld content ein neues Feld hinzu und klicken Sie auf „Ausführen“:

Neues Datentabellenfeld

Setzen Sie den Feldnamen auf views und legen Sie den Typ auf UNSIGNED INT
, der eine nicht negative Ganzzahl darstellt, und der Standardwert ist auf 0 gesetzt. Die entsprechende SQL-Anweisung kann über die Vorschaufunktion angezeigt werden:
Neues Datentabellenfeld

Klicken Sie auf „Speichern“, um dieses Feld zu erstellen, und Sie können es zur Tabellenstruktur hinzufügen. Gesehen:

Neues Datentabellenfeld

Da views einen Standardwert hat, ist der views-Wert aller Datensätze derzeit 0:
🎜🎜🎜Sie können es auf „durch“ setzen die Funktion „Bearbeiten“ Entsprechender Simulationswert: 🎜🎜Datentabellenfeldwert ändern 🎜 🎜Als nächstes können wir die Ergebnisse mit der Funktion sum zusammenfassen: 🎜🎜sum Statistics🎜

AVG

🎜avg kann verwendet werden, um den Durchschnittswert eines Feldes in den Abfrageergebnissen zu zählen, und sum ist dasselbe und funktioniert auch bei numerischen Feldern. Wir können es beispielsweise verwenden, um die durchschnittliche Anzahl der Aufrufe aller Artikel zu zählen: 🎜🎜MySQL verwendet grundsätzlich (2) DCL-Anweisungen und Aggregatfunktionen🎜🎜Wenn es sich um eine Zahl handelt, die nicht teilbar ist, ist der Durchschnitt auf vier Dezimalstellen genau . 🎜

MAX

🎜max kann verwendet werden, um den Maximalwert eines numerischen Felds in den Abfrageergebnissen abzurufen, um beispielsweise die Artikelinformationen mit der höchsten Anzahl an Ansichten abzurufen. Sie können dies tun: 🎜🎜max query🎜🎜MySQL-Befehl Da die Zeile standardmäßig verstümmelte chinesische Zeichen verwendet, können wir set name utf8mb4; übergeben. Stellen Sie den Kodierungstyp auf utf8mb4 ein, damit chinesische und Emoji-Emoticons normal angezeigt werden können. 🎜🎜Darüber hinaus wird hier auch das Konzept der Unterabfrage verwendet, bei dem das Ergebnis einer Abfrage als Bedingung für eine andere Abfrage verwendet wird. Hier übergeben wir die maximale Anzahl von Ansichten als Ergebnis Unterabfrage an die übergeordnete Abfrage als Abfragebedingungen, um die entsprechenden Artikelinformationen zu erhalten. 🎜

MIN

🎜Relativ zu max wird die Funktion min verwendet, um den Mindestwert eines numerischen Felds im Abfrageergebnis zu erhalten, z Anzahl der Aufrufe Die Mindestinformationen für den Artikel können wie folgt lauten: 🎜🎜🎜🎜🎜Zusammenfassung🎜🎜Okay, was die grundlegenden Abfragen, Vorgänge und Statistiken der MySQL-Datenbank betrifft, werden wir sie hier meiner Meinung nach kurz vorstellen von MySQL und seinen Operationen. Im nächsten Tutorial stellen wir Ihnen vor, wie Sie in PHP eine Verbindung zur MySQL-Datenbank herstellen und einige komplexere Vorgänge wie Paging, Gruppierung, Verbindungsabfrage, Zuordnungsbeziehung und Indexeinstellung durchführen und Anwendung werden wir es in nachfolgenden Tutorials besprechen und anhand konkreter Beispiele demonstrieren. 🎜🎜Dieser Artikel stammt von https://xueyuanjun.com/post/21656🎜🎜🎜🎜🎜Wenn Sie weitere verwandte Artikel erfahren möchten, achten Sie bitte auf die Spalte 🎜php mysql🎜! 🎜🎜🎜

Das obige ist der detaillierte Inhalt vonMySQL verwendet grundsätzlich (2) DCL-Anweisungen und Aggregatfunktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:xueyuanjun.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen

In Verbindung stehende Artikel

Mehr sehen