第二章:排序和條件限制
select [distinct] {column_name..|*|exp|alias_name
from table_name
oeder by column_name 排序的標記
執行順序:from ->select ->order by
order by 優先順序最低,總是最後執行
排序的標記:asc公升序(可省略,預設) desc降序
查詢員工的名字的薪水,薪水以公升序排序select last_name,salary from s_emp order by salary asc;
注意:排序的列可以不出現在排序的後面
order by後面也可以直接跟角標,該角標是select後面排序列的位置,角標從1開始
select last_name,salary from s_emp order by 2 desc;
order by後面可以跟多個排序規則,先按照第乙個排,第乙個排相等,在按照第二個排序
select id,last_name,salary from s_emp order by salary asc,2 asc;
如果排序的列出現null值,你可以認為null是無窮大
select id,last_name,commission_pct from s_emp order by commission_pct;
注意:排序的時候,公升序null值在後面,降序null值在後面。
建議:排序的時候對有null的值排序,可以追加其他的排序列
條件限制語句
select [distinct] {column_name..|*|exp|alias_name
from table_name
where 條件
oeder by column_name 排序的標記
執行順序:from ->where ->select ->order by
注意:from查詢的是整張表的內容,where是對from查詢的整張表內容進行一行一行的篩選,
符合條件的留下,不符合條件的忽略,盡量不寫where
邏輯比較符 = < > <= >=
查詢部門標號為41號的部門資訊 select id,name,region_id from s_dept where id=41;
注意:字串和時間型別的值用單引號引起來,字串值表示的時候區分大小寫,
中文環境的時間格式是dd-mon-yy,英文環境dd-mm-yy
查詢入職時間大於等於2023年1月1日的員工資訊
select id,last_name,salary,star_date from s_emp where start_date>='01-1月-90'
sql比較符
between and 在某乙個範圍之內,閉區間[x,y]
查詢員工工資在795到1450直接的員工資訊
select id,last_name,salary from s_emp where salary between 795 and 1450;
not between and
查詢員工工資不在795到1450直接的員工資訊(找出薪水小於795和大於1450的員工資訊)
select id,last_name,salary from s_emp where salary not between 795 and 1450;
in(list) 在某乙個範圍
查詢部門為41或43號部門的員工資訊
selece id,last_name,salary,dept_id from s_emp where dept_id in(41,43);
not in(list) 不在某乙個範圍
and 並且(前後兩個條件都要成立)
or 或者(前後兩個條件只要成立乙個就行)
注意:and和or並存的時候 and優先順序高於or
不相等 <> != ^=
查詢除了部門為41或43號部門的其他部門的員工資訊
selece id,last_name,salary,dept_id from s_emp where dept_id!=41 and dept_id<>43;
like 模糊查詢,模糊匹配 _表示單個字元的佔位 %表示匹配0到多個字元 &_手動輸入字元代替_
查詢使用者名稱第二個字母是m的員工資訊
select id,last_name,salary feom s_emp where last_name like '_m%';
轉義 可以是任意的符號,escape單詞限定的都可以作為轉義
查詢以_開頭的員工資訊
insert into s_emp(id,last_name) values(26,'_zhangsan');
select id,last_name,salary from s_emp where last_name like '\_%' escape '\'
is null判斷是否為空
查詢沒有薪水的員工資訊
select id,last_name,salary from s_emp where salary is null;
is not null判斷不為空
第二章 快速排序
快速排序演算法也是基於分治思想的一種排序演算法,它的基本操作即為比較 交換。快速排序演算法的基本思想是從待排序的序列中選取乙個比較標準k 通常選取第乙個元素 然後將其餘元素依次跟k進行比較。在比較的過程中將大於k的元素移到k的後面,將小於k的元素移到k的前面,最後的結果是將原始序列分為兩個子串行,而...
演算法 第二章排序
目錄 初級排序 選擇排序 插入排序 希爾排序 歸併排序 自頂向下排序 自底向上排序 快速排序 優先佇列 初級排序 一 選擇排序 簡述 選擇排序就是遍歷一遍陣列把最小的和第乙個數字交換。第二遍遍歷陣列時候選擇和第二個交換,一次類推。注意不要在for迴圈中用a.length 不然每次都要獲取a.leng...
演算法第二章 快速排序
先把快速排序的 實現貼上來,太晚了,過程改天再加上!快速排序就是把乙個數拿出來,然後把小於這個數的扔到一邊,把大於它的扔到一邊,那這個數就在正確的位置上了 然後把這個數的左邊分成乙份,右邊分成乙份,再把這兩份進行剛才的做法,一直不停地這樣做,直到不能再分。接下來就要說明怎麼把小於它的數扔到一邊,大於...