SQL筆記(三) SQL中附加的基本運算

2021-08-20 07:10:39 字數 3680 閱讀 1384

字串運算

使用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. 等價於查詢11
select 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...