CAST 1: Co MySQL umi/neumi proti standardu/ostatnim databazim Rozsireni MySQL proti ANSI SQL 92 (manual, 1.4.1) /*! */ - komentar ve vetsine SQL, spusti se v MySQL MEDIUMINT, SET, ENUM, BLOB/TEXT AUTO_INCREMENT, BINARY, NULL, UNSIGNED, ZEROFILL porovnavani stringu je implicitne case-insensitivni (bez binary) jmena databazi a tabulek case-senzitivni LIKE na numeric INTO OUTFILE, STRAIGHT_JOIN indexy v CREATE TABLE ? TEMPORARY, IF NOT EXISTS, IF EXISTS (CREATE/DROP TABLE) COUNT(DISTINC multipleelement) vetsina ALTER TABLE, RENAME TABLE multiple DROP DELETE LIMIT DELAYED, LOW_PRIORITY LOAD DATA INFILE ANALYZE, CHECK, OPTIMIZE, REPAIR TABLE SHOW "string" ( v norme jen 'string') \ (escape) SET OPTION ||, && CREATE/DROP DATABAZE % LAST_INSERT_ID REGEXP, NOT REGEXP promenne ... Rozdily MySQL 92 (manual, 1.4.2) -- komentar jen pokud je nasledovan white space NULL AND FALSE == NULL Co chybi SUB-SELECTS - jen INSERT ... SELECT a REPLACE ... SELECT - ma LEFT JOIN, RIGHT JOIN SELECT ... INTO TABLE TRANSACTION (na beznych tabulkach) - ma LOCK TABLE Stored procedures, Triggers Foreign keys - ignorovano Standarty: SQL92 Entry level ODBC 0-2 Porovnani featur s mSQL mSQL nema GROUP BY, HAVING aritmetiky na INSERT/UPDATE aliasing funkce pro SELECT Porovnani featur s PostgreSQL PostgreSQL ma subselect foreign keys views stored procedures extensible type system unions full join triggers constrainst cursors extensible index types inherited tables CAST 2: Co MySQL umi podle toho co bychom potrebovali Vytvareni tabulek - kvalitni, neni pravdepodobne ze bychom potrebovali neco navic. Patrne ale nebude zcela kompatibilni (UINT x INT unsigned, atribut binary, ...) Sloupec typu DATETIME s funkci NOW() pro oznacovani casu zadani zaznamu SELECT * FROM tabulka Pro hledani castecne shody (podretezce) - WHERE sloupec LIKE '%' nekompatibilne WHERE sloupec RLIKE '.*' ORDER BY INSERT dva formaty: ( jmena sloupcu ) VALUES (hodnoty) SET jmeno=hodnota, jmeno=hodnota REPLACE stejna syntax UPDATE SET jmeno=hodnota, jmeno=hodnota - ma WHERE, LIMIT LOAD DATA INFILE DELETE - WHERE, LIMIT FULLTEXT INDEX -> verze 3.23.23+: MATCH (sloupec,sloupec ...) AGAINST (string) - hleda se vyskyt slov ze stringu ve sloupcich (SELECT VERSION())