>
sqlite> DROP TABLE Teachers;
sqlite> .tables
sqlite>
sqlite> CREATE TABLE Teachers(Id integer PRIMARY KEY,Name text,Age integer NOT NULL,City text);
sqlite> .tables
Teachers
sqlite> INSERT INTO Teachers(Name,Age) Values(Alice,23);
sqlite> INSERT INTO Teachers(Name,Age) Values(Bob,29);
sqlite> INSERT INTO Teachers(id,Name,Age) Values(6,Jhon,36);
sqlite> SELECT * FROM Teachers;
Id Name Age City
---- --------------- --------------- ---------------
1 Alice 23 NULL
2 Bob 29 NULL
6 Jhon 36 NULL
sqlite> INSERT INTO Teachers(Name) Values(Mary);
Error: Teachers.Age may not be NULL
sqlite>
»¹ÊÇÏÈɾ³ý¾É±í£¬´´½¨ÐÂ±í¡£
Õâ»Ø Teachers ±íÉùÃ÷ÁËÒ»¸ö NOT NULL ×Ö¶Î Age£¬Í¬Ê±»¹ÓÐÒ»¸ö¿ÉÒÔΪ NULL µÄ×Ö¶Î City
²åÈëǰÈýÌõÊý¾Ý¶¼Ã»ÓÐÖ¸¶¨ City µÄÖµ£¬²éѯ¿ÉÒÔ¿´µ½ City ×Ö¶ÎÈ«²¿Îª¿Õ
×¢Ò⣺ÕâÀïµÄ NULL Ö»ÊǶԡ°Ê²Ã´¶¼Ã»ÓС±µÄÒ»ÖÖÏÔʾÐÎʽ£¬ ¿ÉÒÔͨ¹ý .nullvalue ÃüÁî¸ÄΪ±ðµÄÐÎʽ£¬¾ßÌå¼ûµÚһƪ
²åÈëµÚËÄÌõÊý¾ÝʱûÓÐÖ¸¶¨ Age µÄÖµ£¬ÏµÍ³¾Í±¨´íÁË£º Teachers.Age ²»ÄÜΪ¿Õ
Îå¡¢ Ψһ UNIQUE
ÕâÒ»Ô¼ÊøºÜºÃÀí½â£¬³ýÁËÖ÷ÁÐÒÔΪ£¬»¹ÓÐһЩÁÐÒ²²»ÄÜÓÐÖØ¸´Öµ¡£²»¶à˵£¬Ö±½Ó¿´´úÂë
sqlite>
sqlite> DROP TABLE Teachers;
sqlite> .tables
sqlite>
sqlite> CREATE TABLE Teachers(Id integer PRIMARY KEY,Name text UNIQUE);
sqlite> .tables
Teachers
sqlite> INSERT INTO Teachers(Name) VALUES(Alice);
sqlite> INSERT INTO Teachers(Name) VALUES(Bob);
sqlite> INSERT INTO Teachers(Name) VALUES(Jane);
sqlite> INSERT INTO Teachers(Name) VALUES(Bob);
Error: column Name is not unique
sqlite>
Õâ´ÎµÄ Teachers ±íÖ»ÓÐ Name ÕâÒ»ÁУ¬µ«ÊÇ Name Áв»ÄÜÓÐÖØ¸´Öµ¡£¿ÉÒÔ¿´µ½£¬µ½ÎÒÃǵڶþ´Î²åÈë Bob ʱ£¬ÏµÍ³¾Í±¨´íÁË¡£
Áù¡¢ Ìõ¼þ¼ì²é CHECK
ijЩֵ±ØÐë·ûºÏÒ»¶¨µÄÌõ¼þ²ÅÔÊÐí´æÈ룬ÕâÊǾÍÐèÒªÓõ½Õâ¸ö CHECK Ô¼Êø¡£
sqlite>
sqlite> DROP TABLE Teachers;
sqlite> .tables
sqlite>
sqlite> CREATE TABLE Teachers(Id integer PRIMARY KEY,Age integer CHECK(Age>22));
sqlite> .tables
Teachers
sqlite> INSERT INTO Teachers(Age) VALUES(45);
sqlite> INSERT INTO Teachers(Age) VALUES(33);
sqlite> INSERT INTO Teachers(Age) VALUES(23);
sqlite> INSERT INTO Teachers(Age) VALUES(21);
Error: constraint failed
sqlite>
Age ×Ö¶ÎÒªÇó±ØÐë´óÓÚ 22£¬µ±²åÈëµÄÊý¾ÝСÓÚ22ʱ£¬ÏµÍ³±¨´í¡£
Æß¡¢Íâ¼ü FOREIGN KEY
ÏÖÔÚ£¬ÎÒÃǵÄÊý¾Ý¿âÖÐÒѾÓÐ Teachers ±íÁË£¬¼ÙÈçÎÒÃÇÔÙ½¨Á¢Ò»¸ö Students ±í£¬ ÒªÇó Students ±íÖеÄÿһ¸öѧÉú¶¼¶ÔÓ¦Ò»¸ö Teachers ±íÖеĽÌʦ¡£
ºÜ¼òµ¥£¬Ö»ÐèÒªÔÚ Students ±íÖн¨Á¢Ò»¸ö TeacherId ×ֶΣ¬±£´æ¶ÔÓ¦½ÌʦµÄ Id ºÅ£¬ ÕâÑù£¬Ñ§ÉúºÍ½Ìʦ֮¼ä¾Í½¨Á¢Á˹ØÏµ¡£
--------------------------------------------------------------------------------
ÎÊÌâÊÇ£ºÎÒÃÇÓпÉÄܸøÑ§Éú´æÈëÒ»¸ö²»ÔÚ Teachers ±íÖÐµÄ TeacherId Öµ£¬ ¶øÇÒ·¢ÏÖ²»ÁËÕâ¸ö´íÎó¡£
ÕâÖÖÇé¿öÏ£¬¿ÉÒÔ°Ñ Students ±íÖÐ TeacherId ×Ö¶ÎÉùÃ÷Ϊһ¸öÍâ¼ü£¬ ÈÃËüµÄÖµ¶ÔÓ¦µ½ Teachers ±íÖÐµÄ Id ×Ö¶ÎÉÏ¡£
ÕâÑù£¬Ò»µ©ÔÚ Students ±íÖдæÈëÒ»¸ö²»´æÔڵĽÌʦ Id £¬ÏµÍ³¾Í»á±¨´í¡£
sqlite>
sqlite> .tables
Teachers
sqlite> CREATE TABLE Students (Id integer PRIMARY KEY, TeacherId integer, FOREIGN KEY(TeacherId) REFERENCES Teachers(id) );
sqlite> .tables
Students Teachers
sqlite> SELECT * FROM Teachers;
Id Age
---- ---------------
1 40
2 33
3 23
sqlite> INSERT INTO Students(TeacherId) VALUES(1);
sqlite> INSERT INTO Students(TeacherId) VALUES(3);
sqlite> INSERT INTO Students(TeacherId) VALUES(9);
sqlite> SELECT * FROM Students;
Id TeacherId
---- ---------------
1 1
2 3
3 9
sqlite>
ÕâÀィÁ¢ÁË Students ±í£¬²¢ÇÒ°Ñ TeacherId ×÷ΪÍâ¼üÓë Teachers ±íµÄ Id ÁÐÏà¶ÔÓ¦¡£
ÎÊÌâÀ´ÁË£º²åÈëµÄǰÁ½ÌõÊý¾ÝûÎÊÌ⣬ÒòΪ Id ±àºÅ 1¡¢3 ¶¼ÔÚ Teachers ±íÖУ» µ«ÊÇÊý×Ö 9 ²¢²»ÔÚ Teachers ±íÖУ¬²»µ«Ã»Óб¨´í£¬ÏµÍ³»¹±£´æ½øÈ¥ÁË£¬ÕâÊÇÎªÊ²Ã´ÄØ£¿
¾Ý˵ SQLite µÄÍâ¼üÔ¼ÊøÄ¬ÈÏÇé¿öϲ¢²»ÊÇ¿ªÆôµÄ£¬Èç¹ûÄãÐèÒªÕâ¸ö¹¦ÄÜ£¬Äã¿ÉÄÜÐèÒªÏÂÔØÔ´´úÂë°æ±¾£¬ÉèÖÃÿ¸ö±àÒë²ÎÊý£¬È»ºóÖØÐ±àÒ룬ÕâÑùÄã¾ÍµÃµ½Ö§³ÖÍâ¼üµÄ SQLite ÁË¡£