SQL ÍâÀ´¼üµÄÓ÷¨
ÍâÀ´¼üÊÇÒ»¸ö(»òÊý¸ö)Ö¸ÏòÁíÍâÒ»¸ö±í¸ñÖ÷¼üµÄÀ¸Î»¡£ÍâÀ´¼üµÄÄ¿µÄÊÇÈ·¶¨×ÊÁϵIJο¼ÍêÕûÐÔ(referential integrity)¡£»»ÑÔÖ®£¬Ö»Óб»×¼ÐíµÄ×ÊÁÏÖµ²Å»á±»´æÈë×ÊÁÏ¿âÄÚ¡£
¾ÙÀýÀ´Ëµ£¬¼ÙÉèÎÒÃÇÓÐÁ½¸ö±í¸ñ£ºÒ»¸ö CUSTOMER ±í¸ñ£¬ÀïÃæ¼Ç¼ÁËËùÓй˿͵Ä×ÊÁÏ£»ÁíÒ»¸ö ORDERS ±í¸ñ£¬ÀïÃæ¼Ç¼ÁËËùÓй˿Ͷ©¹ºµÄ×ÊÁÏ¡£ÔÚÕâÀïµÄÒ»¸öÏÞÖÆ£¬¾ÍÊÇËùÓеĶ©¹º×ÊÁÏÖеĹ˿ͣ¬¶¼Ò»¶¨ÊÇÒª¸úÔÚ CUSTOMER ±í¸ñÖдæÔÚ¡£ÔÚÕâÀÎÒÃǾͻáÔÚ ORDERS ±í¸ñÖÐÉ趨һ¸öÍâÀ´¼ü£¬¶øÕâ¸öÍâÀ´¼üÊÇÖ¸Ïò CUSTOMER ±í¸ñÖеÄÖ÷¼ü¡£ÕâÑùÒ»À´£¬ÎÒÃǾͿÉÒÔÈ·¶¨ËùÓÐÔÚ ORDERS ±í¸ñÖеĹ˿Ͷ¼´æÔÚ CUSTOMER ±í¸ñÖС£»»¾ä»°Ëµ£¬ORDERS±í¸ñÖ®ÖУ¬²»ÄÜÓÐÈκι˿ÍÊDz»´æÔÚÓÚ CUSTOMER ±í¸ñÖеÄ×ÊÁÏ¡£
ÕâÁ½¸ö±í¸ñµÄ½á¹¹½«»áÊÇÈçÏ£º
CUSTOMER ±í¸ñ
À¸Î»Ãû
ÐÔÖÊ
SID
Ö÷¼ü
Last_Name
First_Name
ORDERS ±í¸ñ
À¸Î»Ãû
ÐÔÖÊ
Order_ID
Ö÷¼ü
Order_Date
Customer_SID
ÍâÀ´¼ü
Amount
ÔÚÒÔÉϵÄÀý×ÓÖУ¬ORDERS ±í¸ñÖÐµÄ customer_SID À¸Î»ÊÇÒ»¸öÖ¸Ïò CUSTOMERS ±í¸ñÖÐ SID À¸Î»µÄÍâÀ´¼ü¡£
ÒÔÏÂÁгö¼¸¸öÔÚ½¨Öà ORDERS ±í¸ñʱָ¶¨ÍâÀ´¼üµÄ·½Ê½£º
MySQL:
CREATE TABLE ORDERS
(Order_ID integer,
Order_Date date,
Customer_SID integer,
Amount double,
Primary Key (Order_ID),
Foreign Key (Customer_SID) references CUSTOMER(SID));
Oracle:
CREATE TABLE ORDERS
(Order_ID integer primary key,
Order_Date date,
Customer_SID integer references CUSTOMER(SID),
Amount double);
SQL Server:
CREATE TABLE ORDERS
(Order_ID integer primary key,
Order_Date datetime,
Customer_SID integer references CUSTOMER(SID),
Amount double);
ÒÔϵÄÀý×ÓÔòÊǽåןıä±í¸ñ¼Ü¹¹À´Ö¸¶¨ÍâÀ´¼ü¡£ÕâÀï¼ÙÉè ORDERS ±í¸ñÒѾ±»½¨Ö㬶øÍâÀ´¼üÉÐδ±»Ö¸¶¨£º
MySQL:
ALTER TABLE ORDERS
ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(sid);
Oracle:
ALTER TABLE ORDERS
ADD (CONSTRAINT fk_orders1) FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(sid);
SQL Server:
ALTER TABLE ORDERS
ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(sid);
Ïà¹ØÎĵµ£º
ÄÇÎÒÃÇÈçºÎ¶Ôº¯Êý²úÉúµÄÖµÀ´É趨Ìõ¼þÄØ£¿¾ÙÀýÀ´Ëµ£¬ÎÒÃÇ¿ÉÄÜÖ»ÐèÒªÖªµÀÄÄЩµêµÄÓªÒµ¶îÓг¬¹ý $1,500¡£ÔÚÕâ¸öÇé¿öÏ£¬ÎÒÃDz»ÄÜʹÓà WHERE µÄÖ¸Áî¡£ÄÇÒªÔõô°ìÄØ£¿ºÜÐÒÔ˵أ¬SQL ÓÐÌṩһ¸ö HAVING µÄÖ¸Á¶øÎÒÃǾͿÉÒÔÓÃÕâ¸öÖ¸ÁîÀ´´ïµ½Õâ¸öÄ¿±ê¡£ HAVING ×Ó¾äͨ³£ÊÇÔÚÒ»¸ö SQL ¾ä×ÓµÄ×îºó¡£Ò»¸öº¬ÓÐ HAVING ×Ó¾äµÄ SQL ²¢²» ......
ÏÖÔÚÎÒÃǽéÉÜÁ¬½Ó(join)µÄ¸ÅÄî¡£ÒªÁ˽âÁ¬½Ó£¬ÎÒÃÇÐèÒªÓõ½Ðí¶àÎÒÃÇ֮ǰÒѽéÉܹýµÄÖ¸Áî¡£ ÎÒÃÇÏȼÙÉèÎÒÃÇÓÐÒÔϵÄÁ½¸ö±í¸ñ£¬
Store_Information ±í¸ñ
store_name
Sales
Date
Los Angeles
$1500
Jan-05-1999
San Diego
$250
Jan-07-1999
Los Angeles
$300
Jan-08-1999
Boston
$700
Jan-08-199 ......
ÎÒÃÇ¿ÉÒÔÔÚÒ»¸ö SQL Óï¾äÖзÅÈëÁíÒ»¸ö SQL Óï¾ä¡£µ±ÎÒÃÇÔÚ WHERE ×Ó¾ä»ò WHERE ×Ó¾ä»ò HAVING ×Ó¾äÖвåÈëÁíÒ»¸ö SQL Óï¾äʱ£¬ÎÒÃǾÍÓÐÒ»¸ö subquery µÄ¼Ü¹¹¡£ Subquery µÄ×÷ÓÃÊÇÊ²Ã´ÄØ£¿µÚÒ»£¬Ëü¿ÉÒÔ±»ÓÃÀ´Á¬½Ó±í¸ñ¡£ÁíÍ⣬ÓеÄʱºò subquery ÊÇΨһÄܹ»Á¬½ÓÁ½¸ö±í¸ñµÄ·½Ê½¡£
Subquery µÄÓï·¨ÈçÏ£º
SELECT "À¸Î»1"
f ......
ÊÓ¹Û±í (Views) ¿ÉÒÔ±»µ±×÷ÊÇÐéÄâ±í¸ñ¡£Ëü¸ú±í¸ñµÄ²»Í¬ÊÇ£¬±í¸ñÖÐÓÐʵ¼Ê´¢´æ×ÊÁÏ£¬¶øÊÓ¹Û±íÊǽ¨Á¢ÔÚ±í¸ñÖ®ÉϵÄÒ»¸ö¼Ü¹¹£¬Ëü±¾Éí²¢²»Êµ¼Ê´¢´æ×ÊÁÏ¡£
½¨Á¢Ò»¸öÊÓ¹Û±íµÄÓï·¨ÈçÏ£º
CREATE VIEW "VIEW_NAME" AS "SQL Óï¾ä"
"SQL Óï¾ä" ¿ÉÒÔÊÇÈκÎÒ»¸öÎÒÃÇÔÚÕâ¸ö½Ì²ÄÖÐÓÐÌáµ½µÄ SQL¡£
À´¿´Ò»¸öÀý×Ó¡£¼ÙÉèÎÒÃÇÓÐÒÔϵıí¸ñ£ ......
Ö÷¼ü (Primary Key) ÖеÄÿһ±Ê×ÊÁ϶¼ÊDZí¸ñÖеÄΨһֵ¡£»»ÑÔÖ®£¬ËüÊÇÓÃÀ´¶ÀÒ»ÎÞ¶þµØÈ·ÈÏÒ»¸ö±í¸ñÖеÄÿһÐÐ×ÊÁÏ¡£Ö÷¼ü¿ÉÒÔÊÇÔ±¾×ÊÁÏÄÚµÄÒ»¸öÀ¸Î»£¬»òÊÇÒ»¸öÈËÔìÀ¸Î» (ÓëÔ±¾×ÊÁÏûÓйØÏµµÄÀ¸Î»)¡£Ö÷¼ü¿ÉÒÔ°üº¬Ò»»ò¶à¸öÀ¸Î»¡£µ±Ö÷¼ü°üº¬¶à¸öÀ¸Î»Ê±£¬³ÆÎª×éºÏ¼ü (Composite Key)¡£
Ö÷¼ü¿ÉÒÔÔÚ½¨ÖÃбí¸ñʱÉ趨 (ÔËÓà CREA ......