1. Daten vorbereitenErstellen einer Datentabelle- Erstellen Sie die „Jingdong“-Datenbank. create database jing_dong charset=utf8; - Verwenden Sie die „Jingdong“-Datenbank, verwenden Sie jing_dong; -- Erstellen Sie eine Warendatentabellecreate table goods( id int vorzeichenloser Primärschlüssel auto_increment nicht null, Name varchar(150) nicht null, cate_name varchar(40) nicht null, brand_name varchar(40) nicht null, Preis Dezimalzahl (10,3) nicht null Standard 0, is_show Bit nicht null Standard 1, is_saleoff Bit nicht null Standard 0 ); Einfügen von Daten-- Daten in die Warentabelle einfügen. In Warenwerte einfügen (0, „r510vc 15,6-Zoll-Notebook“, „Notebook“, „ASUS“, „3399“, Standard, Standard); in Warenwerte einfügen (0, „y400n 14,0-Zoll-Laptop“, „Notebook“, „Lenovo“, „4999“, Standard, Standard); in Warenwerte einfügen (0, „g150. 15,6-Zoll-Gaming-Laptop“, „Gaming-Laptop“, „Thor“, „8499“, Standard, Standard); in Warenwerte einfügen (0, „x550cc 15,6-Zoll-Notebook“, „Notebook“, „ASUS“, „2799“, Standard, Standard); in Warenwerte einfügen (0, „x240 Ultrabook“, „Ultrabook“, „Lenovo“, „4880“, Standard, Standard); in Warenwerte einfügen (0, „u330p 13,3-Zoll-Ultrabook“, „Ultrabook“, „Lenovo“, „4299“, Standard, Standard); in Warenwerte einfügen (0, „vp13226scb touch ultrabook“, „Ultrabook“, „Sony“, „7999“, Standard, Standard); in Warenwerte einfügen (0, „iPad Mini 7,9-Zoll-Tablet“, „Tablet“, „Apple“, „1998“, Standard, Standard); in Warenwerte einfügen (0, „iPad Air 9,7 Zoll Tablet“, „Tablet“, „Apple“, „3388“, Standard, Standard); in Warenwerte einfügen (0, „iPad Mini mit Retina-Display“, „Tablet“, „Apple“, „2788“, Standard, Standard); in Warenwerte einfügen (0, „IdeaCentre C340 20-Zoll-All-in-One-Computer“, „Desktop“, „Lenovo“, „3499“, Standard, Standard); in Warenwerte einfügen (0, „Vostro 3800-r1206 Desktop-Computer“, „Desktop“, „Dell“, „2899“, Standard, Standard); in Warenwerte einfügen (0, „iMac ME086CH/A 21,5-Zoll-All-in-One-Computer“, „Desktop“, „Apple“, „9188“, Standard, Standard); in Warenwerte einfügen (0, ,at7-7414lp Desktop-Computer Linux )‘, ,Desktop‘, ,Acer‘, ,3699‘, Standard, Standard); in Warenwerte einfügen (0, 'z220sff f4f06pa workstation', 'Server/Workstation', 'HP', '4288', Standard, Standard); in Warenwerte einfügen (0, „Poweredge II Server“, „Server/Workstation“, „Dell“, „5388“, Standard, Standard); in Warenwerte einfügen (0, „Mac Pro Professional-Desktop-Computer“, „Server/Workstation“, „Apple“, „28888“, Standard, Standard); in Warenwerte einfügen (0, „hmz-t3w am Kopf montiertes Anzeigegerät“, „Laptopzubehör“, „Sony“, „6999“, Standard, Standard); in Warenwerte einfügen (0, „Business-Rucksack“, „Laptop-Zubehör“, „Sony“, „99“, Standard, Standard); in Warenwerte einfügen (0, „x3250 m4 Rack-Server“, „Server/Workstation“, „IBM“, „6888“, Standard, Standard); in Warenwerte einfügen (0, „Business-Rucksack“, „Laptop-Zubehör“, „Sony“, „99“, Standard, Standard); 2. SQL-Übung 1. SQL-Anweisungen stärkenFragen Sie den Produktnamen und den Preis des Typs cate_name als „Ultrabook“ ab. Wählen Sie Name und Preis der Waren aus, wobei cate_name = „Superbook“ ist. Produkttypen anzeigen Wählen Sie Kategoriename aus der Warengruppe nach Kategoriename aus. Ermitteln Sie den Durchschnittspreis aller Computerprodukte und behalten Sie zwei Dezimalstellen bei Wählen Sie „round(avg(price),2)“ als Durchschnittspreis von Waren. Zeigt den Durchschnittspreis jedes Produkts an Wählen Sie Cate_Name, Durchschnitt (Preis) aus der Warengruppe nach Cate_Name. Abfrage des teuersten, günstigsten, durchschnittlichen Preises und der Menge jedes Produkttyps Wählen Sie Kategoriename, Max(Preis), Min(Preis), Durchschnitt(Preis), Anzahl(*) aus der Warengruppe nach Kategoriename. Abfrage aller Produkte deren Preis über dem Durchschnittspreis liegt und absteigend nach Preis sortieren Wählen Sie ID, Name und Preis der Ware aus wobei Preis > (select round(avg(price),2) als Durchschnittspreis von Waren) Sortierung nach Preis absteigend; Finden Sie die teuersten Computer jedes Typs Wählen Sie * aus Waren innerer Join ( wählen Katzenname, max(Preis) als max_Preis, min(Preis) als min_Preis, Durchschnitt(Preis) als Durchschnittspreis, count(*) aus Warengruppe nach cate_name ) als Warenneuheitsinfo auf goods.cate_name=goods_new_info.cate_name und goods.price=goods_new_info.max_price; 2. Erstellen Sie eine Tabelle „Produktkategorie“-- Erstellen Sie eine Warenkategorietabelle. create table, falls nicht vorhanden goods_cates( id int vorzeichenloser Primärschlüssel auto_increment, Name varchar(40) nicht null ); Abfrage der Warenarten in der Warentabelle Wählen Sie Kategoriename aus der Warengruppe nach Kategoriename aus. Schreiben Sie die Gruppierungsergebnisse in die Datentabelle goods_cates in Warenkategorien (Name) einfügen, Kategorienname aus der Warengruppe nach Kategorienname auswählen; 3. Tabellendaten synchronisierenAktualisieren Sie die Warentabelle über die Datentabelle „goods_cates“ Aktualisiere Waren als g, innerer Join Waren_Kategorisierungen als c auf g.cate_name=c.name, setze g.cate_name=c.id; 4. Erstellen Sie die Tabelle „Produktmarkentabelle“Verwenden Sie create...select, um eine Datentabelle zu erstellen und gleichzeitig Datensätze zu schreiben, Schritt für Schritt -- wählen Sie den Markennamen aus der Warengruppe nach Markennamen; -- Daten beim Erstellen der Datentabelle zusammen einfügen -- Hinweis: Sie müssen as als Alias für den Markennamen verwenden, sonst hat das Namensfeld keinen Wert. Tabelle Warenmarken erstellen ( id int vorzeichenloser Primärschlüssel auto_increment, Name varchar (40) nicht null) Wählen Sie Markenname als Namen aus der Warengruppe nach Markenname aus. 5. Daten synchronisierenAktualisieren Sie die Warendatentabelle über die Warenmarkendatentabelle Aktualisiere Waren als g, verbinde innerlich Warenmarken als b auf g.Markenname=b.Name, setze g.Markenname=b.ID; 6. Ändern Sie die TabellenstrukturWenn Sie sich die Datentabellenstruktur der Waren ansehen, werden Sie feststellen, dass die entsprechenden Typen von cate_name und brand_name varchar sind, es sich jedoch alle um Zahlen handelt. Beschreibung der Waren; Ändern Sie die Tabellenstruktur mit der Anweisung „alter table“ Tischwaren ändern ändere cate_name cate_id int unsigned not null, Markennamen, Marken-ID ändern, int ohne Vorzeichen, nicht null; 7. FremdschlüsselEinfügen von Datensätzen in die Tabellen goods_cates und goods_brands in goods_cates(Name) Werte einfügen ('Router'), ('Switch'), ('Netzwerkkarte'); in warenmarken(name) Werte einfügen („Haier“), („Tsinghua Tongfang“), („Shenzhou“); Schreiben Sie einen beliebigen Datensatz in die Warentabelle in Waren einfügen (Name, Kat.-ID, Marken-ID, Preis) Werte('LaserJet Pro P1606dn Schwarzweiß-Laserdrucker', 12, 4,'1849'); Detaillierte Informationen zu allen Produkten abfragen (über interne Verknüpfung) Wählen Sie g.id, g.name, c.name, b.name, g.price aus Waren als g innerer Join goods_cates als c auf g.cate_id=c.id innerer Join Warenmarken als b auf g.brand_id=b.id; Abfrage der Detailinformationen aller Produkte (über Left Join) Wählen Sie g.id, g.name, c.name, b.name, g.price aus Waren als g links beitreten goods_cates als c auf g.cate_id=c.id links Warenmarken als b mit g.brand_id=b.id verbinden;
-- Erfolgreich Fremdschlüsseleinschränkung zur Marken-ID hinzugefügt. Tabelle „Waren“ ändern. Fremdschlüssel (Marken-ID) mit Verweisen auf Warenmarken (ID) hinzufügen. -- Fehler beim Hinzufügen des Fremdschlüssels zur cate_id -- Fehler 1452 wird angezeigt -- Fehlerursache: Es wurde eine nicht vorhandene cate_id mit dem Wert 12 hinzugefügt, daher muss dieser zuerst gelöscht werden. Alter Table Goods: Add Foreign Key (cate_id) References Goods_Cates(id);
Tabelle erstellen Waren( id int Primärschlüssel auto_increment nicht null, Name varchar(40) Standard '', Preis Dezimalzahl (5,2), cate_id int unsigniert, brand_id int unsigniert, is_show-Bit Standard 1, is_saleoff Bit Standard 0, Der Fremdschlüssel (cate_id) verweist auf goods_cates(id), Der Fremdschlüssel (Marken-ID) verweist auf die Warenmarke (ID). ); So entfernen Sie Fremdschlüsseleinschränkungen -- Sie müssen zuerst den Namen der Fremdschlüsseleinschränkung abrufen. Der Name wird automatisch vom System generiert. Sie können den Namen abrufen, indem Sie die Anweisung zur Tabellenerstellung anzeigen: show create table goods; -- Nachdem Sie den Namen erhalten haben, können Sie die Fremdschlüsseleinschränkung entsprechend dem Namen „Alter Table Goods“ löschen, „Fremdschlüssel“ und „Fremdschlüsselname“ löschen. In der tatsächlichen Entwicklung werden Fremdschlüsseleinschränkungen selten verwendet, was die Effizienz von Tabellenaktualisierungen erheblich verringert. 3. DatenbankdesignErstellen Sie eine Tabelle „Produktkategorie“ (sie wurde bereits zuvor erstellt und muss nicht erneut erstellt werden).Tabelle Goods_Cates erstellen ( id int vorzeichenloser Primärschlüssel auto_increment nicht null, Name varchar(40) nicht null ); Erstellen Sie eine Tabelle „Produktmarke“ (sie wurde bereits erstellt, Sie müssen sie nicht erneut erstellen)Tabelle Warenmarken erstellen ( id int vorzeichenloser Primärschlüssel auto_increment nicht null, Name varchar(40) nicht null ); Erstellen Sie eine Tabelle „Produkte“ (sie wurde bereits erstellt, Sie müssen sie nicht erneut erstellen)Tabelle erstellen Waren( id int vorzeichenloser Primärschlüssel auto_increment nicht null, Name varchar(40) Standard '', Preis Dezimalzahl (5,2), cate_id int unsigniert, brand_id int unsigniert, is_show-Bit Standard 1, is_saleoff Bit Standard 0, Der Fremdschlüssel (cate_id) verweist auf goods_cates(id), Der Fremdschlüssel (Marken-ID) verweist auf die Warenmarke (ID). ); Erstellen Sie eine Tabelle „Kunden“Tabelle Kunde erstellen( id int unsigned auto_increment Primärschlüssel nicht null, Name varchar(30) nicht null, Adresse varchar(100), tel varchar(11) nicht null ); Erstellen Sie eine Tabelle „Bestellungen“Tischbestellungen erstellen( id int unsigned auto_increment Primärschlüssel nicht null, order_date_time datetime nicht null, Kunden-ID int unsigniert, Fremdschlüssel (Kunden-ID) verweist auf Kunden-ID ); Erstellen Sie eine Tabelle „Bestelldetails“Tabelle order_detail erstellen( id int unsigned auto_increment Primärschlüssel nicht null, order_id int unsigniert nicht null, goods_id int unsigned nicht null, Menge tinyint unsigned nicht null, Der Fremdschlüssel (order_id) verweist auf Bestellungen (id), Der Fremdschlüssel (Waren-ID) verweist auf die Waren-ID. ); veranschaulichen
4. Schritte zum Bedienen von MySQL in Python Module importierenImportieren Sie das pymysql-Modul in die py-Datei vom pymysql-Import * Verbindungsobjekt
conn=connect(Parameterliste)
Objektmethoden
Cursor-Objekt
cs1 = conn.cursor() Objektmethoden
Objekteigenschaften
5. Hinzufügen, löschen, ändern und prüfenvom pymysql-Import * def main(): # Verbindung erstellen conn = connect(host='localhost',port=3306,database='jing_dong',user='root',password='mysql',charset='utf8') # Holen Sie sich das Cursor-Objekt cs1 = conn.cursor() # Führen Sie die Insert-Anweisung aus und geben Sie die Anzahl der betroffenen Zeilen zurück: Fügen Sie ein Datenelement hinzu. # Erhöhen Sie die Anzahl = cs1.execute('insert into goods_cates(name) values("hard disk")') #Drucken Sie die Anzahl der betroffenen Zeilen print(count) Anzahl = cs1.execute('in Warengruppen(Name) Werte("CD") einfügen') drucken(Anzahl) # # Update # count = cs1.execute('update goods_cates set name="Mechanische Festplatte" where name="Festplatte"') # # Löschen # count = cs1.execute('löschen aus goods_cates where id=6') # Senden Sie die vorherige Operation. Wenn Sie sie bereits mehrmals ausgeführt haben, senden Sie sie alle ab conn.commit() # Schließen Sie das Cursor-Objekt cs1.close() # Schließen Sie das Verbindungsobjekt conn.close() wenn __name__ == '__main__': hauptsächlich() Abfragen einer Datenzeilevom pymysql-Import * def main(): # Verbindung erstellen conn = connect(host='localhost',port=3306,user='root',password='mysql',database='jing_dong',charset='utf8') # Holen Sie sich das Cursor-Objekt cs1 = conn.cursor() # Führen Sie die Select-Anweisung aus und geben Sie die Anzahl der betroffenen Zeilen zurück: Abfrage einer Datenanzahl = cs1.execute('select id,name from goods where id>=4') # Drucken Sie die Anzahl der betroffenen Zeilen print("%d Daten gefunden: " % Anzahl) für i im Bereich (Anzahl): # Abfrageergebnis abrufen result = cs1.fetchone() # Drucken Sie das Abfrageergebnis print(result) # Abfrageergebnisse abrufen # Cursorobjekt schließen cs1.close() conn.close() wenn __name__ == '__main__': hauptsächlich() Abfragen mehrerer Datenzeilenvom pymysql-Import * def main(): # Verbindung erstellen conn = connect(host='localhost',port=3306,user='root',password='mysql',database='jing_dong',charset='utf8') # Holen Sie sich das Cursor-Objekt cs1 = conn.cursor() # Führen Sie die Select-Anweisung aus und geben Sie die Anzahl der betroffenen Zeilen zurück: Abfrage einer Datenanzahl = cs1.execute('select id,name from goods where id>=4') # Drucken Sie die Anzahl der betroffenen Zeilen print("%d Daten gefunden: " % Anzahl) # für i im Bereich (Anzahl): # # Holen Sie sich das Abfrageergebnis# result = cs1.fetchone() # # Drucken Sie die Abfrageergebnisse# print(result) # # Abfrageergebnisse abrufen result = cs1.fetchall() drucken(Ergebnis) # Schließen Sie das Cursor-Objekt cs1.close() conn.close() wenn __name__ == '__main__': hauptsächlich() 6. Parametrierung
vom pymysql-Import * def main(): find_name = input("Bitte geben Sie den Namen des Artikels ein:") # Verbindung erstellen conn = connect(host='localhost',port=3306,user='root',password='mysql',database='jing_dong',charset='utf8') # Holen Sie sich das Cursor-Objekt cs1 = conn.cursor() # # Unsichere Methode # # Geben Sie " oder 1=1 oder " ein (geben Sie auch doppelte Anführungszeichen ein) # sql = 'Wählen Sie * aus Waren aus, wobei Name = "%s"' % find_name # drucken("""sql===>%s<====""" % sql) # # Select-Anweisung ausführen und Anzahl der betroffenen Zeilen zurückgeben: Alle Daten abfragen # count = cs1.execute(sql) # Sicherer Weg # Parameterliste erstellen params = [find_name] # Führen Sie die Select-Anweisung aus und geben Sie die Anzahl der betroffenen Zeilen zurück: Alle Daten abfragen count = cs1.execute('select * from goods where name=%s', params) # Beachten: # Wenn mehrere Parameter vorhanden sind, ist eine Parametrisierung erforderlich. # Dann ist params = [Wert 1, Wert 2....], dann sind mehrere %s in der SQL-Anweisung vorhanden. # Drucken Sie die Anzahl der betroffenen Zeilen print(count) # Holen Sie sich das Abfrageergebnis# result = cs1.fetchone() Ergebnis = cs1.fetchall() # Drucken Sie das Abfrageergebnis print(result) # Schließen Sie das Cursor-Objekt cs1.close() # Schließen Sie das Verbindungsobjekt conn.close() wenn __name__ == '__main__': hauptsächlich() Oben sind die Einzelheiten des Beispiels der Interaktion zwischen MySQL und Python aufgeführt. Weitere Informationen zur Interaktion zwischen MySQL und Python finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Lösung für das Docker-Pull-Timeout
>>: VUE implementiert eine Timeline-Wiedergabekomponente
Überblick Vorgänge, die auf einer Datenbank ausge...
Inhaltsverzeichnis 1. Installation und Betrieb vo...
Inhaltsverzeichnis 1. Nach dem Download entpacken...
In Linux-Systemen, insbesondere Serversystemen, i...
Dieser Artikel veranschaulicht anhand eines Beisp...
Dieser Artikel zeichnet das Installations-Tutoria...
1. Einleitung Der Befehl ls dient zum Anzeigen de...
1. Erstellen Sie eine neue virtuelle Maschine aus...
Suchen Sie zwei Testmaschinen: [root@docker1 cent...
1. Laden Sie cuda10.1 herunter: Link zur offiziel...
MySQL-Benutzer und -Berechtigungen In MySQL gibt ...
Inhaltsverzeichnis 1. Datenmanipulationssprache (...
XML Schema ist eine XML-basierte Alternative zu D...
Ubuntu 18.04, andere Versionen von Ubuntu Frage: ...
MySQL meldet einen Fehler beim Ausführen einer Ab...