一、SQL 基础
SHOW DATABASES
CREATE DATABASE IF NOT EXISTS dataset;
DROP DATABASE IF EXISTS dataset;
CREATE TABLE product (x1 CHAR(3) NOT NULL,
x2 CHAR(5) NOT NULL DEFAULT '521NN',
x3 CHAR(2) NOT NULL,
x4 INT NOT NULL,
CHECK (x4>50 AND x4<100),
PRIMARY KEY (x1), UNIQUE (x2),
FOREIGN KEY (x3) REFERENCES vendor(x3))
ON UPDATE/DELETE CASCADE
ON UPDATE/DELETE SET NULL
ON UPDATE/DELETE SET DEFAULT;
DROP TABLE product;
ALTER TABLE product ADD (x CHAR(3));
ALTER TABLE product DROP (x);
ALTER TABLE product ADD CONSTRAINT fkresidesin FOREIGN KEY (x) REFERENCES vendor(x);
ALTER TABLE product DROP CONSTRAINT fkresidesin;
ALTER TABLE product MODIFY (fkproid NOT NULL);
INSERT INTO vendor VALUES ('PG','Pacifica Gear');
INSERT INTO vendor SELECT ...;
UPDATE vendor SET price = 10 WHERE id = '328';
DELETE FROM vendor WHERE id = '012';
CREATE VIEW pr AS SELECT ...;
DROP VIEW pr;
SELECT productid,
*,
price*2 AS p2,
DISTINCT name,
NT(name),
DISTRINCT dpt)
AVG(price)
FROM pr
ON apt.id = corp.id
WHERE price <> 100 AND
cat = 'FW' AND
LIKE '%BA%' AND
IS NULL AND
price <= (SELECT AVG(price) FROM pr) AND
productid IN (SELECT productid FROM soldvia GROUP BY productid HAVING SUM(numofitems) > 3)
AND
NOT EXISTS (SELECT * FROM bld WHERE bld.vid = vendor.id)
GROUP BY name
HAVING COUNT(*)>10
ORDER BY name
UNION/INTERSECT/MINUS
SELECT c.name Client, v.name Recommender
FROM vendor c LEFT/RIGHT OUTER JOIN vendor
ON c.id = v.id
CREATE ASSERTION vr CHECK ((SELECT ...) < 11);
CREATE TRIGGER trigr BEFORE/AFTER INSERT/UPDATE/DELETE ON product
REFERENCING NEW/OLD ROW AS nrow
FOR EACH ROW
WHEN (nrow.timeid NOT IN (SELECT ...))
BEGIN
ROLLBACK
BEGIN ATOMIC
SET nrow.price = NULL;
UPDATE product SET nrow.price = NULL WHERE nrow.id = '012';
DECLARE totaladvised INT DEFAULT 0;
SELECT COUNT(*) INTO totaladvised FROM student WHERE advisorid = nrow.advisorid
IF (totaladvised >= 10) THEN
SET nrow.Advisorid = NULL;
END IF;
END;
CREATE INDEX custname_index ON customer(custname);
DROP INDEX custname_index ON customer(custname);
二、MySQL in Python
import mysql.connector
db = mysql.connector.connect(host="localhost", user="root", passwd="********")
db.cursor().execute("show databases")
db.cursor().executemany("insert into products values (%s, %s)", params)
db.cursor().fetchall()
db.close()