字串運算
使用escape關鍵字定義轉義字元
可以使用not like 比較運算子搜尋不匹配項
select子句中的屬性說明
排列元組的顯示次序
where子句謂詞
not between
(v1,v2,…,vn)n維元組比較
from子句中的幾個關係中有同名的屬性;
select子句中使用了算術表示式,該結果屬性沒有名字;
講乙個長的關係名,替換成乙個短的,方便操作;
比較同乙個關係中的元組的情況;
沒有理由,就想給它改個名字!!!
sql中提供了乙個重新命名結果關係中屬性的方法,使用如下的as子句:
old-name as
new-name
as子句既可以出現在select子句中,也可以出現在from 子句中。
查詢1. 乙個普通的查詢
select name, course_id
from instructor, teaches
where instructor.id = teaches.id;
結果是乙個具有下列屬性的關係:
name,course_id
查詢2. 用名字instructor_name代替屬性名name
select name as instructor_name, course_id
from instructor, teaches
where instructor.id = teaches.id;
結果是乙個具有下列屬性的關係:
instructor_name,course_id
查詢3. 簡化名稱
select t.name,s.course_id
from instructor as t, teaches as s
where t.id = s.id;
查詢4. 同關係查詢
找出滿足下面條件的所有教師的名字,他們的工資至少比biology係某乙個教師的工資要高。
select
distinct t.name
from instructor as t, instructor as s
where t.salary > s.salary and s.dept_name = 'biology';
s和t被認為是instructor的兩個拷貝,更準確的說是被宣告為instructor關係的別名。
s和t這樣的識別符號在sql標準中被稱作:
相關名稱(correlation name)或表別名(table alias)或相關變數 (correlation variable)或元組變數(tuple variable)
sql允許在字串上有多種函式,例如:
upper(s),lower(s),trim(s)等。
不同的資料庫系統提供的字串函式集不同個,這裡不列舉。
使用like操作符可以實現模式匹配:
*%
:匹配任意字串
*_
: 匹配任意乙個字元
例如:
* 『intro%』:
* 『%comp%』:
* 『_ _ _』:
查詢5.like表示式
找出所在建築物名稱中包含子串『watson』 的所有系名。
select dept_name
from department
where building like
'%watson%';
使用escape關鍵字定義轉義字元/*使用反斜槓(\)作為轉義字元,
匹配所有以「ab%cd」開頭的字串*/
like 'ab\%cd%' escape '\'
/* 匹配所有以「ab\cd」開頭的字串 */
like 'ab\\cd%' escape '\'
可以使用not like 比較運算子搜尋不匹配項
星號「*」 可以用在select 子句中表示「所有的屬性」。
查詢6. 星號表示所有的屬性
下面的查詢中,instructor中所有的屬性都被選中。
select instructor.*
from instructor, teaches
where instructor.id = teaches.id;
使用order by子句
查詢7. order by 查詢
按字母順序列出在physics系的所有教師
select name
from instructor
where dept_name = 'physics'
order
by name;
order by 預設使用公升序(asc)。
我們可以使用desc表示降序。
查詢8. 使用asc和desc
按salary的降序列出整個instructor關係,如果有幾個教師的工資相同,將他們按照名字公升序排列。
select *
from instructor
order
by salary desc, name asc;
between比較運算子來說明乙個值小於或等於某個值,同時大於或等於另乙個值
查詢9. 可以取代查詢10
找出工資在90000美元到100000美元之間的教師的姓名
select name
from instructor
where salary between 90000
and100000;
查詢10.
找出工資在90000美元到100000美元之間的教師的姓名
select name
from instructor
where salary <= 100000
and salary >=90000;
使用方法類似於between
sql允許我們使用記號(v1,v2,…,vn)表示乙個分量值分別為v1,v2,…,vn的n維元組。
在元組上可以運用比較運算子,按照字典順序進行比較。例如:
(a1,a2) <= (b1,b2)在 a1
<= b1且a2
<= b2時為真。
查詢11. 等價於查詢12
查詢biology系講授了課程的所有教師的姓名和他們所講授的課程。
select name, course_id
from instrucotr,teaches
where instructor.id = teaches.id and dept_name = 'biology';
查詢12. 等價於查詢11select name, course_id
from instructor, teaches;
where (instructor.id, dept_name) = (teaches.id, 'biology');
SQL 基本語法 (筆記)
用於訪問和運算元據庫 select 從資料庫中提取資料 select from table name where condition select distinct from table name select from table name order by asc desc update 更新資...
SQL基礎筆記(三)
對資料的更新操作 增 insert into emp empno,ename values 8888,liyang 刪 delete from emp where ename datou 改 update emp set ename datou empno 9999 where empno 8888...
SQL學習筆記 基本select
複習 學習,溫故而知新。基本select 1 空值 null 未定義值 不確定的值 不是零也不是空格。空值不能夠直接參與四則運算。2 別名中特殊字元需要加雙引號 select sal 12 as ann sal from emp 特殊字元 空格 select sal 12 asann salfrom...