Die grundlegende Funktionsweise der Daten im siebten Teil der Tabelle

1. Volltextsuche

Einführung: Obwohl das Schlüsselwort LIKE Platzhalter verwenden kann, um Text abzugleichen, können reguläre Ausdrücke mit Spaltenwerten übereinstimmen und somit nach den benötigten Informationen suchen. Sie haben jedoch einige wichtige Einschränkungen: Eine ist die Leistung. Bei der Zuordnung von Platzhaltern und regulären Ausdrücken muss MySQL normalerweise versuchen, alle Zeilen in der Tabelle abzugleichen. Wenn die Anzahl der Suchzeilen weiter zunimmt, können diese Suchvorgänge sehr zeitaufwändig sein. Zweitens klare Kontrolle. Mithilfe von Platzhaltern und Übereinstimmungen mit regulären Ausdrücken ist es schwierig, explizit zu steuern, was übereinstimmt und was nicht. Wenn Sie beispielsweise angeben, dass ein Wort übereinstimmen muss, darf ein Wort nicht übereinstimmen, und ein Wort kann nur übereinstimmen, wenn das erste Wort übereinstimmt Oder es kann nicht übereinstimmen. Drittens das Ergebnis der Intelligenz. Obwohl die Suche anhand von Platzhaltern und regulären Ausdrücken eine sehr flexible Suche bietet, kann keine von beiden eine intelligente Möglichkeit zur Auswahl von Ergebnissen bieten. Beispielsweise gibt eine Suche nach einem bestimmten Wort alle Zeilen zurück, die das Wort enthalten, ohne zwischen Zeilen zu unterscheiden, die eine einzelne Übereinstimmung enthalten, und Zeilen, die mehrere Übereinstimmungen enthalten. In ähnlicher Weise werden bei einer Suche nach einem bestimmten Wort keine Zeilen gefunden, die das Wort nicht enthalten, aber andere verwandte Wörter enthalten. Aus diesem Grund kann die Volltextsuche diese Einschränkungen lösen. Bei Verwendung der Volltextsuche muss MySQL nicht jede Zeile einzeln anzeigen und nicht jedes Wort einzeln analysieren und verarbeiten. Auf diese Weise kann MySQL schnell und effektiv entscheiden, welche Wörter übereinstimmen, welche Wörter nicht übereinstimmen, wie oft sie übereinstimmen usw. Um eine Volltextsuche durchzuführen, muss die gesuchte Spalte indiziert und bei Änderungen der Daten kontinuierlich neu indiziert werden.

1. Volltextsuche aktivieren : Aktivieren Sie im Allgemeinen die Volltextsuche beim Erstellen einer Tabelle. Verwenden Sie nach der Indizierung zwei Funktionen Match () und Against (), um eine Volltextsuche durchzuführen, wobei Match () die gesuchte Spalte Against () angibt. Geben Sie den zu verwendenden Suchausdruck an.

Beispiel 1: Erstellen Sie eine Tabelle mit Produktnotizen, listen Sie die darin enthaltenen Spalten auf und indizieren Sie die Spalte note_text, um eine Volltextsuche durchzuführen.

SQL-Anweisung:

CREATE TABLE Produktnotizen

(

note_id int NOT NULL AUTO_INCREMENT,

prod_id char (10) NICHT NULL,

note_data datatime NOT NULL,

note_test text NULL,

PRIMARY KEY (note_id),

FULLTEXT (note_text)

) ENGINE = MyISAM;

Beispiel 2: Rufen Sie die angegebene Spalte note_text ab, geben Sie das Wort rabbit als Suchtext an und geben Sie die Zeile mit rabbit zurück.

SQL : : SELECT note_text FROM productnotes WHERE Match (note_text) Against ('rabbit');

SQL 语句 : SELECT note_text FROM productnotes WHERE note_text LIKE '% rabbit%';

2. Abfrageerweiterung: Mit der Abfrageerweiterung wird versucht, den Bereich der zurückgegebenen Volltextsuchergebnisse zu lockern.

Beispiel: Suchen Sie alle Kommentare, die Ambosse erwähnen, und andere Zeilen, die für Ihre Suche relevant sein können, auch wenn sie nicht das Wort Ambosse enthalten.

SQL 语句 : SELECT note_text FROM productnotes WHERE Match (note_text) Against ('Ambosse' MIT QUERY EXPANSION);

3. Boolesche Textsuche: Stellen Sie eine Volltextabfrage zu den Details bereit, auch wenn der FULLTEXT-Index nicht definiert ist, kann er auch verwendet werden.

Beispiel 1: Volltextsuche für alle Zeilen, die das Wort schwer enthalten

SQL : : SELECT note_text FROM productnotes WHERE Match (note_text) Against ('schwer' IM BOOLEAN-MODUS);

Beispiel 2: Stimmt mit Zeilen überein, die schwer sind, aber keine Wörter enthalten, die mit einem Seil beginnen

SQL 语句: SELECT note_text FROM productnotes WHERE Match (note_text) Against ('schweres Seil *' IM BOOLEAN-MODUS);

 

Beispiel 3 : Suchen Sie nach Linien, die Kaninchen und Köder enthalten.

SQL 语句: SELECT note_text FROM productnotes WHERE Match (note_text) Against ('+ Kaninchen + Köder' IM BOOLEAN-MODUS);

Beispiel 4 : Suchen Sie ohne Angabe eines Operators nach Linien, die mindestens einer von Kaninchen und Köder entsprechen.

SQL : : SELECT note_text FROM productnotes WHERE Match (note_text) Against ('Kaninchenköder' IM BOOLEAN-MODUS);

Beispiel 5: Suchen Sie nach der passenden Phrase Kaninchenköder, anstatt die beiden Wörter Kaninchen und Köder zu finden.

SQL :: SELECT note_text FROM productnotes WHERE Match (note_text) Against ('"Kaninchenköder"' IM BOOLEAN-MODUS);

Beispiel 6: Kombinieren Sie Kaninchen und Karotte, erhöhen Sie das Niveau des ersteren und verringern Sie das Niveau des letzteren.

SQL语句:SELECT note_text FROM productnotes WHERE Match(note_text) Against('>rabbit <carrot' IN BOOLEAN MODE);

示例7:搜索匹配词safe和combination,降低后者的等级。

SQL语句:SELECT note_text FROM productnotes WHERE Match(note_text) Against('+safe +(<combination)' IN BOOLEAN MODE);

二、插入数据

使用INSERT语句插入数据到数据库表中。插入可以用以下几种方式

  • 插入完整的行;
  • 插入行的一部分;
  • 插入多行;
  • 插入某些查询的结果。

1.插入完整的行

示例:插入一个新客户到customers表。

SQL语句:INSERT INTO customers VALUES(NULL,'pe','199 main','Los');

SQL语句:INSERT INTO customers(cust_name,cust_addr,cust_city,cust_nn) VALUES(NULL,'pe','199 main','Los');

2.插入多行

示例:插入多行信息到customers表。

SQL语句:INSERT INTO customers(cust_name,cust_addr,cust_city,cust_nn) VALUES(NULL,'pe','199 main','Los'),(NULL,'OO','19 main','Ls');

3.插入检索出的数据

示例:将表custnew的信息合并到customers表。

SQL语句:INSERT INTO customers(cust_id,cust_contact,cust_email,cust_name,cust_addr,cust_city) SELECT cust_id,cust_contact,cust_email,cust_name,cust_addr,cust_city FROM custnew;

三、更新和删除数据

使用UPDATE语句更新或者修改表中的数据,DELETE语句删除表中的数据。其中,更新操作包括对表中特定的行更新以及更新表中所有行,在更新表中特定行时,不可省略WHERE子句。

1.更新操作

UPDATE操作包括三部分,即要更新的表、列名和它们的新值、以及确定要更新行的过滤条件。

示例1:更新客户1005的信息

SQL语句:UPDATE customers SET cust_email = '[email protected]' WHERE cust_id = 1005;

SQL语句:UPDATE customers SET cust_email='[email protected]', cust_name = 'zhang san' WHERE cust_id = 1005;

示例2:删除cust_email列的值,并将它设置为NULL

SQL语句:UPDATE customers SET cust_email = NULL WHERE cust_id = 1005;

2.删除操作

删除操作包括两种方式,即从表中删除特定的行和删除所有行。

示例1:删除表customers中的一行

SQL语句:DELETE FROM customers WHERE cust_id = 1006;

示例2:删除表customers中的所有行

SQL语句:DELETE FROM customers;

SQL语句:TRUNCATE TABLE customers;

DELETE和TRUNCATE区别:

参考博客https://www.cnblogs.com/zhizhao/p/7825469.html

注意事项:

使用UPDATE或DELETE时需要遵循的习惯

  • 除非确实打算更新和删除每一行,否则绝对不要使用不带WHERE子句的UPDATE或DELETE语句;
  • 保证每个表都有主键,尽可能像WHERE子句那样使用它,可以指定各主键、多个值或值的范围;
  • 在对UPDATE或DELETE语句使用WHERE子句前,应该先用SELECT进行测试,保证它过滤的是正确的记录,以防编写的WHERE子句不正确;
  • 使用强制实施引用完整性的数据库,这样MySQL将不允许删除具有与其它表相关联的数据的行。

Ich denke du magst

Origin www.cnblogs.com/wzw0625/p/12683111.html
Empfohlen
Rangfolge