SQL 資料查詢

2021-08-14 10:46:34 字數 3687 閱讀 3136

一、簡單查詢

1.查詢所有字段

select * from 表名
--查詢所有學生的資訊

select * from student

查詢指定字段(可視為投影運算)

select 字段列表(逗號隔開) from 表名
--查詢班級、姓名、學號資訊

select sclass,snumb,sname from student

去除重複資訊

select

distinct 欄位名 from 表名

關鍵字distinct用於去重

--查詢有哪些班級

select

distinct sclass from student

根據現有值計算新值

設有資料表book,有6個字段bnumb,bname,author,press,pdate,price

--查詢圖書打9折後的**

select bnumb,bname,author,press,pdate,price*0.9

from book

也可以用關鍵字as為字段重新命名

select bnumb,bname,author,press,pdate,price*0.9

as discount

from book

也可以用關鍵字into將查詢結果插入新錶,into後面為新錶名

select bnumb as

'書號',bname as

'書名',author as

'作者',press as

'出版社',pdate as

'出版日期',price*0.9

as discount

into discount

from book

二、按條件查詢

--一般格式

select

《列名列表》

from

《表名》

where

《條件》

條件:關係運算子、邏輯運算子連線起來的表示式;關係運算子可以連線數值、字串、日期等型別的資料或表示式。

--查詢航天班的學生資訊

select * from student

where sclass = '航天'

--查詢年齡在20到22歲之間的學生資訊

select * from student

where sage<=22

and sage>=20

--查詢年齡不在20到22歲之間的學生資訊

select * from student

where

not (sage<=22

and sage>=20)

select * from student

where sage not between 18

and20

--查詢航天班年齡在20到22歲之間的學生資訊

select * from student

where sclass = '航天'

and sage<=22

and sage>=20

三、使用特殊關係運算子查詢

in 在集合中

not in 不在集合中

--查詢籍貫是陝西、河南的學生

select * from student

where province in('陝西','河南')

is null 是空

is not null 非空

--查詢沒填**號碼的學生

select * from student

where stel is

null

between 起始值 and 終止值 :在兩值之間

not between 起始值 and 終止值:不在兩值之間

注:① 區間是閉區間

② 兩值的型別可以是數值、字串或日期型

③ 日期做終止值時,不包括終止值那一天

--查詢年齡在20到22歲之間的學生資訊

select * from student

where sage between 18

and20

like 字串

not like 字串

利用萬用字元實現模糊匹配

% :匹配0個或多個任意字元

_ :匹配乙個任意字元

:匹配集合中的任意乙個字元

[^] :不匹配集合中任乙個字元

--查詢姓"陳"的同學的資訊

select * from student

where sname like

'陳%'

--查詢名字中含有」雨「字同學的資訊

select * from student

where sname like

'%雨%'

--查詢姓「鄭」的,且名字為兩個字的同學的資訊

select * from student

where sname like

'鄭_'

--查詢姓「趙、錢、孫、李的同學的資訊

select * from student

where sname like

'[趙錢孫李]%'

--查詢不是姓「趙、錢、孫、李的同學的資訊

select * from student

where sname like

'[^趙錢孫李]%'

四、對查詢結果進行排序

使用order by子句

--一般格式

select

《列名列表》 from

《表名》

[where 條件]

order

by《欄位名1> [asc|desc], 《欄位名2> [asc|desc] ...

asc表示按字段值公升序排列(ascend),預設公升序

desc表示按字段值降序排列(descend)

--查詢航天班的學生的姓名、年齡、按年齡從小到大排序(公升序)

select sanme,sage from student

where sclass = '航天'

order

by sage

--查詢航天班的學生資訊按年齡從大到小排序,年齡相同按學號公升序排序

select * from student

where sclass = '航天'

order

by sage desc, snumb asc

參考資料:sql server資料庫技術(coursera)

SQL資料查詢2

use hcreate table zy1 empno int,ename varchar 10 job varchar 10 mgr int,hiredate date,sal double coom double deptno int drop table zy1 desc zy1 select...

SQL資料查詢 子查詢 多表查詢

user info表 user info表 create table user info id int 2 primary key,user name varchar 12 unique password varchar 15 not null real name varchar 8 not nul...

SQL分頁資料查詢

在許多資料庫應用系統中,會對資料進行大量的查詢操作。當查詢資料量比較大時查詢所用的時間就會變得較慢,所以我們希望可以分批的獲取資料。特寫了乙個儲存過程用於分批獲取資料。鑑於游標效率低,故此處沒有採用。create procedure selectpage tablename nvarchar 64 ...