mysql函数

mysql函数以及单表查询

算术运算符

+ - * / div

特殊:select 3/4;—0.75

	select 3/0; ---Null

​ select 3 div 4; —0 div为整除,该运算符只取商的整数部分

比较运算符> < >= <= != = <>

select 1=1; 0表示false, 1表示true

逻辑运算符 and or !

与或非

位运算符
mysql函数_第1张图片

十进制转二进制运算:

2的n次幂的二进制就是1后面有n个0

举例:

2的1次方(2)的二进制就是10

2的2次方(4)的二进制就是100

2的3次方(8)的二进制就是1000

2的n次幂减1的二进制就是n个1

举例:

2的1次方减1(1)的二进制就是1

2的2次方减1(3)的二进制就是11

2的3次方减1(7)的二进制就是111

口算:给一个十进制数100,它的二进制如何口算呢?100就是64加上32再加4,即

100=64+32+4=26+25+2^2

64的二进制是1000000,32的二进制是100000,4的二进制是100

三个数相加就是1000000+100000+100

结果不就是1100100吗?那么100的二进制不就是1100100吗?

1.位或运算符 ( | ) :对应的二进制位有一个或两个为 1 ,则该位的运算结果为 1 ,否则为 0

你也可以将 与运算理解为 + 法

1|2=3 1|2|4=7

2.位与运算符(&):对应的二进制位都为1,则该位的运算结果为1,否则为0

理解为判断

3&2 =1 ----3=1+2,由1和2组成,判断为1

3&4=0 -------3没有由4组成所以判断为0

3.位异或运算符(^):对应的二进制位不相同时,结果位1,否则为0

异或运算理解为 - 法

3^2=1 3^1=2

4.位左移运算符(<<):使指定的二进制位都左移指定的位数,左移指定位之后,左边高位的数值将被移出并丢弃,右边低位空出的位置用 0 补齐

5.位右移运算符 ( >> ) :使指定的二进制位都右移指定的位数,右移指定位之后,右边低位的数值将被移出并丢弃,左边高位空出的职位用 0 补齐

6.位取反运算符:将对应的二进制数逐位反转,即 1 取反后变 0 , 0 取反后变 1

DML(instert,update,delete)

insert(插入) 
insert into studnet values(1,'zs',18); 
--复制表结构 
create table stu select * from student where 1=0; 
--复制表数据 
insert into stu select * from student;  
update(修改) 
update tbname set 字段=新值 [where 条件] 
update studnet set age=age+1 where sanme='ww'; 
delete(删除) 
delete from tbname [where 条件] 
delete from student where sid = 5; 

delete和truncate的区别

delete不会重置自增,truncate会重置

delete删除时行级删除。效率低,truncate效率高。

DQL

函数

1.单行函数

1.数学函数
select  ABS(10); --绝对值 
select  CEIL(-12.3); --向上取整  -12 
select  FLOOR(12.5); --向下取整  13 
select ROUND(12.5); --四舍五入   13 
select ROUND(12.49,-1)--这里有个值得注意的地方是,d可以是负数,这时是指定小数点左边的d位整数位为0,同时小数位均为0; 
2.字符函数
select length(ename) from emp; ---获取字符串长度 
select LOWER(ename) from emp; --转换为小写 
select UPPER('this is an apple'); --转换为大小写 
select substr('aabbcc',1,2); ---aa  从1开始 
select lpad('smith',10,'*');----*****smith,左填充,开始字符串,总长度,填充的字符 select rpad('smith',10,'*');----右填充 
select trim('     smi   th') ;----去空格 
3.日期函数
select NOW(); --当前系统日期时间 
select SYSDATE(); 
select CURRENT_DATE(); --当前日期 
select CURRENT_TIME(); --当前时间 
select YEAR('1998-09-09');----1998 
select MONTH('1998-09-09');  
select DAY('1998-09-08'); 
select DATE_ADD('1998-09-08',INTERVAL 2 YEAR); --2000-09-08 

2.聚合函数

select count(*) from emp;--t统计记录数 
select count(comm) from emp;--统计非空字段数目 
select sum(sal) from emp; ---sum 求和 
select avg(sal) from emp; --avg求平均数 
select max(sal) from emp; --max最大数 
select min(sal) from emp; --min最小数 

3.分组函数

gourp by 分组字段

---每个部门的平均工资 
--group by 根据条件字段的值返回相应的记录数,在select子句中,只能出现聚合函数或者分组的条件字段。 
select deptno,avg(sal) from emp group by depno; 
--各个职位员工数?job 
select job,count(*) from emp group by job; 

having 将分组之后的结果集再次进行检索

--平均工资大于2000的部门编号,和平均工资 
--执行顺序  group by --- select   ---- having 
select deptno,avg(sal) sal from emp group by deptno having sal >2000; 

where 和having的区别?

​ where是先过滤在分组

​ having是先分组后在过滤

4.加密函数

--加密函数  select MD5('root'); select SHA('root'); select PASSWORD('root'); 

外键约束

外键的参考键必须是唯一性索引。主键约束和唯一性约束都是唯一性索引;不一定是别的表的主键。
mysql函数_第2张图片

--添加外键约束 
alter table student add CONSTRAINT FK_CID FOREIGN KEY(cid) REFERENCES classroom(cid) 

你可能感兴趣的:(MySQL,MySQL,MySQL函数)