深入學習mysql,第一天

#select count(1) from emp;

#select deptno,count(1) from emp group by deptno;

#select deptno,count(1) from emp GROUP by deptno with ROLLUP;

#統計部門人數大於1的部門
#select deptno,count(1) from emp GROUP BY deptno HAVING count(1)>1;

#最後統計公司所有員工的薪水總額、最高和最低薪水:
#select sum(sal),max(sal),min(sal) from emp

#錶鏈接,分爲內連接和外鏈接它們之間的最主要區別是內連接僅選出兩張表中
#互相匹配的記錄,而外連接會選出其他不匹配的記錄。我們最常用的是內連接。
#select ename,deptname from emp,dept where emp.deptno=dept.deptno;


#外鏈接分爲左連接和右連接,具體定義如下。
#左連接:包含所有的左邊表中的記錄甚至是右邊表中沒有和它匹配的記錄
#右連接:包含所有的右邊表中的記錄甚至是左邊表中沒有和它匹配的記錄
#select ename,deptname from emp left join dept on emp.deptno=dept.deptno;

#select ename,deptname from dept right join emp on dept.deptno=emp.deptno


#子查詢
#某些情況下,當我們查詢的時候,需要的條件是另外一個select 語句的結果,這個時候,就
#要用到子查詢。用於子查詢的關鍵字主要包括in、not in、=、!=、exists、not exists 等。

#列如:從emp 表中查詢出所有部門在dept 表中的所有記錄:
#SELECT * from emp where deptno in(select deptno from dept);    #in代表返回多個值


#如果子查詢記錄數唯一,還可以用=代替in:
#select * from emp where deptno = (select deptno from dept limit 1)

#轉換爲表連接後:
#select emp.* from emp ,dept where emp.deptno=dept.deptno;

#記錄聯合
#select deptno from emp union all select deptno from dept;
#如果希望結果去重
#select deptno from emp UNION select deptno from dept;

 

#算數運算符
select 01+0.333,0.1-0.3333,0.1*0.3333,1/2,17%2;
#+運算符用於獲得一個或多個值的和
#-運算符用於從一個值中減去另一個值。
#*運算符使數字相乘,得到兩個或多個值的乘積。
#/運算符用一個值除以另一個值得到商。
#%運算符用一個值除以另外一個值得到餘數

select 1/0,100%0;

#對於摸運算還有另外一種表達式,使用MOD(a,b)函數與a%b效果一樣
select 3%2,MOD(3,2);

#比較運算符
#1.“=”運算符,用於比較運算符兩側的操作數是否相等,如果兩側操作數相等返回值爲 1,
#否則爲 0。注意 NULL 不能用於“=”比較。
select 1=0,1=1,NULL=NULL;

#2.“<>”不等於運算符,和“=”相反,如果兩側操作數不等,則值爲 1,否則爲 0。NULL 不能
#用於“<>”比較。
SELECT 1<>0;1<>1,null<>null;

#3.“<=>”安全的等於運算符,和“=”類似,在操作數相等時值爲 1,不同之處在於即使
#操作的值爲 NULL 也可以正確比較
select 1<=>1,2<=>0,0<=>0,NULL<=>NULL;

#4.“<”運算符,當左側操作數小於右側操作數時,其返回值爲 1,否則其值爲 0。
 select 'a'<'b' ,'a'<'a' ,'a'<'c',1<2;
 
#5.“<=”運算符,當左側操作數小於等於右側操作數時,其返回值爲 1,否則返回值爲 0
 select 'bdf'<='b','b'<='b' ,0<1;
 
 #6.“>”運算符,當左側操作數大於右側操作數時,其返回值爲 1,否則返回值爲 0。
select 'a'>'b','abc'>'a' ,1>0;

#7.“>=”運算符,當左側操作數大於等於右側操作數時,其返回值爲 1,否則返回值爲 0。
 select 'a'>='b','abc'>='a' ,1>=0 ,1>=1;
 
 #8.“BETWEEN”運算符的使用格式爲“a BETWEEN min AND max”,當 a 大於等於 min 並
#且小於等於 max,則返回值爲 1,否則返回 0;當操作數 a、min、max 類型相同時,此
#表達式等價於(a>=min and a<=max)
select 10 BETWEEN 10 and 20,9 BETWEEN 10 and 20;

#9.“IN”運算符的使用格式爲“a IN (value1,value2,…)”,當 a 的值存在於列表中時,則整
#個比較表達式返回的值爲 1,否則返回 0。
select 1 in (1,2,3),'t' in('t','a','b','1','e'),0 in(1,2);

#10.“IS NULL”運算符的使用格式爲“a IS NULL”,當 a 的值爲 NULL,則返回值爲 1,否則
#返回 0.
select 0 is null,null is null;

#11.“IS NOT NULL”運算符的使用格式爲“a IS NOT NULL”。和“IS NULL”相反,當 a 的
#值不爲 NULL,則返回值爲 1,否則返回 0。
 select 0 is not null, null is not null;
 
#12.“LIKE”運算符的使用格式爲“a LIKE %123%”,當 a 中含有字符串“123”時,則返回
#值爲 1,否則返回 0
select 123456 like '123%',123456 like '%123%',123456 like '%321%';

#13.“REGEXP”運算符的使用格式爲“str REGEXP str_pat”,當 str 字符串中含有 str_pat
#相匹配的字符串時,則返回值爲 1,否則返回 0。REGEXP 運算符的使用方法將會在第
#17 章中詳細介紹。
select 'abcdef' REGEXP 'ab','abcdefg' regexp 'k';

邏輯運算符

#““NOT”或“!”表示邏輯非。返回和操作數相反的結果:當操作數爲 0(假),則返回
#值爲 1,否則值爲 0。但是有一點除外,那就是 NOT NULL 的返回值爲 NULL,這一點請
#大家注意。如下例所示:
    
 select not 0, not 1, not null ;

#““AND”或“&&”表示邏輯與運算。當所有操作數均爲非零值並且不爲 NULL 時,計
#算所得結果爲 1,當一個或多個操作數爲 0 時,所得結果爲 0,操作數中有任何一個爲
#NULL 則返回值爲 NULL。如下例所示:
select (1 and 1),(0 and 1) ,(3 and 1 ) ,(1 and null);#只要不等於0和null那麼結果就是1

 
# “OR”或“||”表示邏輯或運算。當兩個操作數均爲非 NULL 值時,如有任意一個操作
#數爲非零值,則結果爲 1,否則結果爲 0。當有一個操作數爲 NULL 時,如另一個操作
#數爲非零值,則結果爲 1,否則結果爲 NULL。假如兩個操作數均爲 NULL,則所得結果
#爲 NULL。如下例所示:
select (1 or 0) ,(0 or 0),(1 or null) ,(1 or 1),(null or null);

#“XOR”表示邏輯異或。當任意一個操作數爲 NULL 時,返回值爲 NULL。對於非 NULL 的
#操作數,如果兩個的邏輯真假值相異,則返回結果 1;否則返回 0
 select 1 xor 1 ,0 xor 0,1 xor 0,0 xor 1,null xor 1;

 

 

表在下面的鏈接裏:

鏈接:https://pan.baidu.com/s/1vsTnbPXUUQ0zlQhBuH1ejg 
提取碼:p4on 
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章