日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sql语句之where子句

發(fā)布時間:2025/3/21 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sql语句之where子句 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

現(xiàn)在的登錄都是把信息存在數(shù)據(jù)庫,然后把輸入的與數(shù)據(jù)庫內(nèi)容進行匹配,一樣就登錄成功,否則不成功。驗證碼是為了防止暴力破解,因為計算機能夠自動匹配密碼,但是不能識別圖片上的字母,只有人能識別,所以匹配的速度會減慢。還有的會記錄登錄IP,如果IP頻繁變化就會進行提示。還有銀行會限制輸入次數(shù)。

作用

限制表中的數(shù)據(jù)返回??符合where后面的條件的數(shù)據(jù)就會被選中,不符合where條件的語句會被過濾掉

兩個極限條件

/*這是永真條件*/ (數(shù)據(jù)庫里可以有注釋,這里是多行注釋) where 1 = 1 ; (用一個等號判斷相不相等,因為這里是不存在賦值的,沒有“= =”) - - 這是永假條件(數(shù)據(jù)庫里可以有注釋,這里是單行注釋,注釋符和注釋之間要有空格) where 1 = 2 ;

?

演示:列出每個員工的id?和salary ??要求顯示符合salary等于1400的員工

select id, salary from s_emp where salary=1400

字符串條件的表達

演示:要求顯示first_name?是Carmen的員工,列出id??first_name?salary 

select id, first_name, salary from s_emp where first_name='Carmen'

注意:一定要加’ ‘代表這是字符串值

常見的運算符

=?等于???!=?不等于????>大于???<?小于????<=?小于等于???................

?sql提供的運算符

表達一個閉區(qū)間[a , b]?

where??字段??between?a??and??b ;??(字段在閉區(qū)間a到b內(nèi))

a??b的順序不能錯

演示:寫程序查詢,把s_emp表中id??first_name?salary??顯示;要求salary在[1450,2500 ]?中。

select id, first_name, salary from s_emp where salary between 1450 and 2500

? ? ? 注意:不可以把2500和1450調(diào)換位置,編譯不會有錯,但邏輯有錯)

where??字段??in(值1,值2,值3)

這個字段的值等于其中的一個值(只要有一個等于就返回),?交換值的順序可能有影響,也可能沒有影響。若值的概率都一樣就沒有影響(就按一個規(guī)律寫(比如從小到大),這樣不容易遺漏)。若不一樣,則把概率高的值放在前面(人為的),這樣查詢效率高(因為每個數(shù)據(jù)都要挨個和給的值比較,只要有一個一樣就返回)

演示:寫一個查詢,把s_emp表中部門標號是31或者32或者50?部門的員工id?first_name??dept_id顯示出來

select idm first_name, dept_id from s_emp where dept_id in(31, 32, 50)

?

模糊查詢??like(像)+?通配符

數(shù)據(jù)庫里:

    • “%”為通配符,代表0 - n個任意字符
    • ?“-”代表一個任意字符

e.g.??李四?李斯??李思??李世民?(查找出姓李的)

Where name like ‘李%’;

e.g.??李小龍?小龍女??龍貓??(查找出所有帶龍的)

Where name like ‘%龍%; (找出中間帶龍的)where name like ‘_龍%’;

演示:查詢s_emp表中first_name,找出所有帶a(小寫a)的

select first_name from s_emp where first_name like '%a%'

?

數(shù)據(jù)庫中有一張表user_tables(數(shù)據(jù)字典,存的都是大寫)存了所有表的信息。例如s_emp??s_dept?等

desc user

演示:從user_tables中找出所有以‘S_’開頭的表名

注意:要對‘_’進行轉(zhuǎn)義處理,用‘\_’表示下劃線,再加escape??‘ \ ’??代表是‘\’?后面的內(nèi)容進行轉(zhuǎn)義處理

select table_name from user_tables where table_name like 'S\_%'

NULL值的判斷

where??字段??is?NULL ;

演示:把s_emp表中提成是10的員工的id??first_name?commission_pct顯示出來

select id, first_name, commission_pct from s_emp where commission_pct=10

  

演示:把s_emp表中提成不是10的員工的id?first_name??commission_pct顯示出來。

select id, first_name, commission_pct from s_emp where commission_pct!=10

按理來說,一共有25人,不為10的人應該是20個的,但是這里只有3個。這是因為,基本的判定對空值是無效的,必須引入is??NULL對控制進行判定所以要:

select id, first_name, commission_pct from s_emp where commoission_pct is NULL

? ? ? 當然也可以結(jié)合nvl,但是用is NULL是標準用法。

條件連接符號

  • and??邏輯與
  • or???邏輯或
  • not??

演示:(1)寫程序查詢,把s_emp表中id??first_name?salary??顯示;要求salary在[1450,2500 ]?中。(between?。。。and。。。)

select id, first_name ,salary from s_emp where salary>=1450 and salary<=2500

用這個更加具有通用性,可以是開區(qū)間。

(2)寫一個查詢,把s_emp表中部門標號是31或者32或者50?部門的員工id?first_name??dept_id顯示出來(5.6.2里的in(。。,。。,。。))

select id, first_name, dept_id from s_emp where dept_id-31 or dept_id-32 or dept_id=50

這里三個都是等價的,不存在順序問題。

  • >??的對立面是??<=
  • ?<??的對立面是??>=
  • ?=??的對立面是??!=???^=???< >??(都是不等于)
  • ?between?a??and??b??的對立面是??not?between??a??and??b
  • ?in??的對立面是??not??in
  • ?like??的對立面是??not?like
  • ?is??null??的對立面是??is?not??null(只有最后一個不用注意空值,上面的都要注意空值)

?演示:找出manager_id不是空的員工,列出id??first_name?manager_id

select id, first_name, manager_id from s_emp where manager_id is not null

條件優(yōu)先的問題??要優(yōu)先的部分加括號

演示:(1)顯示員工salar??dept_id;

    要求工資大于1000且部門標號為41的員工,或者部門標號為42的員工  

select salary, dept_id from s_emp where salary>1000 and dept_id=41 or dept_id=42

(2)顯示員工salar??dept_id;

? ? ? ?要求部門標號為41的員工,或者為42的員工里工資大于1000的

select salary, dept_id from s_emp where salary>1000 and (dept_id=41 or dept_id=42)

?

轉(zhuǎn)載于:https://www.cnblogs.com/cjaaron/p/9205351.html

總結(jié)

以上是生活随笔為你收集整理的sql语句之where子句的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。