加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

Mysql常用运算符与函数汇总

发布时间:2020-12-12 07:23:27 所属栏目:MsSql教程 来源:网络整理
导读:我们先把数据表建好 use test;create table `employee`( emp_no int unsigned,emp_name varchar(30),emp_sex varchar(3),emp_age tinyint unsigned,sal double,history datetime);insert into employee values(1,'张三','男',18,5000,'2012-04-23'),(2,'李四

我们先把数据表建好

use test;
create table `employee`(
 emp_no int unsigned,emp_name varchar(30),emp_sex varchar(3),emp_age tinyint unsigned,sal double,history datetime
);
insert into employee values(1,'张三','男',18,5000,'2012-04-23'),(2,'李四',27,4500,'2013-05-23'),(3,'王五',23,4700,'2012-04-21'),(4,'子龙',19,3800,'2011-03-04'),(5,'李白',15,6200,'2015-09-09'),(6,'刘备',28,2500,'2016-02-11'),(7,'吕布',21,6000,'2010-10-18'),(8,'尚香','女',16,'2011-09-26'),(9,'小乔',null,'2013-07-05'),(10,'大乔','2017-09-01');

常用的运算符:
1: 等于( = )

 select * from employee where sal = 3800;
 select * from employee where sal = null;  --这里查询不到为null的数据

2: 等于( <=> )

 select * from employee where sal <=> 3800;
 select * from employee where sal <=> null; --这里可以查询到为null的数据

3: is判断(null)

 select * from employee where sal is null;
 select * from employee where sal is not null;

4: null值判断还可以使用isnull();

 select * from employee where isnull(sal);
 select * from employee where !isnull(sal);

5: 在区间(between)内  between min and max  ps:这里是一个闭区间

    select * from employee where sal between 4500 and 5000;

6: 不在区间内

    select * from employee where sal not between 4500 and 5000;  --null不为包括进去

7: and 和 or

 select * from employee where sal not between 4500 and 5000 or sal is null;
 select * from employee where sal = 4500 and emp_sex = '女';

8: 小于(<),大于(>),小于等于(<=),大于等于(>=)

    select * from employee where sal >= 4500;

***************************************************************************************************************

数学函数
1: rand();

 select rand() from dual; --dual是一个伪表
 select 1+1 from dual;
 select rand(); --可以简写

2: least(value1,value2,...) 返回最小值

 select least(54,76,4,65,87,56,654,45,1,76);
 select least(54,76) as min_value; --列名可以起一个别名

3: greatest(value1,...) 返回最大值

    select greatest(54,76);

4: round(M,D); 返回M的四舍五入的值,D表示要保留几们小数,默认值是0

 select round(1.69);
 select round(1.69,1);

5: abs() 绝对值

 select 5-10;
 select abs(5-10);

***************************************************************************************************************

汇总函数

1: avg(); 

 select * from employee where sal >= 6000;
 select avg(sal) from employee where sal >= 6000;

2: count()

 select count(*) from employee;
 select count(emp_name) from employee;
 select count(sal) from employee;  --打印9 这里会忽略null值
 select count(*) from employee where sal >= 4000;
 select count(*) from employee where sal <= 4000 or sal is null;

3: sum()

    select sum(sal) from employee where sal >= 6000;

4: min()

    select min(sal) from employee;

5: max()

    select max(sal) from employee;

***************************************************************************************************************

日期函数

1: 获取当前的日期时间

 select now(),sysdate(),current_timestamp();
 select now(6),sysdate(6),current_timestamp(6);
 ps: now(),current_timestamp();没有区别,表示sql开始执行时的时间
  sysdate()表示这个函数开始时间

2: 获取当前日期

    select curdate();   --只有年月日

3: 获取当前时间

    select curtime();   --只有时分秒

4: 日期的加运算date_add     

 select history,date_add(history,interval '1 12:10' day_minute) from employee; --date_add(history,interval '1 12:10' day_minute)
 select history,interval '1-1' year_month) from employee;  --date_add(history,interval '1-1' year_month)
 select history,interval '1' second) from employee;    --date_add(history,interval '1' second)

5: 日期的减运算data_sub

    select history,date_sub(history,interval '1-1' year_month) from employee; 

6: 计算日期差

    select history,datediff(sysdate(),history) from employee;     --以天数来表示

7: 获取日期的指定部分(把日期转换为指定的格式)  date_format()

 select history,date_format(history,'%Y年%m月%d号') from employee;
 select history,'%d号') from employee;
 select history,'%Y年%m月%d号 %H时%i分%s秒') from employee;

8: 计算出一个日期是星期几

    select history,dayname(history) from employee;

9: 中文日期字符串转换日期str_to_date()
 

 insert into employee values(11,'张飞',22,3000,'2017年02月01号'); --报错
 insert into employee values(11,str_to_date('2017年02月01号','%Y年%m月%d号 %H时%i分%s秒'));

    insert into employee values(12,'二哥',str_to_date('2017年02月01号 23时02分02秒','%Y年%m月%d号 %H时%i分%s秒'));
    insert into employee values(12,str_to_date('2017年02月01号 11时02分02秒','%Y年%m月%d号 %h时%i分%s秒'));
    ps: 如果是h则表示12小制,如果是大H则表示24小明制;

字符串函数

1: left(str,len) 返回字符串str的左端len个字符

    select left('abcdefg',5);
 

2: length()

    select length('abcdefg');

3: lower(str) 返回小写的字符串str

    select lower('HELLO');

4: substring() 取子字符串,第二个参数是截取的起始位置,第三个参数是要截取的长度

    select substring('helloworld',2,3);

5: concat() 字符串拼接

    select concat(emp_name,'员工') from employee;

6: replace(替换

    select replace(emp_name,'李','老') from employee where emp_name = '李四';

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读