1.char(n): 固定長度的字符串,輸入字符串長度不足時(shí)自動在后面加空格。
2.varchar(n):可變長度的字符串,用戶指定最大輸入長度。不會自動在字符串后添加空格。
3.numeric(p,d):定點(diǎn)數(shù),精度有用戶指定。這個數(shù)有p為數(shù)字,其中d為數(shù)字在小數(shù)點(diǎn)后邊。整數(shù)位數(shù)+d <= p
4.real, double precision : 浮點(diǎn)數(shù)與雙精度浮點(diǎn)數(shù),精度與機(jī)器有關(guān)。
5.float(n):精度至少為n位的浮點(diǎn)數(shù)。
6.主鍵(primary key)屬性必須非空且唯一。
7.外鍵(foreign key)聲明表示關(guān)系中任意元組在屬性上的取值必須對應(yīng)于關(guān)系S中某元組在主鍵屬性上的取值。
8.將查詢的結(jié)果去重,使用關(guān)鍵字distinct,例如:select distinct name from user。
9.默認(rèn)查詢的結(jié)果是不去重的,顯示指定不去重,使用關(guān)鍵字all,例如:select all name from user。
10.select 子句還可以帶含有 - + * / 運(yùn)算符的算術(shù)表達(dá)式,例如:select name salary * 1.5 from user。查詢出的工資(salary)是原來的1.5倍。但是不會改變數(shù)據(jù)庫中的salary。并不導(dǎo)致對user關(guān)系的任何改變。
11.sql允許在where子句中使用邏輯連詞and,or 和 not。邏輯連詞的運(yùn)算對象可以是包含運(yùn)算符<, <=, >, >=, = 和 <> 的表達(dá)式。sql允許使用比較運(yùn)算符比較字符串,算數(shù)表達(dá)式,以及特殊類型,例如日期。
二,字符串運(yùn)算
1.串聯(lián):|| ,將字符串轉(zhuǎn)換為大寫:upper(String),將字符串轉(zhuǎn)換為小寫:lower(String),去掉字符串后面的空格:trim(String)
2.like
? ? 2.1. %:匹配任意字符串。'Intro%':匹配以Intro打頭的字符串。'%Intro%':匹配任何包含Intro的字符串。
? ? 2.2. _ (下劃線):匹配任意一個字符。'_ _ _':匹配只含三個字符的字符串。'_ _ _ %':匹配至少含三個字符的字符串。
? ? 2.3. 例子:找出所在建筑名稱中包含字串'JIM'的所有系名,select dept_name from department where building like '%JIM%';
3.在like運(yùn)算中使用escape關(guān)鍵字來定義轉(zhuǎn)義字符。例如: ?? like 'ab\%cd%' escape '\',轉(zhuǎn)義字符為'\', like語句的含意是匹配所有以ab%cd打頭的字符串。like 'ab\\cd%' escape'\',轉(zhuǎn)義字符為'\',like語句的含義是匹配所有以'ab\cd'打頭的字符串。
4.not like 比較運(yùn)算符搜尋不匹配項(xiàng)。
5.similar to 比like 更強(qiáng)大。他的模式定義語法類似于UNIX中的正則表達(dá)式。
三,排列元組的顯示次序
1.order by 子句讓查詢結(jié)果中元組按排列順序顯示。默認(rèn)使用升序。 ?? 要說明排序順序可以使用asc(升序),desc(降序)。例如 select * from tableA? order by salary desc, name asc。
2.SQL允許用記號(v1,v2,...vk)? 來表示一個分量值分別為v1,v2,..,vk的n維元組。在元組上可以使用比較運(yùn)算符,
按字典順序進(jìn)行比較運(yùn)算。例如:(a1,a2)<= (b1,b2)在a1 <= b1 且 a2 <= b2 時(shí)為真。 where 條件語句
?where instructor.ID = teachers.ID and dept_name = 'Biology' 可以換成
where (instructor.ID,dept_name)= (teachers.ID,'Biology')?
四,并,交,差運(yùn)算
1. 并運(yùn)算 union自動去重,需要保留重復(fù),使用union all。例如:找出在2009年或者在2010年開辦的課程。
(select courseName from section where year = 2009)union? (select courseName from section where year = 2010)?
2. 交運(yùn)算 intersect 自動去重,需要保留重復(fù),使用intersect all。例如:找出在2009年和2010年同時(shí)開辦的課程。
(select courseName from section where year = 2009)intersect(select courseName from section where year = 2010)?
3.差運(yùn)算 except自動去重,需要保留重復(fù),使用except all。例如:找出在2009年開辦但不在2010年開辦的課程。
(select courseName from section where year = 2009)except(select courseName from section where year = 2010)?