④、任何類型的數(shù)據(jù)都允許是null create table t1( name nvarchar(20), cnt int, riqi datetime ) insert t1 values(null,null,null); select * from t1; ⑤、任何數(shù)字與null參與數(shù)學(xué)運(yùn)算的結(jié)果永遠(yuǎn)是null--輸出獎(jiǎng)金非空的員工的信息-select * from emp where comm <> null; --輸出為空select * from emp where comm !=null; --輸出為空select * from emp where comm=null; --輸出為空error--總結(jié):null不參與<> != = 運(yùn)算--null可以參與is not isselect * from emp where comm is null; --輸出獎(jiǎng)金為空的員工的信息select * from emp where comm is not null; --輸出獎(jiǎng)金不為空的員工的信息
7、order by【以某個(gè)字段排序】 order by a,b --a和b都是升序 order by a,b desc --a升序,降序 order by a desc,b --a降序,b升序 order by a desc ,b desc --a降序,b降序 文字描述 如果不指定排序的標(biāo)準(zhǔn),則默認(rèn)是升序,升序用asc表示,默認(rèn)可以不寫 為一個(gè)字段指定的排序標(biāo)準(zhǔn)并不會(huì)對(duì)另外一個(gè)字段產(chǎn)生影響 強(qiáng)烈建議為每一個(gè)字段都指定排序的標(biāo)準(zhǔn)例子:--輸出每個(gè)員工的姓名 年薪(包含獎(jiǎng)金) comm假設(shè)是一年的獎(jiǎng)金select empno, ename,sal*12+comm "年薪" from emp;--此程序證明,任何數(shù)字與null參與數(shù)學(xué)運(yùn)算的結(jié)果永遠(yuǎn)是null--正確的寫法是:select empno, ename,sal*12+isnull(comm,0) "年薪" from emp;--isnull(comm,0)如果comm是null 就返回零,否則返回comm的值
--asc是升序的意思,默認(rèn)可以不寫,desc是降序select * from emp order by sal --默認(rèn)是按照升序排序select * from emp orderby deptno,sal;-- 先按照deptno升序排序,如果deptno相同,再按照sal升序排序select * from emp orderby deptnodesc,sal ; --先按照deptno降序排序,如果deptno相同,再按照sal升序排序, --記住sal是升序,不是降序 --order by a desc,b,c,d desc 只對(duì)a產(chǎn)生影響, 不會(huì)對(duì)后面的b、c、d產(chǎn)生影響select * from emp order by deptno,sal desc;--問(wèn)題:desc是否會(huì)對(duì)deptno產(chǎn)生影響?--答案:不會(huì)、--先按deptno升序,如果deptno相同,再按sal降序8、模糊查詢格式:select 字段的集合 from 表名 where 某個(gè)字段的名字 like匹配的內(nèi)容
匹配的條件通常含有通配符
%表示任意0個(gè)或者多個(gè)字符select * from emp where ename like '%A%'; --ename 只要含有字符A就輸出select * from emp where ename like 'A%'; --ename 只要首字母是A的就輸出select * from emp where ename like '%A'; --ename 只要未字母是A的就輸出_[這是下劃線 不是減號(hào)]
表示 單個(gè)字符
[a-f]select * from emp where ename like '_A';--ename只要第二個(gè)字母是A的就輸出
a到f中的任意單個(gè)字符,只能是a b c d e f中的任意一個(gè)
[a,f]select * from emp where ename like '_[A-F]%';--把ename中第二個(gè)字母是A或B或C或D或E或F的數(shù)據(jù)輸出
a或f[^a-c]
不是a,也不是b,也不是c的任意單個(gè)字符select * from emp where ename like '_[^A-F]%';--把ename中第二個(gè)字母不是A也不是B也不是C也不是D也不是E也不是F的數(shù)據(jù)輸出
注意: 匹配的條件必須用單引號(hào)括起來(lái) 不能省略 也不能改用雙引號(hào)
通配符通配符作為不同字符使用的情況
select * from 表明 where name like '%/%%' escape'/' --把name中包含有%的輸出 select * from 表明 where name like '%m%%' escape'm' // escape 后面的內(nèi)容表明在其之后的元素當(dāng)做轉(zhuǎn)義字符
新聞熱點(diǎn)
疑難解答
圖片精選