ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

SQLiteÈëÃŽ̳̣¨Èý£©ºÃ¶àÔ¼ÊøConstraints(¶þ)
2014-11-24 07:19:24 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:3´Î
Tags£ºSQLite ÈëÃÅ½Ì³Ì Ô¼Êø Constraints
>
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 ÁË¡£



Ê×Ò³ ÉÏÒ»Ò³ 1 2 ÏÂÒ»Ò³ βҳ 2/2/2
¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£ºSqlServerɵ¹Ï½Ì³Ì¨D±í±¸·Ý ÏÂһƪ£ºSQLite ÈëÃŽ̳̣¨Ò»£©»ù±¾¿ØÖÆÌ¨..

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡¡¡Çé:
ÄÚ¡¡¡¡ÈÝ:

¡¤Linuxϵͳ¼ò½é (2025-12-25 21:55:25)
¡¤Linux°²×°MySQL¹ý³Ì (2025-12-25 21:55:22)
¡¤Linuxϵͳ°²×°½Ì³Ì£¨ (2025-12-25 21:55:20)
¡¤HTTP Åc HTTPS µÄ²î„ (2025-12-25 21:19:45)
¡¤ÍøÕ¾°²È«±ØÐ޿ΣºÍ¼ (2025-12-25 21:19:42)