--整個(gè)約束就可以了
為盤錦等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及盤錦網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站建設(shè)、做網(wǎng)站、盤錦網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
--創(chuàng)建表時(shí)創(chuàng)建約束
create table t1(col1 int not null check(col1 =50 and col1 = 90
and col1 =201 and col1 = 299))
--為已知表添加約束
alter table t1
add constraint CK_cardID check (
col1 =50 and col1 = 90
and col1 =201 and col1 = 299
)
--不明白可以隨時(shí)問(wèn)我 希望采納
只用數(shù)據(jù)某一字段進(jìn)行子查詢是行不通的,因?yàn)槟阌腥齻€(gè)字段為聯(lián)合主腱,如果acode=bcode并不能保證abbrq=bbbrq和ay=by.
正確的方法是左外連接,如果左表a有右表b所沒(méi)有的任何記錄,該記錄右表b任何字段為空
select a.* from tableA a left join tableB b on a.acode=b.bcode and a.abbrq=b.bbbrq and a.ay=b.by where b.bcode is null
SQL的主鍵和外鍵的作用:
外鍵取值規(guī)則:空值或參照的主鍵值。
(1)插入非空值時(shí),如果主鍵表中沒(méi)有這個(gè)值,則不能插入。
(2)更新時(shí),不能改為主鍵表中沒(méi)有的值。
(3)刪除主鍵表記錄時(shí),你可以在建外鍵時(shí)選定外鍵記錄一起級(jí)聯(lián)刪除還是拒絕刪除。
(4)更新主鍵記錄時(shí),同樣有級(jí)聯(lián)更新和拒絕執(zhí)行的選擇。
簡(jiǎn)而言之,SQL的主鍵和外鍵就是起約束作用。
主鍵是能確定一條記錄的唯一標(biāo)識(shí),比如,一條記錄包括身份正號(hào),姓名,年齡。身份證號(hào)是唯一能確定你這個(gè)人的,其他都可能有重復(fù),所以,身份證號(hào)是主鍵。
外鍵用于與另一張表的關(guān)聯(lián)。是能確定另一張表記錄的字段,用于保持?jǐn)?shù)據(jù)的一致性。比如,A表中的一個(gè)字段,是B表的主鍵,那他就可以是A表的外鍵。
使用 EXISTS 和 NOT EXISTS 查找交集與差集
使用 EXISTS 和 NOT EXISTS 引入的子查詢可用于兩種集合原理的操作:交集與差集。兩個(gè)集合的交集包含同時(shí)屬于兩個(gè)原集合的所有元素。差集包含只屬于兩個(gè)集合中的第一個(gè)集合的元素。
city 列中 authors 和 publishers 的交集是作者和出版商共同居住的城市的集合。
USE pubs
SELECT DISTINCT city
FROM authors
WHERE EXISTS
(SELECT *
FROM publishers
WHERE authors.city = publishers.city)
下面是結(jié)果集:
city
--------
Berkeley
(1 row(s) affected)
當(dāng)然,該查詢可以寫成一個(gè)簡(jiǎn)單的聯(lián)接。
USE pubs
SELECT DISTINCT authors.city
FROM authors INNER JOIN publishers
ON authors.city = publishers.city
city 列中 authors 和 publishers 的差集是作者所居住的、但沒(méi)有出版商居住的所有城市的集合,也就是除 Berkeley 以外的所有城市。
USE pubs
SELECT DISTINCT city
FROM authors
WHERE NOT EXISTS
(SELECT *
FROM publishers
WHERE authors.city = publishers.city)
該查詢也可以寫成:
USE pubs
SELECT DISTINCT city
FROM authors
WHERE city NOT IN
(SELECT city
FROM publishers)
sqlserver、oracle、db2下均可:
with?t1(id,cardid,money,code,date)?as?(??????????
select?1,1,?500,?10001,?'13-12-1'?
union?all?select?2,2,?400,?10001,?'13-12-1'?
union?all?select?3,1,?400,?????0,?'13-12-1'?
union?all?select?4,1,?300,?????0,?'13-12-1'?
union?all?select?5,1,?500,?10001,?'13-12-1'?
union?all?select?6,1,?600,?????0,?'13-12-1'?
),?
t2?as?(select?*?from?t1?where?code!=0)
select?t2.id,?t2.cardid,?t2.money,?t2.code,?t2.date,?sum(t1.money)?sum?
from?t1?join?t2?
on?t1.cardid=t2.cardid?and?t1.id=t2.id?
and?not?exists(select?1?from?t2?t3?
where?t3.cardid?=?t2.cardid?and?t3.id=t1.id?and?t3.idt2.id)?
group?by?t2.id,?t2.cardid,?t2.money,?t2.code,?t2.date