深入学习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 
 

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