重拾MySQL中的宝藏

      对于MySQL相信很多人都不陌生,但对于MySQL的使用很多程序员只停留在增删改查。一旦问到除增删改查以外的内容相信很多人都很陌生。本篇不讲增删改查。因为这里默认是大家都会。同时也是为了自己日后回来查找方便。

模板:大写的是关键字(SQL中关键字不区分大小写)

SELECT DISTINCT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value
ORDER BY column_name
LIMIT row_num

ASC是升序(默认的),DESC是降序 


 去重关键字  DISTINCT;例如

SELECT DISTINCT xxx FROM  XXX WHERE ....

关键字 HAVING

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。

HAVING 子句可以让我们筛选分组后的各组数据。

例如,查询并显示 统计某某字段的和  超过1000。这时候通过where条件查询只能获取到对应得数据,单无法做统计,此时聚合函数就可以上场了!!! 当然也可以是自己写好的SQL函数


+  在sql中的作用

  1. 运算符(当两边操作的数据是数值型数据时) 例如:select 1+2;结果是3
  2. 运算符(当有一个操作数据是字符型)
    例如:
    select '1' + 2;结果是3(转义成功时)
    select 'a1'+2;结果是2(转义失败就是0)
  3. 其中有一个是null   则结果就是 null

SQL中的 字符串的拼接  CONCAT()  函数的使用

SELECT CONCAT('String1','String2');-- 结果是String1String2。还可以传入多个参数用逗号隔开

 判断字段是否为NULL的 IFNULL() 函数


安全等于 <=> 注意不等于是  <>

<=>可以判断null值,也能判断数值

常见的函数

字符函数:

取长度  LENGTH();

SELECT LENGTH('john');
SELECT LENGTH('张三123'); -- 结果是9,utf8编码中中文站3个字节,GBK中是2个字节

大小写转换:UPPER()、LOWER()

SELECT UPPER('john');-- JOHN
SELECT LOWER('jOHn');-- john

字符串拼接:CONCAT() 

SELECT CONCAT(UPPER('john'),lOWER('_TOM'));

截取字符串:SUBSTR()

SELECT SUBSTR('李莫愁爱上了陆展元',1,3) 

返回子串第一次出现的索引:INSTR()

SELECT INSTR('李莫愁爱上了陆展元','陆展元') 

去除字符串前后的空格或回车 TRIM()

第二种用法   去除指定的字符

SELECT LENGTH(TRIM('   123456   '));
SELECT TRIM('a' FROM 'aaa 123aaa456 aa');-- 结果是' 123aaa456 '

填充

SELECT LPAD('hello',10,'=');-- 左填充;
SELECT RPAD('hello',10,'=');-- 右填充;

数学函数:

SELECT ROUND('1.3');-- 四舍五入
SELECT CEIL('1.3');-- 上取整
SELECT FLOOR('1.3');-- 下取整
SELECT TRUNCATE('1.333333',1);--  截断小树点后一位
SELECT MOD(-10,3);--  取余,结果是-1;a%b取余=a -(a/b)*b;余数正负数取决于被除数

日期函数:

SELECT NOW();-- 返回日期和时间
SELECT CURDATE();-- 返回日期,不会返回时间
SELECT CURTIME();-- 返回时间,不会返回日期
SELECT YEAR(NOW());-- 返回年
SELECT MONTH(NOW());-- 返回月
SELECT MONTHNAME(NOW());-- 返回月英文名称
SELECT DAY(NOW());-- 返回日

流程控制函数:

IF()

SELECT IF(10>5,'大','小');
-- 第一个表达式判断是否为真,真返回第二个表达式的内容,假返回第三表达式内容;---->换言之可以是sql子句

CASE:

相当于java中的switch的写法:其中的when可以有多个,else代表default

CASE case_value
	WHEN when_value THEN
		statement_list
	ELSE
		statement_list
END CASE;

 CASE的另一种用法:

CASE
WHEN 常亮1 THEN 显示的值1或语句1
WHEN 常亮2 THEN 显示的值2或语句2
...省略
ELSE 显示的值n或语句n
END
发布了302 篇原创文章 · 获赞 37 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_41813208/article/details/105280763
今日推荐