【Verwandte Lernempfehlungen: MySQL-Tutorial(Video)】
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.
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.user
数据表中看到这个用户了:
Host
字段为 %
表示 test
用户可以从任何主机连接到 MySQL 服务器。
或者通过命令行查看(这里用到了 SQL 查询语句):
然后我们就可以运行 GRANT
语句授予 test
用户对 test
数据库的所有操作权限了:
授权后,需要运行 flush privileges;
刷新权限,这样就可以在 test
数据库的权限列表中看到这个用户了:
如果我们退出当前登录状态,以 test
用户登录,就只能看到 test
数据库,因为它对其他数据库没有操作权限:
要撤回权限,需要以 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
语句回滚事务。
我们在命令行中简单演示下数据库事务的操作:
我们通过 BEGIN
语句开启事务,但是在执行多条语句后,没有通过 COMMIT
提交事务,测试执行这几条 SQL 语句,进入「浏览」面板查看,发现并没有插入新的记录:
如果在上述 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
Nachdem die Erstellung abgeschlossen ist, Sie können diesen Benutzer in der Datentabelle mysql.user
sehen:
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): 🎜🎜🎜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: 🎜🎜🎜 🎜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: 🎜
🎜🎜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: 🎜🎜🎜🎜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. 🎜
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
. count
、sum
、avg
、max
和 min
。
count
函数可用于统计查询结果总共有多少条,通常在进行分页查询时需要用到这个函数。为了方便直接看到结果,我们在命令行中进行演示:
在查询字段时为了提高可读性,可以通过 as
指定字段别名,这里 post
表总共有三条记录,所以查询结果是 3
。
sum
可用于统计查询结果中某个字段的求和,因此只能用于数字类型字段,这里我们为 post
表新增一个字段 views
,用于存储对应文章记录的浏览次数。在 post
表结构中,选择在 content
字段后新增一个字段并点击「执行」:
将字段名设置为 views
,并将其类型设置为 UNSIGNED INT
,表示非负整数,同时设置默认值为 0
,对应的 SQL 语句可以通过预览功能查看:
点击「保存」创建这个字段,就可以在表结构中看到它了:
由于 views
有默认值,所以目前所有记录的 views
值都是 0:
可以通过「编辑」功能将其设置为对应的模拟值:
接下来,我们就可以通过 sum
函数对结果进行求和统计了:
avg
可用于统计查询结果中某个字段的平均值,和 sum
一样,也是作用于数字类型字段,比如我们可以通过它来统计所有文章的平均浏览数:
如果是一个不能被整除的数字,平均数会精确到小数点后四位。
max
可用于获取查询结果中某个数字类型字段的最大值,比如要获取浏览数最高的文章信息可以这么做:
MySQL 命令行默认中文乱码,我们可以通过 set names utf8mb4;
将编码类型设置为 utf8mb4
,这样就可以正常显示中文和 Emoji 表情符号了。
另外,这里还用到了子查询的概念,就是将一个查询的结果作为另一个查询的条件,这里我们将最大浏览数作为子查询的结果传递给父查询作为查询条件,获取对应的文章信息。
与 max
相对,min
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:
as
angeben. Hier enthält die Tabelle post
insgesamt drei Datensätze , daher lautet das Abfrageergebnis „3
“. 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“:
views
und legen Sie den Typ auf UNSIGNED INT0
gesetzt. Die entsprechende SQL-Anweisung kann über die Vorschaufunktion angezeigt werden: 🎜🎜🎜Sie können es auf „durch“ setzen die Funktion „Bearbeiten“ Entsprechender Simulationswert: 🎜🎜🎜 🎜Als nächstes können wir die Ergebnisse mit der FunktionDa
views
einen Standardwert hat, ist derviews
-Wert aller Datensätze derzeit 0:
sum
zusammenfassen: 🎜🎜🎜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: 🎜🎜🎜🎜Wenn es sich um eine Zahl handelt, die nicht teilbar ist, ist der Durchschnitt auf vier Dezimalstellen genau . 🎜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: 🎜🎜🎜🎜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. 🎜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!