Ò»¡¢Ô¼Êø Constraints
ÔÚÉÏÒ»ÆªËæ±ÊµÄ½á⣬ÎÒÌáµ½ÁËÔ¼Êø£¬ µ«ÊÇÔÚÄÇÀïÎÒ°ÑËü·Òë³ÉÁËÏÞ¶¨·û£¬²»Ì«×¼È·£¬ÕâÀïÏȸüÕýһϣ¬Ó¦¸Ã·Òë³ÉÔ¼Êø¸üÌùÇÐÒ»µã¡£ ÄÇôʲôÊÇÔ¼ÊøÄØ£¿
ÎÒÃÇÔÚÊý¾Ý¿âÖд洢Êý¾ÝµÄʱºò£¬ÓÐһЩÊý¾ÝÓÐÃ÷ÏÔµÄÔ¼ÊøÌõ¼þ¡£ ±ÈÈçÒ»ËùѧУ¹ØÓÚ½ÌʦµÄÊý¾Ý±í£¬ÆäÖеÄ×Ö¶ÎÁпÉÄÜÓÐÈçÏÂÔ¼Êø£º
ÄêÁä - ÖÁÉÙ´óÓÚ20Ëê¡£Èç¹ûÄãÏë¼ÈëÒ»¸öСÓÚ20ËêµÄ½Ìʦ£¬ÏµÍ³»á±¨´í
¹ú¼® - ĬÈÏÖйú¡£ËùνĬÈÏ£¬¾ÍÊÇÈç¹ûÄã²»Ìîд£¬ÏµÍ³×Ô¶¯ÌîÉÏĬÈÏÖµ
ÐÕÃû - ²»ÄÜΪ¿Õ¡£Ã¿¸öÈ˶¼ÓÐÃû×ÖÂï
Ô±¹¤ºÅ - Ψһ¡£Õâ¸ö¿É²»ÄÜÂÒ£¬¹¤×Ê·¢´íÁ˾ÍÂé·³ÁË
ÉÏÃæÌáµ½µÄ´óÓÚ¡¢Ä¬ÈÏ¡¢²»ÄÜΪ¿Õ¡¢Î¨Ò»µÈµÈ£¬¾ÍÊÇÊý¾ÝµÄÔ¼ÊøÌõ¼þ¡£ ÎÒÃÇÔÚÓà CREATE TABLE ´´½¨±íµÄʱºò£¬¾ÍÓ¦¸Ã½«Ã¿¸ö×Ö¶ÎÁеÄÔ¼ÊøÌõ¼þÊÂÏÈ˵Ã÷£¨Èç¹ûÓеϰ£©£¬ ÒÔºóÔÙÍù±íÀïÊäÈëÊý¾ÝµÄʱºò£¬ÏµÍ³»á×Ô¶¯ÎªÎÒÃǼì²éÊÇ·ñÂú×ãÔ¼ÊøÌõ¼þ£¬Èç¹û²»Âú×ãϵͳ»á±¨´í¡£
SQLite ³£ÓÃÔ¼ÊøÈçÏÂ
NOT NULL - ·Ç¿Õ
UNIQUE - Ψһ
PRIMARY KEY - Ö÷¼ü
FOREIGN KEY - Íâ¼ü
CHECK - Ìõ¼þ¼ì²é
DEFAULT - ĬÈÏ
¶þ¡¢Ö÷¼ü PRIMARY KEY
ÎÒÃÇ»¹ÊǽøÈë SQLite ÃüÁîÐл·¾³£¬½¨Á¢Ò»¸ö test.db Êý¾Ý¿âÓÃÀ´×öʵÑ飬ÈçÏÂ
myqiao@ubuntu:~/My Documents/db$ sqlite3 test.db
-- Loading resources from /home/myqiao/.sqliterc
SQLite version 3.7.4
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
sqlite>
ÔËÐÐ .tables ÃüÁîûÓзµ»Ø£¬ËµÃ÷Êý¾Ý¿âÊǿյġ£Èç¹ûÄãµÄÊý¾Ý¿âÀïÃæÓÐÄÚÈݲ¢Ó°Ïìµ½ÏÂÃæµÄʵÑ飬 Äã¿ÉÒÔÓÃÎÒÃÇÉÏһƪѧµÄ DROP TABLE À´É¾³ýÔì³ÉÓ°ÏìµÄ±í£¬ »òÕßÓà ALTER TABLE ... RENAME TO ... À´¸ÄÃû¡£
--------------------------------------------------------------------------------
ÏÂÃæÑÔ¹éÕýת£¬ÎÒÃÇÀ´ËµËµÖ÷¼ü PRIMARY KEY ¡£
Ê×ÏÈ£¬Êý¾Ý±íÖÐÿһÌõ¼Ç¼¶¼ÓÐÒ»¸öÖ÷¼ü£¬ Õâ¾ÍÏñÎÒÃÇÿµÄÉí·ÝÖ¤ºÅÂë¡¢Ô±¹¤ºÅ¡¢ÒøÐÐÕʺţ» ·´¹ýÀ´Ò²¿ÉÒÔ˵£¬Ã¿Ò»¸öÖ÷¼ü¶ÔÓ¦×ÅÒ»ÌõÊý¾Ý¼Ç¼¡£ ËùÒÔ£¬Ö÷¼ü±ØÐëÊÇΨһµÄ¡£
Æä´Î£¬Ò»°ãÇé¿öÏÂÖ÷¼üͬʱҲÊÇÒ»¸öË÷Òý£¬ËùÒÔͨ¹ýÖ÷¼ü²éÕҼǼËٶȱȽϿ졣
µÚÈý£¬ÔÚ¹ØÏµÐÍÊý¾Ý¿âÖУ¬Ò»¸ö±íµÄÖ÷¼ü¿ÉÒÔ×÷ΪÁíÍâÒ»¸ö±íµÄÍâ¼ü£¬ ÕâÑù£¬ÕâÁ½¸ö±íÖ®¼ä¾Íͨ¹ýÕâ¸ö¼ü½¨Á¢Á˹ØÏµ¡£
×îºó£¬Ö÷¼üÒ»°ãÊÇÕûÊý»òÕß×Ö·û´®£¬Ö»Òª±£Ö¤Î¨Ò»¾ÍÐС£ ÔÚ SQLite ÖУ¬Ö÷¼üÈç¹ûÊÇÕûÊýÀàÐÍ£¬¸ÃÁеÄÖµ¿ÉÒÔ×Ô¶¯Ôö³¤¡£
--------------------------------------------------------------------------------
ÏÂÃæÎÒÃÇÀ´×öʵÑé
sqlite>
sqlite> CREATE TABLE Teachers(Id integer PRIMARY KEY,Name text);
sqlite> .tables
Teachers
sqlite> INSERT INTO Teachers(Name) Values(ÕÅÈý);
sqlite> INSERT INTO Teachers(Name) Values(ÀîËÄ);
sqlite> INSERT INTO Teachers(Name) Values(Íõ¶þÂé×Ó);
sqlite> SELECT * FROM Teachers;
Id Name
---------- ----------
1 ÕÅÈý
2 ÀîËÄ
3 Íõ¶þÂé
sqlite> INSERT INTO Teachers(Id,Name) Values(2,ËïÎò¿Õ);
Error: PRIMARY KEY must be unique
sqlite>
--------------------------------------------------------------------------------
ÎÒÃÇÏÈн¨ÁËÒ»¸ö Teachers ±í£¬²¢ÉèÖÃÁËÁ½¸ö×Ö¶ÎÁУ¬ÆäÖÐ Id ×Ö¶ÎÁÐΪÖ÷¼üÁС£ È»ºó£¬ÎÒÃÇÏòÆäÖвåÈëÈýÌõÊý¾Ý²¢²éѯ£¬·´À¡Ò»ÇÐÕý³£¡£
×¢Ò⣺ÔÚ²åÈëǰÈýÌõÊý¾ÝµÄʱºò£¬ÃüÁîÖв¢Ã»ÓÐÃ÷È·Ö¸Ã÷ Id µÄÖµ£¬ÏµÍ³×Ô¶¯¸³Öµ£¬²¢ÇÒÊýÖµ×Ô¶¯Ôö³¤¡£
²åÈëµÚËÄÌõÊý¾ÝµÄʱºò£¬ÎÒ¸øÁËÒ»¸öÃ÷È·µÄ Id ±àºÅΪ 2£¬ÒòΪÀîËĵıàºÅÒѾÊÇ 2 ÁË£¬ ËùÒÔϵͳÌáʾÎÒ´íÎó£ºÖ÷¼ü±ØÐëΨһ¡£
Èý¡¢Ä¬ÈÏÖµ DEFAULT
ÓÐÒ»Ð©ÌØ±ðµÄ×Ö¶ÎÁУ¬ÔÚÿһÌõ¼Ç¼ÖУ¬ËûµÄÖµ»ù±¾É϶¼ÊÇÒ»ÑùµÄ¡£Ö»ÊÇÔÚ¸ö±ðÇé¿öϲŸÄΪ±ðµÄÖµ£¬ÕâÑùµÄ×Ö¶ÎÁÐÎÒÃÇ¿ÉÒÔ¸øËûÉèÒ»¸öĬÈÏÖµ¡£
ÏÂÃæÎÒÃÇÀ´×öʵÑé
sqlite>
sqlite> DROP TABLE Teachers;
sqlite> .tables
sqlite>
sqlite> CREATE TABLE Teachers(Id integer PRIMARY KEY,Name text,Country text DEFAULT Öйú);
sqlite> .tables
Teachers
sqlite> INSERT INTO Teachers(Name) Values(ÕÅÈý);
sqlite> INSERT INTO Teachers(Name) Values(ÀîËÄ);
sqlite> INSERT INTO Teachers(Name) Values(Íõ¶þÂé×Ó);
sqlite> INSERT INTO Teachers(Name,Country) Values(ËïÎò¿Õ,ÌìÍ¥);
sqlite> SELECT * FROM Teachers;
Id Name Country
---- --------------- ---------------
1 ÕÅÈý Öйú
2 ÀîËÄ Öйú
3 Íõ¶þÂé×Ó Öйú
4 ËïÎò¿Õ ÌìÍ¥
sqlite>
ÏȰÑ֮ǰµÄ Teachers ±íɾ³ý£¬È»ºóÖØÐ´´½¨¡£Õâ»Ø Teachers ±í¶àÁËÒ»¸ö Country ×ֶΣ¬ ²¢ÇÒÉèÖÃĬÈÏֵΪ¡°Öйú¡±£¬È»ºóÎÒÃDzåÈëËÄÌõÊý¾Ýµ½ Teachers ±í¡£
ǰÈýÌõÊý¾Ý¶¼Ã»ÓÐÃ÷È·Ö¸Ã÷ Country ×ֶεÄÖµ£¬Ö»ÓеÚËÄÌõÊý¾ÝÖ¸Ã÷ÁË¡°ËïÎò¿Õ¡±µÄ Country Ϊ¡°ÌìÍ¥¡±¡£
²éѯÊý¾Ý£¬·¢ÏÖǰÈýÌõÊý¾Ý¶¼ÌîÉÏÁËĬÈÏÖµ£¬ÊµÑé³É¹¦¡£
--------------------------------------------------------------------------------
Êý¾ÝÏÔʾÓеã×ßÑù£¬ÃüÁî .width 4 15 15 ÉèÖõÄÁÐ¿í£¬¿ÉÒÔͨ¹ý .show ²é¿´£¬ ¿ÉÄÜÊÇÒòΪÖÐÎĵÄÔÒò£¬ËùÒÔûÓÐ¶ÔÆë¡£
ËÄ¡¢·Ç¿Õ NOT NULL
ÓÐһЩ×Ö¶ÎÎÒÃÇ¿ÉÄÜһʱ²»Öªµ½¸ÃÌîЩʲô£¬Í¬Ê±ËüҲûÉ趨ĬÈÏÖµ£¬ µ±Ìí¼ÓÊý¾Ýʱ£¬ÎÒÃǰÑÕâÑùµÄ×ֶοÕ×Ų»ÌϵͳÈÏΪËûÊÇ NULL Öµ¡£
µ«ÊÇ»¹ÓÐÁíÍâÒ»Àà×ֶΣ¬±ØÐë±»ÌîÉÏÊý¾Ý£¬Èç¹û²»Ìϵͳ¾Í»á±¨´í¡£ ÕâÑùµÄ×ֶα»³ÆÎª NOT NULL ·Ç¿Õ×Ö¶Î,ÐèÒªÔÚ¶¨Òå±íµÄʱºòÊÂÏÈÉùÃ÷¡£
ÏÂÃæÎÒÃÇÀ´×öʵÑé
sqlite