一:什么是运算符
数据库中的表结构确立后,表中的数据代表的意义就已经确定。而通过MySQL运算符进行运算,就可以获取到表结构以外的另一种数据。例如,学生表中存在一个birth字段,这个字段表示学生的出生年份。而运用MySQL的算术运算符用当前的年份减学生出生的年份,那么得到的就是这个学生的实际年龄数据。这就是MySQL的运算符,所以熟悉并掌握运算符的应用,对于操作MySQL数据库中的数据是非常有用的。下面就来熟悉一下MySQL支持的4种运算符都具备哪些功能。

算术运算符:执行算术运算,例如:加、减、乘、除等。

比较运算符:包括大于、小于、等于或者不等于,等等。主要用于数值的比较、字符串的匹配等方面。例如:LIKE、IN、BETWEEN AND和IS NULL等都是比较运算符,还包括正则表达式的REGEXP也是比较运算符。

逻辑运算符:包括与、或、非和异或等逻辑运算符。其返回值为布尔型,真值(1或true)和假值(0或false)。

算术运算

加、减、乘、除

select store, store+1,store-1,store/2, store*2, store%2 from bookinfo; 其中store%2是取余数

mysql decimal减法会精度丢失吗 mysql 减法函数_mysql

– 读者的身份证号,姓名,电话,余额

select card_id, name, tel, balance from readerinfo where balance-200<=0;

mysql decimal减法会精度丢失吗 mysql 减法函数_运算符_02

比较运算符

mysql decimal减法会精度丢失吗 mysql 减法函数_MySQL_03


– 读者的身份证号,姓名,电话,余额

select card_id, name, tel, balance from readerinfo where balance-200<=0;

– 1、查看读者信息表中,余额大于200的读者信息。
select * from readerinfo where balance>200;

– 2、查看读者信息表中,余额不等于200的读者信息。
select * from readerinfo where balance <> 200;

– 3、查看读者信息表中,年龄不为空的读者信息。
select * from readerinfo where age is not null;

– 4、查看读者信息表中,余额在350到450之间的读者信息。
select * from readerinfo where balance between 350 and 450;

– 5、查看读者信息表,获取”张飞 ” , ”李月”, “王鹏”这几个读者的信息。
select * from readerinfo where name in(‘张飞’,’李月’,’王鹏’);

– 6、查看读者信息表,名字是两个字的,姓张的读者。
select * from readerinfo where name like ‘张_’;

– 7、查询手机号以”135”开头的读者信息。%一个或多个任意字符
select * from readerinfo where tel like ‘135%’;

逻辑运算符

mysql decimal减法会精度丢失吗 mysql 减法函数_mysql_04


– 1、查询图书信息表,查询书的价格大于50并且库存小于5的图书信息。

select * from bookinfo where price>50 and store<5;

– 2、查询图书信息表,查询书的价格大于80或者出版社为’机械工业出版社’的。

select * from bookinfo where price>80 or press = ‘机械工业出版社’;

– 3、查询图书信息表,查询书的价格不在50到100之间的图书信息。

select * from bookinfo where price not between 50 and 100;

二:MySql函数
MySQL函数是MySQL数据库提供的内部函数。这些内部函数可以帮助用户更加方便的处理表中的数据,MySQL函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数、格式化函数等。通过这些函数,可以简化用户的操作。
1.数学函数
获取整数的函数
– 返回大于28.55的最小整数值,结果29
select ceil(28.55);

– 返回小于28.55的最大整数值,结果28
select floor(28.55);

– 四舍五入 round(x,y)返回最接近x的值,保留到小数点后面的y位,如果y为负值,保留下值到小数点左边y位
select round(28.55); 结果29
select round(28.55,1),round(28.55,0),round(28.55,-1); 结果28.6,29,30

– 截断函数
返回数字X,截断到D小数位。 如果D为0,结果没有小数点或小数部分。 D是负数,导致值X的小数点左边的D数字变为零。
SELECT truncate(1314.1314, 3); # 1314.131
SELECT truncate(1314.1314, 1); # 1314.1
SELECT truncate(1314.1314, 0); # 1314
SELECT truncate(1314.1314, -1); # 1310
SELECT truncate(1314.1314, -3); # 1000
SELECT truncate(-1314.1314, -1); # -1310
SELECT truncate(-1314.1314, -3); # -1000
SELECT truncate(1314.1314*100, -3); # 131000

– 取模
select mod(11,2); 返回x除以y后的余数。

函数的实际运用

– 现需要对图书的价格进行粗略统计,要求查看图书信息表中的图书编号,书名,四舍五入书的价格到整数位。

select book_id,book_name,price, round(price) from bookinfo;

mysql decimal减法会精度丢失吗 mysql 减法函数_mysql_05

– 查询图书编号为偶数的图书信息。

select * from bookinfo where mod(book_id,2)=0;

mysql decimal减法会精度丢失吗 mysql 减法函数_mysql_06

2.字符函数
– 字符串连接
select concat(‘hello’,’world’);返回helloworld
select concat_ws(‘-‘,’hello’,’world’); 返回hello_world
select concat_ws(‘-\8’,’hello’,’world’); 返回hello-8world

– 字母转换大小写

select lower(‘Hello World’); 返回hello world

select upper(‘Hello World’); 返回HELLO WORLD

mysql decimal减法会精度丢失吗 mysql 减法函数_运算符_07

– 求长度
select length(’ hello ‘); hello加左右两个空格返回值为7

– 删除空格
select ltrim(’ hello ‘),length(ltrim(’ hello ‘)); 返回值hello 6
select rtrim(’ hello ‘),length(rtrim(’ hello ‘));返回值hello 6
select trim(’ hello ‘),length(trim(’ hello ‘));返回值hello 5

– 截取字符串
select substring(‘hello world’,1,5);返回值hello
select substring(‘hello world’,-5,1);返回值w
select substring(‘hello world’,-5,2);返回值wo
select substring(‘hello world’,-5,3);返回值wor

– 获取指定长度的字符串
select left(‘hello world’, 5);返回值hello
select right(‘hello world’, 5);返回值world

– 替换函数
select replace(‘hello world’,’world’,’mysql’);返回值hello mysql

– 格式化函数

select format(1234.5678,2),format(1234.5,2),format(1234.5678,0);返回值1234.57,1234.50,1235

mysql decimal减法会精度丢失吗 mysql 减法函数_mysql_08

3.日期时间函数
处理日期时间值,mysql敲入命令实现一下就能更好理解
– 查看当前的系统日期
select curdate()+0;

– 查看当前的系统时间
select curtime()+0;

– 查看当前的系统日期和时间
select now();

– 查看当前的系统日期和时间
select sysdate();

– 日期的加运算
select date_add(‘2017-01-01’, interval 5 month);返回值2017-06-01

– 计算两个日期之间间隔的天数
select datediff(‘2017-02-10’,’2017-02-01’);返回值9

– 日期格式化

mysql decimal减法会精度丢失吗 mysql 减法函数_运算符_09


select date_format(‘2017-02-01’, ‘%Y%m’);返回值201702

举列子:
身份证号为’ 210210199901013333’的用户,今天借了一本图书编号为’ 20150301’的图书,完成下列业务需求:
1、向借阅信息表中插入借书信息,注意借书日期和还书日期。
2、更新图书信息表的库存。
3、更新读者信息表的余额。*/

insert into borrowinfo values(20150301,’210210199901013333’,curdate(),date_add(curdate(),interval 1 month),’否’);

mysql decimal减法会精度丢失吗 mysql 减法函数_mysql_10

查看库存

mysql decimal减法会精度丢失吗 mysql 减法函数_mysql_11


更新库存

mysql decimal减法会精度丢失吗 mysql 减法函数_mysql_12


查看余额

mysql decimal减法会精度丢失吗 mysql 减法函数_运算符_13


更新余额

mysql decimal减法会精度丢失吗 mysql 减法函数_mysql_14

查看图书信息表的信息,要求出版日期’如201702’ 这样的形式显示。
*/

select book_id,book_category_id,book_name,author,price,press,date_format(pubdate,’%Y-%m’),store from bookinfo;

mysql decimal减法会精度丢失吗 mysql 减法函数_运算符_15

mysql decimal减法会精度丢失吗 mysql 减法函数_MySQL_16

4.聚合函数

mysql decimal减法会精度丢失吗 mysql 减法函数_mysql_17

– 1、求图书信息表中,所有图书的平均价格。
select avg(price) from bookinfo;

– 2、求图书信息表中,所有图书的总价格。
select sum(price) from bookinfo;

– 3、求图书信息表中的最大库存。
select max(store) from bookinfo;

– 4、求图书信息表中的最小库存。
select min(store) from bookinfo;

– 5、求图书信息表中有多少种图书。
select count(*) from bookinfo;

– 6、按类别进行分组, 查询每种类别下有多少种图书以及每种类别图书的库存总和。

select book_category_id as ‘图书类别’,count(book_id) as ‘图书种类’, sum(store) as ‘库存总和’ from bookinfo group by book_category_id;

mysql decimal减法会精度丢失吗 mysql 减法函数_mysql_18

5.信息函数与加密函数
– 系统信息函数
– 查看当前MySQL服务器版本的版本号
select version();

– 查看MySQL服务器当前连接的次数
select connection_id();

– 查看当前的数据库名
select schema();

– 查看当前登录的用户名
select user();

– 加密函数
select md5(‘test’);

加密函数主要对数据和界面进行加密处理

mysql decimal减法会精度丢失吗 mysql 减法函数_运算符_19


mysql decimal减法会精度丢失吗 mysql 减法函数_运算符_20


举例

mysql decimal减法会精度丢失吗 mysql 减法函数_MySQL 运算符与函数_21


举例二

我们在图形管理工具下查看一下加密后的rootpwd,然后再cmd下修改mysql密码为rootpwd

set password = password(‘rootpwd’);

最后查看密码是否加密

select user,authentication_string from mysql.user;

mysql decimal减法会精度丢失吗 mysql 减法函数_运算符_22


mysql decimal减法会精度丢失吗 mysql 减法函数_运算符_23