Heim> Themen> php mysql> Hauptteil

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

coldplay.xixi
Freigeben: 2020-09-05 17:14:16
nach vorne
2263 Leute haben es durchsucht

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 AnweisungCREATE USER, um einen neuen Benutzertestzu erstellen und das Passwort auftestfestzulegen: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;
Nach dem Login kopieren

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

// 授予权限 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';
Nach dem Login kopieren

事务提交/回滚

数据库事务(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;
Nach dem Login kopieren

而如果在最后加上COMMIT

Neuen Benutzer erstellen

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

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

Host ist %, was bedeutet, dass testBenutzer eine Verbindung zum MySQL-Server herstellen können von jedem Host.

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

Neue Benutzer anzeigenDann können wir dieGRANT-Anweisung ausführen, um demtest-Benutzertest Alle Betriebsberechtigungen der Datenbank sind jetzt verfügbar: Neue Benutzerberechtigungen erteilen Nach der Autorisierung müssen Sie flushprivilegien;ausführen, um die Berechtigungen zu aktualisieren, damit Sie diesen Benutzer in der Berechtigungsliste destests sehen könnenDatenbank:Neue Benutzerberechtigungen anzeigenWenn wir den aktuellen Anmeldestatus verlassen, test-Benutzer anmeldet, kann er nur dietest-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 AnweisungREVOKEvervollständigt: rrreeeHier werden alle Berechtigungen ausgeführt, und es können auch bestimmte Berechtigungen ausgeführt werden angegeben: rrreeeTransaktionsübermittlung/-rollbackDatenbanktransaktion 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 SieBEGINzum Öffnen einer Transaktion undCOMMITzum 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 AnweisungROLLBACKzurückgesetzt werden. Wir demonstrieren kurz die Funktionsweise von Datenbanktransaktionen in der Befehlszeile:

Demonstration der DatenbanktransaktionWir haben die Transaktion über die AnweisungBEGINgestartet, aber nach der Ausführung mehrerer Anweisungen kam der BefehlCOMMITSenden 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 DatenbanktransaktionWenn SieROLLBACKnach der obigen SQL-Sequenz hinzufügen, um die Transaktion zurückzusetzen, ist der Effekt wie folgt dasselbe: rrreeeUnd wenn Sie dieCOMMIT-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,maxundmin.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 überasangeben. Hier enthält die Tabellepostinsgesamt drei Datensätze , daher lautet das Abfrageergebnis „3“.

SUM

sumkann verwendet werden, um ein bestimmtes Feld in den statistischen Abfrageergebnissen zu summieren, daher kann es nur für numerische Felder verwendet werden, hier sind wirpostDer Tabelle wird ein neues Feldviewshinzugefügt, in dem die Anzahl der Ansichten des entsprechenden Artikeldatensatzes gespeichert wird. Fügen Sie in der Tabellenstrukturpostnach dem Feldcontentein neues Feld hinzu und klicken Sie auf „Ausführen“:

Neues Datentabellenfeld

Setzen Sie den Feldnamen auf viewsund legen Sie den Typ auf UNSIGNED INT
, der eine nicht negative Ganzzahl darstellt, und der Standardwert ist auf 0gesetzt. 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 viewseinen Standardwert hat, ist der views-Wert aller Datensätze derzeit 0:
Sie können es auf „durch“ setzen die Funktion „Bearbeiten“ Entsprechender Simulationswert: Datentabellenfeldwert ändernAls nächstes können wir die Ergebnisse mit der Funktion sumzusammenfassen: sum Statistics

AVG

avgkann verwendet werden, um den Durchschnittswert eines Feldes in den Abfrageergebnissen zu zählen, und sumist 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 AggregatfunktionenWenn es sich um eine Zahl handelt, die nicht teilbar ist, ist der Durchschnitt auf vier Dezimalstellen genau .

MAX

maxkann 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 queryMySQL-Befehl Da die Zeile standardmäßig verstümmelte chinesische Zeichen verwendet, können wir set name utf8mb4; übergeben. Stellen Sie den Kodierungstyp auf utf8mb4ein, damit chinesische und Emoji-Emoticons normal angezeigt werden können. Darüber hinaus wird hier auch das Konzept der Unterabfrageverwendet, 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 maxwird die Funktion minverwendet, 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: ZusammenfassungOkay, 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/21656Wenn 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!

Verwandte Etiketten:
Quelle:xueyuanjun.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!