sql的學習 查詢的幾個注意點

2021-08-26 18:28:42 字數 2735 閱讀 7754

以上的表為查詢所用的表

--between的用法,限制

select * from emp

where sal<1000 and sal>100;--

select *from emp

where sal between 100 and 1000;

--in的用法:in 操作符允許我們在 where 子句中規定多個值。屬於若干個特定的值

select * from emp

where sal=1500 or sal=5000 or sal=3000;

select * from emp

where sal in(1500,3000,5000);

select * from emp

where sal not in(1500,3000,5000);--選擇既不是1500,又不是3000也不是5000的字段

select * from emp

where sal!=1500 and sal!=3000 and sal!=5000;

select * from emp

where sal<>1500 and sal<>3000 and sal<>5000;--<>表示不等

--distinct

select * from emp

--select ename from emp

select ename, sal+12 as "年薪" from emp;--輸出以計算後的字段

select distinct ename from emp;--不允許重複

select distinct deptno from emp;--不允許重複

select deptno ,ename from emp;--列出所有的

select distinct deptno ,ename from emp;--列出以部門和名字不重複的記錄

--select deptno ,distinct ename from emp;--順序錯誤

select deptno ,ename from emp;

select ename from emp;

--top 的用法 top 子句用於規定要返回的記錄的數目

select top 5 *from emp;

select top 10 percent *from emp;

select top 4 * from emp--把工資從1000到5000的人中取前四個(從大到小)

where sal between 1000 and 5000

order by sal desc;--降序 預設公升序

select top 4 * from emp--把工資從1000到5000的人中取後四個(從小到大)

where sal between 1000 and 5000

order by sal ;

--nul

select * from emp where comm is null;--獎金為空的

select * from emp where comm is not null;--獎金不為空

--輸出每個員工的姓名和工資(包括獎金)

select ename,sal*12+comm as "年薪" from emp;

--空不能參與任何數**算,否則為空

select ename,sal*12+isnull(comm,0) as "年薪" from emp;

--isnull 函式

select* from emp order by sal

---按照sal公升排序

select* from emp order by sal desc

---降序

select * from emp order by deptno,sal

--組合查詢,先按第乙個變數排序,在按第二個排序...

select * from emp order by deptno,sal desc

--組合排序,第乙個公升序,第二個降序

select * from emp order by deptno desc,sal desc

--desc 限制前面乙個變

--like的應用

--萬用字元

-- % 表示0個或任意個字元

-- _ 佔位符

-- [a-f],[a,f,g]

select * from emp where ename like '%a%'

--查詢名字中含有a的字元

select * from emp where ename like'a%'

--查詢首字母為a的字元

select * from emp where ename like '%d'

--查詢尾字母為d的字段

select * from emp where ename like '_a%'

--查詢第二個字母為a的字段

select * from emp where ename like '__a%'

--查詢第三個字母為a的字段

select * from emp where ename like '%[a-f]%'

--表示所選字元陣列,

select * from emp where ename like '[a,b,s]%'

--查詢首字母為a,b,s

select * from emp where ename like '[^a,b,s]%'

--查詢首字母既不是a,也不是b,

關於SQL優化的幾個注意點

1 sql變數或字段的型別匹配 2 避免複雜的多表關聯 3 使用decode來減少處理時間 4 減少對錶的查詢 5 用not exists替代not in 6 用 替代 7 對於並列條件的解析順序 從後向前。表關聯語句放在最前,將能過濾掉最大記錄數的條件放在最後。8 表連線時的掃瞄順序 從後向前,將...

rowtype的幾個注意點

一 rowtype只是指明引用的記錄的型別,但不保證not null約束 我們知道使用 type和 rowtype可以分別指定引用的字段 記錄型別,但其中有乙個特別需要注意的地方 type和 rowtype都不保證not null約束。例如 declare my empno emp.empno ty...

rowtype的幾個注意點

一 rowtype只是指明引用的記錄的型別,但不保證not null約束 我們知道使用 type和 rowtype可以分別指定引用的字段 記錄型別,但其中有乙個特別需要注意的地方 type和 rowtype都不保證not null約束。例如 declare my empno emp.empno ty...