--
-- Wybór optymalnego rodzaju danych
-- 

CREATE TABLE char_test( char_col CHAR(10)); 
INSERT INTO char_test(char_col) VALUES 
('string1'), ('  string2'), ('string3 '); 



CREATE TABLE enum_test( 
e ENUM('fish', 'apple', 'dog') NOT NULL 
); 
INSERT INTO enum_test(e) VALUES('fish'), ('dog'), ('apple');



CREATE TABLE webservicecalls ( 
   day date NOT NULL, 
   account smallint NOT NULL, 
   service varchar(10) NOT NULL, 
   method varchar(50) NOT NULL, 
   calls int NOT NULL, 
   items int NOT NULL, 
   time float NOT NULL, 
   cost decimal(9,5) NOT NULL, 
   updated datetime, 
   PRIMARY KEY  (day, account, service, method) 
) ENGINE=InnoDB;



CREATE TABLE webservicecalls_enum ( 
   ... pominięto ... 
   service ENUM(...pominięto wartości...) NOT NULL, 
   method ENUM(...pominięto wartości...) NOT NULL, 
   ... pominięto ... 
) ENGINE=InnoDB;



SELECT SQL_NO_CACHE COUNT(*) 
FROM webservicecalls 
JOIN webservicecalls USING(day, account, service, method);



CREATE TABLE bittest(a bit(8)); 
INSERT INTO bittest VALUES(b'00111001'); 
SELECT a, a + 0 FROM bittest; 



CREATE TABLE acl ( 
perms SET('CAN_READ', 'CAN_WRITE', 'CAN_DELETE') NOT NULL 
); 
INSERT INTO acl(perms) VALUES ('CAN_READ,CAN_DELETE'); 
SELECT perms FROM acl WHERE FIND_IN_SET('CAN_READ', perms); 



SET @CAN_READ   := 1 << 0, 
@CAN_WRITE  := 1 << 1, 
@CAN_DELETE := 1 << 2; 
CREATE TABLE acl ( 
perms TINYINT UNSIGNED NOT NULL DEFAULT 0 
); 
INSERT INTO acl(perms) VALUES(@CAN_READ + @CAN_DELETE); 
SELECT perms FROM acl WHERE perms & @CAN_READ; 



ALTER TABLE asteroids_json ADD COLUMN designation VARCHAR(30) GENERATED ALWAYS AS
(json_data->"$.designation"), ADD INDEX ( designation );



--
-- Kwestie, które trzeba wziąć pod uwagę podczas projektowania schematu w MySQL
--

CREATE TABLE ... (
 country enum('','0','1','2',...,'31')



CREATE TABLE ...(
 is_default set('Y','N') NOT NULL default 'N'



CREATE TABLE ... (
 dt DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'
